Welcome!

Join our community of MMO enthusiasts and game developers! By registering, you'll gain access to discussions on the latest developments in MMO server files and collaborate with like-minded individuals. Join us today and unlock the potential of MMO server development!

Join Today!

Juver source+database+cfg (soon latest GS source)

Elite Diviner
Joined
Jul 8, 2015
Messages
489
Reaction score
27
i have item mall source spit cpp and h easy to add but i need to know how to pack rcc files ^^
 
Newbie Spellweaver
Joined
Jul 16, 2020
Messages
51
Reaction score
0
i still cant fix this..need help..
glchardata.h EMACTIONQUICKSIZE CHANGE 12 TO 6 .
already change but have something wrong like big head and stuck on login..




i still cant fix this..need help..
glchardata.h EMACTIONQUICKSIZE CHANGE 12 TO 6 .
already change but have something wrong like big head and stuck on login..
 
Newbie Spellweaver
Joined
Jan 26, 2021
Messages
40
Reaction score
5
i still cant fix this..need help..
glchardata.h EMACTIONQUICKSIZE CHANGE 12 TO 6 .
already change but have something wrong like big head and stuck on login..

glchardata.h
Code:
//EMACTIONQUICK_SIZE    = 12,
EMACTIONQUICK_SIZE        = 6,

mine after change the actionquick size there is no more problem about the potion slot.
 
Newbie Spellweaver
Joined
Jul 16, 2020
Messages
51
Reaction score
0
glchardata.h
Code:
//EMACTIONQUICK_SIZE    = 12,
EMACTIONQUICK_SIZE        = 6,

mine after change the actionquick size there is no more problem about the potion slot.


