Restructure repository to include all source folders
Move git root from Client/ to src/ to track all source code: - Client: Game client source (moved to Client/Client/) - Server: Game server source - GameTools: Development tools - CryptoSource: Encryption utilities - database: Database scripts - Script: Game scripts - rylCoder_16.02.2008_src: Legacy coder tools - GMFont, Game: Additional resources 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude <noreply@anthropic.com>
This commit is contained in:
884
Server/RylServerProject/RylServerLibrary/Db/DBdefine.h
Normal file
884
Server/RylServerProject/RylServerLibrary/Db/DBdefine.h
Normal file
@@ -0,0 +1,884 @@
|
||||
///////////////////////////////////////////////////////////////////////////////////////////////
|
||||
//
|
||||
// DB Struct Define
|
||||
//
|
||||
//////////////////////////////////////////////////////////////////////////////////////////////
|
||||
#ifndef _DBDefine
|
||||
#define _DBDefine
|
||||
|
||||
#include <algorithm>
|
||||
|
||||
#pragma pack(1) // 1byte order<65><72> <20><>ŷ
|
||||
|
||||
///////////////////////////////////////////////////////////////////////////////////////////////
|
||||
//
|
||||
// ij<><C4B3><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> DB Table
|
||||
//
|
||||
//////////////////////////////////////////////////////////////////////////////////////////////
|
||||
struct CHAR_INFOST
|
||||
{
|
||||
enum
|
||||
{
|
||||
// edith 2008.03.17 ID,PASS <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
MAX_ACCOUNT_LEN = 24,
|
||||
MAX_NAME_LEN = 16
|
||||
};
|
||||
|
||||
unsigned long CID;
|
||||
|
||||
char Name[MAX_NAME_LEN]; // ij<><C4B3><EFBFBD><EFBFBD> <20≯<EFBFBD>
|
||||
char Sex; // ij<><C4B3><EFBFBD><EFBFBD> <20><>
|
||||
char Hair; // ij<><C4B3><EFBFBD><EFBFBD> <20>Ӹ<EFBFBD> <20><><EFBFBD><EFBFBD>
|
||||
char Face; // ij<><C4B3><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>
|
||||
char Race; // ij<><C4B3><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>
|
||||
unsigned short Class; // ij<><C4B3><EFBFBD><EFBFBD> Ŭ<><C5AC><EFBFBD><EFBFBD>
|
||||
|
||||
unsigned long Fame; // <20><><EFBFBD><EFBFBD>
|
||||
unsigned long Mileage; // <20><><EFBFBD>ϸ<EFBFBD><CFB8><EFBFBD>
|
||||
unsigned long GID; // ij<><C4B3><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>
|
||||
unsigned long PID; // ij<><C4B3><EFBFBD><EFBFBD> <20><>Ƽ
|
||||
char Level; // ij<><C4B3><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>
|
||||
|
||||
unsigned long Gold; // <20><>
|
||||
|
||||
unsigned short IP; // <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>Ʈ
|
||||
unsigned short STR; // ij<><C4B3><EFBFBD><EFBFBD> STR
|
||||
unsigned short DEX; // ij<><C4B3><EFBFBD><EFBFBD> DEX
|
||||
unsigned short CON; // ij<><C4B3><EFBFBD><EFBFBD> CON
|
||||
unsigned short INT; // ij<><C4B3><EFBFBD><EFBFBD> INT
|
||||
unsigned short WIS; // ij<><C4B3><EFBFBD><EFBFBD> WIS
|
||||
|
||||
short HP; // ij<><C4B3><EFBFBD><EFBFBD> HP
|
||||
short MP; // ij<><C4B3><EFBFBD><EFBFBD> MP
|
||||
__int64 Exp; // ij<><C4B3><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
|
||||
char Chance; // ij<><C4B3><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>
|
||||
};
|
||||
|
||||
typedef CHAR_INFOST* LPCHAR_INFOST;
|
||||
|
||||
///////////////////////////////////////////////////////////////////////////////////////////////
|
||||
//
|
||||
// <20>ð<EFBFBD>
|
||||
//
|
||||
//////////////////////////////////////////////////////////////////////////////////////////////
|
||||
struct TIME
|
||||
{
|
||||
unsigned short Year; // <20><><EFBFBD><EFBFBD>
|
||||
unsigned short Month; // <20><>
|
||||
unsigned short Day; // <20><>¥
|
||||
unsigned short Hour; // <20>ð<EFBFBD>
|
||||
unsigned short Minute; // <20><>
|
||||
unsigned short Second; // <20><>
|
||||
unsigned long MSecond; // <20>и<EFBFBD><D0B8><EFBFBD>
|
||||
|
||||
};
|
||||
typedef TIME* LPTIME;
|
||||
|
||||
///////////////////////////////////////////////////////////////////////////////////////////////
|
||||
//
|
||||
// <20><><EFBFBD>÷<EFBFBD><C3B7><EFBFBD> <20><><EFBFBD><EFBFBD>
|
||||
//
|
||||
//////////////////////////////////////////////////////////////////////////////////////////////
|
||||
struct AUTH
|
||||
{
|
||||
unsigned long Errcode; // <20><><EFBFBD><EFBFBD> <20>ڵ<EFBFBD>
|
||||
unsigned long UID; // <20><><EFBFBD><EFBFBD> <20><><EFBFBD>̵<EFBFBD>
|
||||
union COMMENT
|
||||
{
|
||||
unsigned long Point; // <20><><EFBFBD><EFBFBD>Ʈ <20><>
|
||||
TIME Time; // <20>ð<EFBFBD>
|
||||
} Comment;
|
||||
|
||||
unsigned long Dumy[4]; // <20>ݿ<D4B0> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>
|
||||
};
|
||||
|
||||
struct PAY_AUTH
|
||||
{
|
||||
// edith 2008.05.29 <20><>ī<EFBFBD><C4AB>Ʈ <20><><EFBFBD>̰<EFBFBD> 20->40<34><30><EFBFBD><EFBFBD> <20>ٲ<EFBFBD><D9B2><EFBFBD>.
|
||||
enum { AccountLen = 40 };
|
||||
|
||||
unsigned long Errcode; // <20><><EFBFBD><EFBFBD> <20>ڵ<EFBFBD>
|
||||
char Account[AccountLen]; // <20><><EFBFBD><EFBFBD> <20≯<EFBFBD>
|
||||
unsigned long UID; // <20><><EFBFBD><EFBFBD> <20><><EFBFBD>̵<EFBFBD>
|
||||
unsigned long Time; // <20>ð<EFBFBD> (<28><>)
|
||||
int WarningCode; // 0 : <20>븸 <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> / 1 : <20>߱<EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> / 2 : <20>߱<EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
};
|
||||
|
||||
///////////////////////////////////////////////////////////////////////////////////////////////
|
||||
//
|
||||
// <20>Ѱ<EFBFBD><D1B0><EFBFBD> <20><><EFBFBD><EFBFBD>
|
||||
//
|
||||
//////////////////////////////////////////////////////////////////////////////////////////////
|
||||
typedef struct _HAN_UID
|
||||
{
|
||||
unsigned long hUID; // <20><><EFBFBD><EFBFBD> <20><><EFBFBD>̵<EFBFBD>
|
||||
unsigned long lUID; // <20><><EFBFBD><EFBFBD> <20><><EFBFBD>̵<EFBFBD>
|
||||
}HAN_UID, *LPHAN_UID;
|
||||
|
||||
typedef struct _HAN_AUTH
|
||||
{
|
||||
unsigned char Num; // <20>ڸ<EFBFBD><DAB8><EFBFBD>
|
||||
unsigned short Extra; // <20><><EFBFBD>ϴ<EFBFBD> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>
|
||||
unsigned long UID; // <20><><EFBFBD><EFBFBD> <20><><EFBFBD>̵<EFBFBD>
|
||||
unsigned char Dump; // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
}HAN_AUTH, *LPHAN_AUTH;
|
||||
|
||||
typedef union _HAN_CONVERT
|
||||
{
|
||||
unsigned _int64 iValue; // 64 Bit <20><>
|
||||
HAN_AUTH sValue; // <20><><EFBFBD><EFBFBD>ü
|
||||
}HAN_CONVERT, *LPHAN_CONVERT;
|
||||
|
||||
///////////////////////////////////////////////////////////////////////////////////////////////
|
||||
//
|
||||
// <20><>ġ
|
||||
//
|
||||
//////////////////////////////////////////////////////////////////////////////////////////////
|
||||
struct POS
|
||||
{
|
||||
float fPointX; // Point X <20><>ǥ
|
||||
float fPointY; // Point Y <20><>ǥ
|
||||
float fPointZ; // Point Z <20><>ǥ
|
||||
};
|
||||
|
||||
///////////////////////////////////////////////////////////////////////////////////////////////
|
||||
//
|
||||
// <20><>ų <20><><EFBFBD><EFBFBD> // modified 2002/10/3 11:20 by sparrowhawk
|
||||
//
|
||||
//////////////////////////////////////////////////////////////////////////////////////////////
|
||||
union SKILLSLOT
|
||||
{
|
||||
struct
|
||||
{
|
||||
unsigned short wSkill; // <20><>ų <20><><EFBFBD>̵<EFBFBD>
|
||||
char cLockCount; // <20><>ų <20><> ī<><C4AB>Ʈ ( 0~4 )
|
||||
char cSkillLevel; // <20><>ų <20><><EFBFBD><EFBFBD> ( -127 ~ 128 )
|
||||
}SKILLINFO;
|
||||
|
||||
unsigned long dwSkillSlot;
|
||||
|
||||
SKILLSLOT() : dwSkillSlot(0) { }
|
||||
SKILLSLOT(unsigned short skill, char lockcount, char skillLevel)
|
||||
{ SKILLINFO.wSkill = skill; SKILLINFO.cLockCount = lockcount; SKILLINFO.cSkillLevel = skillLevel; }
|
||||
};
|
||||
typedef SKILLSLOT* LPSKILLSLOT;
|
||||
|
||||
///////////////////////////////////////////////////////////////////////////////////////////////
|
||||
//
|
||||
// <20><>ų
|
||||
//
|
||||
//////////////////////////////////////////////////////////////////////////////////////////////
|
||||
struct SKILL
|
||||
{
|
||||
enum Const
|
||||
{
|
||||
MAX_SKILL_LEVEL = 6,
|
||||
MAX_SLOT_NUM = 40
|
||||
};
|
||||
|
||||
unsigned short wSkillNum; // <20><>ų <20><> (TODO : <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20>ʽ<EFBFBD><CABD>ϴ<EFBFBD>.)
|
||||
unsigned short wSlotNum; // <20><><EFBFBD><EFBFBD> <20><>
|
||||
|
||||
SKILLSLOT SSlot[MAX_SLOT_NUM]; // <20><>ų
|
||||
|
||||
SKILL() : wSkillNum(0), wSlotNum(0)
|
||||
{
|
||||
std::fill_n(&SSlot[0], int(MAX_SLOT_NUM), SKILLSLOT());
|
||||
}
|
||||
|
||||
SKILL(unsigned short usSkillNum, unsigned short usSlotNum)
|
||||
: wSkillNum(usSkillNum), wSlotNum(usSlotNum)
|
||||
{
|
||||
std::fill_n(&SSlot[0], int(MAX_SLOT_NUM), SKILLSLOT());
|
||||
}
|
||||
|
||||
unsigned short GetSkillNum(void)
|
||||
{
|
||||
unsigned short wCount = 0;
|
||||
for (int Index = 0; Index < wSlotNum; ++Index)
|
||||
{
|
||||
// <20><>ų<EFBFBD><C5B3><EFBFBD>̵<EFBFBD><CCB5><EFBFBD> 0x8000 <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20>Ҽ<EFBFBD><D2BC><EFBFBD><EFBFBD><EFBFBD>, <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ƽ <20>̴<EFBFBD>.
|
||||
if(SSlot[Index].SKILLINFO.wSkill < 0x8000)
|
||||
continue;
|
||||
|
||||
wCount += (SSlot[Index].SKILLINFO.cLockCount * MAX_SKILL_LEVEL +
|
||||
SSlot[Index].SKILLINFO.cSkillLevel);
|
||||
}
|
||||
|
||||
return wCount;
|
||||
}
|
||||
|
||||
unsigned short GetAbilityNum(void)
|
||||
{
|
||||
unsigned short wCount = 0;
|
||||
for (int Index = 0; Index < wSlotNum; ++Index)
|
||||
{
|
||||
if(SSlot[Index].SKILLINFO.wSkill >= 0x2000)
|
||||
continue;
|
||||
|
||||
wCount += SSlot[Index].SKILLINFO.cLockCount;
|
||||
}
|
||||
|
||||
return wCount;
|
||||
}
|
||||
|
||||
};
|
||||
typedef SKILL* LPSKILL;
|
||||
|
||||
|
||||
///////////////////////////////////////////////////////////////////////////////////////////////
|
||||
//
|
||||
// Ÿ<><C5B8>Ʋ
|
||||
//
|
||||
//////////////////////////////////////////////////////////////////////////////////////////////
|
||||
typedef struct _TITLE
|
||||
{
|
||||
__int64 dlTitle; // Ÿ<><C5B8>Ʋ <20><><EFBFBD>̵<EFBFBD>
|
||||
unsigned short wScore; // Ÿ<><C5B8>Ʋ <20><><EFBFBD><EFBFBD>
|
||||
}TITLE, *LPTITLE;
|
||||
|
||||
///////////////////////////////////////////////////////////////////////////////////////////////
|
||||
//
|
||||
// <20><><EFBFBD><EFBFBD>
|
||||
//
|
||||
//////////////////////////////////////////////////////////////////////////////////////////////
|
||||
typedef struct _EQUIP
|
||||
{
|
||||
enum { MAX_EQUIP_SIZE = 1436 }; // + 4 = 1440
|
||||
|
||||
unsigned long dwSize;
|
||||
char Data[MAX_EQUIP_SIZE];
|
||||
} EQUIP, *LPEQUIP;
|
||||
|
||||
///////////////////////////////////////////////////////////////////////////////////////////////
|
||||
//
|
||||
// <20>κ<EFBFBD>
|
||||
//
|
||||
//////////////////////////////////////////////////////////////////////////////////////////////
|
||||
typedef struct _INVEN
|
||||
{
|
||||
enum { MAX_INVEN_SIZE = 5116 }; // + 4 = 5120
|
||||
|
||||
unsigned long dwSize;
|
||||
char Data[MAX_INVEN_SIZE];
|
||||
} INVEN, *LPINVEN;
|
||||
|
||||
///////////////////////////////////////////////////////////////////////////////////////////////
|
||||
//
|
||||
// Extra
|
||||
//
|
||||
//////////////////////////////////////////////////////////////////////////////////////////////
|
||||
typedef struct _EXTRA
|
||||
{
|
||||
enum { MAX_EXTRA_SIZE = 508 }; // + 4 = 512
|
||||
|
||||
unsigned long dwSize;
|
||||
char Data[MAX_EXTRA_SIZE];
|
||||
} EXTRA, *LPEXTRA;
|
||||
|
||||
///////////////////////////////////////////////////////////////////////////////////////////////
|
||||
//
|
||||
// Exchange
|
||||
//
|
||||
//////////////////////////////////////////////////////////////////////////////////////////////
|
||||
typedef struct _EXCHANGE
|
||||
{
|
||||
enum { MAX_EXCHANGE_SIZE = 1280 }; // + 4 = 1284
|
||||
|
||||
unsigned long dwSize;
|
||||
char Data[MAX_EXCHANGE_SIZE];
|
||||
} EXCHANGE, *LPEXCHANGE;
|
||||
|
||||
///////////////////////////////////////////////////////////////////////////////////////////////
|
||||
//
|
||||
// <20>ӽ<EFBFBD> <20>κ<EFBFBD><CEBA>丮
|
||||
//
|
||||
//////////////////////////////////////////////////////////////////////////////////////////////
|
||||
struct TEMPINVEN
|
||||
{
|
||||
enum { MAX_TEMPINVEN_SIZE = 1436 }; // + 4 = 1440
|
||||
|
||||
unsigned long dwSize;
|
||||
char Data[MAX_TEMPINVEN_SIZE];
|
||||
};
|
||||
|
||||
///////////////////////////////////////////////////////////////////////////////////////////////
|
||||
//
|
||||
// â<><C3A2>
|
||||
//
|
||||
//////////////////////////////////////////////////////////////////////////////////////////////
|
||||
typedef struct _STORE
|
||||
{
|
||||
enum { MAX_STORE_SIZE = 7296 }; // + 4 = 7300
|
||||
|
||||
unsigned long dwSize;
|
||||
char Data[MAX_STORE_SIZE];
|
||||
} STORE, *LPSTORE;
|
||||
|
||||
///////////////////////////////////////////////////////////////////////////////////////////////
|
||||
//
|
||||
// <20><> <20><><EFBFBD><EFBFBD>
|
||||
//
|
||||
//////////////////////////////////////////////////////////////////////////////////////////////
|
||||
struct QUICKSLOT {
|
||||
|
||||
enum Type { NONE = 0, SKILL = 1, ITEM = 2 };
|
||||
char nType;
|
||||
char nSkillLockCount;
|
||||
char nSkillLevel;
|
||||
unsigned short wID; // Skill_ID <20>Ǵ<EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> ProtoType ID
|
||||
|
||||
QUICKSLOT() : nType(NONE), nSkillLockCount(0), nSkillLevel(0), wID(0) { }
|
||||
QUICKSLOT(char type, char lockCount, char skillLevel, unsigned short wid)
|
||||
: nType(type), nSkillLockCount(lockCount), nSkillLevel(skillLevel), wID(wid) { }
|
||||
};
|
||||
typedef QUICKSLOT* LPQUICKSLOT;
|
||||
|
||||
struct QUICK
|
||||
{
|
||||
enum { MAX_QUICK_NUM = 20 };
|
||||
QUICKSLOT Slots[MAX_QUICK_NUM];
|
||||
|
||||
QUICK()
|
||||
{
|
||||
std::fill_n(&Slots[0], int(MAX_QUICK_NUM), QUICKSLOT());
|
||||
}
|
||||
|
||||
};
|
||||
typedef QUICK *LPQUICK;
|
||||
|
||||
///////////////////////////////////////////////////////////////////////////////////////////////
|
||||
//
|
||||
// ij<><C4B3><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>ü
|
||||
//
|
||||
//////////////////////////////////////////////////////////////////////////////////////////////
|
||||
struct CHAR_CREATE
|
||||
{
|
||||
enum RaceType
|
||||
{
|
||||
HUMAN = 0,
|
||||
AKHAN = 1
|
||||
};
|
||||
|
||||
char Name[CHAR_INFOST::MAX_NAME_LEN]; // ij<><C4B3><EFBFBD><EFBFBD> <20≯<EFBFBD>
|
||||
char Sex; // ij<><C4B3><EFBFBD><EFBFBD> <20><>
|
||||
char Hair; // ij<><C4B3><EFBFBD><EFBFBD> <20>Ӹ<EFBFBD> <20><><EFBFBD><EFBFBD>
|
||||
char Face; // ij<><C4B3><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>
|
||||
char Race; // ij<><C4B3><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>
|
||||
unsigned short Class; // ij<><C4B3><EFBFBD><EFBFBD> Ŭ<><C5AC><EFBFBD><EFBFBD>
|
||||
|
||||
unsigned short Equip[15]; // <20><><EFBFBD><EFBFBD>
|
||||
|
||||
unsigned short STR; // ij<><C4B3><EFBFBD><EFBFBD> STR
|
||||
unsigned short DEX; // ij<><C4B3><EFBFBD><EFBFBD> DEX
|
||||
unsigned short CON; // ij<><C4B3><EFBFBD><EFBFBD> CON
|
||||
unsigned short INT; // ij<><C4B3><EFBFBD><EFBFBD> INT
|
||||
unsigned short WIS; // ij<><C4B3><EFBFBD><EFBFBD> WIS
|
||||
};
|
||||
|
||||
///////////////////////////////////////////////////////////////////////////////////////////////
|
||||
//
|
||||
// ij<><C4B3><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>ü
|
||||
//
|
||||
//////////////////////////////////////////////////////////////////////////////////////////////
|
||||
struct CHAR_VIEW
|
||||
{
|
||||
enum RaceType
|
||||
{
|
||||
HUMAN = 0,
|
||||
AKHAN = 1
|
||||
};
|
||||
|
||||
unsigned long CID;
|
||||
|
||||
char Name[CHAR_INFOST::MAX_NAME_LEN]; // ij<><C4B3><EFBFBD><EFBFBD> <20≯<EFBFBD>
|
||||
char Sex; // ij<><C4B3><EFBFBD><EFBFBD> <20><>
|
||||
char Hair; // ij<><C4B3><EFBFBD><EFBFBD> <20>Ӹ<EFBFBD> <20><><EFBFBD><EFBFBD>
|
||||
char Face; // ij<><C4B3><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>
|
||||
char Race; // ij<><C4B3><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>
|
||||
unsigned short Class; // ij<><C4B3><EFBFBD><EFBFBD> Ŭ<><C5AC><EFBFBD><EFBFBD>
|
||||
|
||||
unsigned long Fame; // <20><><EFBFBD><EFBFBD>
|
||||
unsigned long Mileage; // <20><><EFBFBD>ϸ<EFBFBD><CFB8><EFBFBD>
|
||||
unsigned long GID; // ij<><C4B3><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>
|
||||
unsigned long PID; // ij<><C4B3><EFBFBD><EFBFBD> <20><>Ƽ
|
||||
char Level; // ij<><C4B3><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>
|
||||
|
||||
unsigned short Equip[15]; // <20><><EFBFBD><EFBFBD>(<28>Ѻ<EFBFBD><D1BA><EFBFBD>)
|
||||
};
|
||||
|
||||
// DB <20><> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> CHAR_VIEW <20><> <20><><EFBFBD>õ<EFBFBD> <20>߰<EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD>̴<EFBFBD>.
|
||||
// <20><><EFBFBD><EFBFBD> <20><> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>
|
||||
struct sGuildData
|
||||
{
|
||||
unsigned char m_cNation;
|
||||
char m_szName[CHAR_INFOST::MAX_NAME_LEN];
|
||||
};
|
||||
|
||||
typedef struct _PREMIUMSERVICE
|
||||
{
|
||||
long lPremiumTime;
|
||||
int iPremiumType;
|
||||
} PREMIUMSERVICE, *LPPREMIUMSERVICE;
|
||||
|
||||
|
||||
///////////////////////////////////////////////////////////////////////////////////////////////
|
||||
//
|
||||
// ij<><C4B3><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> DB Table
|
||||
//
|
||||
//////////////////////////////////////////////////////////////////////////////////////////////
|
||||
struct USER_INFO
|
||||
{
|
||||
enum
|
||||
{
|
||||
MAX_CHAR_NUM = 5
|
||||
};
|
||||
|
||||
unsigned long CharID[MAX_CHAR_NUM]; // ij<><C4B3><EFBFBD><EFBFBD>
|
||||
|
||||
// WORK_LIST 2.1 <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20>߰<EFBFBD>
|
||||
unsigned char Nation; // <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>
|
||||
|
||||
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> - by sphawk
|
||||
unsigned char OldServerGroupID; // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ID (0<≯<EFBFBD> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><>Ÿ<EFBFBD><C5B8>)
|
||||
unsigned char FirstLogin;
|
||||
|
||||
bool HasCharacter(unsigned long dwCID) const
|
||||
{
|
||||
for(int nCount = 0; nCount < MAX_CHAR_NUM; ++nCount)
|
||||
{
|
||||
if(CharID[nCount] == dwCID) { return true; }
|
||||
}
|
||||
|
||||
return false;
|
||||
}
|
||||
|
||||
unsigned char GetCharacterNum() const
|
||||
{
|
||||
unsigned char cSelectedCharacter = 0;
|
||||
for(int nCount = 0; nCount < MAX_CHAR_NUM; ++nCount)
|
||||
{
|
||||
if(0 != CharID[nCount]) { ++cSelectedCharacter; }
|
||||
}
|
||||
|
||||
return cSelectedCharacter;
|
||||
}
|
||||
|
||||
};
|
||||
typedef USER_INFO *LPUSER_INFO;
|
||||
|
||||
|
||||
|
||||
///////////////////////////////////////////////////////////////////////////////////////////////
|
||||
//
|
||||
// ij<><C4B3><EFBFBD><EFBFBD> <20>߰<EFBFBD> <20><><EFBFBD><EFBFBD>
|
||||
//
|
||||
//////////////////////////////////////////////////////////////////////////////////////////////
|
||||
typedef struct _CHAR_INFOEX
|
||||
{
|
||||
unsigned long Total; // <20><> <20>̿<EFBFBD> <20>ð<EFBFBD>(<28><>)
|
||||
unsigned long ServerID; // <20><>
|
||||
unsigned char cNameChangeCount; // <20≯<EFBFBD> <20>ٲ<EFBFBD> <20><> <20>ִ<EFBFBD> Ƚ<><C8BD>
|
||||
unsigned char cAdminFlag; // Admin <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>.
|
||||
unsigned char GuildWarFlag; // <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20>÷<EFBFBD><C3B7><EFBFBD>
|
||||
unsigned char RealmWarFlag; // <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20>÷<EFBFBD><C3B7><EFBFBD>
|
||||
|
||||
unsigned char RealmPoint; // <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>Ʈ.
|
||||
|
||||
unsigned char RealmCheckPoint; // <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20>߿<EFBFBD> <20>αƿ<D7BE><C6BF>ؼ<EFBFBD> <20><><EFBFBD><EFBFBD>Ʈ<EFBFBD><C6AE> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>.
|
||||
|
||||
unsigned char RealmMinute; // <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20>÷<EFBFBD><C3B7><EFBFBD> Ÿ<><C5B8> <20><><EFBFBD><EFBFBD>.
|
||||
|
||||
TIME LoggoutTime; // <20>αƿ<D7BE><C6BF><EFBFBD> <20>ð<EFBFBD>.
|
||||
|
||||
} CHAR_INFOEX, *LPCHAR_INFOEX;
|
||||
|
||||
///////////////////////////////////////////////////////////////////////////////////////////////
|
||||
//
|
||||
// ij<><C4B3><EFBFBD><EFBFBD> <20><>ġ <20><><EFBFBD><EFBFBD> DB Table
|
||||
//
|
||||
//////////////////////////////////////////////////////////////////////////////////////////////
|
||||
typedef struct _CHAR_POS
|
||||
{
|
||||
POS LastPoint; // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><>ġ
|
||||
POS SavePoint; // <20><><EFBFBD>̺<EFBFBD> <20><>ġ
|
||||
} CHAR_POS, *LPCHAR_POS;
|
||||
|
||||
///////////////////////////////////////////////////////////////////////////////////////////////
|
||||
//
|
||||
// <20><>Ƽ <20><><EFBFBD><EFBFBD> DB Table
|
||||
//
|
||||
//////////////////////////////////////////////////////////////////////////////////////////////
|
||||
typedef struct _PARTY_INFO
|
||||
{
|
||||
enum { MAX_MEM = 10 };
|
||||
|
||||
unsigned long MemberCID[MAX_MEM]; // <20><><EFBFBD><EFBFBD> CID
|
||||
char Name[MAX_MEM][CHAR_INFOST::MAX_NAME_LEN]; // <20><><EFBFBD><EFBFBD> <20≯<EFBFBD>
|
||||
|
||||
} PARTY_INFO, *LPPARTY_INFO;
|
||||
|
||||
typedef struct _PARTY_USER_INFO
|
||||
{
|
||||
enum { MAX_MEM = 10 };
|
||||
|
||||
unsigned short m_wClass[MAX_MEM]; // <20><><EFBFBD><EFBFBD> Ŭ<><C5AC><EFBFBD><EFBFBD>
|
||||
char m_cLevel[MAX_MEM]; // <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>
|
||||
unsigned long m_dwGID[MAX_MEM]; // <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20><><EFBFBD>̵<EFBFBD>
|
||||
|
||||
} PARTY_USER_INFO, *LPPARTY_USER_INFO;
|
||||
|
||||
typedef struct _PARTY_DB_INFO // <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD>ö<EFBFBD> <20><><EFBFBD><EFBFBD>.
|
||||
{
|
||||
PARTY_INFO PartyInfo;
|
||||
PARTY_USER_INFO PartyUserInfo;
|
||||
|
||||
} PARTY_DB_INFO, *LPPARTY_DB_INFO;
|
||||
///////////////////////////////////////////////////////////////////////////////////////////////
|
||||
//
|
||||
// <20><>Ƽ
|
||||
//
|
||||
//////////////////////////////////////////////////////////////////////////////////////////////
|
||||
struct PARTY
|
||||
{
|
||||
enum { MAX_MEM = 10 };
|
||||
|
||||
unsigned long m_dwPartyID;
|
||||
unsigned long m_dwLeaderID;
|
||||
|
||||
unsigned char m_cMemberNum;
|
||||
|
||||
char Name[MAX_MEM][CHAR_INFOST::MAX_NAME_LEN];
|
||||
unsigned long MemberCID[MAX_MEM];
|
||||
unsigned long ServerID[MAX_MEM];
|
||||
|
||||
unsigned short m_wClass[MAX_MEM]; // <20><><EFBFBD><EFBFBD> Ŭ<><C5AC><EFBFBD><EFBFBD>
|
||||
char m_cLevel[MAX_MEM]; // <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>
|
||||
unsigned long m_dwGID[MAX_MEM]; // <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20><><EFBFBD>̵<EFBFBD>
|
||||
|
||||
PARTY() : m_dwPartyID(0), m_dwLeaderID(0), m_cMemberNum(0)
|
||||
{
|
||||
std::fill_n(&MemberCID[0], int(MAX_MEM), 0);
|
||||
std::fill_n(&ServerID[0], int(MAX_MEM), 0);
|
||||
|
||||
std::fill_n(&m_wClass[0], int(MAX_MEM), 0);
|
||||
std::fill_n(&m_cLevel[0], int(MAX_MEM), 0);
|
||||
std::fill_n(&m_dwGID[0], int(MAX_MEM), 0);
|
||||
}
|
||||
};
|
||||
|
||||
struct PARTY_USERINFO
|
||||
{
|
||||
unsigned long m_dwGID[PARTY::MAX_MEM];
|
||||
};
|
||||
|
||||
// <20><>Ƽ <20><><EFBFBD><EFBFBD>(<28><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20>߰<EFBFBD>) //
|
||||
|
||||
struct PARTY_EX : public PARTY
|
||||
{
|
||||
bool m_bAutoRouting[PARTY::MAX_MEM];
|
||||
POS m_Position[PARTY::MAX_MEM];
|
||||
|
||||
PARTY_EX()
|
||||
{
|
||||
InitMemberAutoRouting();
|
||||
InitMemberPos();
|
||||
}
|
||||
|
||||
PARTY_EX(const PARTY& party)
|
||||
{
|
||||
m_dwPartyID = party.m_dwPartyID;
|
||||
m_dwLeaderID = party.m_dwLeaderID;
|
||||
m_cMemberNum = party.m_cMemberNum;
|
||||
|
||||
for (int nIndex = 0; nIndex < PARTY::MAX_MEM; ++nIndex)
|
||||
{
|
||||
::memcpy(Name[nIndex], party.Name[nIndex], CHAR_INFOST::MAX_NAME_LEN);
|
||||
|
||||
MemberCID[nIndex] = party.MemberCID[nIndex];
|
||||
ServerID[nIndex] = party.ServerID[nIndex];
|
||||
m_wClass[nIndex] = party.m_wClass[nIndex];
|
||||
m_cLevel[nIndex] = party.m_cLevel[nIndex];
|
||||
m_dwGID[nIndex] = party.m_dwGID[nIndex];
|
||||
}
|
||||
|
||||
InitMemberAutoRouting();
|
||||
InitMemberPos();
|
||||
}
|
||||
|
||||
inline void InitMemberAutoRouting()
|
||||
{
|
||||
std::fill_n(&m_bAutoRouting[0], int(PARTY::MAX_MEM), false);
|
||||
}
|
||||
|
||||
inline void InitMemberPos()
|
||||
{
|
||||
for (int i = 0; i < PARTY::MAX_MEM; ++i)
|
||||
{
|
||||
m_Position[i].fPointX = 0.0f;
|
||||
m_Position[i].fPointY = 0.0f;
|
||||
m_Position[i].fPointZ = 0.0f;
|
||||
}
|
||||
}
|
||||
|
||||
};
|
||||
|
||||
///////////////////////////////////////////////////////////////////////////////////////////////
|
||||
//
|
||||
// â<><C3A2>
|
||||
//
|
||||
//////////////////////////////////////////////////////////////////////////////////////////////
|
||||
typedef struct _STORE_INFO
|
||||
{
|
||||
enum { MAX_PASS_LEN = 5 };
|
||||
|
||||
char Password[MAX_PASS_LEN]; // <20>н<EFBFBD><D0BD><EFBFBD><EFBFBD><EFBFBD>
|
||||
unsigned long Flag; // <20>÷<EFBFBD><C3B7><EFBFBD>
|
||||
unsigned long Gold; // <20>÷<EFBFBD><C3B7><EFBFBD>
|
||||
|
||||
} STORE_INFO, *LPSTORE_INFO;
|
||||
|
||||
///////////////////////////////////////////////////////////////////////////////////////////////
|
||||
//
|
||||
// <20><EFBFBD><EEBFB5>
|
||||
//
|
||||
//////////////////////////////////////////////////////////////////////////////////////////////
|
||||
typedef struct _ADMIN
|
||||
{
|
||||
enum { MAX_IP_LEN = 16 };
|
||||
|
||||
unsigned long UID;
|
||||
unsigned short Level;
|
||||
char IP_S[MAX_IP_LEN];
|
||||
char IP_E[MAX_IP_LEN];
|
||||
} ADMIN, *LPADMIN;
|
||||
|
||||
///////////////////////////////////////////////////////////////////////////////////////////////
|
||||
//
|
||||
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
//
|
||||
//////////////////////////////////////////////////////////////////////////////////////////////
|
||||
typedef struct _FRIEND
|
||||
{
|
||||
enum
|
||||
{
|
||||
MAX_FRIEND_SIZE = 2400, // + 4 = 2404
|
||||
MAX_FRIENDINFO_SIZE = 700, // + 4 = 704 (ij<><C4B3><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20>߰<EFBFBD>.)
|
||||
};
|
||||
|
||||
unsigned long dwSize;
|
||||
char Data[MAX_FRIEND_SIZE];
|
||||
|
||||
unsigned long dwInfoSize; //
|
||||
char Info[MAX_FRIENDINFO_SIZE];
|
||||
|
||||
} FRIEND, *LPFRIEND;
|
||||
|
||||
typedef struct _BAN
|
||||
{
|
||||
enum
|
||||
{
|
||||
MAX_BAN_SIZE = 2000, // + 4 = 2004
|
||||
MAX_BANINFO_SIZE = 700, // + 4 = 704 (ij<><C4B3><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20>߰<EFBFBD>.)
|
||||
};
|
||||
|
||||
unsigned long dwSize;
|
||||
char Data[MAX_BAN_SIZE];
|
||||
|
||||
unsigned long dwInfoSize;
|
||||
char Info[MAX_BANINFO_SIZE];
|
||||
|
||||
} BAN, *LPBAN;
|
||||
|
||||
///////////////////////////////////////////////////////////////////////////////////////////////
|
||||
//
|
||||
// <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>
|
||||
//
|
||||
//////////////////////////////////////////////////////////////////////////////////////////////
|
||||
typedef struct _RE_USPCheckBilling_Login
|
||||
{
|
||||
unsigned long Flag; // Success(=0)
|
||||
char strBillingType[2]; // D, T(N: <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>)
|
||||
int PlayTime; // <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20>ð<EFBFBD> (<28><>, <20><>)
|
||||
unsigned long intCRMIndex1; // <20>ǽù<C7BD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>̵<EFBFBD>
|
||||
} RE_USPCheckBilling_Login, *LPRE_USPCheckBilling_Login;
|
||||
|
||||
typedef struct _RE_USPGRoomCurrent_DisConn
|
||||
{
|
||||
enum { ClientIDLen = 20 };
|
||||
|
||||
unsigned char ClientID[ClientIDLen]; // <20><><EFBFBD><EFBFBD>
|
||||
unsigned long UID; // <20><><EFBFBD><EFBFBD> <20><><EFBFBD>̵<EFBFBD>
|
||||
char ServerID; // <20><><EFBFBD><EFBFBD> <20><><EFBFBD>̵<EFBFBD>
|
||||
}RE_USPGRoomCurrent_DisConn, *LPRE_USPGRoomCurrent_DisConn;
|
||||
|
||||
|
||||
///////////////////////////////////////////////////////////////////////////////////////////////
|
||||
//
|
||||
// <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>
|
||||
//
|
||||
//////////////////////////////////////////////////////////////////////////////////////////////
|
||||
typedef struct _RE_CMS_CheckUserBlock
|
||||
{
|
||||
unsigned char m_cFlags; // 0 : <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>, 1 : <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>, 2 : ij<><C4B3><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>
|
||||
char m_szCharName[20][USER_INFO::MAX_CHAR_NUM]; // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> ij<><C4B3><EFBFBD><EFBFBD> <20≯<EFBFBD>
|
||||
|
||||
} RE_CMS_CheckUserBlock, *LPRE_CMS_CheckUserBlock;
|
||||
|
||||
///////////////////////////////////////////////////////////////////////////////////////////////
|
||||
//
|
||||
// <20><><EFBFBD><EFBFBD>Ʈ
|
||||
//
|
||||
//////////////////////////////////////////////////////////////////////////////////////////////
|
||||
typedef struct _QUEST
|
||||
{
|
||||
enum { MAX_QUEST_SIZE = 260 }; // + 4 = 264
|
||||
|
||||
unsigned long dwSize;
|
||||
char Data[MAX_QUEST_SIZE];
|
||||
} QUEST, *LPQUEST;
|
||||
|
||||
typedef struct _HISTORY
|
||||
{
|
||||
enum { MAX_HISTORY_SIZE = 400 }; // + 4 = 404
|
||||
|
||||
unsigned long dwSize;
|
||||
char Data[MAX_HISTORY_SIZE];
|
||||
} HISTORY, *LPHISTORY;
|
||||
|
||||
///////////////////////////////////////////////////////////////////////////////////////////////
|
||||
//
|
||||
// <20><><EFBFBD><EFBFBD>
|
||||
//
|
||||
//////////////////////////////////////////////////////////////////////////////////////////////
|
||||
typedef struct _CONFIG
|
||||
{
|
||||
enum { MAX_CONFIG_SIZE = 46 }; // + 4 = 50
|
||||
|
||||
unsigned long dwSize;
|
||||
char Data[MAX_CONFIG_SIZE];
|
||||
} CONFIG, *LPCONFIG;
|
||||
|
||||
|
||||
///////////////////////////////////////////////////////////////////////////////////////////////
|
||||
//
|
||||
// Ư<><C6AF> <20>Ҽ<EFBFBD><D2BC><EFBFBD><EFBFBD><EFBFBD>
|
||||
//
|
||||
//////////////////////////////////////////////////////////////////////////////////////////////
|
||||
typedef struct _SOCIALEX
|
||||
{
|
||||
enum { MAX_SOCIAL_SIZE = 20 }; // + 4 = 24
|
||||
|
||||
unsigned long dwSize;
|
||||
char Data[MAX_SOCIAL_SIZE];
|
||||
} SOCIALEX, *LPSOCIALEX;
|
||||
|
||||
///////////////////////////////////////////////////////////////////////////////////////////////
|
||||
//
|
||||
// <20>̺<EFBFBD>Ʈ <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
//
|
||||
//////////////////////////////////////////////////////////////////////////////////////////////
|
||||
typedef struct _EVENTITEM
|
||||
{
|
||||
enum { MAX_ITEM_NAME = 32 };
|
||||
|
||||
unsigned long nItemIndex;
|
||||
char strItemName[MAX_ITEM_NAME];
|
||||
unsigned long nItemAmount;
|
||||
TIME UpdateTime;
|
||||
|
||||
} EVENTITEM, *LPEVENTITEM;
|
||||
|
||||
|
||||
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> - ij<><C4B3><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20>Ķ<EFBFBD><C4B6><EFBFBD><EFBFBD>ͷ<EFBFBD> DB<44><42> ȣ<><C8A3>.
|
||||
struct CHAR_CREATE_DB
|
||||
{
|
||||
unsigned long dwUID;
|
||||
unsigned long dwSlotPos;
|
||||
char szName[CHAR_INFOST::MAX_NAME_LEN];
|
||||
unsigned char cSex;
|
||||
unsigned char cHair;
|
||||
unsigned char cFace;
|
||||
unsigned char cRace;
|
||||
short sClass;
|
||||
unsigned long dwGold;
|
||||
short sSTR;
|
||||
short sDEX;
|
||||
short sCON;
|
||||
short sINT;
|
||||
short sWIS;
|
||||
float fPointX;
|
||||
float fPointY;
|
||||
float fPointZ;
|
||||
unsigned short Equip[15];
|
||||
SKILL skill;
|
||||
unsigned char cServerGroupID;
|
||||
int dwCID_Out;
|
||||
};
|
||||
|
||||
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> - <20><><EFBFBD>յ<EFBFBD> ij<><C4B3><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD>´<EFBFBD>.
|
||||
struct UnifiedCharData
|
||||
{
|
||||
char szName[16];
|
||||
char szBeforeCharName[20];
|
||||
unsigned long dwNewCID;
|
||||
unsigned long dwBeforeCID;
|
||||
short sClass;
|
||||
unsigned char cLevel;
|
||||
unsigned char cOldServerGroupID;
|
||||
};
|
||||
|
||||
struct UnifiedStoreInfo
|
||||
{
|
||||
unsigned char cOldServerGroupID; // <20><> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
|
||||
char Password[STORE_INFO::MAX_PASS_LEN]; // <20>н<EFBFBD><D0BD><EFBFBD><EFBFBD><EFBFBD>
|
||||
unsigned long Flag; // <20>÷<EFBFBD><C3B7><EFBFBD>
|
||||
unsigned long Gold; // <20>ݾ<EFBFBD>
|
||||
};
|
||||
|
||||
struct KeyInfo
|
||||
{
|
||||
enum Const
|
||||
{
|
||||
MAX_KEY_INFO = 34
|
||||
};
|
||||
|
||||
unsigned char m_cUsed;
|
||||
|
||||
unsigned long m_dwKeyInfo[MAX_KEY_INFO];
|
||||
};
|
||||
|
||||
///////////////////////////////////////////////////////////////////////////////////////////////
|
||||
//
|
||||
// <20><><EFBFBD><EFBFBD>
|
||||
//
|
||||
//////////////////////////////////////////////////////////////////////////////////////////////
|
||||
struct SPELLINSTANCE {
|
||||
unsigned long dwDurationSec;
|
||||
unsigned short wSpellID;
|
||||
unsigned short wEnchantLevel;
|
||||
unsigned char cSpellType;
|
||||
|
||||
SPELLINSTANCE() : dwDurationSec(0), wSpellID(0), wEnchantLevel(0), cSpellType(0) { }
|
||||
SPELLINSTANCE(unsigned long dwDurationSec, unsigned short wSpellID, unsigned short wEnchantLevel, unsigned char cSpellType)
|
||||
: dwDurationSec(dwDurationSec), wSpellID(wSpellID), wEnchantLevel(wEnchantLevel), cSpellType(cSpellType) { }
|
||||
};
|
||||
typedef SPELLINSTANCE* LPSPELLINSTANCE;
|
||||
|
||||
struct SPELL
|
||||
{
|
||||
enum { MAX_SPELL_NUM = 30 };
|
||||
SPELLINSTANCE Spells[MAX_SPELL_NUM];
|
||||
|
||||
SPELL()
|
||||
{
|
||||
std::fill_n(&Spells[0], int(MAX_SPELL_NUM), SPELLINSTANCE());
|
||||
}
|
||||
};
|
||||
typedef SPELL* LPSPELL;
|
||||
|
||||
#pragma pack()
|
||||
|
||||
#endif
|
||||
Reference in New Issue
Block a user