www.pudn.com > M2Engine.rar > Grobal2.pas
unit Grobal2;
interface
uses
Windows, Classes, JSocket;
const
DR_UP = 0;
DR_UPRIGHT = 1;
DR_RIGHT = 2;
DR_DOWNRIGHT = 3;
DR_DOWN = 4;
DR_DOWNLEFT = 5;
DR_LEFT = 6;
DR_UPLEFT = 7;
U_DRESS = 0;
U_WEAPON = 1;
U_RIGHTHAND = 2;
U_NECKLACE = 3;
U_HELMET = 4;
U_ARMRINGL = 5;
U_ARMRINGR = 6;
U_RINGL = 7;
U_RINGR = 8;
U_BUJUK = 9; //符
U_BELT = 10; //腰带
U_BOOTS = 11; //鞋
U_CHARM = 12;
DEFBLOCKSIZE = 16;
BUFFERSIZE = 10000;
//DATA_BUFSIZE = 16348; //8192;
DATA_BUFSIZE = 8192; //8192;
GROUPMAX = 11;
BAGGOLD = 5000000;
BODYLUCKUNIT = 10;
MAX_STATUS_ATTRIBUTE = 12;
POISON_DECHEALTH = 0;
POISON_DAMAGEARMOR = 1;
POISON_LOCKSPELL = 2;
POISON_DONTMOVE = 4;
POISON_STONE = 5;
STATE_TRANSPARENT = 8;
STATE_DEFENCEUP = 9;
STATE_MAGDEFENCEUP = 10;
STATE_BUBBLEDEFENCEUP = 11;
USERMODE_PLAYGAME = 1;
USERMODE_LOGIN = 2;
USERMODE_LOGOFF = 3;
USERMODE_NOTICE = 4;
RUNGATEMAX = 20;
RUNGATECODE = $AA55AA55;
OS_MOVINGOBJECT = 1;
OS_ITEMOBJECT = 2;
OS_EVENTOBJECT = 3;
OS_GATEOBJECT = 4;
OS_SWITCHOBJECT = 5;
OS_MAPEVENT = 6;
OS_DOOR = 7;
OS_ROON = 8;
RC_PLAYOBJECT = 0;
RC_PLAYMOSTER = 150;
RC_GUARD = 11; //大刀守卫
RC_PEACENPC = 15;
RC_ANIMAL = 50;
RC_MONSTER = 80;
RC_NPC = 10;
RC_ARCHERGUARD = 112;
ISM_WHISPER = 1234;
{SM_OPENSESSION = 100;
SM_CLOSESESSION = 101;
CM_CLOSESESSION = 102; }
CM_QUERYCHR = 100;
CM_NEWCHR = 101;
CM_DELCHR = 102;
CM_SELCHR = 103;
CM_SELECTSERVER = 104;
SM_RUSH = 6;
SM_RUSHKUNG = 7; //
SM_FIREHIT = 8; //烈火
SM_BACKSTEP = 9;
SM_TURN = 10; //转向
SM_WALK = 11; //走
SM_SITDOWN = 12;
SM_RUN = 13; //跑
SM_HIT = 14; //砍
SM_HEAVYHIT = 15; //
SM_BIGHIT = 16; //
SM_SPELL = 17; //使用魔法
SM_POWERHIT = 18;
SM_LONGHIT = 19; //刺杀
SM_DIGUP = 20;
SM_DIGDOWN = 21;
SM_FLYAXE = 22;
SM_LIGHTING = 23;
SM_WIDEHIT = 24;
SM_ALIVE = 27; //
SM_MOVEFAIL = 28; //
SM_HIDE = 29; //
SM_DISAPPEAR = 30;
SM_STRUCK = 31; //弯腰
SM_DEATH = 32;
SM_SKELETON = 33;
SM_NOWDEATH = 34;
SM_ACTION_MIN = SM_RUSH;
SM_ACTION_MAX = SM_WIDEHIT;
SM_ACTION2_MIN = 65072;
SM_ACTION2_MAX = 65073;
SM_HEAR = 40;
SM_FEATURECHANGED = 41;
SM_USERNAME = 42;
SM_WINEXP = 44;
SM_LEVELUP = 45;
SM_DAYCHANGING = 46;
SM_LOGON = 50;
SM_NEWMAP = 51;
SM_ABILITY = 52;
SM_HEALTHSPELLCHANGED = 53;
SM_MAPDESCRIPTION = 54;
SM_SPELL2 = 117;
SM_SYSMESSAGE = 100;
SM_GROUPMESSAGE = 101;
SM_CRY = 102;
SM_WHISPER = 103;
SM_GUILDMESSAGE = 104;
SM_ADDITEM = 200;
SM_BAGITEMS = 201;
SM_DELITEM = 202;
SM_UPDATEITEM = 203;
SM_ADDMAGIC = 210;
SM_SENDMYMAGIC = 211;
SM_DELMAGIC = 212;
SM_CERTIFICATION_FAIL = 501;
SM_ID_NOTFOUND = 502;
SM_PASSWD_FAIL = 503;
SM_NEWID_SUCCESS = 504;
SM_NEWID_FAIL = 505;
SM_CHGPASSWD_SUCCESS = 506;
SM_CHGPASSWD_FAIL = 507;
SM_QUERYCHR = 520;
SM_NEWCHR_SUCCESS = 521;
SM_NEWCHR_FAIL = 522;
SM_DELCHR_SUCCESS = 523;
SM_DELCHR_FAIL = 524;
SM_STARTPLAY = 525;
SM_STARTFAIL = 526; //SM_USERFULL
SM_QUERYCHR_FAIL = 527;
SM_OUTOFCONNECTION = 528; //?
SM_PASSOK_SELECTSERVER = 529;
SM_SELECTSERVER_OK = 530;
SM_NEEDUPDATE_ACCOUNT = 531;
SM_UPDATEID_SUCCESS = 532;
SM_UPDATEID_FAIL = 533;
SM_DROPITEM_SUCCESS = 600;
SM_DROPITEM_FAIL = 601;
SM_ITEMSHOW = 610;
SM_ITEMHIDE = 611;
// SM_DOOROPEN = 612;
SM_OPENDOOR_OK = 612; //
SM_OPENDOOR_LOCK = 613;
SM_CLOSEDOOR = 614;
SM_TAKEON_OK = 615;
SM_TAKEON_FAIL = 616;
SM_TAKEOFF_OK = 619;
SM_TAKEOFF_FAIL = 620;
SM_SENDUSEITEMS = 621;
SM_WEIGHTCHANGED = 622;
SM_CLEAROBJECTS = 633;
SM_CHANGEMAP = 634;
SM_EAT_OK = 635;
SM_EAT_FAIL = 636;
SM_BUTCH = 637;
SM_MAGICFIRE = 638;
SM_MAGICFIRE_FAIL = 639;
SM_MAGIC_LVEXP = 640;
SM_DURACHANGE = 642;
SM_MERCHANTSAY = 643;
SM_MERCHANTDLGCLOSE = 644;
SM_SENDGOODSLIST = 645;
SM_SENDUSERSELL = 646;
SM_SENDBUYPRICE = 647;
SM_USERSELLITEM_OK = 648;
SM_USERSELLITEM_FAIL = 649;
SM_BUYITEM_SUCCESS = 650; //?
SM_BUYITEM_FAIL = 651; //?
SM_SENDDETAILGOODSLIST = 652;
SM_GOLDCHANGED = 653;
SM_CHANGELIGHT = 654;
SM_LAMPCHANGEDURA = 655;
SM_CHANGENAMECOLOR = 656;
SM_CHARSTATUSCHANGED = 657;
SM_SENDNOTICE = 658;
SM_GROUPMODECHANGED = 659; //
SM_CREATEGROUP_OK = 660;
SM_CREATEGROUP_FAIL = 661;
SM_GROUPADDMEM_OK = 662;
SM_GROUPDELMEM_OK = 663;
SM_GROUPADDMEM_FAIL = 664;
SM_GROUPDELMEM_FAIL = 665;
SM_GROUPCANCEL = 666;
SM_GROUPMEMBERS = 667;
SM_SENDUSERREPAIR = 668;
SM_USERREPAIRITEM_OK = 669;
SM_USERREPAIRITEM_FAIL = 670;
SM_SENDREPAIRCOST = 671;
SM_DEALMENU = 673;
SM_DEALTRY_FAIL = 674;
SM_DEALADDITEM_OK = 675;
SM_DEALADDITEM_FAIL = 676;
SM_DEALDELITEM_OK = 677;
SM_DEALDELITEM_FAIL = 678;
SM_DEALCANCEL = 681;
SM_DEALREMOTEADDITEM = 682;
SM_DEALREMOTEDELITEM = 683;
SM_DEALCHGGOLD_OK = 684;
SM_DEALCHGGOLD_FAIL = 685;
SM_DEALREMOTECHGGOLD = 686;
SM_DEALSUCCESS = 687;
SM_SENDUSERSTORAGEITEM = 700;
SM_STORAGE_OK = 701;
SM_STORAGE_FULL = 702;
SM_STORAGE_FAIL = 703;
SM_SAVEITEMLIST = 704;
SM_TAKEBACKSTORAGEITEM_OK = 705;
SM_TAKEBACKSTORAGEITEM_FAIL = 706;
SM_TAKEBACKSTORAGEITEM_FULLBAG = 707;
SM_AREASTATE = 708;
SM_MYSTATUS = 766;
SM_DELITEMS = 709;
SM_READMINIMAP_OK = 710;
SM_READMINIMAP_FAIL = 711;
SM_SENDUSERMAKEDRUGITEMLIST = 712;
SM_MAKEDRUG_SUCCESS = 713;
// 714
// 716
SM_MAKEDRUG_FAIL = 65036;
SM_CHANGEGUILDNAME = 750;
SM_SENDUSERSTATE = 751; //
SM_SUBABILITY = 752;
SM_OPENGUILDDLG = 753; //
SM_OPENGUILDDLG_FAIL = 754; //
SM_SENDGUILDMEMBERLIST = 756; //
SM_GUILDADDMEMBER_OK = 757; //
SM_GUILDADDMEMBER_FAIL = 758;
SM_GUILDDELMEMBER_OK = 759;
SM_GUILDDELMEMBER_FAIL = 760;
SM_GUILDRANKUPDATE_FAIL = 761;
SM_BUILDGUILD_OK = 762;
SM_BUILDGUILD_FAIL = 763;
SM_DONATE_OK = 764;
SM_DONATE_FAIL = 765;
SM_MENU_OK = 767; //?
SM_GUILDMAKEALLY_OK = 768;
SM_GUILDMAKEALLY_FAIL = 769;
SM_GUILDBREAKALLY_OK = 770; //?
SM_GUILDBREAKALLY_FAIL = 771; //?
SM_DLGMSG = 772; //Jacky
SM_SPACEMOVE_HIDE = 800;
SM_SPACEMOVE_SHOW = 801;
SM_RECONNECT = 802; //
SM_GHOST = 803;
SM_SHOWEVENT = 804;
SM_HIDEEVENT = 805;
SM_SPACEMOVE_HIDE2 = 806;
SM_SPACEMOVE_SHOW2 = 807;
SM_TIMECHECK_MSG = 810;
SM_ADJUST_BONUS = 811; //?
SM_OPENHEALTH = 1100;
SM_CLOSEHEALTH = 1101;
SM_BREAKWEAPON = 1102;
SM_INSTANCEHEALGUAGE = 1103; //??
SM_CHANGEFACE = 1104;
SM_VERSION_FAIL = 1106;
SM_ITEMUPDATE = 1500;
SM_MONSTERSAY = 1501;
SM_EXCHGTAKEON_OK = 65023;
SM_EXCHGTAKEON_FAIL = 65024;
SM_TEST = 65037;
SM_THROW = 65069;
RM_DELITEMS = 9000; //Jacky
RM_TURN = 10001;
RM_WALK = 10002;
RM_RUN = 10003;
RM_HIT = 10004;
RM_SPELL = 10007;
RM_SPELL2 = 10008;
RM_POWERHIT = 10009;
RM_LONGHIT = 10011;
RM_WIDEHIT = 10012;
RM_PUSH = 10013;
RM_FIREHIT = 10014;
RM_RUSH = 10015;
RM_STRUCK = 10020;
RM_DEATH = 10021;
RM_DISAPPEAR = 10022;
RM_MAGSTRUCK = 10025;
RM_MAGHEALING = 10026;
RM_STRUCK_MAG = 10027;
RM_MAGSTRUCK_MINE = 10028;
RM_INSTANCEHEALGUAGE = 10029; //jacky
RM_HEAR = 10030;
RM_WHISPER = 10031;
RM_CRY = 10032;
RM_RIDE = 10033;
RM_WINEXP = 10044;
RM_USERNAME = 10043;
RM_LEVELUP = 10045;
RM_CHANGENAMECOLOR = 10046;
RM_LOGON = 10050;
RM_ABILITY = 10051;
RM_HEALTHSPELLCHANGED = 10052;
RM_DAYCHANGING = 10053;
RM_SYSMESSAGE = 10100;
RM_GROUPMESSAGE = 10102;
RM_SYSMESSAGE2 = 10103;
RM_GUILDMESSAGE = 10104;
RM_SYSMESSAGE3 = 10105; //Jacky
RM_ITEMSHOW = 10110;
RM_ITEMHIDE = 10111;
RM_DOOROPEN = 10112;
RM_DOORCLOSE = 10113;
RM_SENDUSEITEMS = 10114;
RM_WEIGHTCHANGED = 10115;
RM_FEATURECHANGED = 10116;
RM_CLEAROBJECTS = 10117;
RM_CHANGEMAP = 10118;
RM_BUTCH = 10119;
RM_MAGICFIRE = 10120;
RM_SENDMYMAGIC = 10122;
RM_MAGIC_LVEXP = 10123;
RM_SKELETON = 10024;
RM_DURACHANGE = 10125;
RM_MERCHANTSAY = 10126;
RM_GOLDCHANGED = 10136;
RM_CHANGELIGHT = 10137;
RM_CHARSTATUSCHANGED = 10139;
RM_DELAYMAGIC = 10154;
RM_DIGUP = 10200;
RM_DIGDOWN = 10201;
RM_FLYAXE = 10202;
RM_LIGHTING = 10204;
RM_SUBABILITY = 10302;
RM_TRANSPARENT = 10308;
RM_SPACEMOVE_SHOW = 10331;
RM_RECONNECTION = 11332;
RM_SPACEMOVE_SHOW2 = 10332; //?
RM_HIDEEVENT = 10333;
RM_SHOWEVENT = 10334;
RM_ZEN_BEE = 10337;
RM_OPENHEALTH = 10410;
RM_CLOSEHEALTH = 10411;
RM_DOOPENHEALTH = 10412;
RM_CHANGEFACE = 10415;
RM_ITEMUPDATE = 11000;
RM_MONSTERSAY = 11001;
RM_MAKESLAVE = 11002;
RM_MONMOVE = 21004;
SS_200 = 200;
SS_201 = 201;
SS_202 = 202;
SS_WHISPER = 203;
SS_204 = 204;
SS_205 = 205;
SS_206 = 206;
SS_207 = 207;
SS_208 = 208;
SS_209 = 219;
SS_210 = 210;
SS_211 = 211;
SS_212 = 212;
SS_213 = 213;
SS_214 = 214;
RM_10205 = 10205;
RM_10101 = 10101;
RM_ALIVE = 10153;
RM_CHANGEGUILDNAME = 10301;
RM_10414 = 10414;
RM_POISON = 10300;
LA_UNDEAD = 1; //未知;
RM_DELAYPUSHED = 10555;
CM_SPELL = 3017;
CM_QUERYUSERNAME = 80;
CM_DROPITEM = 1000;
CM_PICKUP = 1001;
CM_TAKEONITEM = 1003;
CM_TAKEOFFITEM = 1004;
CM_EAT = 1006;
CM_BUTCH = 1007;
CM_MAGICKEYCHANGE = 1008;
CM_1005 = 1005;
CM_CLICKNPC = 1010;
CM_MERCHANTDLGSELECT = 1011;
CM_MERCHANTQUERYSELLPRICE = 1012;
CM_USERSELLITEM = 1013;
CM_USERBUYITEM = 1014;
CM_USERGETDETAILITEM = 1015;
CM_DROPGOLD = 1016;
CM_LOGINNOTICEOK = 1018;
CM_GROUPMODE = 1019;
CM_CREATEGROUP = 1020;
CM_ADDGROUPMEMBER = 1021;
CM_DELGROUPMEMBER = 1022;
CM_USERREPAIRITEM = 1023;
CM_MERCHANTQUERYREPAIRCOST = 1024;
CM_DEALTRY = 1025;
CM_DEALADDITEM = 1026;
CM_DEALDELITEM = 1027;
CM_DEALCANCEL = 1028;
CM_DEALCHGGOLD = 1029;
CM_DEALEND = 1030;
CM_USERSTORAGEITEM = 1031;
CM_USERTAKEBACKSTORAGEITEM = 1032;
CM_WANTMINIMAP = 1033;
CM_USERMAKEDRUGITEM = 1034;
CM_OPENGUILDDLG = 1035;
CM_GUILDHOME = 1036;
CM_GUILDMEMBERLIST = 1037;
CM_GUILDADDMEMBER = 1038;
CM_GUILDDELMEMBER = 1039;
CM_GUILDUPDATENOTICE = 1040;
CM_GUILDUPDATERANKINFO = 1041;
CM_ADJUST_BONUS = 1043;
CM_SPEEDHACKUSER = 10430; //??
CM_PASSWORD = 1105;
CM_CHGPASSWORD = 1221; //?
CM_SETPASSWORD = 1222; //?
CM_HORSERUN = 3009;
CM_TURN = 3010;
CM_WALK = 3011;
CM_SITDOWN = 3012;
CM_RUN = 3013;
CM_HIT = 3014;
CM_HEAVYHIT = 3015;
CM_BIGHIT = 3016;
CM_POWERHIT = 3018;
CM_LONGHIT = 3019;
CM_CRSHIT = 3333; //?
CM_TWNHIT = 3334; //?
CM_WIDEHIT = 3024;
CM_FIREHIT = 3025;
CM_SAY = 3030;
CM_40HIT = 3026;
CM_41HIT = 3027;
CM_42HIT = 3029;
CM_43HIT = 3028;
RM_10401 = 10401;
STATE_STONE_MODE = 1;
RM_MENU_OK = 10309;
RM_MERCHANTDLGCLOSE = 10127;
RM_SENDDELITEMLIST = 10148;
RM_SENDUSERSREPAIR = 10141;
RM_SENDGOODSLIST = 10128;
RM_SENDUSERSELL = 10129;
RM_SENDUSERREPAIR = 11139;
RM_USERMAKEDRUGITEMLIST = 10149;
RM_USERSTORAGEITEM = 10146;
RM_USERGETBACKITEM = 10147;
RM_USERBIGSTORAGEITEM = 20146;
RM_USERBIGGETBACKITEM = 20147;
RM_SPACEMOVE_FIRE2 = 11330;
RM_SPACEMOVE_FIRE = 11331;
RCC_MERCHANT = 50;
RM_BUYITEM_SUCCESS = 10133;
RM_BUYITEM_FAIL = 10134;
RM_SENDDETAILGOODSLIST = 10135;
RM_SENDBUYPRICE = 10130;
RM_USERSELLITEM_OK = 10131;
RM_USERSELLITEM_FAIL = 10132;
RM_MAKEDRUG_SUCCESS = 10150;
RM_MAKEDRUG_FAIL = 10151;
RM_SENDREPAIRCOST = 10142;
RM_USERREPAIRITEM_OK = 10143;
RM_USERREPAIRITEM_FAIL = 10144;
MAXBAGITEM = 46;
RM_10155 = 10155;
RM_PLAYDICE = 10500;
RM_ADJUST_BONUS = 10400;
RM_BUILDGUILD_OK = 10303;
RM_BUILDGUILD_FAIL = 10304;
RM_DONATE_OK = 10305;
RM_GAMEGOLDCHANGED = 10666;
STATE_OPENHEATH = 1;
POISON_68 = 68;
RM_MYSTATUS = 10777;
CM_QUERYUSERSTATE = 82;
CM_QUERYBAGITEMS = 81;
CM_QUERYUSERSET = 49999;
CM_OPENDOOR = 1002;
CM_SOFTCLOSE = 1009;
CM_1017 = 1017;
CM_1042 = 1042;
CM_GUILDALLY = 1044;
CM_GUILDBREAKALLY = 1045;
RM_HORSERUN = 11000;
RM_HEAVYHIT = 10005;
RM_BIGHIT = 10006;
RM_MOVEFAIL = 10010;
RM_CRSHIT = 11014;
RM_RUSHKUNG = 11015;
RM_41 = 41;
RM_42 = 42;
RM_43 = 43;
RM_MAGICFIREFAIL = 10121;
RM_LAMPCHANGEDURA = 10138;
RM_GROUPCANCEL = 10140;
RM_DONATE_FAIL = 10306;
RM_BREAKWEAPON = 10413;
RM_PASSWORD = 10416;
RM_PASSWORDSTATUS = 10601;
SM_40 = 35;
SM_41 = 36;
SM_42 = 37;
SM_43 = 38;
SM_CRSHIT = 5555;
SM_HORSERUN = 5;
SM_716 = 716;
SM_PASSWORD = 3030;
SM_PLAYDICE = 1200;
SM_PASSWORDSTATUS = 20001;
SM_GAMEGOLDNAME = 55; //游戏币名称
SM_SERVERCONFIG = 20002;
SM_GETREGINFO = 20003;
ET_DIGOUTZOMBI = 1;
ET_PILESTONES = 3;
ET_HOLYCURTAIN = 4;
ET_FIRE = 5;
ET_SCULPEICE = 6;
//==============================新增物品寄售系统================================
RM_SENDSELLOFFGOODSLIST = 21008;
SM_SENDSELLOFFGOODSLIST = 20008;
RM_SENDUSERSELLOFFITEM = 21005;
SM_SENDUSERSELLOFFITEM = 20005; //寄售物品
RM_SENDSELLOFFITEMLIST = 22009; //查询得到的寄售物品
CM_SENDSELLOFFITEMLIST = 20009; //查询得到的寄售物品
RM_SENDBUYSELLOFFITEM_OK = 21010; //购买寄售物品成功
SM_SENDBUYSELLOFFITEM_OK = 20010; //购买寄售物品成功
RM_SENDBUYSELLOFFITEM_FAIL = 21011; //购买寄售物品失败
SM_SENDBUYSELLOFFITEM_FAIL = 20011; //购买寄售物品失败
RM_SENDBUYSELLOFFITEM = 41005; //购买选择寄售物品
CM_SENDBUYSELLOFFITEM = 4005; //购买选择寄售物品
RM_SENDQUERYSELLOFFITEM = 41006; //查询选择寄售物品
CM_SENDQUERYSELLOFFITEM = 4006; //查询选择寄售物品
RM_SENDSELLOFFITEM = 41004; //接受寄售物品
CM_SENDSELLOFFITEM = 4004; //接受寄售物品
RM_SENDUSERSELLOFFITEM_FAIL = 2007; //R = -3 寄售物品失败
RM_SENDUSERSELLOFFITEM_OK = 2006; //寄售物品成功
SM_SENDUSERSELLOFFITEM_FAIL = 20007; //R = -3 寄售物品失败
SM_SENDUSERSELLOFFITEM_OK = 20006; //寄售物品成功
//////////////////////////////////////////////
MAPNAMELEN = 16;
ACTORNAMELEN = 14;
MAXPATHLEN = 255;
DIRPATHLEN = 80;
type
TMonStatus = (s_KillHuman, s_UnderFire, s_Die, s_MonGen);
TMsgColor = (c_Red, c_Green, c_Blue, c_White);
TMsgType = (t_Notice, t_Hint, t_System, t_Say, t_Mon, t_GM, t_Cust, t_Castle);
TDefaultMessage = record
Recog: Integer;
Ident: Word;
Param: Word;
Tag: Word;
Series: Word;
end;
pTDefaultMessage = ^TDefaultMessage;
TOSObject = record
btType: Byte;
CellObj: TObject;
dwAddTime: LongWord;
boObjectDisPose: Boolean;
end;
pTOSObject = ^TOSObject;
TSendMessage = record
wIdent: Word;
wParam: Word;
nParam1: Integer;
nParam2: Integer;
nParam3: Integer;
BaseObject: TObject;
dwAddTime: LongWord;
dwDeliveryTime: LongWord;
boLateDelivery: Boolean;
Buff: PChar;
end;
pTSendMessage = ^TSendMessage;
TProcessMessage = record
wIdent: Word;
wParam: Word;
nParam1: Integer;
nParam2: Integer;
nParam3: Integer;
BaseObject: TObject;
boLateDelivery: Boolean;
dwDeliveryTime: LongWord;
sMsg: string;
end;
pTProcessMessage = ^TProcessMessage;
TLoadHuman = record
sAccount: string[12];
sChrName: string[14];
sUserAddr: string[15];
nSessionID: Integer;
end;
TShortMessage = record
Ident: Word;
wMsg: Word;
end;
TMessageBodyW = record
Param1: Word;
Param2: Word;
Tag1: Word;
Tag2: Word;
end;
TMessageBodyWL = record //16 0x10
lParam1: Integer;
lParam2: Integer;
lTag1: Integer;
lTag2: Integer;
end;
TCharDesc = record
feature: Integer;
Status: Integer;
end;
TSessInfo = record //全局会话
sAccount: string[12];
sIPaddr: string[15];
nSessionID: Integer;
nPayMent: Integer;
nPayMode: Integer;
nSessionStatus: Integer;
dwStartTick: LongWord;
dwActiveTick: LongWord;
nRefCount: Integer;
end;
pTSessInfo = ^TSessInfo;
TQuestInfo = record
wFlag: Word;
btValue: Byte;
nRandRage: Integer;
end;
pTQuestInfo = ^TQuestInfo;
TScript = record
boQuest: Boolean;
QuestInfo: array[0..9] of TQuestInfo;
nQuest: Integer;
RecordList: TList;
end;
pTScript = ^TScript;
TMonItem = record
n00: Integer;
n04: Integer;
sMonName: string;
n18: Integer;
end;
pTMonItem = ^TMonItem;
TItemName = record
nItemIndex: Integer;
nMakeIndex: Integer;
sItemName: string;
end;
pTItemName = ^TItemName;
TVarType = (vNone, vInteger, vString);
TDynamicVar = record
sName: string;
VarType: TVarType;
nInternet: Integer;
sString: string;
end;
pTDynamicVar = ^TDynamicVar;
TRecallMigic = record
nHumLevel: Integer;
sMonName: string;
nCount: Integer;
nLevel: Integer;
end;
TMonSayMsg = record
nRate: Integer;
sSayMsg: string;
State: TMonStatus;
Color: TMsgColor;
end;
pTMonSayMsg = ^TMonSayMsg;
TMonDrop = record
sItemName: string;
nDropCount: Integer;
nNoDropCount: Integer;
nCountLimit: Integer;
end;
pTMonDrop = ^TMonDrop;
TGameCmd = record
sCmd: string[25];
nPermissionMin: Integer;
nPermissionMax: Integer;
end;
pTGameCmd = ^TGameCmd;
TIPaddr = record
dIPaddr: string[15];
sIPaddr: string[15];
end;
pTIPAddr = ^TIPaddr;
TSrvNetInfo = record
sIPaddr: string[15];
nPort: Integer;
end;
pTSrvNetInfo = ^TSrvNetInfo;
TStdItem = packed record //OK
Name: string[14];
StdMode: Byte; //0x0F
Shape: Byte; //0x10
Weight: Byte; //0x11
AniCount: Byte; //0x12
Source: ShortInt; //0x13
Reserved: Byte; //0x14
NeedIdentify: Byte; //0x15
Looks: Word; //0x16
DuraMax: Word; //0x18
Reserved1: Word;
AC: Integer; //0x1A
MAC: Integer; //0x1C
DC: Integer; //0x1E
MC: Integer; //0x20
SC: Integer; //0x22
Need: Integer; //0x24
NeedLevel: Integer; //0x25
Price: Integer; //0x28
end;
pTStdItem = ^TStdItem;
TOStdItem = packed record //OK
Name: string[14];
StdMode: Byte; //0x0F
Shape: Byte; //0x10
Weight: Byte; //0x11
AniCount: Byte; //0x12
Source: ShortInt; //0x13
Reserved: Byte; //0x14
NeedIdentify: Byte; //0x15
Looks: Word; //0x16
DuraMax: Word; //0x18
AC: Word; //0x1A
MAC: Word; //0x1C
DC: Word; //0x1E
MC: Word; //0x20
SC: Word; //0x22
Need: Byte; //0x24
NeedLevel: Byte; //0x25
w26: Word;
Price: Integer; //0x28
end;
pTOStdItem = ^TOStdItem;
TOClientItem = record //OK
s: TOStdItem;
MakeIndex: Integer;
Dura: Word;
DuraMax: Word;
end;
pTOClientItem = ^TOClientItem;
TClientItem = record //OK
s: TStdItem;
MakeIndex: Integer;
Dura: Word;
DuraMax: Word;
end;
PTClientItem = ^TClientItem;
TMonInfo = record
sName: string[14];
btRace: Byte;
btRaceImg: Byte;
wAppr: Word;
wLevel: Word;
btLifeAttrib: Byte;
boUndead: Boolean;
wCoolEye: Word;
dwExp: LongWord;
wMP: Word;
wHP: Word;
wAC: Word;
wMAC: Word;
wDC: Word;
wMaxDC: Word;
wMC: Word;
wSC: Word;
wSpeed: Word;
wHitPoint: Word;
wWalkSpeed: Word;
wWalkStep: Word;
wWalkWait: Word;
wAttackSpeed: Word;
ItemList: TList;
end;
pTMonInfo = ^TMonInfo;
{ TMagic = record
wMagicId: Word;
sMagicName: string[12];
btEffectType: Byte;
btEffect: Byte;
wSpell: Word;
wPower: Word;
TrainLevel: array[0..3] of Byte;
MaxTrain: array[0..3] of Integer;
btTrainLv: Byte;
btJob: Byte;
dwDelayTime: Integer;
btDefSpell: Byte;
btDefPower: Byte;
wMaxPower: Byte;
btDefMaxPower: Word;
sDescr: string[14];
end;
pTMagic = ^TMagic; }
TMagic = record
wMagicId: Word;
sMagicName: string[12];
btEffectType: Byte;
btEffect: Byte;
bt11: Byte;
wSpell: Word;
wPower: Word;
TrainLevel: array[0..3] of Byte;
w02: Word;
MaxTrain: array[0..3] of Integer;
btTrainLv: Byte;
btJob: Byte;
wMagicIdx: Word;
dwDelayTime: LongWord;
btDefSpell: Byte;
btDefPower: Byte;
wMaxPower: Word;
btDefMaxPower: Byte;
sDescr: string[18];
end;
pTMagic = ^TMagic;
TClientMagic = record //84
Key: Char;
Level: Byte;
CurTrain: Integer;
Def: TMagic;
end;
PTClientMagic = ^TClientMagic;
TUserMagic = record
MagicInfo: pTMagic;
wMagIdx: Word;
btLevel: Byte;
btKey: Byte;
nTranPoint: Integer;
end;
pTUserMagic = ^TUserMagic;
TMinMap = record
sName: string;
nID: Integer;
end;
pTMinMap = ^TMinMap;
TMapRoute = record
sSMapNO: string;
nDMapX: Integer;
nSMapY: Integer;
sDMapNO: string;
nSMapX: Integer;
nDMapY: Integer;
end;
pTMapRoute = ^TMapRoute;
TMapInfo = record
sName: string;
sMapNO: string;
nL: Integer; //0x10
nServerIndex: Integer; //0x24
nNEEDONOFFFlag: Integer; //0x28
boNEEDONOFFFlag: Boolean; //0x2C
sShowName: string; //0x4C
sReConnectMap: string; //0x50
boSAFE: Boolean; //0x51
boDARK: Boolean; //0x52
boFIGHT: Boolean; //0x53
boFIGHT3: Boolean; //0x54
boDAY: Boolean; //0x55
boQUIZ: Boolean; //0x56
boNORECONNECT: Boolean; //0x57
boNEEDHOLE: Boolean; //0x58
boNORECALL: Boolean; //0x59
boNORANDOMMOVE: Boolean; //0x5A
boNODRUG: Boolean; //0x5B
boMINE: Boolean; //0x5C
boNOPOSITIONMOVE: Boolean; //0x5D
end;
pTMapInfo = ^TMapInfo;
TUnbindInfo = record
nUnbindCode: Integer;
sItemName: string[14];
end;
pTUnbindInfo = ^TUnbindInfo;
TQuestDiaryInfo = record
QDDinfoList: TList;
end;
pTQuestDiaryInfo = ^TQuestDiaryInfo;
TAdminInfo = record
nLv: Integer;
sChrName: string[14];
sIPaddr: string[15];
end;
pTAdminInfo = ^TAdminInfo;
THumMagics = record
wMagIdx: Word;
btLevel: Byte;
btKey: Byte;
nTranPoint: Integer; //当前持久值
end;
pTHumMagics = ^THumMagics;
TNakedAbility = packed record //Size 20
DC: Word;
MC: Word;
SC: Word;
AC: Word;
MAC: Word;
HP: Word;
MP: Word;
Hit: Word;
Speed: Word;
X2: Word;
end;
pTNakedAbility = ^TNakedAbility;
{TAbility = packed record //OK //Size 50
Level: Word; //0x198 //0x34 0x00
AC: Integer; //0x19A //0x36 0x02
MAC: Integer; //0x19C //0x38 0x04
DC: Integer; //0x19E //0x3A 0x06
MC: Integer; //0x1A0 //0x3C 0x08
SC: Integer; //0x1A2 //0x3E 0x0A
HP: Word; //0x1A4 //0x40 0x0C
MP: Word; //0x1A6 //0x42 0x0E
MaxHP: Word; //0x1A8 //0x44 0x10
MaxMP: Word; //0x1AA //0x46 0x12
Exp: LongWord; //0x1B0 //0x4C 0x18
MaxExp: LongWord; //0x1B4 //0x50 0x1C
Weight: Word; //0x1B8 //0x54 0x20
MaxWeight: Word; //0x1BA //0x56 0x22 背包
WearWeight: Word; //0x1BC //0x58 0x24
MaxWearWeight: Word; //0x1BD //0x59 0x25 负重
HandWeight: Word; //0x1BE //0x5A 0x26
MaxHandWeight: Word; //0x1BF //0x5B 0x27 腕力
end;
pTAbility = ^TAbility;}
TAbility = packed record //OK //Size 40
Level: Word; //0x198 //0x34 0x00
AC: Integer; //0x19A //0x36 0x02
MAC: Integer; //0x19C //0x38 0x04
DC: Integer; //0x19E //0x3A 0x06
MC: Integer; //0x1A0 //0x3C 0x08
SC: Integer; //0x1A2 //0x3E 0x0A
HP: Word; //0x1A4 //0x40 0x0C
MP: Word; //0x1A6 //0x42 0x0E
MaxHP: Word; //0x1A8 //0x44 0x10
MaxMP: Word; //0x1AA //0x46 0x12
Exp: LongWord; //0x1B0 //0x4C 0x18
MaxExp: LongWord; //0x1B4 //0x50 0x1C
Weight: Word; //0x1B8 //0x54 0x20
MaxWeight: Word; //0x1BA //0x56 0x22 背包
WearWeight: Word; //0x1BC //0x58 0x24
MaxWearWeight: Word; //0x1BD //0x59 0x25 负重
HandWeight: Word; //0x1BE //0x5A 0x26
MaxHandWeight: Word; //0x1BF //0x5B 0x27 腕力
end;
pTAbility = ^TAbility;
TOAbility = packed record
Level: Word; //0x198 //0x34 0x30
AC: Word; //0x19A //0x36 0x32
MAC: Word; //0x19C //0x38 0x034
DC: Word; //0x19E //0x3A 0x36
MC: Word; //0x1A0 //0x3C 0x38
SC: Word; //0x1A2 //0x3E 0x3A
HP: Word; //0x1A4 //0x40 0x3C
MP: Word; //0x1A6 //0x42 0x3E
MaxHP: Word; //0x1A8 //0x44 0x40
MaxMP: Word; //0x1AA //0x46 0x42
btReserved1: Byte;
btReserved2: Byte;
btReserved3: Byte;
btReserved4: Byte;
Exp: LongWord; //0x1B0 //0x4C 0x48
MaxExp: LongWord; //0x1B4 //0x50 0x4C
Weight: Word; //0x1B8 //0x54 0x50
MaxWeight: Word; //0x1BA //0x56 0x52 背包
WearWeight: Byte; //0x1BC //0x58 0x54
MaxWearWeight: Byte; //0x1BD //0x59 0x55 负重
HandWeight: Byte; //0x1BE //0x5A 0x56
MaxHandWeight: Byte; //0x1BF //0x5B 0x57 腕力
end;
pTOAbility = ^TOAbility;
{TOAbility = packed record //Size 40
Level: Word;
AC: Word; //0x19A //0x36 0x02
MAC: Word; //0x19C //0x38 0x04
DC: Word; //0x19E //0x3A 0x06
MC: Word; //0x1A0 //0x3C 0x08
SC: Word; //0x1A2 //0x3E 0x0A
HP: Word;
MP: Word;
MaxHP: Word;
MaxMP: Word;
btReserved1: Byte;
btReserved2: Byte;
btReserved3: Byte;
btReserved4: Byte;
Exp: LongWord;
MaxExp: LongWord;
Weight: Word;
MaxWeight: Word;
WearWeight: Byte;
MaxWearWeight: Byte;
HandWeight: Byte;
MaxHandWeight: Byte;
end;
pTOAbility = ^TOAbility; }
TAddAbility = record //OK //Size 40
wHP: Word; //0x1A4 //0x40
wMP: Word; //0x1A6 //0x42
wHitPoint: Word;
wSpeedPoint: Word;
wAC: Integer;
wMAC: Integer;
wDC: Integer;
wMC: Integer;
wSC: Integer;
bt1DF: Byte; //神圣
bt035: Byte;
wAntiPoison: Word;
wPoisonRecover: Word;
wHealthRecover: Word;
wSpellRecover: Word;
wAntiMagic: Word;
btLuck: Byte;
btUnLuck: Byte;
nHitSpeed: Integer;
btWeaponStrong: Byte;
end;
pTAddAbility = ^TAddAbility;
TRAbility = packed record //OK //Size 44
Level: Word; //0x198
AC: Word; //0x19A
MAC: Word; //0x19C
DC: Word; //0x19E
MC: Word; //0x1A0
SC: Word; //0x1A2
HP: Word; //0x1A4
MP: Word; //0x1A6
MaxHP: Word; //0x1A8
MaxMP: Word; //0x1AA
dw1AC: LongWord; //0x1AC
Exp: LongWord; //0x1B0
MaxExp: LongWord; //0x1B4
Weight: Word; //0x1B8
MaxWeight: Word; //0x1BA
WearWeight: Word; //0x1BC
MaxWearWeight: Word; //0x1BD
HandWeight: Word; //0x1BE
MaxHandWeight: Word; //0x1BF
end;
TWAbility = record
dwExp: LongWord; //0x194 怪物经验值(Dword)
wHP: Word; //0x1A4
wMP: Word; //0x1A6
wMaxHP: Word; //0x1A8
wMaxMP: Word; //0x1AA
end;
TMerchantInfo = record
sScript: string[14];
sMapName: string[14];
nX: Integer;
nY: Integer;
sNPCName: string[40];
nFace: Integer;
nBody: Integer;
boCastle: Boolean;
end;
pTMerchantInfo = ^TMerchantInfo;
TSocketBuff = record
Buffer: PChar; //0x24
nLen: Integer; //0x28
end;
pTSocketBuff = ^TSocketBuff;
TSendBuff = record
nLen: Integer;
Buffer: array[0..DATA_BUFSIZE - 1] of Char;
end;
pTSendBuff = ^TSendBuff;
TUserItem = record
MakeIndex: Integer;
wIndex: Word; //物品id
Dura: Word; //当前持久值
DuraMax: Word; //最大持久值
btValue: array[0..13] of Byte;
end;
pTUserItem = ^TUserItem;
TMonItemInfo = record
SelPoint: Integer;
MaxPoint: Integer;
ItemName: string;
Count: Integer;
end;
pTMonItemInfo = ^TMonItemInfo;
TMonsterInfo = record
Name: string;
ItemList: TList;
end;
PTMonsterInfo = ^TMonsterInfo;
TMapItem = record
Name: string;
Looks: Word;
AniCount: Byte;
Reserved: Byte;
Count: Integer;
OfBaseObject: TObject;
DropBaseObject: TObject;
dwCanPickUpTick: LongWord;
UserItem: TUserItem;
end;
PTMapItem = ^TMapItem;
TVisibleMapItem = record
wIdent: Word;
nParam1: Integer;
Buff: PChar;
MapItem: PTMapItem;
nVisibleFlag: Integer;
nX: Integer;
nY: Integer;
sName: string;
wLooks: Word;
end;
pTVisibleMapItem = ^TVisibleMapItem;
TVisibleBaseObject = record
BaseObject: TObject;
nVisibleFlag: Integer;
end;
pTVisibleBaseObject = ^TVisibleBaseObject;
THumanRcd = record
sUserID: string[10];
sCharName: string[15];
btJob: Byte;
btGender: Byte;
btLevel: Byte;
btHair: Byte;
sMapName: string[15];
btAttackMode: Byte;
btIsAdmin: Byte;
nX: Integer;
nY: Integer;
nGold: Integer;
dwExp: LongWord;
end;
pTHumanRcd = ^THumanRcd;
TObjectFeature = record
btGender: Byte;
btWear: Byte;
btHair: Byte;
btWeapon: Byte;
end;
pTObjectFeature = ^TObjectFeature;
TStatusInfo = record
nStatus: Integer;
dwStatusTime: LongWord;
sm218: SmallInt;
dwTime220: LongWord;
end;
TMsgHeader = record
dwCode: LongWord;
nSocket: Integer;
wGSocketIdx: Word;
wIdent: Word;
wUserListIndex: Integer;
nLength: Integer;
end;
pTMsgHeader = ^TMsgHeader;
TUserInfo = record
bo00: Boolean; //0x00
bo01: Boolean; //0x01 ?
bo02: Boolean; //0x02 ?
bo03: Boolean; //0x03 ?
n04: Integer; //0x0A ?
n08: Integer; //0x0B ?
bo0C: Boolean; //0x0C ?
bo0D: Boolean; //0x0D
bo0E: Boolean; //0x0E ?
bo0F: Boolean; //0x0F ?
n10: Integer; //0x10 ?
n14: Integer; //0x14 ?
n18: Integer; //0x18 ?
sStr: string[20]; //0x1C
nSocket: Integer; //0x34
nGateIndex: Integer; //0x38
n3C: Integer; //0x3C
n40: Integer; //0x40 ?
n44: Integer; //0x44
List48: TList; //0x48
Cert: TObject; //0x4C
dwTime50: LongWord; //0x50
bo54: Boolean; //0x54
end;
pTUserInfo = ^TUserInfo;
TGlobaSessionInfo = record
sAccount: string;
sIPaddr: string;
nSessionID: Integer;
n24: Integer;
bo28: Boolean;
dwAddTick: LongWord;
dAddDate: TDateTime;
end;
pTGlobaSessionInfo = ^TGlobaSessionInfo;
THumItems = array[0..8] of TUserItem;
THumAddItems = array[9..12] of TUserItem;
TBagItems = array[0..45] of TUserItem;
TStorageItems = array[0..45] of TUserItem;
THumMagic = array[0..19] of THumMagics;
THumanUseItems = array[0..12] of TUserItem;
PTPlayUseItems = ^THumanUseItems;
pTHumItems = ^THumItems;
pTBagItems = ^TBagItems;
pTStorageItems = ^TStorageItems;
pTHumAddItems = ^THumAddItems;
pTHumMagic = ^THumMagic;
TUserStateInfo = record
Feature: Integer;
UserName: string[15];
NameColor: Integer;
GuildName: string[14];
GuildRankName: string[16];
UseItems: array[0..12] of TClientItem;
end;
pTUserStateInfo = ^TUserStateInfo;
TSellOffHeader = record
nItemCount: Integer;
end;
TSellOffInfo = packed record //Size 59 拍卖数据结构
sCharName: string[14];
dSellDateTime: TDateTime;
nSellGold: Integer;
n: Integer;
UseItems: TUserItem;
n1: Integer;
end;
pTSellOffInfo = ^TSellOffInfo;
TItemCount = Integer;
TBigStorage = packed record //无限仓库数据结构
boDelete: Boolean;
sCharName: string[14];
SaveDateTime: TDateTime;
UseItems: TUserItem;
nCount: Integer;
end;
pTBigStorage = ^TBigStorage;
TBindItem = record
sUnbindItemName: string[14];
nStdMode: Integer;
nShape: Integer;
btItemType: Byte;
end;
pTBindItem = ^TBindItem;
TOUserStateInfo = packed record //OK
feature: Integer;
UserName: string[15]; // 15
GuildName: string[14]; //14
GuildRankName: string[16]; //15
NameColor: Word;
UseItems: array[0..8] of TOClientItem;
end;
TRecordHeader = packed record //Size 12
boDeleted: Boolean;
nSelectID: Byte;
w1: Word;
dCreateDate: TDateTime; //创建时间
sName: string[15]; //0x15 //角色名称 28
end;
pTRecordHeader = ^TRecordHeader;
TQuestUnit = array[0..22] of Byte; //0..34
TQuestFlag = array[0..106] of Byte;
TStatusTime = array[0..MAX_STATUS_ATTRIBUTE - 1] of Word;
THumData = packed record
sChrName: string[14]; //0x14 //角色名称
sCurMap: string[16]; //0x04 //返城地图 57
wCurX: Word; //0x24 人物所在座标X(2字节) 59
wCurY: Word; //0x28 人物所在座标Y(2字节) 61
btDir: Byte; //0x2C 人物所在方向(1字节) 62
btHair: Byte; //0x2E 人物的头发(1字节) 63
btSex: Byte; //0x2D 人物的性别(1字节) 64
btJob: Byte; //0x2F 人物的职业(1字节) 65
nGold: Integer; //0x30 人物金币数(4字节) 69
Abil: TRAbility; //0x34 -> 0x5B //44 人物属性 113 50
BonusAbil: TNakedAbility; //20 133
sHomeMap: string[17]; //17 0x78 //回城地图 150
wHomeX: Word; //0x8C //回城座标X 152
wHomeY: Word; //0x90 //回城座标Y 154
n1: array[0..14] of Byte; //未知
sMasterName: string[14];
boMaster: Boolean; //是否是师傅
btCreditPoint: Byte; //声望
n2: Word; //未知
sStoragePwd: string[7]; //仓库密码
btReLevel: Byte; //转生等级
n3: array[0..22] of Byte; //未知
//nDay :Integer;//剩余天数
nBonusPoint: Integer; //属性点
nGameGold: Integer; //元宝
nGamePoint: Integer; //泡点
nPayMentPoint: Integer; //冲值点
n4: array[0..3] of Byte;
nPKPOINT: Word; //PK值
btAllowGroup: Byte; //允许组队
btF9: Byte;
btAttatckMode: Byte;
btIncHealth: Byte;
btIncSpell: Byte;
btIncHealing: Byte;
btFightZoneDieCount: Byte;
n5: array[0..1] of Byte;
sAccount: string[10]; //账号
btEE: Byte;
boLockLogon: Boolean;
wContribution: Word; //贡献度
btEF: Byte;
nHungerStatus: Integer;
boAllowGuildReCall: Boolean;
wGroupRcallTime: Word;
dBodyLuck: Double;
boAllowGroupReCall: Boolean; //17
wStatusTimeArr: TStatusTime; //24
QuestUnitOpen: TQuestUnit; //23
QuestUnit: TQuestUnit; //23
sDearName: string[14]; //老婆名称
n8: Word;
btDivorce: Byte; //是否结婚
n9: Byte;
btMarryCount: Byte; //结婚次数
QuestFlag: TQuestFlag;
HumItems: array[0..8] of TUserItem; //9格装备 衣服 武器 蜡烛 头盔 项链 手镯 手镯 戒指 戒指
BagItems: array[0..45] of TUserItem; //包裹装备
Magic: array[0..19] of THumMagics; //魔法
StorageItems: array[0..45] of TUserItem; //仓库物品
HumAddItems: array[0..3] of TUserItem; //新增4格 护身符 腰带 鞋子 宝石
end;
pTHumData = ^THumData;
THumDataInfo = packed record //Size 3164
Header: TRecordHeader;
Data: THumData;
end;
pTHumDataInfo = ^THumDataInfo;
TLoadUser = record
sAccount: string[12];
sChrName: string[14];
sIPaddr: string[15];
nSessionID: Integer;
nSocket: Integer;
nGateIdx: Integer;
nGSocketIdx: Integer;
nPayMent: Integer;
nPayMode: Integer;
dwNewUserTick: LongWord;
nSoftVersionDate: Integer;
end;
pTLoadUser = ^TLoadUser;
TDoorStatus = record
bo01: Boolean;
boOpened: Boolean;
dwOpenTick: LongWord;
nRefCount: Integer;
n04: Integer;
end;
pTDoorStatus = ^TDoorStatus;
TDoorInfo = record
nX: Integer;
nY: Integer;
n08: Integer;
Status: pTDoorStatus;
end;
pTDoorInfo = ^TDoorInfo;
TSlaveInfo = record
sSalveName: string;
btSalveLevel: Byte;
btSlaveExpLevel: Byte;
dwRoyaltySec: LongWord;
nKillCount: Integer;
nHP: Integer;
nMP: Integer;
end;
pTSlaveInfo = ^TSlaveInfo;
TSwitchDataInfo = record
sChrName: string[14];
sMAP: string[16];
wX: Word;
wY: Word;
Abil: TAbility;
nCode: Integer;
boC70: Boolean;
boBanShout: Boolean;
boHearWhisper: Boolean;
boBanGuildChat: Boolean;
boAdminMode: Boolean;
boObMode: Boolean;
BlockWhisperArr: array[0..5] of string;
SlaveArr: array[0..10] of TSlaveInfo;
StatusValue: array[0..5] of Word;
StatusTimeOut: array[0..5] of LongWord;
end;
pTSwitchDataInfo = ^TSwitchDataInfo;
TGoldChangeInfo = record
sGameMasterName: string;
sGetGoldUser: string;
nGold: Integer;
end;
pTGoldChangeInfo = ^TGoldChangeInfo;
TGateInfo = record
Socket: TCustomWinSocket;
boUsed: Boolean;
sAddr: string[15];
nPort: Integer;
n520: Integer;
UserList: TList;
nUserCount: Integer;
Buffer: PChar;
nBuffLen: Integer;
BufferList: TList;
boSendKeepAlive: Boolean;
nSendChecked: Integer;
nSendBlockCount: Integer;
dwTime544: LongWord;
nSendMsgCount: Integer;
nSendRemainCount: Integer;
dwSendTick: LongWord;
nSendMsgBytes: Integer;
nSendBytesCount: Integer;
nSendedMsgCount: Integer;
nSendCount: Integer;
dwSendCheckTick: LongWord;
end;
pTGateInfo = ^TGateInfo;
TStartPoint = record //安全区回城点 增加光环效果
m_sMapName: string[16];
m_nCurrX: Integer; // 人物所在座标X(4字节)
m_nCurrY: Integer;
m_boNotAllowSay: Boolean;
m_nRange: Integer;
m_nType: Integer;
m_nPkZone: Integer;
m_nPkFire: Integer;
m_btShape: Byte;
end;
pTStartPoint = ^TStartPoint;
//地图事件数据配置详解
TQuestUnitStatus = record
nQuestUnit: Integer;
boOpen: Boolean;
end;
pTQuestUnitStatus = ^TQuestUnitStatus;
TMapCondition = record
nHumStatus: Integer;
sItemName: string[14];
boNeedGroup: Boolean;
end;
pTMapCondition = ^TMapCondition;
TStartScript = record
nLable: Integer;
sLable: string[100];
end;
TMapEvent = record
m_sMapName: string[16];
m_nCurrX: Integer;
m_nCurrY: Integer;
m_nRange: Integer;
m_MapFlag: TQuestUnitStatus;
m_nRandomCount: Integer; //; 范围:(0 - 999999) 0 的机率为100% ; 数字越大,机率越低
m_Condition: TMapCondition; //触发条件
m_StartScript: TStartScript;
end;
pTMapEvent = ^TMapEvent;
TSendUserData = record
nSocketIndx: Integer;
nSocketHandle: Integer;
sMsg: string;
end;
pTSendUserData = ^TSendUserData;
TCheckVersion = record
end;
pTCheckVersion = ^TCheckVersion;
TGList = class(TList)
private
GLock: TRTLCriticalSection;
public
constructor Create;
destructor Destroy; override;
procedure Lock;
procedure UnLock;
end;
TGStringList = class(TStringList)
private
GLock: TRTLCriticalSection;
public
constructor Create;
destructor Destroy; override;
procedure Lock();
procedure UnLock;
end;
TMapFlag = record
boSAFE: Boolean;
boDARK: Boolean;
boFIGHT: Boolean;
boFIGHT3: Boolean;
boDAY: Boolean;
boQUIZ: Boolean;
boNORECONNECT: Boolean;
boMUSIC: Boolean;
boEXPRATE: Boolean;
boPKWINLEVEL: Boolean;
boPKWINEXP: Boolean;
boPKLOSTLEVEL: Boolean;
boPKLOSTEXP: Boolean;
boDECHP: Boolean;
boINCHP: Boolean;
boDECGAMEGOLD: Boolean;
boDECGAMEPOINT: Boolean;
boINCGAMEGOLD: Boolean;
boINCGAMEPOINT: Boolean;
boRUNHUMAN: Boolean;
boRUNMON: Boolean;
boNEEDHOLE: Boolean;
boNORECALL: Boolean;
boNOGUILDRECALL: Boolean;
boNODEARRECALL: Boolean;
boNOMASTERRECALL: Boolean;
boNORANDOMMOVE: Boolean;
boNODRUG: Boolean;
boMINE: Boolean;
boNOPOSITIONMOVE: Boolean;
boNoManNoMon: Boolean;
nL: Integer;
nNEEDSETONFlag: Integer;
nNeedONOFF: Integer;
nMUSICID: Integer;
nPKWINLEVEL: Integer;
nEXPRATE: Integer;
nPKWINEXP: Integer;
nPKLOSTLEVEL: Integer;
nPKLOSTEXP: Integer;
nDECHPPOINT: Integer;
nDECHPTIME: Integer;
nINCHPPOINT: Integer;
nINCHPTIME: Integer;
nDECGAMEGOLD: Integer;
nDECGAMEGOLDTIME: Integer;
nDECGAMEPOINT: Integer;
nDECGAMEPOINTTIME: Integer;
nINCGAMEGOLD: Integer;
nINCGAMEGOLDTIME: Integer;
nINCGAMEPOINT: Integer;
nINCGAMEPOINTTIME: Integer;
sReConnectMap: string;
boUnAllowStdItems: Boolean;
sUnAllowStdItemsText: string;
boAutoMakeMonster: Boolean;
boNOFIREMAGIC: Boolean;//不允许火墙
end;
pTMapFlag = ^TMapFlag;
implementation
constructor TGList.Create;
begin
inherited Create;
InitializeCriticalSection(GLock);
end;
destructor TGList.Destroy;
begin
DeleteCriticalSection(GLock);
inherited;
end;
procedure TGList.Lock;
begin
EnterCriticalSection(GLock);
end;
procedure TGList.UnLock;
begin
LeaveCriticalSection(GLock);
end;
constructor TGStringList.Create;
begin
inherited Create;
InitializeCriticalSection(GLock);
end;
destructor TGStringList.Destroy;
begin
DeleteCriticalSection(GLock);
inherited;
end;
procedure TGStringList.Lock;
begin
EnterCriticalSection(GLock);
end;
procedure TGStringList.UnLock;
begin
LeaveCriticalSection(GLock);
end;
initialization
finalization
end.