still can`t

this my source



#ifndef GLCHARDATA_H_
#define GLCHARDATA_H_

#if _MSC_VER > 1000
#pragma once
#endif // _MSC_VER > 1000

#include <map>
#include <hash_map>

#include "./GLFactData.h"

#include "./GLInventory.h"
#include "./GLItem.h"
#include "./GLQuestPlay.h"
#include "./GLSkill.h"
#include "./GLVEHICLE.h"

#include "../../Lib_Engine/Common/ByteStream.h"

/*skill summon, Juver, 2017/10/09 */
#include "GLSummonData.h"

/*activity system, Juver, 2017/10/23 */
#include "GLActivityData.h"

/*pvp capture the flag, Juver, 2018/01/29 */
#include "GLPVPCaptureTheFlagDefine.h"

#define SCALERANGE_MIN (0.88f) //(0.75f)
#define SCALERANGE_MAX (1.12f) //(1.20f)

/*charinfoview , Juver, 2017/11/11 */
#define REQ_CHARINFO_DELAY 5.0f

enum EMCHARDATA
{
EMSKILLQUICK_VERSION = 0x0102,
EMSKILLQUICK_SIZE_101 = 60,
EMSKILLQUICK_SIZE = 60,

//EMACTIONQUICK_SIZE = 12,
EMACTIONQUICK_SIZE = 6,

SKILLREALFACT_SIZE = 14,
SKILLFACT_SIZE = 14,

EMMAX_CLUB_NUM = 100,

EMSTORAGE_CHANNEL = 5,

EMSTORAGE_CHANNEL_DEF = 0,
EMSTORAGE_CHANNEL_DEF_SIZE = 1,

EMSTORAGE_CHANNEL_SPAN = 1,
EMSTORAGE_CHANNEL_SPAN_SIZE = 3,

EMSTORAGE_CHANNEL_PREMIUM = 4,
EMSTORAGE_CHANNEL_PREMIUM_SIZE = 1,

/*itemfood system, Juver, 2017/05/24 */
FITEMFACT_SIZE = 4,
FITEMFACT_DEFAULT_SIZE = 2,

/*system buffs, Juver, 2017/09/04 */
SYSTEM_BUFF_SIZE = 5,
};

enum EMGM_EVENT_TYPE
{
EMGM_EVENT_NONE = 0x00, // ¾øÀ½.
EMGM_EVENT_SPEED = 0x01, // À̵¿¼Óµµ.
EMGM_EVENT_ASPEED = 0x02, // °ø°Ý¼Óµµ.
EMGM_EVENT_ATTACK = 0x04, // °ø°Ý·Â.
};

struct SCHARSKILL
{
static DWORD VERSION;
static DWORD SIZE;

SNATIVEID sNativeID;
WORD wLevel;

SCHARSKILL () :
sNativeID(SNATIVEID::ID_NULL,SNATIVEID::ID_NULL),
wLevel(0)
{
}

SCHARSKILL ( const SNATIVEID &_sNID, const WORD _wLvl ) :
sNativeID(_sNID),
wLevel(_wLvl)
{
}
};

struct DAMAGE_SPEC
{
float m_fPsyDamageReduce; // ¹°¸® µ¥¹ÌÁö Èí¼öÀ²
float m_fMagicDamageReduce; // ¸¶¹ý µ¥¹ÌÁö Èí¼öÀ²
float m_fPsyDamageReflection; // ¹°¸® µ¥¹ÌÁö ¹Ý»çÀ²
float m_fPsyDamageReflectionRate; // ¹°¸® µ¥¹ÌÁö ¹Ý»çÈ®·ü
float m_fMagicDamageReflection; // ¸¶¹ý µ¥¹ÌÁö ¹Ý»çÀ²
float m_fMagicDamageReflectionRate; // ¸¶¹ý µ¥¹ÌÁö ¹Ý»çÈ®·ü

DAMAGE_SPEC() :
m_fPsyDamageReduce(0.0f),
m_fMagicDamageReduce(0.0f),
m_fPsyDamageReflection(0.0f),
m_fPsyDamageReflectionRate(0.0f),
m_fMagicDamageReflection(0.0f),
m_fMagicDamageReflectionRate(0.0f)
{
}


void RESET()
{
*this = DAMAGE_SPEC();
}
};

struct DEFENSE_SKILL
{

SNATIVEID m_dwSkillID; // ¹ßµ¿Çü ½ºÅ³ MID/SID
WORD m_wLevel; // ¹ßµ¿Çü ½ºÅ³ ·¹º§
float m_fRate; // ¹ßµ¿Çü ½ºÅ³ MID/SID È®·ü
bool m_bActive; // ¹ßµ¿Çü ½ºÅ³ ±¸µ¿»óÅÂ

DEFENSE_SKILL()
: m_dwSkillID ( NATIVEID_NULL() )
, m_wLevel ( 0 )
, m_fRate ( 0.0f )
, m_bActive(false)
{
}

void RESET()
{
m_dwSkillID = NATIVEID_NULL();
m_wLevel = 0;
m_fRate = 0.0f;
}
};

enum EMACTION_SLOT
{
EMACT_SLOT_NONE = 0,
EMACT_SLOT_DRUG = 1,
};

struct SACTION_SLOT
{
enum { VERSION = 0x0100, };

WORD wACT;
SNATIVEID sNID;

SACTION_SLOT () :
wACT(EMACT_SLOT_NONE),
sNID(false)
{
}

bool VALID () const
{
return wACT!=EMACT_SLOT_NONE && sNID!=SNATIVEID(false);
}

void RESET ()
{
wACT = EMACT_SLOT_NONE;
sNID = SNATIVEID(false);
}
};

// Note : Äɸ¯ÅÍ 1Â÷ Ç׸ñ.
//
struct SCHARDATA
{
protected:
DWORD m_dwUserID;
public:
void SetUserID( DWORD dwUserID) { m_dwUserID = dwUserID; }
DWORD GetUserID() { return m_dwUserID; }

public:
DWORD m_dwUserLvl; // »ç¿ëÀÚ ±ÇÇÑ Level.
__time64_t m_tPREMIUM; // ÇÁ¸®¹Ì¾ö ±âÇÑ.
bool m_bPREMIUM; // ÇöÁ¦ ÇÁ¸®¹Ì¾ö »óÅÂ.
__time64_t m_tCHATBLOCK; // ±Ó¸» Â÷´Ü.

__time64_t m_tSTORAGE[EMSTORAGE_CHANNEL_SPAN_SIZE]; // â°í ±âÇÑ.
bool m_bSTORAGE[EMSTORAGE_CHANNEL_SPAN_SIZE]; // â°í 2 »ç¿ë.

WORD m_wINVENLINE; // Ãß°¡µÈ Àκ¥Å丮 ÁÙ¼ö.

DWORD m_dwServerID;
DWORD m_dwCharID;

char m_szName[CHAR_SZNAME]; // À̸§. (°íÁ¤)

EMTRIBE m_emTribe; // Á¾Á·. (°íÁ¤)
EMCHARCLASS m_emClass; // Á÷¾÷. (°íÁ¤)
WORD m_wSchool; // Çпø.
WORD m_wSex; // ¼ºº°.
WORD m_wHair; // ¸Ó¸®½ºÅ¸ÀÏ.
WORD m_wHairColor; // ¸Ó¸®»ö»ó
WORD m_wFace; // ¾ó±¼¸ð¾ç.

int m_nBright; // ¼Ó¼º.
int m_nLiving; // »ýÈ°.

WORD m_wLevel; // ·¹º§.
LONGLONG m_lnMoney; // ¼ÒÁö ±Ý¾×.

bool m_bMoneyUpdate; // µ·ÀÌ ¾÷µ¥ÀÌÆ® µÇ¾ú´ÂÁö ¾Æ´ÑÁö
bool m_bStorageMoneyUpdate; // â°í µ·ÀÌ ¾÷µ¥ÀÌÆ® µÇ¾ú´ÂÁö ¾Æ´ÑÁö
WORD m_wTempLevel; // ºñ±³¿ë ·¹º§ Àӽà º¯¼ö
LONGLONG m_lnTempMoney; // ºñ±³¿ë ¼ÒÁö ±Ý¾× Àӽà º¯¼ö
LONGLONG m_lnTempStorageMoney; // ºñ±³¿ë â°í ±Ý¾× Àӽà º¯¼ö

LONGLONG m_lVNGainSysMoney; // º£Æ®³² Ž´Ð ¹æÁö ÀúÀå ±Ý¾×

DWORD m_dwGuild; // ±æµå ¹øÈ£.
char m_szNick[CHAR_SZNAME]; // º°¸í.
__time64_t m_tSECEDE; // Å»Åð½Ã°£.

SCHARSTATS m_sStats; // Stats.
WORD m_wStatsPoint; // °¡¿ë stats Æ÷ÀÎÆ®.

WORD m_wAP; // ±âº» °ø°Ý·Â.
WORD m_wDP; // ±âº» ¹æ¾î·Â.

WORD m_wPA; // °ÝÅõÄ¡.
WORD m_wSA; // »ç°ÝÄ¡.
WORD m_wMA; // ¸¶·ÂÄ¡.

GLLLDATA m_sExperience; // °æÇèÄ¡. ( ÇöÁ¦/´ÙÀ½·¹¹ëµµ´Þ°ª )
LONGLONG m_lnReExp; // ȸº¹ÇÒ¼ö ÀÖ´Â °æÇèÄ¡

DWORD m_dwSkillPoint; // Skill Point.

LONGLONG m_lVNGainSysExp; // º£Æ®³² Ž´Ð ¹æÁö ÀúÀå °æÇèÄ¡

GLPADATA m_sHP; // »ý¸í·®. ( ÇöÁ¦/ÃÖ´ë·® )
GLPADATA m_sMP; // Á¤½Å·®. ( ÇöÁ¦/ÃÖ´ë·® )
GLPADATA m_sSP; // ±Ù·Â·®. ( ÇöÁ¦/ÃÖ´ë·® )
GLPADATA m_sCombatPoint; /*combatpoint logic logic, Juver, 2017/05/27 */

WORD m_wPK; // ÃÑ PK Ƚ¼ö.

bool m_bEventBuster; // À̺¥Æ® ÁßÀÎÁö ¾Æ´ÑÁö

__time64_t m_tLoginTime; // ·Î±ä ½Ã°£À̳ª À̺¥Æ® ½ÃÀ۽ð£

int m_EventStartLv; // À̺¥Æ® ÃÖ¼Ò ·¹º§
int m_EventEndLv; // À̺¥Æ® ÃÖ´ë ·¹º§

int m_RemainEventTime; // À̺¥Æ® Àû¿ë±îÁö ³²Àº ½Ã°£
int m_RemainBusterTime; // ºÎ½ºÅÍ ³²Àº½Ã°£

bool m_bEventApply; // À̺¥Æ® Àû¿ë´ë»ç ¿©ºÎ
bool m_bEventStart; // À̺¥Æ® ½ÃÀÛÇß´ÂÁö ¾Æ´ÑÁö, À̺¥Æ® ´ë»óÀÎÁö

int m_EventStartTime; // À̺¥Æ® Àû¿ë ½ÃÀÛ ½Ã°£
int m_EventBusterTime; // À̺¥Æ® ºÎ½ºÅÍ Å¸ÀÓ


/// º£Æ®³² Ž´Ð ¹æÁö ½Ã½ºÅÛ º¯¼ö
LONGLONG m_VietnamGameTime; // ÀúÀåµÈ ´©Àû ½Ã°£
BYTE m_dwVietnamGainType; // º£Æ®³² Ž´Ð ¹æÁö ½Ã½ºÅÛ
DWORD m_dwVietnamInvenCount; // ¿Å±æ¼ö ÀÖ´Â ¾ÆÀÌÅÛÀÇ °¹¼ö

TCHAR m_szPhoneNumber[SMS_RECEIVER]; // ij¸¯ÅÍ Æù ¹øÈ£

float m_fScaleRange;

/*contribution point, Juver, 2017/08/23 */
LONGLONG m_llContributionPoint;

/*activity point, Juver, 2017/08/23 */
DWORD m_dwActivityPoint;

/*activity system, Juver, 2017/11/04 */
char m_szBadge[CHAR_SZNAME];

/*pk info, Juver, 2017/11/16 */
DWORD m_dwPKScore;
DWORD m_dwPKDeath;

DWORD m_dwCWKill;
DWORD m_dwCWDeath;

/*equipment lock, Juver, 2018/01/13 */
BOOL m_bEnableEquipmentLock;
BOOL m_bEquipmentLockStatus;

/*pvp capture the flag, Juver, 2018/01/29 */
WORD m_wCaptureTheFlagTeam;
bool m_bCaptureTheFlagHoldFlag;

//add directval
int m_nHP_Potion_Rate;
int m_nMP_Potion_Rate;
int m_nSP_Potion_Rate;

SCHARDATA ()
: m_dwUserID(0)
, m_dwUserLvl(0)
, m_tPREMIUM(0)
, m_bPREMIUM(false)
, m_tCHATBLOCK(0)
, m_wINVENLINE(0)
, m_dwServerID(0)
, m_dwCharID(0)
, m_emTribe(TRIBE_HUMAN)
, m_emClass(GLCC_BRAWLER_M)
, m_wSchool(0)
, m_wSex(0)
, m_wHair(0)
, m_wHairColor(0)
, m_wFace(0)
, m_nBright(1)
, m_nLiving(0)
, m_wLevel(0)
, m_lnMoney(0)
, m_lVNGainSysMoney(0)
, m_bMoneyUpdate(FALSE)
, m_bStorageMoneyUpdate(FALSE)
, m_wTempLevel(0)
, m_lnTempMoney(0)
, m_lnTempStorageMoney(0)
, m_dwGuild(CLUB_NULL)
, m_tSECEDE(0)
, m_wStatsPoint(0)
, m_wAP(0)
, m_wDP(0)
, m_wPA(0)
, m_wSA(0)
, m_wMA(0)
, m_dwSkillPoint(0)
, m_wPK(0)
, m_EventStartTime(0)
, m_EventBusterTime(0)
, m_bEventBuster(FALSE)
, m_bEventStart(FALSE)
, m_tLoginTime(0)
, m_EventStartLv(0)
, m_EventEndLv(0)
, m_bEventApply(FALSE)
, m_RemainEventTime(0)
, m_RemainBusterTime(0)
, m_VietnamGameTime(0)
, m_dwVietnamGainType(0)
, m_lVNGainSysExp(0)
, m_dwVietnamInvenCount(0)
, m_lnReExp ( 0 )
, m_fScaleRange( 1.0f )

, m_nHP_Potion_Rate(0) //add directval
, m_nMP_Potion_Rate(0)
, m_nSP_Potion_Rate(0)

/*contribution point, Juver, 2017/08/23 */
, m_llContributionPoint(0)

/*activity point, Juver, 2017/08/23 */
, m_dwActivityPoint(0)

/*pk info, Juver, 2017/11/16 */
, m_dwPKScore(0)
, m_dwPKDeath(0)

, m_dwCWKill(0)
, m_dwCWDeath(0)

/*equipment lock, Juver, 2018/01/13 */
, m_bEnableEquipmentLock(FALSE)
, m_bEquipmentLockStatus(FALSE)

/*pvp capture the flag, Juver, 2018/01/29 */
, m_wCaptureTheFlagTeam(CAPTURE_THE_FLAG_TEAM_SIZE)
, m_bCaptureTheFlagHoldFlag(false)
{
memset(m_szName, 0, sizeof(char) * CHAR_SZNAME);
memset(m_szNick, 0, sizeof(char) * CHAR_SZNAME);
memset(m_szPhoneNumber, 0, sizeof(TCHAR) * SMS_RECEIVER);

/*activity system, Juver, 2017/11/05 */
memset(m_szBadge, 0, sizeof(char) * CHAR_SZNAME);

for ( int i=0; i<EMSTORAGE_CHANNEL_SPAN_SIZE; ++i ) m_tSTORAGE = 0;
for ( int i=0; i<EMSTORAGE_CHANNEL_SPAN_SIZE; ++i ) m_bSTORAGE = false;
}

SCHARDATA &GETCHARDATA () { return *this; }
EMCHARINDEX GETCHARINDEX () const { return CharClassToIndex ( m_emClass ); }

bool IsKEEP_STORAGE ( DWORD dwCHANNEL ); // ÇØ´ç ¹øÈ£ÀÇ ¶ôÄ¿¿¡ ¹°°ÇÀ» ¸Ã±æ¼ö ÀÖ´ÂÁö °Ë»ç.
CTime GetStorageTime ( DWORD dwCHANNEL );
WORD GetOnINVENLINE ();
void CalcPREMIUM ();
};
typedef SCHARDATA* PCHARDATA;

typedef std::vector<SHOPPURCHASE> VECSHOP;

typedef std::map<std::string,SHOPPURCHASE> MAPSHOP;
typedef MAPSHOP::iterator MAPSHOP_ITER;

typedef std::map<DWORD,std::string> MAPSHOP_KEY;
typedef MAPSHOP_KEY::iterator MAPSHOP_KEY_ITER;

struct SCHARDATA2 : public SCHARDATA
{
typedef stdext::hash_map<DWORD,SCHARSKILL> SKILL_MAP;
typedef SKILL_MAP::iterator SKILL_MAP_ITER;
typedef SKILL_MAP::const_iterator SKILL_MAP_CITER;

char m_szUID[USR_ID_LENGTH+1];

SKILL_MAP m_ExpSkills; // ¼ö·Ã ½ºÅ³ ¼Ó¼º.
SITEMCUSTOM m_PutOnItems[SLOT_TSIZE]; // Âø¿ë Item.

SITEMCUSTOM m_pHoldArray[300]; // Âø¿ë Item.

WORD m_wSKILLQUICK_ACT; // ½ºÅ³ Äü½½·ÔÁß ¾×ƼºêµÈ ½ºÅ³.
SNATIVEID m_sSKILLQUICK[EMSKILLQUICK_SIZE]; // ½ºÅ³ Äü½½·Ô.
SACTION_SLOT m_sACTIONQUICK[EMACTIONQUICK_SIZE]; // ¾×¼Ç Äü½½·Ô.

GLInventory m_cInventory; // Àκ¥Å丮.

BOOL m_bServerStorage; // â°í À¯È¿ÇÔ. ( ¼­¹öÃø. ) ( »õ·Î »ý¼ºµÇ´Â ij¸¯ÅÍ´Â ¹«Á¶°Ç À¯È¿ÇÏ°Ô »ý¼º½Ã üũÇÔ. - GLCHARLOGIC::INIT_DATA() )
LONGLONG m_lnStorageMoney; // â°í ¼ÒÁö ±Ý¾×.
BOOL m_bStorage[EMSTORAGE_CHANNEL]; // â°í À¯È¿ÇÔ. ( Ŭ¶óÀ̾ðÆ®Ãø. )
GLInventory m_cStorage[EMSTORAGE_CHANNEL]; // â°í.

GLQuestPlay m_cQuestPlay; // Äù½ºÆ®.

// ¼­¹ö Àü¿ë.
MAPSHOP m_mapCharged; // ±¸ÀÔÇÑ ¾ÆÀÌÅÛ ¸ñ·Ï.

// Ŭ¶óÀ̾ðÆ® Àü¿ë.
GLInventory m_cInvenCharged; // ±¸ÀÔÇÑ ¾ÆÀÌÅÛ Àκ¥.
MAPSHOP_KEY m_mapChargedKey; // ±¸ÀÔÇÑ ¾ÆÀÌÅÛ Àκ¥ÀÇ ÇØ´ç À§Ä¡ purkey ã±â.

// Note : Ãʱ⠽ÃÀÛµÉ ¸Ê, ¸Ê À§Ä¡°ª.
//
SNATIVEID m_sStartMapID; // Ãʱ⠽ÃÀÛ ¸Ê.
DWORD m_dwStartGate; // Ãʱ⠽ÃÀÛ °³ÀÌÆ®.
D3DXVECTOR3 m_vStartPos; // Ãʱ⠽ÃÀÛ À§Ä¡.

SNATIVEID m_sSaveMapID; // Á¾·á ¸Ê.
D3DXVECTOR3 m_vSavePos; // Á¾·á À§Ä¡.

SNATIVEID m_sLastCallMapID; // Á÷Àü±Íȯ ¸Ê.
D3DXVECTOR3 m_vLastCallPos; // Á÷Àü±Íȯ À§Ä¡.

INT m_dwThaiCCafeClass; // ű¹ »çÀ̹ö Ä«Æä
INT m_nMyCCafeClass; // ¸»·¹ÀÌ½Ã¾Æ PC¹æ À̺¥Æ®
SChinaTime m_sChinaTime; // Áß±¹ ½Ã°£º° ¼öÀÍ
SEventTime m_sEventTime; // À̺¥Æ® ½Ã°£

SVietnamGainSystem m_sVietnamSystem; // º£Æ®³² Ž´Ð¹æÁö ½Ã½ºÅÛ
GLInventory m_cVietnamInventory; // º£Æ®³² ÀúÀåÇÑ Å½´Ð Àκ¥Å丮
bool m_bVietnamLevelUp; // º£Æ®³² °æÇèÄ¡ ȹµæ ¾ÆÀÌÅÛ »ç¿ë½Ã ¿©·¯´Ü°èÀÇ ·¹º§À» Áõ°¡½Ãų ¼ö ÀÖ´Ù.

// ¾ÆÀÌÅÛ °³Á¶ Á¤º¸ // ITEMREBUILD_MARK
BOOL m_bRebuildOpen;
SINVEN_POS m_sRebuildCardPos;
SINVEN_POS m_sRebuildItem;
SINVEN_POS m_sPreInventoryItem;
LONGLONG m_i64RebuildCost;
LONGLONG m_i64RebuildInput;

//sealed card NaJDeV
SINVEN_POS m_sRebuildSeal;
WORD m_wSealType;

bool m_bTracingUser; // ÇöÀç ÃßÀûÁßÀÎ À¯ÀúÀÎÁö ¾Æ´ÑÁö

typedef std::map<DWORD,ITEM_COOLTIME> COOLTIME_MAP;
typedef COOLTIME_MAP::iterator COOLTIME_MAP_ITER;
typedef COOLTIME_MAP::const_iterator COOLTIME_MAP_CITER;

COOLTIME_MAP m_mapCoolTimeType; // ¾ÆÀÌÅÛ Å¸ÀÔº° ÄðŸÀÓ
COOLTIME_MAP m_mapCoolTimeID; // ¾ÆÀÌÅÛ MID/SIDº° ÄðŸÀÓ

/*itemfood system, Juver, 2017/05/24 */
SFITEMFACT m_sFITEMFACT[FITEMFACT_SIZE];

/*system buffs, Juver, 2017/09/04 */
SSYSTEM_BUFF m_sSYSTEM_BUFF[SYSTEM_BUFF_SIZE];

/*activity system, Juver, 2017/10/23 */
SACTIVITY_CHAR_DATA_MAP m_mapActivityProg;
SACTIVITY_CHAR_DATA_MAP m_mapActivityDone;

SCHARDATA2();
void Assign ( SCHARDATA2 &CharData );

EMCHARINDEX GETCHARINDEX () const { return CharClassToIndex ( m_emClass ); }

BOOL SETEXPSKILLS_BYBUF ( CByteStream &ByteStream );
BOOL GETEXPSKILLS_BYBUF ( CByteStream &ByteStream ) const;

BOOL GETPUTONITEMS_BYBUF ( CByteStream &ByteStream ) const;

BOOL SETSKILL_QUICKSLOT ( CByteStream &ByteStream );
BOOL GETSKILL_QUICKSLOT ( CByteStream &ByteStream ) const;

BOOL SETACTION_QUICKSLOT ( CByteStream &ByteStream );
BOOL GETACTION_QUICKSLOT ( CByteStream &ByteStream ) const;


BOOL SETINVENTORY_BYBUF ( CByteStream &ByteStream );
BOOL GETINVENTORYE_BYBUF ( CByteStream &ByteStream ) const;

BOOL SETSTORAGE_BYBUF ( CByteStream &ByteStream );
BOOL GETSTORAGE_BYBUF ( CByteStream &ByteStream ) const;

BOOL SETQUESTPLAY ( CByteStream &ByteStream );
BOOL GETQUESTPLAY ( CByteStream &ByteStream ) const;

BOOL SETSHOPPURCHASE ( VECSHOP &vecSHOP );

// º£Æ®³² Ž´Ð¹æÁö ½Ã½ºÅÛ Ãß°¡¿¡ µû¸¥ ij¸¯ÅÍ Ãß°¡ Àκ¥Å丮 È®Àå
BOOL SETVTADDINVENTORY_BYBUF ( CByteStream &ByteStream );
BOOL GETVTADDINVENTORYE_BYBUF ( CByteStream &ByteStream ) const;

BOOL SETITEMCOOLTIME_BYBUF( CByteStream &ByteStream );
BOOL GETITEMCOOLTIME_BYBUF( CByteStream &ByteStream ) const;

/*itemfood system, Juver, 2017/05/25 */
BOOL SETITEMFOOD_BYBUF( CByteStream &ByteStream );
BOOL GETITEMFOOD_BYBUF( CByteStream &ByteStream ) const;

/*activity system, Juver, 2017/10/23 */
BOOL SETACTIVITY_BYBUF( CByteStream &ByteStream );
BOOL GETACTIVITY_BYBUF( CByteStream &ByteStream ) const;

public:
BOOL LOADFILE ( const char* szFileName );

public:
// Ŭ¶óÀ̾ðÆ® Àü¿ë.
BOOL ADDSHOPPURCHASE ( const char* szPurKey, SNATIVEID nidITEM );
BOOL DELSHOPPURCHASE ( const DWORD dwID );

public: // ITEMREBUILD_MARK
const SITEMCUSTOM& GET_REBUILD_ITEM();
const SITEMCUSTOM& GET_PREHOLD_ITEM(); // ??? ???? ???

public: //sealed card
const SITEMCUSTOM& GET_REBUILD_SEAL(); //sealed card
const WORD GET_SEAL_TYE() { return m_wSealType; }


public: // ITEMREBUILD_MARK
VOID InitRebuildData();
VOID OpenRebuild() { m_bRebuildOpen = TRUE; }
VOID CloseRebuild() { m_bRebuildOpen = FALSE; }
const BOOL ValidRebuildOpen() { return m_bRebuildOpen; }
const LONGLONG GetRebuildCost() { return m_i64RebuildCost; }
const LONGLONG GetRebuildInput() { return m_i64RebuildInput; }

private:
SCHARDATA2(const SCHARDATA2 &Inven ) { GASSERT(0&&"¹¬½ÃÀû º¹»ç ºÒÇã!"); }
SCHARDATA2& operator= ( SCHARDATA2 &Inven ) { GASSERT(0&&"¹¬½ÃÀû º¹»ç ºÒÇã!"); return *this; }
};
typedef SCHARDATA2* PCHARDATA2;


struct SSTATEBLOW
{
EMSTATE_BLOW emBLOW; // »óÅ ÀÌ»ó Á¾·ù.
float fAGE; // Àû¿ë ½Ã°£.
float fSTATE_VAR1; // Àû¿ë °ª 1.
float fSTATE_VAR2; // Àû¿ë °ª 2.

SSTATEBLOW () :
emBLOW(EMBLOW_NONE),
fAGE(0),
fSTATE_VAR1(0),
fSTATE_VAR2(0)
{

}
};

struct SLANDEFFECT
{
D3DXVECTOR2 vMinPos;
D3DXVECTOR2 vMaxPos;
EMLANDEFFECT_TYPE emLandEffectType;
float fValue;

SLANDEFFECT() :
vMinPos( 0.0f, 0.0f ),
vMaxPos( 0.0f, 0.0f ),
emLandEffectType(EMLANDEFFECT_ATK_SPEED),
fValue( 0.0f )
{
}

void Init()
{
vMinPos = D3DXVECTOR2( 0.0f, 0.0f );
vMaxPos = D3DXVECTOR2( 0.0f, 0.0f );
emLandEffectType = EMLANDEFFECT_ATK_SPEED;
fValue = 0.0f;
}

bool IsUse()
{
if( vMinPos == D3DXVECTOR2( 0.0f, 0.0f ) &&
vMaxPos == D3DXVECTOR2( 0.0f, 0.0f ) &&
emLandEffectType == EMLANDEFFECT_ATK_SPEED &&
fValue == 0.0f ) return FALSE;
return TRUE;
}

bool operator == ( const SLANDEFFECT &value )
{
if( vMaxPos != value.vMaxPos ) return FALSE;
if( vMinPos != value.vMinPos ) return FALSE;
if( emLandEffectType != value.emLandEffectType ) return FALSE;
if( fValue != value.fValue ) return FALSE;

return TRUE;
}

};

typedef std::vector<SLANDEFFECT> VEC_LANDEFF;
typedef VEC_LANDEFF::iterator VEC_LANDEFF_ITER;

struct SPASSIVE_SKILL_DATA
{
short m_nHP;
short m_nMP;
short m_nSP;

short m_nDAMAGE;
short m_nDEFENSE;

short m_nHIT;
short m_nAVOID;

short m_nPIERCE;
float m_fTARRANGE;

float m_fMOVEVELO;
float m_fATTVELO;
float m_fSKILLDELAY;

float m_fINCR_HP;
float m_fINCR_MP;
float m_fINCR_SP;

float m_fDAMAGE_RATE;
float m_fDEFENSE_RATE;

DAMAGE_SPEC m_sDamageSpec;

short m_nPA;
short m_nSA;
short m_nMA;

float m_fHP_RATE;
float m_fMP_RATE;
float m_fSP_RATE;

SRESIST m_sSUMRESIST; // ÀúÇ×°ª.

/*skill range spec logic, Juver, 2017/06/06 */
float m_fSUM_SKILL_ATTACKRANGE;
float m_fSUM_SKILL_APPLYRANGE;

/*summon time, Juver, 2017/12/12 */
int m_nSummonTime;

SPASSIVE_SKILL_DATA () :
m_nHP(0),
m_nMP(0),
m_nSP(0),

m_fINCR_HP(0),
m_fINCR_MP(0),
m_fINCR_SP(0),

m_nDAMAGE(0),
m_nDEFENSE(0),

m_nHIT(0),
m_nAVOID(0),

m_nPIERCE(0),
m_fTARRANGE(0),

m_fMOVEVELO(0),
m_fATTVELO(0),
m_fSKILLDELAY(0),

m_fDAMAGE_RATE(0),
m_fDEFENSE_RATE(0),

m_nPA(0),
m_nSA(0),
m_nMA(0),

m_fHP_RATE(0),
m_fMP_RATE(0),
m_fSP_RATE(0),

/*skill range spec logic, Juver, 2017/06/06 */
m_fSUM_SKILL_ATTACKRANGE(0.0f),
m_fSUM_SKILL_APPLYRANGE(0.0f),

/*summon time, Juver, 2017/12/12 */
m_nSummonTime(0)
{
}
};

struct SPKCOMBO_COUNT
{
bool bShow;
int nCount;
float fTime;

SPKCOMBO_COUNT() :
bShow(FALSE),
nCount(0),
fTime(0)
{
}

bool IsACTIVE()
{
return bShow != FALSE;
}

void RESET()
{
bShow = FALSE;
nCount = 0;
fTime = 0;
};
};
struct SEventState
{
float fItemGainRate; // À̺¥Æ® ½Ã ¾ò°ÔµÇ´Â ¾ÆÀÌÅÛ µå¶øÀ²
float fExpGainRate; // À̺¥Æ® ½Ã ¾ò°ÔµÇ´Â °æÇéÄ¡ ¹èÀ²
int MinEventLevel; // À̺¥Æ® ÃÖ¼Ò ·¹º§
int MaxEventLevel; // À̺¥Æ® ÃÖ´ë ·¹º§
bool bEventStart; // À̺¥Æ®°¡ ½ÃÀ۵ƴÂÁö ¾Æ´ÑÁö
int EventPlayTime; // À̺¥Æ®°¡ Àû¿ë µÇ´Â Ç÷¹ÀÌ ½Ã°£
int EventBusterTime; // À̺¥Æ®°¡ Áö¼ÓµÇ´Â ½Ã°£
CTime EventStartTime; // À̺¥Æ®°¡ ÃÖÃÊ ½ÃÀÛÇÑ ½Ã°£
DWORD dwEventEndMinute; // À̺¥Æ® Àû¿ë ½Ã°£


SEventState()
{
Init();
}
void Init()
{
fItemGainRate = 1.0f;
fExpGainRate = 1.0f;
MinEventLevel = 0; // À̺¥Æ® ÃÖ¼Ò ·¹º§
MaxEventLevel = 0; // À̺¥Æ® ÃÖ´ë ·¹º§
bEventStart = FALSE; // À̺¥Æ®°¡ ½ÃÀ۵ƴÂÁö ¾Æ´ÑÁö
EventPlayTime = 0; // À̺¥Æ®°¡ ½ÃÀÛ ½Ã°£
EventBusterTime = 0; // À̺¥Æ®°¡ Áö¼ÓµÇ´Â ½Ã°£
EventStartTime = 0;
dwEventEndMinute = 0;

}
};

struct SEVENT_FACT
{
INT nType;
WORD wSpeed;
WORD wASpeed;
WORD wAttack;

SEVENT_FACT ()
: nType(EMGM_EVENT_NONE)
, wSpeed(0)
, wASpeed(0)
, wAttack(0)
{
}

bool IsACTIVE( EMGM_EVENT_TYPE emType )
{
return (nType&emType)!=EMGM_EVENT_NONE;
}

void SetEVENT( EMGM_EVENT_TYPE emType, WORD wValue )
{
nType |= emType;

switch( emType )
{
case EMGM_EVENT_SPEED: wSpeed=wValue; break;
case EMGM_EVENT_ASPEED: wASpeed=wValue; break;
case EMGM_EVENT_ATTACK: wAttack=wValue; break;
}
}

void ResetEVENT( EMGM_EVENT_TYPE emType )
{
nType &= ~emType;
}
};

struct SDROP_STATEBLOW
{
EMSTATE_BLOW emBLOW; // »óÅ ÀÌ»ó Á¾·ù.
float fAGE; // Àû¿ë ½Ã°£.
float fSTATE_VAR1; // Àû¿ë °ª 1.
float fSTATE_VAR2; // Àû¿ë °ª 2.

SDROP_STATEBLOW ()
: emBLOW(EMBLOW_NONE)
, fAGE(0)
, fSTATE_VAR1(0)
, fSTATE_VAR2(0)
{
}

SDROP_STATEBLOW& operator= ( SSTATEBLOW &sblow )
{
emBLOW = sblow.emBLOW;
fAGE = sblow.fAGE;
fSTATE_VAR1 = sblow.fSTATE_VAR1;
fSTATE_VAR2 = sblow.fSTATE_VAR2;

return *this;
}
};


struct SDROP_CHAR
{
enum
{
CHAR_GEN = 0x001,
CLUB_CD = 0x002
};

char szName[CHAR_SZNAME]; // À̸§.
EMTRIBE emTribe; // Á¾Á·.
EMCHARCLASS emClass; // Á÷¾÷.
WORD wSchool; // Çпø.
WORD wHair; // ¸Ó¸®Ä«¶ô.
WORD wHairColor; // ¸Ó¸®Ä«¶ô Ä÷¯
WORD wFace; // ¾ó±¼¸ð¾ç.
WORD wSex; // ¼ºº°

int nBright; // ¼Ó¼º.

DWORD dwCharID; // Äɸ¯ÅÍID.
WORD wLevel; // ·¹º§.
DWORD dwGuild; // ±æµå ¹øÈ£.
DWORD dwAlliance; // µ¿¸Í ¹øÈ£
char szClubName[CHAR_SZNAME]; // Ŭ·´ À̸§.
DWORD dwGuildMarkVer; // ±æµå ¸¶Å© ¹øÈ£.
DWORD dwGuildMaster; // ±æµå ¸¶½ºÅÍ.
char szNick[CHAR_SZNAME]; // º°¸í.

DWORD dwParty; // ÆÄƼ ¹øÈ£.
DWORD dwPMasterID; // ÆÄƼ ¸¶½ºÅÍ ID.

GLPADATA sHP; // »ý¸í·®. ( ÇöÁ¦/ÃÖ´ë·® )

DWORD dwGaeaID; // »ý¼º ¸Þ¸ð¸® À妽º¿ë.
SNATIVEID sMapID; // »ý¼º ¸Ê ID.
DWORD dwCeID; // ¼¿ ID.
D3DXVECTOR3 vPos; // À§Ä¡.
D3DXVECTOR3 vDir; // À§Ä¡.

EMACTIONTYPE Action; // ÇöÁ¦ ¾×¼Ç.
DWORD dwActState; // ÇöÁ¦ ¾×¼Ç Ç÷¡±×.
D3DXVECTOR3 vTarPos; // ÇöÁ¦ ¸ñÇ¥ À§Ä¡.

/*skill summon, Juver, 2017/10/09 */
DWORD dwSummonGUID[SKILL_SUMMON_MAX_CLIENT_NUM]; // ¼Òȯ¼ö ID

SDROP_SKILLFACT sSKILLFACT[SKILLFACT_SIZE];

/*itemfood system, Juver, 2017/05/24 */
SDROP_FITEMFACT sFITEMFACT[FITEMFACT_SIZE];

/*system buffs, Juver, 2017/09/04 */
SDROP_SYSTEM_BUFF sSYSTEM_BUFF[SYSTEM_BUFF_SIZE];

SDROP_STATEBLOW sSTATEBLOWS[EMBLOW_MULTI];
int nLandEffect[EMLANDEFFECT_MULTI]; // ÁöÇü ÀÌ»ó È¿°úµé

SQITEM_FACT sQITEMFACT;
SEVENT_FACT sEVENTFACT;
SEventState sEventState;
SPKCOMBO_COUNT sPKCOMBOCOUNT;

SITEMCLIENT m_PutOnItems[SLOT_NSIZE_S_2]; // Âø¿ë Item.
BOOL m_bVehicle;
CLIENT_VEHICLE m_sVehicle;

bool m_bItemShopOpen; // ItemShopOpen

BOOL m_bUseArmSub; // ±Ø°­ºÎ¸¦ À§ÇÑ º¸Á¶ ¹«±â »ç¿ë¿©ºÎ

DWORD dwFLAGS; // ±âŸ ¼Ó¼º.

SPASSIVE_SKILL_DATA sPASSIVE_SKILL; // passive skill data.

DWORD m_dwANISUBTYPE; // ¾Ö´Ï¸ÞÀÌ¼Ç ¼­ºêŸÀÔ

float m_fScaleRange;

bool m_bBoosterStart; /*vehicle booster system, Juver, 2017/08/12 */

/*activity system, Juver, 2017/11/04 */
char szBadge[CHAR_SZNAME];

/*hide gm info, Juver, 2017/11/26 */
DWORD dwUserID;
DWORD dwUserLevel;

/*pvp capture the flag, Juver, 2018/01/29 */
WORD m_wCaptureTheFlagTeam;
bool m_bCaptureTheFlagHoldFlag;
BOOL m_bPassenger;

SDROP_CHAR ()
: emTribe(TRIBE_HUMAN)
, emClass(GLCC_BRAWLER_M)
, wSchool(0)
, m_bPassenger(FALSE)
, wHairColor(0)
, wSex(0)
, wHair(0)
, wFace(0)
, nBright(0)
, dwCharID(0)
, wLevel(1)
, dwGuild(CLUB_NULL)
, dwGuildMarkVer(0)
, dwGuildMaster(0)
, dwAlliance(0)
, dwParty(PARTY_NULL)
, dwPMasterID(GAEAID_NULL)
, dwGaeaID(0)
, dwCeID(0)
, vPos(0,0,0)
, vDir(0,0,-1)
, Action(GLAT_IDLE)
, dwActState(NULL)
, vTarPos(0,0,0)
, dwFLAGS(NULL)
, m_bUseArmSub(FALSE)
, m_bVehicle ( FALSE )
, m_bItemShopOpen( false )
//, dwSummonGUID(GAEAID_NULL)
, m_dwANISUBTYPE( 0 )
, m_fScaleRange( 1.0f )
, m_bBoosterStart(false) /*vehicle booster system, Juver, 2017/08/12 */

/*hide gm info, Juver, 2017/11/26 */
, dwUserID(0)
, dwUserLevel(0)

/*pvp capture the flag, Juver, 2018/01/29 */
, m_wCaptureTheFlagTeam(CAPTURE_THE_FLAG_TEAM_SIZE)
, m_bCaptureTheFlagHoldFlag(false)
{
for( int i=0; i < EMLANDEFFECT_MULTI; i++)
{
nLandEffect = -1;
}
memset(szName, 0, sizeof(char) * CHAR_SZNAME);
memset(szNick, 0, sizeof(char) * CHAR_SZNAME);
memset(szClubName, 0, sizeof(char) * CHAR_SZNAME);

/*activity system, Juver, 2017/11/05 */
memset(szBadge, 0, sizeof(char) * CHAR_SZNAME);

/*skill summon, Juver, 2017/10/09 */
for ( int i=0; i<SKILL_SUMMON_MAX_CLIENT_NUM; ++i )
dwSummonGUID = GAEAID_NULL;
}
};


struct SINFO_CHAR
{
DWORD dwCharID;
DWORD dwGaeaID;
char szName[CHAR_SZNAME];
EMCHARCLASS emClass;
WORD wSchool;
WORD wHair;
WORD wHairColor;
WORD wFace;
WORD wLevel;

char szClubName[CHAR_SZNAME];

GLPADATA sdDAMAGE;
WORD wHP;
WORD wMP;
WORD wSP;

SITEMCUSTOM sPutOnItems[SLOT_NSIZE_S_2];

SCHARSTATS sSUMSTATS;

WORD wSUM_PA;
WORD wSUM_SA;
WORD wSUM_MA;

SRESIST sSUMRESIST;

int nSUM_DEF;
int nSUM_HIT;
int nSUM_AVOID;
bool bUseArmSub;
bool bPrivate;

/*activity system, Juver, 2017/11/04 */
char szBadge[CHAR_SZNAME];

float fScaleRange;

SINFO_CHAR ()
: emClass(GLCC_BRAWLER_M)
, wSchool(0)
, wHairColor(0)
, wHair(0)
, wFace(0)
, dwGaeaID(GAEAID_NULL)
, dwCharID(GAEAID_NULL)
, wLevel(1)
, wSUM_PA( 0 )
, wSUM_SA( 0 )
, wSUM_MA( 0 )
, nSUM_DEF( 0 )
, nSUM_HIT( 0 )
, nSUM_AVOID( 0 )
, bUseArmSub( FALSE )
, bPrivate(false)
, fScaleRange(1.0f)
{
memset(szName, 0, sizeof(char) * CHAR_SZNAME);
memset(szClubName, 0, sizeof(char) * CHAR_SZNAME);
StringCchCopy ( szClubName, CHAR_SZNAME, "No Guild" );

/*activity system, Juver, 2017/11/05 */
memset(szBadge, 0, sizeof(char) * CHAR_SZNAME);
StringCchCopy ( szBadge, CHAR_SZNAME, "No Badge" );
}
};

#endif // GLCHARDATA_H_
 
Junior Spellweaver
Joined
Apr 30, 2015
Messages
152
Reaction score
2
There are few different type of shop inside the source/client

1. normal npc shop (use ran gold to buy items)

2. new npc shop (the interface looks like ran point shop but it use ran gold to purchase instead of ran point)

3. npc exchange items (u will know what it is since u guys use ran destiny as based client)

and so on.

About pointshop, I still didnt find any new item point shop related within this source. I did add The PointShop features from Ep11 source code shared here (CNDev) and add to my current source.

screenshot
UKnowMeKnow - Juver source+database+cfg (soon latest GS source) - RaGEZONE Forums

Can you share the cpp/h file name for pointshop?
 
Skilled Illusionist
Joined
Apr 17, 2012
Messages
348
Reaction score
29
Can someone share what cpp/h files needs to be moved if you want the character/inventory/skill window to be returned to original ep7 windows?
 
Master Summoner
Joined
Feb 6, 2019
Messages
566
Reaction score
155
Code:
InnerInterface.cpp
InnerInterface.h
InnerInterfaceSimple.cpp
InventoryWindow.cpp
InventoryWindow.h
InventoryPage.cpp
InventoryPage.h
InventoryPageWear.cpp
InventoryPageWear.h
InventoryPageWearEx.cpp
InventoryPageWearEx.h
CharacterWindow.cpp
CharacterWindow.h
CharacterWindowEx.cpp
CharacterWindowMsg.cpp
CharacterWindowUpdate.cpp
Can someone share what cpp/h files needs to be moved if you want the character/inventory/skill window to be returned to original ep7 windows?



RANPARAM.CPP
still can`t

