www.pudn.com > 2007717233531.rar > Grobal2.pas


unit grobal2; 
 
interface 
uses 
  Windows; 
 
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; 
 
  DEFBLOCKSIZE  = 16; 
  BUFFERSIZE    = 10000; 
 
  LOGICALMAPUNIT= 40; 
 
  UNITX         = 48; 
  UNITY         = 32; 
 
  HALFX         = 24; 
  HALFY         = 16; 
 
  MAXBAGITEM    = 52; 
 
  STATE_STONE_MODE = 1; 
  STATE_OPENHEATH=1; //jacky ?? 
 
 
 
  ET_DIGOUTZOMBI   = 1; 
  ET_PILESTONES    = 3; 
  ET_HOLYCURTAIN   = 4; 
  ET_FIRE          = 5; 
  ET_SCULPEICE     = 6; 
 
  RCC_USERHUMAN     = 24; //Jacky ?? 
  RCC_MERCHANT     = 50; 
  RCC_GUARD        = 12; 
 
  VERSION_NUMBER_0522 = 20020522; 
 
 
  CM_QUERYUSERSTATE     = 82; 
 
 
 
  CM_QUERYUSERNAME      = 80; 
  CM_QUERYBAGITEMS      = 81; 
 
  CM_QUERYCHR           = 100; 
  CM_NEWCHR             = 101; 
  CM_DELCHR             = 102; 
  CM_SELCHR             = 103; 
  CM_SELECTSERVER       = 104; 
 
  CM_OPENDOOR           = 1002; 
  CM_SOFTCLOSE          = 1009; 
 
  CM_DROPITEM           = 1000; 
  CM_PICKUP             = 1001; 
  CM_TAKEONITEM		= 1003; 
  CM_TAKEOFFITEM        = 1004; 
  CM_EAT                = 1006; 
  CM_BUTCH              = 1007; 
  CM_MAGICKEYCHANGE	= 1008; 
 
  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_PROTOCOL           = 2000; 
  CM_IDPASSWORD         = 2001; 
  CM_ADDNEWUSER         = 2002; 
  CM_CHANGEPASSWORD     = 2003; 
  CM_UPDATEUSER         = 2004; 
 
  CM_THROW              = 3005; 
  CM_TURN               = 3010; 
  CM_WALK               = 3011; 
  CM_SITDOWN            = 3012; 
  CM_RUN                = 3013; 
  CM_HIT                = 3014; 
  CM_HEAVYHIT           = 3015; 
  CM_BIGHIT             = 3016; 
  CM_SPELL              = 3017; 
  CM_POWERHIT           = 3018; 
  CM_LONGHIT            = 3019; 
 
  CM_WIDEHIT            = 3024; 
  CM_FIREHIT            = 3025; 
 
  CM_SAY                = 3030; 
 
 
  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_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_CLOSEDOOR          = 65022; 
  SM_OPENDOOR_LOCK      = 613; 
  SM_OPENDOOR_OK        = 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          = 766; 
  SM_MYSTATUS           = 708; 
 
  SM_DELITEMS           = 709; 
  SM_READMINIMAP_OK     = 710; 
  SM_READMINIMAP_FAIL   = 711; 
  SM_SENDUSERMAKEDRUGITEMLIST = 712; 
  SM_MAKEDRUG_SUCCESS   = 713; 
  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_CHANGEFACE         = 1104; 
  SM_BREAKWEAPON        = 1102; 
  SM_INSTANCEHEALGUAGE  = 1103; //?? 
  SM_VERSION_FAIL       = 1106; 
 
  SM_ITEMUPDATE         = 1500; 
  SM_MONSTERSAY         = 1501; 
 
  SM_EXCHGTAKEON_OK=65023; 
  SM_EXCHGTAKEON_FAIL=65024; 
 
  SM_TEST=65037; 
  SM_THROW=65069; 
  SM_ACTION_MIN = 65070; 
  SM_ACTION_MAX = 65071; 
  SM_ACTION2_MIN=65072; 
  SM_ACTION2_MAX =65073; 
 
  CLIENTTYPE = 0; //普通为0  99为管理客户端 
  VERSION_NUMBER = 20020522;  //客户端 版本号 
  SM_HORSERUN           = 5; 
 
  CM_GETBACKPASSWORD =2010;        //发送密码找回 
  SM_GETBACKPASSWD_SUCCESS = 508; //密码找回成功 
  SM_GETBACKPASSWD_FAIL = 509;    //密码找回失败 
 
  CM_START=2200; 
  SM_STARTGAME =2201; 
  SM_START_FAIL  = 2202;           //登陆失败 
  SM_START_SUCCESS  = 2203;//?     //登陆成功 
 
  CM_SEARCH=2205; 
  SM_SEARCH_SUCCESS=2206; 
  SM_SEARCH_FAIL=2209; 
 
  CM_DOWMLINE=2208; 
  SM_DOWMLINE_SUCCESS=2209; 
  SM_DOWMLINE_FAIL=2210; 
   