this my source



#ifndef GLCHARDATA_H_
#define GLCHARDATA_H_

#if _MSC_VER > 1000
#pragma once
#endif // _MSC_VER > 1000

#include <map>
#include <hash_map>

#include "./GLFactData.h"

#include "./GLInventory.h"
#include "./GLItem.h"
#include "./GLQuestPlay.h"
#include "./GLSkill.h"
#include "./GLVEHICLE.h"

#include "../../Lib_Engine/Common/ByteStream.h"

/*skill summon, Juver, 2017/10/09 */
#include "GLSummonData.h"

/*activity system, Juver, 2017/10/23 */
#include "GLActivityData.h"

/*pvp capture the flag, Juver, 2018/01/29 */
#include "GLPVPCaptureTheFlagDefine.h"

#define SCALERANGE_MIN (0.88f) //(0.75f)
#define SCALERANGE_MAX (1.12f) //(1.20f)

/*charinfoview , Juver, 2017/11/11 */
#define REQ_CHARINFO_DELAY 5.0f

enum EMCHARDATA
{
EMSKILLQUICK_VERSION = 0x0102,
EMSKILLQUICK_SIZE_101 = 60,
EMSKILLQUICK_SIZE = 60,

//EMACTIONQUICK_SIZE = 12,
EMACTIONQUICK_SIZE = 6,

SKILLREALFACT_SIZE = 14,
SKILLFACT_SIZE = 14,

EMMAX_CLUB_NUM = 100,

EMSTORAGE_CHANNEL = 5,

EMSTORAGE_CHANNEL_DEF = 0,
EMSTORAGE_CHANNEL_DEF_SIZE = 1,

EMSTORAGE_CHANNEL_SPAN = 1,
EMSTORAGE_CHANNEL_SPAN_SIZE = 3,

EMSTORAGE_CHANNEL_PREMIUM = 4,
EMSTORAGE_CHANNEL_PREMIUM_SIZE = 1,

/*itemfood system, Juver, 2017/05/24 */
FITEMFACT_SIZE = 4,
FITEMFACT_DEFAULT_SIZE = 2,

/*system buffs, Juver, 2017/09/04 */
SYSTEM_BUFF_SIZE = 5,
};

enum EMGM_EVENT_TYPE
{
EMGM_EVENT_NONE = 0x00, // ¾øÀ½.
EMGM_EVENT_SPEED = 0x01, // À̵¿¼Óµµ.
EMGM_EVENT_ASPEED = 0x02, // °ø°Ý¼Óµµ.
EMGM_EVENT_ATTACK = 0x04, // °ø°Ý·Â.
};

struct SCHARSKILL
{
static DWORD VERSION;
static DWORD SIZE;

SNATIVEID sNativeID;
WORD wLevel;

SCHARSKILL () :
sNativeID(SNATIVEID::ID_NULL,SNATIVEID::ID_NULL),
wLevel(0)
{
}

SCHARSKILL ( const SNATIVEID &_sNID, const WORD _wLvl ) :
sNativeID(_sNID),
wLevel(_wLvl)
{
}
};

struct DAMAGE_SPEC
{
float m_fPsyDamageReduce; // ¹°¸® µ¥¹ÌÁö Èí¼öÀ²
float m_fMagicDamageReduce; // ¸¶¹ý µ¥¹ÌÁö Èí¼öÀ²
float m_fPsyDamageReflection; // ¹°¸® µ¥¹ÌÁö ¹Ý»çÀ²
float m_fPsyDamageReflectionRate; // ¹°¸® µ¥¹ÌÁö ¹Ý»çÈ®·ü
float m_fMagicDamageReflection; // ¸¶¹ý µ¥¹ÌÁö ¹Ý»çÀ²
float m_fMagicDamageReflectionRate; // ¸¶¹ý µ¥¹ÌÁö ¹Ý»çÈ®·ü

DAMAGE_SPEC() :
m_fPsyDamageReduce(0.0f),
m_fMagicDamageReduce(0.0f),
m_fPsyDamageReflection(0.0f),
m_fPsyDamageReflectionRate(0.0f),
m_fMagicDamageReflection(0.0f),
m_fMagicDamageReflectionRate(0.0f)
{
}


void RESET()
{
*this = DAMAGE_SPEC();
}
};