type 
 
  TDefaultMessage = record 
    Recog    :Integer; 
    Ident    :Word; 
    Param    :Word; 
    Tag      :Word; 
    Series   :Word; 
  end; 
 
  TChrMsg =record 
    Ident    :Integer; 
    X        :Integer; 
    Y        :Integer; 
    Dir      :Integer; 
    State    :Integer; 
    feature  :Integer; 
    saying   :String; 
    Sound    :Integer; 
  end; 
  PTChrMsg = ^TChrMsg; 
  TStdItem =record      //OK 
    Name         :String[14]; 
    StdMode      :Byte; 
    Shape        :Byte; 
    Weight       :Byte; 
    AniCount     :Byte; 
    Source       :Byte; 
    Reserved     :Byte; 
    NeedIdentify :Byte; 
    Looks        :Word; 
    DuraMax      :Word; 
    AC           :Word; 
    MAC          :Word; 
    DC           :Word; 
    MC           :Word; 
    SC           :Word; 
    Need         :Byte; 
    NeedLevel    :Byte; 
    Price        :Dword; 
  end; 
  TClientItem = record  //OK 
    S         :TStdItem; 
    MakeIndex :Integer; 
    Dura      :Word; 
    DuraMax   :Word; 
  end; 
  PTClientItem =^TClientItem; 
  TUserStateInfo =record        //OK 
    Feature       :Integer; 
    UserName      :String[19]; 
    GuildName     :String[14]; 
    GuildRankName :String[14]; 
    NameColor     :Word; 
    UseItems      :array [0..8] of TClientItem; 
  end; 
  TUserCharacterInfo =record 
    Name:String[19]; 
    Job:Byte; 
    Hair:Byte; 
    Level:Byte; 
    m_btSex:Byte; 
  end; 
  TUserEntry =record 
    sAccount      :String[10]; 
    sPassword     :String[10]; 
    sUserName     :String[20]; 
    sSSNo         :String[14]; 
    sPhone        :String[14]; 
    sQuiz         :String[20]; 
    sAnswer       :String[12]; 
    sEMail        :String[40]; 
  end; 
  TUserEntryAdd =record 
    sQuiz2        :String[20]; 
    sAnswer2      :String[12]; 
    sBirthDay     :String[10]; 
    sMobilePhone  :String[15]; 
  end; 
  TDropItem =record 
    X:Integer; 
    Y:Integer; 
    Id:integer; 
    Looks:integer; 
    Name:String; 
    FlashTime:Dword; 
    FlashStepTime:Dword; 
    FlashStep:Integer; 
    BoFlash:Boolean; 
  end; 
  PTDropItem = ^TDropItem; 
  TMagic =record        //+ 
    MagicId    :Word; 
    MagicName :String[12]; 
    EffectType :Byte; 
    Effect     :Byte; 
    xx         :Byte; 
    Spell    :Word; 
    DefSpell :Word; 
    TrainLevel:array[0..2] of Byte; 
    TrainLeveX:array[0..2] of Byte; 
    MaxTrain :array[0..2] of Integer; 
    DelayTime  :Integer; 
  end; 
  TClientMagic = record //84 
    Key    :Char; 
    Level  :Byte; 
    CurTrain:Integer; 
    Def    :TMagic; 
  end; 
  PTClientMagic = ^TClientMagic; 
  TNakedAbility =record 
    DC    :Word; 
    MC    :Word; 
    SC    :Word; 
    AC    :Word; 
    MAC    :Word; 
    HP    :Word; 
    MP    :Word; 
    Hit   :Byte; 
    Speed :Integer; 
  end; 
 
  TAbility =record  //OK    //Size 40 
    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         :Dword;  //0x1AC 
    Exp           :Dword;  //0x1B0 
    MaxExp        :Dword;  //0x1B4 
    Weight        :Word;  //0x1B8 
    MaxWeight     :Word;  //0x1BA 
    WearWeight    :Byte;  //0x1BC 
    MaxWearWeight :Byte;  //0x1BD 
    HandWeight    :Byte;  //0x1BE 
    MaxHandWeight :Byte;  //0x1BF 
  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; 
  TClientGoods = record 
    Name    :String; 
    SubMenu :Integer; 
    Price   :Integer; 
    Stock   :Integer; 
    Grade   :Integer; 
  end; 
  pTClientGoods=^TClientGoods; 
 
  function APPRfeature(cfeature:integer):Word; 
  function RACEfeature(cfeature:integer):Byte; 
  function HAIRfeature(cfeature:integer):Byte; 
  function DRESSfeature(cfeature:integer):Byte; 
  function WEAPONfeature(cfeature:integer):Byte; 
implementation 
 
function WEAPONfeature(cfeature:integer):Byte; 
begin 
  Result:=HiByte(cfeature); 
end; 
function DRESSfeature(cfeature:integer):Byte; 
begin 
  Result:= HiByte(HiWord(cfeature)); 
end; 
function APPRfeature(cfeature:integer):Word; 
begin 
  Result:=HiWord(cfeature); 
end; 
function HAIRfeature(cfeature:integer):Byte; 
begin 
  Result:=HiWord(cfeature); 
end; 
function RACEfeature(cfeature:integer):Byte; 
begin 
  Result:=cfeature; 
end; 
end.