struct DEFENSE_SKILL
{

SNATIVEID m_dwSkillID; // ¹ßµ¿Çü ½ºÅ³ MID/SID
WORD m_wLevel; // ¹ßµ¿Çü ½ºÅ³ ·¹º§
float m_fRate; // ¹ßµ¿Çü ½ºÅ³ MID/SID È®·ü
bool m_bActive; // ¹ßµ¿Çü ½ºÅ³ ±¸µ¿»óÅÂ

DEFENSE_SKILL()
: m_dwSkillID ( NATIVEID_NULL() )
, m_wLevel ( 0 )
, m_fRate ( 0.0f )
, m_bActive(false)
{
}

void RESET()
{
m_dwSkillID = NATIVEID_NULL();
m_wLevel = 0;
m_fRate = 0.0f;
}
};

enum EMACTION_SLOT
{
EMACT_SLOT_NONE = 0,
EMACT_SLOT_DRUG = 1,
};

struct SACTION_SLOT
{
enum { VERSION = 0x0100, };

WORD wACT;
SNATIVEID sNID;

SACTION_SLOT () :
wACT(EMACT_SLOT_NONE),
sNID(false)
{
}

bool VALID () const
{
return wACT!=EMACT_SLOT_NONE && sNID!=SNATIVEID(false);
}

void RESET ()
{
wACT = EMACT_SLOT_NONE;
sNID = SNATIVEID(false);
}
};

// Note : Äɸ¯ÅÍ 1Â÷ Ç׸ñ.
//
struct SCHARDATA
{
protected:
DWORD m_dwUserID;
public:
void SetUserID( DWORD dwUserID) { m_dwUserID = dwUserID; }
DWORD GetUserID() { return m_dwUserID; }

public:
DWORD m_dwUserLvl; // »ç¿ëÀÚ ±ÇÇÑ Level.
__time64_t m_tPREMIUM; // ÇÁ¸®¹Ì¾ö ±âÇÑ.
bool m_bPREMIUM; // ÇöÁ¦ ÇÁ¸®¹Ì¾ö »óÅÂ.
__time64_t m_tCHATBLOCK; // ±Ó¸» Â÷´Ü.

__time64_t m_tSTORAGE[EMSTORAGE_CHANNEL_SPAN_SIZE]; // â°í ±âÇÑ.
bool m_bSTORAGE[EMSTORAGE_CHANNEL_SPAN_SIZE]; // â°í 2 »ç¿ë.

WORD m_wINVENLINE; // Ãß°¡µÈ Àκ¥Å丮 ÁÙ¼ö.

DWORD m_dwServerID;
DWORD m_dwCharID;

char m_szName[CHAR_SZNAME]; // À̸§. (°íÁ¤)

EMTRIBE m_emTribe; // Á¾Á·. (°íÁ¤)
EMCHARCLASS m_emClass; // Á÷¾÷. (°íÁ¤)
WORD m_wSchool; // Çпø.
WORD m_wSex; // ¼ºº°.
WORD m_wHair; // ¸Ó¸®½ºÅ¸ÀÏ.
WORD m_wHairColor; // ¸Ó¸®»ö»ó
WORD m_wFace; // ¾ó±¼¸ð¾ç.

int m_nBright; // ¼Ó¼º.
int m_nLiving; // »ýÈ°.

WORD m_wLevel; // ·¹º§.
LONGLONG m_lnMoney; // ¼ÒÁö ±Ý¾×.

bool m_bMoneyUpdate; // µ·ÀÌ ¾÷µ¥ÀÌÆ® µÇ¾ú´ÂÁö ¾Æ´ÑÁö
bool m_bStorageMoneyUpdate; // â°í µ·ÀÌ ¾÷µ¥ÀÌÆ® µÇ¾ú´ÂÁö ¾Æ´ÑÁö
WORD m_wTempLevel; // ºñ±³¿ë ·¹º§ Àӽà º¯¼ö
LONGLONG m_lnTempMoney; // ºñ±³¿ë ¼ÒÁö ±Ý¾× Àӽà º¯¼ö
LONGLONG m_lnTempStorageMoney; // ºñ±³¿ë â°í ±Ý¾× Àӽà º¯¼ö

LONGLONG m_lVNGainSysMoney; // º£Æ®³² Ž´Ð ¹æÁö ÀúÀå ±Ý¾×

DWORD m_dwGuild; // ±æµå ¹øÈ£.
char m_szNick[CHAR_SZNAME]; // º°¸í.
__time64_t m_tSECEDE; // Å»Åð½Ã°£.

SCHARSTATS m_sStats; // Stats.
WORD m_wStatsPoint; // °¡¿ë stats Æ÷ÀÎÆ®.

WORD m_wAP; // ±âº» °ø°Ý·Â.
WORD m_wDP; // ±âº» ¹æ¾î·Â.

WORD m_wPA; // °ÝÅõÄ¡.
WORD m_wSA; // »ç°ÝÄ¡.
WORD m_wMA; // ¸¶·ÂÄ¡.

GLLLDATA m_sExperience; // °æÇèÄ¡. ( ÇöÁ¦/´ÙÀ½·¹¹ëµµ´Þ°ª )
LONGLONG m_lnReExp; // ȸº¹ÇÒ¼ö ÀÖ´Â °æÇèÄ¡

DWORD m_dwSkillPoint; // Skill Point.

LONGLONG m_lVNGainSysExp; // º£Æ®³² Ž´Ð ¹æÁö ÀúÀå °æÇèÄ¡

GLPADATA m_sHP; // »ý¸í·®. ( ÇöÁ¦/ÃÖ´ë·® )
GLPADATA m_sMP; // Á¤½Å·®. ( ÇöÁ¦/ÃÖ´ë·® )
GLPADATA m_sSP; // ±Ù·Â·®. ( ÇöÁ¦/ÃÖ´ë·® )
GLPADATA m_sCombatPoint; /*combatpoint logic logic, Juver, 2017/05/27 */

WORD m_wPK; // ÃÑ PK Ƚ¼ö.

bool m_bEventBuster; // À̺¥Æ® ÁßÀÎÁö ¾Æ´ÑÁö

__time64_t m_tLoginTime; // ·Î±ä ½Ã°£À̳ª À̺¥Æ® ½ÃÀ۽ð£

int m_EventStartLv; // À̺¥Æ® ÃÖ¼Ò ·¹º§
int m_EventEndLv; // À̺¥Æ® ÃÖ´ë ·¹º§

int m_RemainEventTime; // À̺¥Æ® Àû¿ë±îÁö ³²Àº ½Ã°£
int m_RemainBusterTime; // ºÎ½ºÅÍ ³²Àº½Ã°£

bool m_bEventApply; // À̺¥Æ® Àû¿ë´ë»ç ¿©ºÎ
bool m_bEventStart; // À̺¥Æ® ½ÃÀÛÇß´ÂÁö ¾Æ´ÑÁö, À̺¥Æ® ´ë»óÀÎÁö

int m_EventStartTime; // À̺¥Æ® Àû¿ë ½ÃÀÛ ½Ã°£
int m_EventBusterTime; // À̺¥Æ® ºÎ½ºÅÍ Å¸ÀÓ


/// º£Æ®³² Ž´Ð ¹æÁö ½Ã½ºÅÛ º¯¼ö
LONGLONG m_VietnamGameTime; // ÀúÀåµÈ ´©Àû ½Ã°£
BYTE m_dwVietnamGainType; // º£Æ®³² Ž´Ð ¹æÁö ½Ã½ºÅÛ
DWORD m_dwVietnamInvenCount; // ¿Å±æ¼ö ÀÖ´Â ¾ÆÀÌÅÛÀÇ °¹¼ö

TCHAR m_szPhoneNumber[SMS_RECEIVER]; // ij¸¯ÅÍ Æù ¹øÈ£

float m_fScaleRange;

/*contribution point, Juver, 2017/08/23 */
LONGLONG m_llContributionPoint;

/*activity point, Juver, 2017/08/23 */
DWORD m_dwActivityPoint;

/*activity system, Juver, 2017/11/04 */
char m_szBadge[CHAR_SZNAME];

/*pk info, Juver, 2017/11/16 */
DWORD m_dwPKScore;
DWORD m_dwPKDeath;

DWORD m_dwCWKill;
DWORD m_dwCWDeath;

/*equipment lock, Juver, 2018/01/13 */
BOOL m_bEnableEquipmentLock;
BOOL m_bEquipmentLockStatus;

/*pvp capture the flag, Juver, 2018/01/29 */
WORD m_wCaptureTheFlagTeam;
bool m_bCaptureTheFlagHoldFlag;

//add directval
int m_nHP_Potion_Rate;
int m_nMP_Potion_Rate;
int m_nSP_Potion_Rate;

SCHARDATA ()
: m_dwUserID(0)
, m_dwUserLvl(0)
, m_tPREMIUM(0)
, m_bPREMIUM(false)
, m_tCHATBLOCK(0)
, m_wINVENLINE(0)
, m_dwServerID(0)
, m_dwCharID(0)
, m_emTribe(TRIBE_HUMAN)
, m_emClass(GLCC_BRAWLER_M)
, m_wSchool(0)
, m_wSex(0)
, m_wHair(0)
, m_wHairColor(0)
, m_wFace(0)
, m_nBright(1)
, m_nLiving(0)
, m_wLevel(0)
, m_lnMoney(0)
, m_lVNGainSysMoney(0)
, m_bMoneyUpdate(FALSE)
, m_bStorageMoneyUpdate(FALSE)
, m_wTempLevel(0)
, m_lnTempMoney(0)
, m_lnTempStorageMoney(0)
, m_dwGuild(CLUB_NULL)
, m_tSECEDE(0)
, m_wStatsPoint(0)
, m_wAP(0)
, m_wDP(0)
, m_wPA(0)
, m_wSA(0)
, m_wMA(0)
, m_dwSkillPoint(0)
, m_wPK(0)
, m_EventStartTime(0)
, m_EventBusterTime(0)
, m_bEventBuster(FALSE)
, m_bEventStart(FALSE)
, m_tLoginTime(0)
, m_EventStartLv(0)
, m_EventEndLv(0)
, m_bEventApply(FALSE)
, m_RemainEventTime(0)
, m_RemainBusterTime(0)
, m_VietnamGameTime(0)
, m_dwVietnamGainType(0)
, m_lVNGainSysExp(0)
, m_dwVietnamInvenCount(0)
, m_lnReExp ( 0 )
, m_fScaleRange( 1.0f )

, m_nHP_Potion_Rate(0) //add directval
, m_nMP_Potion_Rate(0)
, m_nSP_Potion_Rate(0)

/*contribution point, Juver, 2017/08/23 */
, m_llContributionPoint(0)

/*activity point, Juver, 2017/08/23 */
, m_dwActivityPoint(0)

/*pk info, Juver, 2017/11/16 */
, m_dwPKScore(0)
, m_dwPKDeath(0)

, m_dwCWKill(0)
, m_dwCWDeath(0)

/*equipment lock, Juver, 2018/01/13 */
, m_bEnableEquipmentLock(FALSE)
, m_bEquipmentLockStatus(FALSE)

/*pvp capture the flag, Juver, 2018/01/29 */
, m_wCaptureTheFlagTeam(CAPTURE_THE_FLAG_TEAM_SIZE)
, m_bCaptureTheFlagHoldFlag(false)
{
memset(m_szName, 0, sizeof(char) * CHAR_SZNAME);
memset(m_szNick, 0, sizeof(char) * CHAR_SZNAME);
memset(m_szPhoneNumber, 0, sizeof(TCHAR) * SMS_RECEIVER);

/*activity system, Juver, 2017/11/05 */
memset(m_szBadge, 0, sizeof(char) * CHAR_SZNAME);

for ( int i=0; i<EMSTORAGE_CHANNEL_SPAN_SIZE; ++i ) m_tSTORAGE = 0;
for ( int i=0; i<EMSTORAGE_CHANNEL_SPAN_SIZE; ++i ) m_bSTORAGE = false;
}

SCHARDATA &GETCHARDATA () { return *this; }
EMCHARINDEX GETCHARINDEX () const { return CharClassToIndex ( m_emClass ); }

bool IsKEEP_STORAGE ( DWORD dwCHANNEL ); // ÇØ´ç ¹øÈ£ÀÇ ¶ôÄ¿¿¡ ¹°°ÇÀ» ¸Ã±æ¼ö ÀÖ´ÂÁö °Ë»ç.
CTime GetStorageTime ( DWORD dwCHANNEL );
WORD GetOnINVENLINE ();
void CalcPREMIUM ();
};
typedef SCHARDATA* PCHARDATA;

typedef std::vector<SHOPPURCHASE> VECSHOP;

typedef std::map<std::string,SHOPPURCHASE> MAPSHOP;
typedef MAPSHOP::iterator MAPSHOP_ITER;

typedef std::map<DWORD,std::string> MAPSHOP_KEY;
typedef MAPSHOP_KEY::iterator MAPSHOP_KEY_ITER;

struct SCHARDATA2 : public SCHARDATA
{
typedef stdext::hash_map<DWORD,SCHARSKILL> SKILL_MAP;
typedef SKILL_MAP::iterator SKILL_MAP_ITER;
typedef SKILL_MAP::const_iterator SKILL_MAP_CITER;

char m_szUID[USR_ID_LENGTH+1];

SKILL_MAP m_ExpSkills; // ¼ö·Ã ½ºÅ³ ¼Ó¼º.
SITEMCUSTOM m_PutOnItems[SLOT_TSIZE]; // Âø¿ë Item.

SITEMCUSTOM m_pHoldArray[300]; // Âø¿ë Item.

WORD m_wSKILLQUICK_ACT; // ½ºÅ³ Äü½½·ÔÁß ¾×ƼºêµÈ ½ºÅ³.
SNATIVEID m_sSKILLQUICK[EMSKILLQUICK_SIZE]; // ½ºÅ³ Äü½½·Ô.
SACTION_SLOT m_sACTIONQUICK[EMACTIONQUICK_SIZE]; // ¾×¼Ç Äü½½·Ô.

GLInventory m_cInventory; // Àκ¥Å丮.

BOOL m_bServerStorage; // â°í À¯È¿ÇÔ. ( ¼­¹öÃø. ) ( »õ·Î »ý¼ºµÇ´Â ij¸¯ÅÍ´Â ¹«Á¶°Ç À¯È¿ÇÏ°Ô »ý¼º½Ã üũÇÔ. - GLCHARLOGIC::INIT_DATA() )
LONGLONG m_lnStorageMoney; // â°í ¼ÒÁö ±Ý¾×.
BOOL m_bStorage[EMSTORAGE_CHANNEL]; // â°í À¯È¿ÇÔ. ( Ŭ¶óÀ̾ðÆ®Ãø. )
GLInventory m_cStorage[EMSTORAGE_CHANNEL]; // â°í.

GLQuestPlay m_cQuestPlay; // Äù½ºÆ®.

// ¼­¹ö Àü¿ë.
MAPSHOP m_mapCharged; // ±¸ÀÔÇÑ ¾ÆÀÌÅÛ ¸ñ·Ï.

// Ŭ¶óÀ̾ðÆ® Àü¿ë.
GLInventory m_cInvenCharged; // ±¸ÀÔÇÑ ¾ÆÀÌÅÛ Àκ¥.
MAPSHOP_KEY m_mapChargedKey; // ±¸ÀÔÇÑ ¾ÆÀÌÅÛ Àκ¥ÀÇ ÇØ´ç À§Ä¡ purkey ã±â.

// Note : Ãʱ⠽ÃÀÛµÉ ¸Ê, ¸Ê À§Ä¡°ª.
//
SNATIVEID m_sStartMapID; // Ãʱ⠽ÃÀÛ ¸Ê.
DWORD m_dwStartGate; // Ãʱ⠽ÃÀÛ °³ÀÌÆ®.
D3DXVECTOR3 m_vStartPos; // Ãʱ⠽ÃÀÛ À§Ä¡.

SNATIVEID m_sSaveMapID; // Á¾·á ¸Ê.
D3DXVECTOR3 m_vSavePos; // Á¾·á À§Ä¡.

SNATIVEID m_sLastCallMapID; // Á÷Àü±Íȯ ¸Ê.
D3DXVECTOR3 m_vLastCallPos; // Á÷Àü±Íȯ À§Ä¡.

INT m_dwThaiCCafeClass; // ű¹ »çÀ̹ö Ä«Æä
INT m_nMyCCafeClass; // ¸»·¹ÀÌ½Ã¾Æ PC¹æ À̺¥Æ®
SChinaTime m_sChinaTime; // Áß±¹ ½Ã°£º° ¼öÀÍ
SEventTime m_sEventTime; // À̺¥Æ® ½Ã°£

SVietnamGainSystem m_sVietnamSystem; // º£Æ®³² Ž´Ð¹æÁö ½Ã½ºÅÛ
GLInventory m_cVietnamInventory; // º£Æ®³² ÀúÀåÇÑ Å½´Ð Àκ¥Å丮
bool m_bVietnamLevelUp; // º£Æ®³² °æÇèÄ¡ ȹµæ ¾ÆÀÌÅÛ »ç¿ë½Ã ¿©·¯´Ü°èÀÇ ·¹º§À» Áõ°¡½Ãų ¼ö ÀÖ´Ù.

// ¾ÆÀÌÅÛ °³Á¶ Á¤º¸ // ITEMREBUILD_MARK
BOOL m_bRebuildOpen;
SINVEN_POS m_sRebuildCardPos;
SINVEN_POS m_sRebuildItem;
SINVEN_POS m_sPreInventoryItem;
LONGLONG m_i64RebuildCost;
LONGLONG m_i64RebuildInput;

//sealed card NaJDeV
SINVEN_POS m_sRebuildSeal;
WORD m_wSealType;

bool m_bTracingUser; // ÇöÀç ÃßÀûÁßÀÎ À¯ÀúÀÎÁö ¾Æ´ÑÁö

typedef std::map<DWORD,ITEM_COOLTIME> COOLTIME_MAP;
typedef COOLTIME_MAP::iterator COOLTIME_MAP_ITER;
typedef COOLTIME_MAP::const_iterator COOLTIME_MAP_CITER;

COOLTIME_MAP m_mapCoolTimeType; // ¾ÆÀÌÅÛ Å¸ÀÔº° ÄðŸÀÓ
COOLTIME_MAP m_mapCoolTimeID; // ¾ÆÀÌÅÛ MID/SIDº° ÄðŸÀÓ

/*itemfood system, Juver, 2017/05/24 */
SFITEMFACT m_sFITEMFACT[FITEMFACT_SIZE];

/*system buffs, Juver, 2017/09/04 */
SSYSTEM_BUFF m_sSYSTEM_BUFF[SYSTEM_BUFF_SIZE];

/*activity system, Juver, 2017/10/23 */
SACTIVITY_CHAR_DATA_MAP m_mapActivityProg;
SACTIVITY_CHAR_DATA_MAP m_mapActivityDone;

SCHARDATA2();
void Assign ( SCHARDATA2 &CharData );

EMCHARINDEX GETCHARINDEX () const { return CharClassToIndex ( m_emClass ); }

BOOL SETEXPSKILLS_BYBUF ( CByteStream &ByteStream );
BOOL GETEXPSKILLS_BYBUF ( CByteStream &ByteStream ) const;

BOOL GETPUTONITEMS_BYBUF ( CByteStream &ByteStream ) const;

BOOL SETSKILL_QUICKSLOT ( CByteStream &ByteStream );
BOOL GETSKILL_QUICKSLOT ( CByteStream &ByteStream ) const;

BOOL SETACTION_QUICKSLOT ( CByteStream &ByteStream );
BOOL GETACTION_QUICKSLOT ( CByteStream &ByteStream ) const;


BOOL SETINVENTORY_BYBUF ( CByteStream &ByteStream );
BOOL GETINVENTORYE_BYBUF ( CByteStream &ByteStream ) const;

BOOL SETSTORAGE_BYBUF ( CByteStream &ByteStream );
BOOL GETSTORAGE_BYBUF ( CByteStream &ByteStream ) const;

BOOL SETQUESTPLAY ( CByteStream &ByteStream );
BOOL GETQUESTPLAY ( CByteStream &ByteStream ) const;

BOOL SETSHOPPURCHASE ( VECSHOP &vecSHOP );

// º£Æ®³² Ž´Ð¹æÁö ½Ã½ºÅÛ Ãß°¡¿¡ µû¸¥ ij¸¯ÅÍ Ãß°¡ Àκ¥Å丮 È®Àå
BOOL SETVTADDINVENTORY_BYBUF ( CByteStream &ByteStream );
BOOL GETVTADDINVENTORYE_BYBUF ( CByteStream &ByteStream ) const;

BOOL SETITEMCOOLTIME_BYBUF( CByteStream &ByteStream );
BOOL GETITEMCOOLTIME_BYBUF( CByteStream &ByteStream ) const;

/*itemfood system, Juver, 2017/05/25 */
BOOL SETITEMFOOD_BYBUF( CByteStream &ByteStream );
BOOL GETITEMFOOD_BYBUF( CByteStream &ByteStream ) const;

/*activity system, Juver, 2017/10/23 */
BOOL SETACTIVITY_BYBUF( CByteStream &ByteStream );
BOOL GETACTIVITY_BYBUF( CByteStream &ByteStream ) const;

public:
BOOL LOADFILE ( const char* szFileName );

public:
// Ŭ¶óÀ̾ðÆ® Àü¿ë.
BOOL ADDSHOPPURCHASE ( const char* szPurKey, SNATIVEID nidITEM );
BOOL DELSHOPPURCHASE ( const DWORD dwID );

public: // ITEMREBUILD_MARK
const SITEMCUSTOM& GET_REBUILD_ITEM();
const SITEMCUSTOM& GET_PREHOLD_ITEM(); // ??? ???? ???

public: //sealed card
const SITEMCUSTOM& GET_REBUILD_SEAL(); //sealed card
const WORD GET_SEAL_TYE() { return m_wSealType; }


public: // ITEMREBUILD_MARK
VOID InitRebuildData();
VOID OpenRebuild() { m_bRebuildOpen = TRUE; }
VOID CloseRebuild() { m_bRebuildOpen = FALSE; }
const BOOL ValidRebuildOpen() { return m_bRebuildOpen; }
const LONGLONG GetRebuildCost() { return m_i64RebuildCost; }
const LONGLONG GetRebuildInput() { return m_i64RebuildInput; }

private:
SCHARDATA2(const SCHARDATA2 &Inven ) { GASSERT(0&&"¹¬½ÃÀû º¹»ç ºÒÇã!"); }
SCHARDATA2& operator= ( SCHARDATA2 &Inven ) { GASSERT(0&&"¹¬½ÃÀû º¹»ç ºÒÇã!"); return *this; }
};
typedef SCHARDATA2* PCHARDATA2;


struct SSTATEBLOW
{
EMSTATE_BLOW emBLOW; // »óÅ ÀÌ»ó Á¾·ù.
float fAGE; // Àû¿ë ½Ã°£.
float fSTATE_VAR1; // Àû¿ë °ª 1.
float fSTATE_VAR2; // Àû¿ë °ª 2.

SSTATEBLOW () :
emBLOW(EMBLOW_NONE),
fAGE(0),
fSTATE_VAR1(0),
fSTATE_VAR2(0)
{

}
};

struct SLANDEFFECT
{
D3DXVECTOR2 vMinPos;
D3DXVECTOR2 vMaxPos;
EMLANDEFFECT_TYPE emLandEffectType;
float fValue;

SLANDEFFECT() :
vMinPos( 0.0f, 0.0f ),
vMaxPos( 0.0f, 0.0f ),
emLandEffectType(EMLANDEFFECT_ATK_SPEED),
fValue( 0.0f )
{
}

void Init()
{
vMinPos = D3DXVECTOR2( 0.0f, 0.0f );
vMaxPos = D3DXVECTOR2( 0.0f, 0.0f );
emLandEffectType = EMLANDEFFECT_ATK_SPEED;
fValue = 0.0f;
}

bool IsUse()
{
if( vMinPos == D3DXVECTOR2( 0.0f, 0.0f ) &&
vMaxPos == D3DXVECTOR2( 0.0f, 0.0f ) &&
emLandEffectType == EMLANDEFFECT_ATK_SPEED &&
fValue == 0.0f ) return FALSE;
return TRUE;
}

bool operator == ( const SLANDEFFECT &value )
{
if( vMaxPos != value.vMaxPos ) return FALSE;
if( vMinPos != value.vMinPos ) return FALSE;
if( emLandEffectType != value.emLandEffectType ) return FALSE;
if( fValue != value.fValue ) return FALSE;

return TRUE;
}

};

typedef std::vector<SLANDEFFECT> VEC_LANDEFF;
typedef VEC_LANDEFF::iterator VEC_LANDEFF_ITER;

struct SPASSIVE_SKILL_DATA
{
short m_nHP;
short m_nMP;
short m_nSP;

short m_nDAMAGE;
short m_nDEFENSE;

short m_nHIT;
short m_nAVOID;

short m_nPIERCE;
float m_fTARRANGE;

float m_fMOVEVELO;
float m_fATTVELO;
float m_fSKILLDELAY;

float m_fINCR_HP;
float m_fINCR_MP;
float m_fINCR_SP;

float m_fDAMAGE_RATE;
float m_fDEFENSE_RATE;

DAMAGE_SPEC m_sDamageSpec;

short m_nPA;
short m_nSA;
short m_nMA;

float m_fHP_RATE;
float m_fMP_RATE;
float m_fSP_RATE;

SRESIST m_sSUMRESIST; // ÀúÇ×°ª.

/*skill range spec logic, Juver, 2017/06/06 */
float m_fSUM_SKILL_ATTACKRANGE;
float m_fSUM_SKILL_APPLYRANGE;

/*summon time, Juver, 2017/12/12 */
int m_nSummonTime;

SPASSIVE_SKILL_DATA () :
m_nHP(0),
m_nMP(0),
m_nSP(0),

m_fINCR_HP(0),
m_fINCR_MP(0),
m_fINCR_SP(0),

m_nDAMAGE(0),
m_nDEFENSE(0),

m_nHIT(0),
m_nAVOID(0),

m_nPIERCE(0),
m_fTARRANGE(0),

m_fMOVEVELO(0),
m_fATTVELO(0),
m_fSKILLDELAY(0),

m_fDAMAGE_RATE(0),
m_fDEFENSE_RATE(0),

m_nPA(0),
m_nSA(0),
m_nMA(0),

m_fHP_RATE(0),
m_fMP_RATE(0),
m_fSP_RATE(0),

/*skill range spec logic, Juver, 2017/06/06 */
m_fSUM_SKILL_ATTACKRANGE(0.0f),
m_fSUM_SKILL_APPLYRANGE(0.0f),

/*summon time, Juver, 2017/12/12 */
m_nSummonTime(0)
{
}
};

struct SPKCOMBO_COUNT
{
bool bShow;
int nCount;
float fTime;

SPKCOMBO_COUNT() :
bShow(FALSE),
nCount(0),
fTime(0)
{
}

bool IsACTIVE()
{
return bShow != FALSE;
}

void RESET()
{
bShow = FALSE;
nCount = 0;
fTime = 0;
};
};
struct SEventState
{
float fItemGainRate; // À̺¥Æ® ½Ã ¾ò°ÔµÇ´Â ¾ÆÀÌÅÛ µå¶øÀ²
float fExpGainRate; // À̺¥Æ® ½Ã ¾ò°ÔµÇ´Â °æÇéÄ¡ ¹èÀ²
int MinEventLevel; // À̺¥Æ® ÃÖ¼Ò ·¹º§
int MaxEventLevel; // À̺¥Æ® ÃÖ´ë ·¹º§
bool bEventStart; // À̺¥Æ®°¡ ½ÃÀ۵ƴÂÁö ¾Æ´ÑÁö
int EventPlayTime; // À̺¥Æ®°¡ Àû¿ë µÇ´Â Ç÷¹ÀÌ ½Ã°£
int EventBusterTime; // À̺¥Æ®°¡ Áö¼ÓµÇ´Â ½Ã°£
CTime EventStartTime; // À̺¥Æ®°¡ ÃÖÃÊ ½ÃÀÛÇÑ ½Ã°£
DWORD dwEventEndMinute; // À̺¥Æ® Àû¿ë ½Ã°£


SEventState()
{
Init();
}
void Init()
{
fItemGainRate = 1.0f;
fExpGainRate = 1.0f;
MinEventLevel = 0; // À̺¥Æ® ÃÖ¼Ò ·¹º§
MaxEventLevel = 0; // À̺¥Æ® ÃÖ´ë ·¹º§
bEventStart = FALSE; // À̺¥Æ®°¡ ½ÃÀ۵ƴÂÁö ¾Æ´ÑÁö
EventPlayTime = 0; // À̺¥Æ®°¡ ½ÃÀÛ ½Ã°£
EventBusterTime = 0; // À̺¥Æ®°¡ Áö¼ÓµÇ´Â ½Ã°£
EventStartTime = 0;
dwEventEndMinute = 0;

}
};

struct SEVENT_FACT
{
INT nType;
WORD wSpeed;
WORD wASpeed;
WORD wAttack;

SEVENT_FACT ()
: nType(EMGM_EVENT_NONE)
, wSpeed(0)
, wASpeed(0)
, wAttack(0)
{
}

bool IsACTIVE( EMGM_EVENT_TYPE emType )
{
return (nType&emType)!=EMGM_EVENT_NONE;
}

void SetEVENT( EMGM_EVENT_TYPE emType, WORD wValue )
{
nType |= emType;

switch( emType )
{
case EMGM_EVENT_SPEED: wSpeed=wValue; break;
case EMGM_EVENT_ASPEED: wASpeed=wValue; break;
case EMGM_EVENT_ATTACK: wAttack=wValue; break;
}
}

void ResetEVENT( EMGM_EVENT_TYPE emType )
{
nType &= ~emType;
}
};

struct SDROP_STATEBLOW
{
EMSTATE_BLOW emBLOW; // »óÅ ÀÌ»ó Á¾·ù.
float fAGE; // Àû¿ë ½Ã°£.
float fSTATE_VAR1; // Àû¿ë °ª 1.
float fSTATE_VAR2; // Àû¿ë °ª 2.

SDROP_STATEBLOW ()
: emBLOW(EMBLOW_NONE)
, fAGE(0)
, fSTATE_VAR1(0)
, fSTATE_VAR2(0)
{
}

SDROP_STATEBLOW& operator= ( SSTATEBLOW &sblow )
{
emBLOW = sblow.emBLOW;
fAGE = sblow.fAGE;
fSTATE_VAR1 = sblow.fSTATE_VAR1;
fSTATE_VAR2 = sblow.fSTATE_VAR2;

return *this;
}
};


struct SDROP_CHAR
{
enum
{
CHAR_GEN = 0x001,
CLUB_CD = 0x002
};

char szName[CHAR_SZNAME]; // À̸§.
EMTRIBE emTribe; // Á¾Á·.
EMCHARCLASS emClass; // Á÷¾÷.
WORD wSchool; // Çпø.
WORD wHair; // ¸Ó¸®Ä«¶ô.
WORD wHairColor; // ¸Ó¸®Ä«¶ô Ä÷¯
WORD wFace; // ¾ó±¼¸ð¾ç.
WORD wSex; // ¼ºº°

int nBright; // ¼Ó¼º.

DWORD dwCharID; // Äɸ¯ÅÍID.
WORD wLevel; // ·¹º§.
DWORD dwGuild; // ±æµå ¹øÈ£.
DWORD dwAlliance; // µ¿¸Í ¹øÈ£
char szClubName[CHAR_SZNAME]; // Ŭ·´ À̸§.
DWORD dwGuildMarkVer; // ±æµå ¸¶Å© ¹øÈ£.
DWORD dwGuildMaster; // ±æµå ¸¶½ºÅÍ.
char szNick[CHAR_SZNAME]; // º°¸í.

DWORD dwParty; // ÆÄƼ ¹øÈ£.
DWORD dwPMasterID; // ÆÄƼ ¸¶½ºÅÍ ID.

GLPADATA sHP; // »ý¸í·®. ( ÇöÁ¦/ÃÖ´ë·® )

DWORD dwGaeaID; // »ý¼º ¸Þ¸ð¸® À妽º¿ë.
SNATIVEID sMapID; // »ý¼º ¸Ê ID.
DWORD dwCeID; // ¼¿ ID.
D3DXVECTOR3 vPos; // À§Ä¡.
D3DXVECTOR3 vDir; // À§Ä¡.

EMACTIONTYPE Action; // ÇöÁ¦ ¾×¼Ç.
DWORD dwActState; // ÇöÁ¦ ¾×¼Ç Ç÷¡±×.
D3DXVECTOR3 vTarPos; // ÇöÁ¦ ¸ñÇ¥ À§Ä¡.

/*skill summon, Juver, 2017/10/09 */
DWORD dwSummonGUID[SKILL_SUMMON_MAX_CLIENT_NUM]; // ¼Òȯ¼ö ID

SDROP_SKILLFACT sSKILLFACT[SKILLFACT_SIZE];

/*itemfood system, Juver, 2017/05/24 */
SDROP_FITEMFACT sFITEMFACT[FITEMFACT_SIZE];

/*system buffs, Juver, 2017/09/04 */
SDROP_SYSTEM_BUFF sSYSTEM_BUFF[SYSTEM_BUFF_SIZE];

SDROP_STATEBLOW sSTATEBLOWS[EMBLOW_MULTI];
int nLandEffect[EMLANDEFFECT_MULTI]; // ÁöÇü ÀÌ»ó È¿°úµé

SQITEM_FACT sQITEMFACT;
SEVENT_FACT sEVENTFACT;
SEventState sEventState;
SPKCOMBO_COUNT sPKCOMBOCOUNT;

SITEMCLIENT m_PutOnItems[SLOT_NSIZE_S_2]; // Âø¿ë Item.
BOOL m_bVehicle;
CLIENT_VEHICLE m_sVehicle;

bool m_bItemShopOpen; // ItemShopOpen

BOOL m_bUseArmSub; // ±Ø°­ºÎ¸¦ À§ÇÑ º¸Á¶ ¹«±â »ç¿ë¿©ºÎ

DWORD dwFLAGS; // ±âŸ ¼Ó¼º.

SPASSIVE_SKILL_DATA sPASSIVE_SKILL; // passive skill data.

DWORD m_dwANISUBTYPE; // ¾Ö´Ï¸ÞÀÌ¼Ç ¼­ºêŸÀÔ

float m_fScaleRange;

bool m_bBoosterStart; /*vehicle booster system, Juver, 2017/08/12 */

/*activity system, Juver, 2017/11/04 */
char szBadge[CHAR_SZNAME];

/*hide gm info, Juver, 2017/11/26 */
DWORD dwUserID;
DWORD dwUserLevel;

/*pvp capture the flag, Juver, 2018/01/29 */
WORD m_wCaptureTheFlagTeam;
bool m_bCaptureTheFlagHoldFlag;
BOOL m_bPassenger;

SDROP_CHAR ()
: emTribe(TRIBE_HUMAN)
, emClass(GLCC_BRAWLER_M)
, wSchool(0)
, m_bPassenger(FALSE)
, wHairColor(0)
, wSex(0)
, wHair(0)
, wFace(0)
, nBright(0)
, dwCharID(0)
, wLevel(1)
, dwGuild(CLUB_NULL)
, dwGuildMarkVer(0)
, dwGuildMaster(0)
, dwAlliance(0)
, dwParty(PARTY_NULL)
, dwPMasterID(GAEAID_NULL)
, dwGaeaID(0)
, dwCeID(0)
, vPos(0,0,0)
, vDir(0,0,-1)
, Action(GLAT_IDLE)
, dwActState(NULL)
, vTarPos(0,0,0)
, dwFLAGS(NULL)
, m_bUseArmSub(FALSE)
, m_bVehicle ( FALSE )
, m_bItemShopOpen( false )
//, dwSummonGUID(GAEAID_NULL)
, m_dwANISUBTYPE( 0 )
, m_fScaleRange( 1.0f )
, m_bBoosterStart(false) /*vehicle booster system, Juver, 2017/08/12 */

/*hide gm info, Juver, 2017/11/26 */
, dwUserID(0)
, dwUserLevel(0)

/*pvp capture the flag, Juver, 2018/01/29 */
, m_wCaptureTheFlagTeam(CAPTURE_THE_FLAG_TEAM_SIZE)
, m_bCaptureTheFlagHoldFlag(false)
{
for( int i=0; i < EMLANDEFFECT_MULTI; i++)
{
nLandEffect = -1;
}
memset(szName, 0, sizeof(char) * CHAR_SZNAME);
memset(szNick, 0, sizeof(char) * CHAR_SZNAME);
memset(szClubName, 0, sizeof(char) * CHAR_SZNAME);

/*activity system, Juver, 2017/11/05 */
memset(szBadge, 0, sizeof(char) * CHAR_SZNAME);

/*skill summon, Juver, 2017/10/09 */
for ( int i=0; i<SKILL_SUMMON_MAX_CLIENT_NUM; ++i )
dwSummonGUID = GAEAID_NULL;
}
};


struct SINFO_CHAR
{
DWORD dwCharID;
DWORD dwGaeaID;
char szName[CHAR_SZNAME];
EMCHARCLASS emClass;
WORD wSchool;
WORD wHair;
WORD wHairColor;
WORD wFace;
WORD wLevel;

char szClubName[CHAR_SZNAME];

GLPADATA sdDAMAGE;
WORD wHP;
WORD wMP;
WORD wSP;

SITEMCUSTOM sPutOnItems[SLOT_NSIZE_S_2];

SCHARSTATS sSUMSTATS;

WORD wSUM_PA;
WORD wSUM_SA;
WORD wSUM_MA;

SRESIST sSUMRESIST;

int nSUM_DEF;
int nSUM_HIT;
int nSUM_AVOID;
bool bUseArmSub;
bool bPrivate;

/*activity system, Juver, 2017/11/04 */
char szBadge[CHAR_SZNAME];

float fScaleRange;

SINFO_CHAR ()
: emClass(GLCC_BRAWLER_M)
, wSchool(0)
, wHairColor(0)
, wHair(0)
, wFace(0)
, dwGaeaID(GAEAID_NULL)
, dwCharID(GAEAID_NULL)
, wLevel(1)
, wSUM_PA( 0 )
, wSUM_SA( 0 )
, wSUM_MA( 0 )
, nSUM_DEF( 0 )
, nSUM_HIT( 0 )
, nSUM_AVOID( 0 )
, bUseArmSub( FALSE )
, bPrivate(false)
, fScaleRange(1.0f)
{
memset(szName, 0, sizeof(char) * CHAR_SZNAME);
memset(szClubName, 0, sizeof(char) * CHAR_SZNAME);
StringCchCopy ( szClubName, CHAR_SZNAME, "No Guild" );

/*activity system, Juver, 2017/11/05 */
memset(szBadge, 0, sizeof(char) * CHAR_SZNAME);
StringCchCopy ( szBadge, CHAR_SZNAME, "No Badge" );
}
};

#endif // GLCHARDATA_H_
 
Skilled Illusionist
Joined
Apr 17, 2012
Messages
348
Reaction score
29
Code:
InnerInterface.cpp
InnerInterface.h
InnerInterfaceSimple.cpp
InventoryWindow.cpp
InventoryWindow.h
InventoryPage.cpp
InventoryPage.h
InventoryPageWear.cpp
InventoryPageWear.h
InventoryPageWearEx.cpp
InventoryPageWearEx.h
CharacterWindow.cpp
CharacterWindow.h
CharacterWindowEx.cpp
CharacterWindowMsg.cpp
CharacterWindowUpdate.cpp

Thank You!
 
Junior Spellweaver
Joined
Mar 10, 2011
Messages
179
Reaction score
11
Code:
InnerInterface.cpp
InnerInterface.h
InnerInterfaceSimple.cpp
InventoryWindow.cpp
InventoryWindow.h
InventoryPage.cpp
InventoryPage.h
InventoryPageWear.cpp
InventoryPageWear.h
InventoryPageWearEx.cpp
InventoryPageWearEx.h
CharacterWindow.cpp
CharacterWindow.h
CharacterWindowEx.cpp
CharacterWindowMsg.cpp
CharacterWindowUpdate.cpp



RANPARAM.CPP

Hello, can you also point me to the right direction on which files should i change if i want to transform the interface from ep7 classic to ep11 one?
 
Back
Top