运行环境为wemade 的一套vcl 组件(你得从代码中剔出来),另外,需要delphiX 。缺少文件为: Grobal2 in ‘\\\\mir2-dev\\mud2\\mir200\\grobal2.pas‘,
去年我即拿到该代码,已经重写了一部分grobal2.pas 的代码了;还有很多问题没有解决
ftp://new:[email protected]/datanew/2004042208554728709.rar
先声明:仅供研究……
版主如果觉得不合适可以删除该贴,但别扣我信誉分,谢了
去年我即拿到该代码,已经重写了一部分grobal2.pas 的代码了;还有很多问题没有解决
ftp://new:[email protected]/datanew/2004042208554728709.rar
先声明:仅供研究……
版主如果觉得不合适可以删除该贴,但别扣我信誉分,谢了
解决方案 »
- 用webbrowser检测出IE的版本是4.0的,怎么能够用到操作系统自带的IE内核啊,我的电脑都已经最新了
- 高手们,救救我~~~
- 怎么获得一个数字对应的一个时间
- 多线程处理扫描数据的问题,急!急!要停拉了!
- 我想在treeview上进行拖拽,可现在我一按下鼠标,它就认为我要拖拽把我鼠标变了,怎么解决?
- 哪位大哥有rational rose2003的lisence key
- 各位大哥,为什么小弟的信誉分突然少了2分,请各位指教.
- 关于类型库返回数据类型的问题
- sql server中text,image类型的数据是以什么形式存放的?
- 我写了个文本编辑器,但与文本文件关联时出了问题!
- 郁闷的求教:delphi菜单中project下的compile和build菜单项有什么区别呀?
- 求助:通用动态调用Form的过程怎样编写????
大鸟哥,我还没你刁,不能骗人
VERSION_NUMBER_0522 = 20020522;
CM_PROTOCOL = 2000;
CM_IDPASSWORD = 2001; //发送用户名/密码
CM_ADDNEWUSER = 2002; //
CM_CHANGEPASSWORD = 2003; //更改密码
CM_UPDATEUSER = 2004; CM_QUERYCHR = 100; //查询人物
CM_NEWCHR = 101; //新人物
CM_DELCHR = 102; //删除人物
CM_SELCHR = 103; //选择人物
CM_SELECTSERVER = 104; //选择服务器 CM_QUERYUSERNAME = 80; //查询用户姓名
CM_QUERYBAGITEMS = 81; //查询包裹内容 CM_USERREPAIRITEM = 1023; //修理物品
CM_USERSTORAGEITEM = 1031; //用户存储物品 CM_USERTAKEBACKSTORAGEITEM = 1032; //从仓库取回物品
CM_USERMAKEDRUGITEM = 1034; //制作毒药物品
CM_DROPGOLD = 1016; //丢掉金币 //交易相关
CM_DEALTRY = 1025; //交易开始//////////////
CM_DEALCANCEL = 1028; //交易取消/////////////
CM_DEALADDITEM = 0; //交易添加物品////////////
CM_DEALDELITEM = 0; //交易删除物品////////////
CM_DEALCHGGOLD = 0; //交易改变金币////////////
CM_DEALEND = 0; //交易完毕////////////// CM_DROPITEM = 1000; //丢掉物品
CM_TAKEONITEM = 1003; //穿上/戴上/拿上 物品
CM_TAKEOFFITEM = 1004; //脱下物品
CM_EAT = 1006; //吃物品
CM_BUTCH = 1007; //
CM_MAGICKEYCHANGE = 1008; //改变魔法按键 CM_MERCHANTQUERYREPAIRCOST = 1024; //查询修理价格
CM_MERCHANTQUERYSELLPRICE = 1012; //查询出卖给商人的价格
CM_USERSELLITEM = 1013; //选择物品
CM_USERBUYITEM = 1014; //购买物品
CM_USERGETDETAILITEM = 1015; //????????????????????????
CM_LOGINNOTICEOK = 1018; //进入游戏窗口确定按钮 //编组相关
CM_GROUPMODE = 1019; //编组模式
CM_CREATEGROUP = 1020; //创建编组
CM_ADDGROUPMEMBER = 1021; //添加编组成员
CM_DELGROUPMEMBER = 1022; //删除编组成员
//行会相关
CM_OPENGUILDDLG = 1035; //打开行会窗口
CM_GUILDHOME = 1036; //行会主页
CM_GUILDMEMBERLIST = 1037; //行会成员列表
CM_GUILDADDMEMBER = 1038; //添加行会成员
CM_GUILDDELMEMBER = 1039; //删除行会成员
CM_GUILDUPDATENOTICE = 1040; //更新行会信息
CM_GUILDUPDATERANKINFO = 1041; //更新行会等级/排列信息????
///////////
CM_SPEEDHACKUSER = 0; //??????????
//动作
CM_PICKUP = 1001; //拣东西
CM_TRUN = 3010; //转
CM_WALK = 3011; //走路
CM_RUN = 3013; //跑
CM_HIT = 3014; //砍
CM_LONGHIT = 3019; //刺杀
CM_POWERHIT = 3018; //攻杀
CM_SPELL = 3017; //魔法
CM_WIDEHIT = 3024; //半月
CM_FIREHIT = 3025; //烈火
CM_SAY = 3030; //说话
CM_RIDE = 3031; //骑乘???
CM_SITDOWN = 3012; //挖
CM_CLICKNPC = 1010; //点击NPC???
CM_OPENDOOR = 1002; //开门
CM_MERCHANTDLGSELECT = 1011; // NPC Tag Click 选择商人功能窗口
CM_GUILDMAKEALLY = 1044; //行会结盟
CM_GUILDBREAKALLY = 1045; //行会解盟 {+//****************************************** }
{ #1. Server To Client Message }
{=******************************************** }
SM_RUSH = 6; //
SM_FIREHIT = 8; //烈火
SM_BACKSTEP = 9; //走路不成功????
SM_TURN = 10; //转动方向
SM_WALK = 11; //走路
SM_RUN = 13; //跑
SM_HIT = 14; //攻击
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_DISAPPEAR = 30; //物品消失??????
SM_STRUCK = 31; //
SM_DEATH = 32; //
SM_NOWDEATH = 34; //
SM_HEAR = 40; //听到说话
SM_FEATURECHANGED = 41; //容貌??特征??改变???????????
SM_USERNAME = 42; //用户名??玩家名???????
SM_WINEXP = 44; //胜利指数???杀怪获得的经验值???????????????
SM_LEVELUP = 45; //等级提升
SM_LOGON = 50; //登录注册
SM_NEWMAP = 51; //新地图
SM_ABILITY = 52; //能力
SM_HEALTHSPELLCHANGED = 53; //红血兰血 改变
SM_MAPDESCRIPTION = 54;//地图形容,地图描述
SM_SYSMESSAGE = 100; //系统消息
SM_GROUPMESSAGE = 101; //组队消息
SM_CRY = 102; //喊
SM_WHISPER = 103; //私聊
SM_GUILDMESSAGE = 104; //行会信息
SM_ADDITEM = 200; //添加物品
SM_BAGITEMS = 201; //包裹物品
SM_ADDMAGIC = 210; //添加魔法
SM_DROPITEM_SCCESS = 600; //丢弃物品成功
SM_DROPITEM_FAIL = 601; //丢弃物品失败
SM_ITEMSHOW = 610; //显示物品
SM_ITEMHIDE = 611; //地上的物品消失
SM_TAKEON_OK = 615; //穿上戴上成功
SM_TAKEON_FAIL = 616; //穿失败
SM_DOOROPEN = 612; //开门
SM_TAKEOFF_OK = 619; //脱下成功
SM_TAKEOFF_FAIL = 620; //脱下失败
SM_WEIGHTCHANGED = 622; //背包重量改变
SM_CHANGEMAP = 634; //地图改变
SM_CLEAROBJECT = 633; //清除对象??????????
SM_EAT_OK = 635; //吃物品成功
SM_EAT_FAIL = 636; //吃物品失败
SM_MAGICFIRE = 638; //魔法火?????????????
SM_MAGIC_LVEXP = 640; //魔法等级
SM_DURACHANGE = 642;
SM_GOLDCHANGE = 653; //金币改变
SM_CHANGELIGHT = 654; //改变亮度????
SM_CHANGENAMECOLOR = 656; //改变宝宝颜色?????
//SM_CHARSTATUSCHANGE = 657;
SM_CHARSTATUSCHANGED = 657;
SM_CREATEGROUP_OK = 660; //创建编组成功
SM_CREATEGROUP_FAIL = 661; //创建编组失败
SM_GROUPCANCEL = 666; //编组取消??????????
SM_GROUPMEMBERS = 667; //编组成员
SM_CHANGEGUILDNAME = 750; //改变行会名称
SM_SUBABILITY = 752;
SM_SHOWEVENT = 804; //显示事件????????
SM_HIDEEVENT = 805; //隐藏事件?????????
SM_DELITEM = 202; //删除物品????
SM_DELITEMS = 203; //删除物品??????
SM_CLOSEHEALTH = 1101; //关闭健康???????
SM_OPENHEALTH = 1100; //打开健康????????
SM_MONSTERSAY = 1501; //怪物说话
SM_SITDOWN = 12; //挖
SM_BUTCH = 637; //
SM_SKELETON = 33; // SM_DEATH 尸骨??尸体
SM_CHANGEFACE = 1104; //
SM_OPENDOOR_OK = 612; //开门成功
SM_OPENDOOR_LOCK = 613; //
SM_CLOSEDOOR = 614; //
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_OPENGUILDDLG = 753; //打开行会窗口
SM_OPENGUILDDLG_FAIL = 754; //打开行会窗口失败
SM_SENDGUILDHOME = 755; //行会主页
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_GUILDMAKEALLY_OK = 768; //创建行会同盟成功
SM_GUILDMAKEALLY_FAIL = 769; //创建行会同盟失败
SM_GUILDBREAKALLY_OK = 770; //删除行会同盟成功
SM_GUILDBREAKALLY_FAIL = 771; //删除行会同盟失败
SM_DLGMSG = 772; //窗口消息????弹出窗口???????
SM_RIDEHORSE = 1300; //骑马
SM_DAYCHANGING = 46; //日期正在改变????
SM_SENDMYMAGIC = 211; //我所会的魔法
SM_VERSION_AVAILABLE = 500; //
SM_CERTIFICATION_FAIL = 501; //
SM_ID_NOTFOUND = 502; //ID未发现,用户名错误
SM_PASSWD_FAIL = 503; //密码错误
SM_NEWID_SUCCESS = 504; //创建新ID成功
SM_NEWID_FAIL = 505; //新ID失败
SM_CHGPASSWD_SUCCESS = 506; //更改密码成功
SM_CHGPASSWD_FAIL = 507; //更改密码失败
SM_QUERYCHR = 520; //查询人物(2人窗口)
SM_NEWCHR_SUCCESS = 521; //创建人物成功
SM_NEWCHR_FAIL = 522; //创建人物失败
SM_DELCHR_SUCCESS = 523; //删除人物成功
SM_DELCHR_FAIL = 524; //删除人物失败
SM_STARTPLAY = 525; //开始游戏
SM_STARTFAIL = 526; //进入游戏失败
SM_QUERYCHR_FAIL = 527; //查询人物失败
SM_OUTOFCONNECTION = 528; //连接已断开
SM_PASSOK_SELECTSERVER = 529; //用户名/密码 验证通过
SM_SELECTSERVER_OK = 530; //服务器选择成功
SM_NEEDUPDATE_ACCOUNT = 531; //需要更新_说明????
SM_UPDATEID_SUCCESS = 532; //更新ID成功?????
SM_UPDATEID_FAIL = 533; //更新ID失败???????
SM_SENDUSEITEMS = 621; //身上穿戴物品
SM_SENDNOTICE = 658; //进入游戏弹出窗口
SM_AREASTATE = 708; //地区状态
//SM_MAPDESCRIPTION = 54; //地图类型
MAPFILEHEADER = record
shWidth: word;
shHeight: word;
desc: array[1..48] of char;
end;
mapTILEINFO = record
btitle1: byte;
btitle2: byte;
bmtitle1: byte;
bmtitle2: byte;
bobject1: byte;
bobject2: byte;
bflag: byte;
boffset: byte;
bframecount: byte;
bdelaytime: byte;
bobjgroup: byte;
bunused: byte;
end;
TMatrix = array of array of byte;type
TMESSAGEBODYWL = record
lParam1: LongInt;
lParam2: LongInt;
lTag1: LongInt;//低位表示是否允许编组
lTag2: LongInt;
end;
type
TMESSAGEBODYW = record
Param1: Word;
Param2: Word;
Tag1: Word;
Tag2: Word;
end {tagMESSAGEBODYW};type
TCHARDESC = record
Feature: LongInt;
Status: LongInt;
end ;type
TFEATURE = record
Gender: BYTE;
Weapon: BYTE;
Dress: BYTE;
Hair: BYTE;
end;type
TSTANDARDITEM = record
Num:byte; //名字的有效个数//源程序中这里应为name:array[0..14] of char;
Name: array[0..13] of char;
StdMode: BYTE; //物品种类(<=3时可以在快捷栏上显示)
Shape: BYTE; //外形
Weight: BYTE; //重量
AniCount: BYTE; //
SpecialPower: BYTE; //特殊用途
NeedIdentify: BYTE; //需要鉴别
Looks: Word; //
DuraMax: Word; //最大持久
AC: Word; //防
MAC: Word; //魔防
DC: Word; //攻击
MC: Word; //魔
SC: Word; //道
Need: BYTE; //
NeedLevel: BYTE; //需要等级
Price: Integer; //价格
end;type
TCLIENTITEM = record
s: TSTANDARDITEM;
MakeIndex: Integer; //
Dura: Word; //持久
DuraMax: Word; //最大持久
end;type
TSTANDARDMAGIC = record //魔法
MagicID: Word; //编号
Num:byte; //这里应为MagicName:Array[0..13] of char //num 是我自己加的,表示后面名字的有效字符数.
MagicName: Array[0..12] of Char; //名称 12
EffectType: BYTE;
Effect: BYTE; //效果
Spell: Word; //魔法
MinPower: Word; //
Need: Array[0..3] of BYTE; //升级需要的等级
Train: Array[0..3] of Integer; //锻炼
MaxTrainLevel: BYTE; //最大锻炼等级
Job: BYTE;
DelayTime: Integer; //延迟时间
DefSpell: BYTE; //默认
DefMinPower: BYTE;
MaxPower: Word;
DefMaxPower: BYTE;
szDesc: Array[0..15] of Char;
end;type
TCLIENTMAGIC = record //魔法
UseKey: Char; //按键
level:byte; //等级
CurrTrain:integer; //当前经验
Def: TSTANDARDMAGIC;
end;
这段是delphiBBS得哥们写的,我自己得那份在家中,而且没有调试好,就不贴算了,另外,这套源码在delphiBBS中已经由解元兄在调试通过,解元得Grobal2.pas源码马上就贴。另外,如果要和现在得Mir3server兼容,还有许多工作需要做,至少一些action得常量定义需要测试更改。我提供得源码是从uk得网站拿到得原版,未做任何修改得 ,DFM得窗体资源和shanda 得版本不一样,请用dede从盛大得exe中取得dfm资源。另外,一定要找delphiX 而不是undelphix或者是delphiX for dx8.1得组件一起编译。资源文件就随便找套client即可。
uses
Math,windows;
Const
BUFFERSIZE =1024; //客户端发送的命令
CM_SOFTCLOSE =0; //登录有关的命令
CM_IDPASSWORD =1;
CM_QUERYUSERSTATE=2;
CM_ADDNEWUSER =3;
CM_UPDATEUSER =4;
CM_SELECTSERVER =5;
CM_CHANGEPASSWORD =6;
CM_NEWCHR =7;
CM_QUERYCHR =8;
CM_DELCHR =9;
CM_SELCHR =10;
CM_QUERYUSERNAME=11; CM_SAY =22; CM_MAGICKEYCHANGE = 30;
CM_CREATEGROUP =42;
CM_WANTMINIMAP =43;
CM_OPENGUILDDLG =45;
CM_GROUPMODE=41;
CM_ADDGROUPMEMBER =51;
CM_DELGROUPMEMBER =52; CM_SPEEDHACKUSER =59;
CM_ADJUST_BONUS =60; CM_QUERYBAGITEMS=62;
CM_LOGINNOTICEOK = 63;
//动作命令1
CM_TURN =4001;
CM_WALK =4002;
CM_SITDOWN =4003;
CM_RUN =4004;
CM_HIT =4005;
CM_POWERHIT =4008;
CM_LONGHIT =4009;
CM_WIDEHIT =4010;
CM_HEAVYHIT =4011;
CM_BIGHIT =4012;
CM_THROW =4013;
CM_FIREHIT =4014;
CM_SPELL =4015; CM_CLICKNPC =3015; //动作命令2
CM_OPENDOOR =2001;
CM_DROPITEM =2010;
CM_PICKUP =2011;
CM_TAKEONITEM =2021;
CM_TAKEOFFITEM = 2022;
CM_EAT =2023;
CM_BUTCH =2024; CM_MERCHANTDLGSELECT =2030;
CM_MERCHANTQUERYSELLPRICE =2031;
CM_MERCHANTQUERYREPAIRCOST =2032; CM_USERSELLITEM =2040;
CM_USERREPAIRITEM =2041;
CM_USERSTORAGEITEM =2042;
CM_USERGETDETAILITEM =2043;
CM_USERBUYITEM =2044;
CM_USERTAKEBACKSTORAGEITEM =2045;
CM_USERMAKEDRUGITEM =2046;
CM_DROPGOLD =2050; CM_DEALTRY =2060;
CM_DEALCANCEL =2061;
CM_DEALADDITEM =2062;
CM_DEALDELITEM =2063;
CM_DEALCHGGOLD =2064;
CM_DEALEND =2069; CM_GUILDHOME =2070;
CM_GUILDMEMBERLIST =2071;
CM_GUILDADDMEMBER =2072;
CM_GUILDDELMEMBER =2073;
CM_GUILDUPDATENOTICE =2074;
CM_GUILDUPDATERANKINFO =2075; //装备项目
U_WEAPON =0; //武器
U_RIGHTHAND =1; //右手
U_DRESS =2; //衣服
U_HELMET =3; //头盔
U_NECKLACE =4; //项链
U_ARMRINGR =5; //右手戒指
U_ARMRINGL =6; //左手戒指
U_RINGR =7; //右戒指
U_RINGL =8; //左戒指 //服务器端发送的命令 //登录、新帐号、新角色、查询角色等
SM_NEWID_SUCCESS =101;
SM_NEWID_FAIL =102;
SM_PASSWD_FAIL =103;
SM_NEEDUPDATE_ACCOUNT =104;
SM_UPDATEID_SUCCESS =105;
SM_UPDATEID_FAIL =106;
SM_PASSOK_SELECTSERVER = 107;
SM_SELECTSERVER_OK =109;
SM_QUERYCHR =111;
SM_QUERYCHR_FAIL =112;
SM_NEWCHR_SUCCESS =113;
SM_NEWCHR_FAIL =114;
SM_CHGPASSWD_SUCCESS =115;
SM_CHGPASSWD_FAIL =116;
SM_DELCHR_SUCCESS =117;
SM_DELCHR_FAIL =118;
SM_STARTPLAY=119;
SM_STARTFAIL =120; SM_VERSION_FAIL =121;
SM_OUTOFCONNECTION =122;
SM_RECONNECT =125;
SM_SENDNOTICE =202; SM_MYSTATUS =131;
SM_TIMECHECK_MSG = 227; SM_CHANGEMAP =201;
SM_AREASTATE = 228;
SM_NEWMAP =223;
SM_MAPDESCRIPTION = 229;
SM_LOGON =224; SM_CHANGELIGHT =240;
SM_LAMPCHANGEDURA=241;
SM_LIGHTING =242; SM_OPENDOOR_OK=249;
SM_OPENDOOR_LOCK=250;
SM_CLOSEDOOR =251; SM_DEATH=260;
SM_NOWDEATH =261;
SM_SKELETON=262;
SM_ALIVE =263;
SM_ABILITY =264;
SM_SUBABILITY=265;
SM_DAYCHANGING=266;
SM_WINEXP =267;
SM_LEVELUP =268;
SM_HEALTHSPELLCHANGED =269;
SM_ADJUST_BONUS =280;
SM_CHANGEFACE=311;
SM_OPENHEALTH=312;
SM_CLOSEHEALTH =313;
SM_INSTANCEHEALGUAGE=314;
SM_BREAKWEAPON=315; //对话消息
SM_CRY=316;
SM_GROUPMESSAGE =347;
SM_GUILDMESSAGE =348;
SM_WHISPER=349;
SM_HEAR=351;
SM_SYSMESSAGE=390; SM_USERNAME =352;
SM_CHANGENAMECOLOR=353;
//移动动作
SM_TURN =1001;
SM_WALK =1002;
SM_SITDOWN =1003;
SM_RUN =1004;
SM_HIT =1005;
SM_POWERHIT =1008;
SM_LONGHIT =1009;
SM_WIDEHIT =1010;
SM_HEAVYHIT =1011;
SM_BIGHIT =1012;
SM_THROW =1013;
SM_FIREHIT =1014;
SM_SPELL =1015;
SM_BACKSTEP =1021;
SM_RUSH =1022;
SM_RUSHKUNG =1023; SM_SPACEMOVE_HIDE =1041;
SM_SPACEMOVE_HIDE2=1042;
SM_SPACEMOVE_SHOW =1043;
SM_SPACEMOVE_SHOW2=1044;
SM_MOVEFAIL =1045;
SM_BUTCH =1046; SM_FLYAXE =1060; SM_MAGICFIRE =1072;
SM_MAGICFIRE_FAIL = 1073; SM_HIDE =1224;
SM_GHOST=1225;
SM_DISAPPEAR=1226;
SM_DIGUP=1227;
SM_DIGDOWN=1228;
SM_SHOWEVENT =1229;
SM_HIDEEVENT = 1230; SM_ADDITEM=2040;
SM_BAGITEMS =2041;
SM_UPDATEITEM=2042;
SM_DELITEM =2043;
SM_DELITEMS=2044;
SM_DROPITEM_SUCCESS=2045;
SM_DROPITEM_FAIL=2046;
SM_ITEMSHOW=2047;
SM_ITEMHIDE=2048;
SM_TAKEON_OK=2052;
SM_TAKEON_FAIL=2053;
SM_TAKEOFF_OK=2054;
SM_TAKEOFF_FAIL=2055;
SM_EXCHGTAKEON_OK=2056;
SM_EXCHGTAKEON_FAIL=2057; SM_SENDUSEITEMS=2058;
SM_WEIGHTCHANGED=2059;
SM_GOLDCHANGED=2060;
SM_FEATURECHANGED=2061;
SM_CHARSTATUSCHANGED=2062;
SM_CLEAROBJECTS=2063;
SM_EAT_OK=2064;
SM_EAT_FAIL=2065;
SM_ADDMAGIC=2066;
SM_SENDMYMAGIC=2067;
SM_DELMAGIC=2068;
SM_MAGIC_LVEXP=2069;
SM_DURACHANGE=2070;
SM_MERCHANTSAY=2071;
SM_MERCHANTDLGCLOSE=2072; SM_SENDGOODSLIST=2073;
SM_SENDUSERMAKEDRUGITEMLIST=2074;
SM_SENDUSERSELL=2075;
SM_SENDUSERREPAIR=2076;
SM_SENDBUYPRICE=2077;
SM_USERSELLITEM_OK=2078;
SM_USERSELLITEM_FAIL=2079;
SM_SENDREPAIRCOST=2080;
SM_USERREPAIRITEM_OK=2081;
SM_USERREPAIRITEM_FAIL=2082;
SM_STORAGE_OK=2083;
SM_STORAGE_FULL=2084;
SM_STORAGE_FAIL=2085;
SM_SAVEITEMLIST=2086; SM_TAKEBACKSTORAGEITEM_OK=2087;
SM_TAKEBACKSTORAGEITEM_FAIL=2088;
SM_TAKEBACKSTORAGEITEM_FULLBAG=2089; SM_BUYITEM_SUCCESS=2090;
SM_BUYITEM_FAIL=2091; SM_MAKEDRUG_SUCCESS=2092;
SM_MAKEDRUG_FAIL=2093; SM_SENDDETAILGOODSLIST=2094;
SM_TEST=2095;
SM_GROUPMODECHANGED=2096;
SM_CREATEGROUP_OK=2097;
SM_CREATEGROUP_FAIL=2098;
SM_GROUPADDMEM_OK=2099;
SM_GROUPADDMEM_FAIL=2100;
SM_GROUPDELMEM_OK=2101;
SM_GROUPDELMEM_FAIL=2102;
SM_GROUPCANCEL=2103;
SM_GROUPMEMBERS=2104; SM_OPENGUILDDLG=2105;
SM_SENDGUILDMEMBERLIST=2106;
SM_OPENGUILDDLG_FAIL=2107;
SM_CHANGEGUILDNAME=2124;
SM_GUILDADDMEMBER_OK=2126;
SM_GUILDADDMEMBER_FAIL=2127;
SM_GUILDDELMEMBER_OK=2128;
SM_GUILDDELMEMBER_FAIL=2129;
SM_GUILDRANKUPDATE_FAIL=2130;
SM_GUILDMAKEALLY_OK=2131;
SM_GUILDMAKEALLY_FAIL=2132;
SM_GUILDBREAKALLY_OK=2133;
SM_GUILDBREAKALLY_FAIL=2134; SM_DEALTRY_FAIL=2108;
SM_DEALMENU=2109;
SM_DEALCANCEL=2110;
SM_DEALADDITEM_OK=2111;
SM_DEALADDITEM_FAIL=2112;
SM_DEALDELITEM_OK=2113;
SM_DEALDELITEM_FAIL=2114;
SM_DEALREMOTEADDITEM=2115;
SM_DEALREMOTEDELITEM=2116;
SM_DEALCHGGOLD_OK=2117;
SM_DEALCHGGOLD_FAIL=2118;
SM_DEALREMOTECHGGOLD=2119;
SM_DEALSUCCESS=2120; SM_SENDUSERSTORAGEITEM=2121; SM_READMINIMAP_OK=2122;
SM_READMINIMAP_FAIL=2123; SM_SENDUSERSTATE=2125; SM_BUILDGUILD_OK=2135;
SM_BUILDGUILD_FAIL=2136;
SM_MENU_OK=2137;
SM_DLGMSG=2138;
SM_DONATE_OK=2139;
SM_DONATE_FAIL=2140; SM_ACTION_MIN=2200;
SM_ACTION_MAX=2499;
SM_ACTION2_MIN=2500;
SM_ACTION2_MAX=2999; RCC_MERCHANT =1;
RCC_GUARD =2; VERSION_NUMBER_0522=522; DEFBLOCKSIZE =16; UNITX = 48;
UNITY = 32;
LOGICALMAPUNIT =20;
HALFX = 24;
HALFY = 16; ET_DIGOUTZOMBI =0;
ET_PILESTONES = 1;
ET_HOLYCURTAIN = 2;
ET_FIRE= 3;
ET_SCULPEICE = 4; STATE_STONE_MODE =0;
STATE_OPENHEATH = 1; MAXBAGITEM = 52; DR_UP=0;
DR_UPRIGHT =1;
DR_RIGHT =2;
DR_DOWNRIGHT =3;
DR_DOWN =4;
DR_DOWNLEFT =5;
DR_LEFT =6;
DR_UPLEFT =7;
Ident :word;
Recog :integer; //识别码
Param :smallint;
Tag :smallint;
Series:smallint;
end;
//Ident=SM_DAYCHANGING
// Param=DayBright
// Tag=雾的浓度:0,1,2,3 TUserInfo=Record
Name:String[32];
Looks:integer;
StdMode:Integer;
Shape:Integer;
end; TStdItem=record
Name:String[16]; //物品名称
Looks:integer; //外观,即Items.WIL中的图片索引
StdMode:integer; //0/1/2/3:药, 5/6:武器,10/11:盔甲,15:头盔,22/23:戒指,24/26:手镯,19/20/21:项链
Shape:integer;
AC:Integer;
MAC:integer;
Weight:integer;
DuraMax:integer;
NeedIdentify:byte;
DC,MC,SC:Integer;
Source:integer;
Need:integer;
NeedLevel:integer;
end; PTClientItem=^TClientItem;
TClientItem=Record
s:TStdItem;
MakeIndex:Integer;
Dura:Integer;
DuraMax:Integer;
end; TAbility= packed record
MP,MaxMP:Integer;
HP,MaxHP:integer;
Exp,MaxExp:Integer;
Level:Integer;
Weight,MaxWeight:Integer;
WearWeight,MaxWearWeight:Integer;
HandWeight,MaxHandWeight:Integer;
AC:Integer;
MAC:Integer;
DC:Integer;
MC,SC:Integer;
end; PTChrMsg=^TChrMsg;
TChrMsg=Record
Ident:integer;
Dir:Integer;
X,Y:Integer;
State:integer;
feature:integer;
saying:string;
Sound:integer;
end; TUserStateInfo=Record
UserName:String[32];
GuildName:String[32];
GuildRankName:String[32];
NameColor:Integer;
Feature:integer;
UseItems:Array[0..127] of TClientItem;
end; TUserCharacterInfo=Record
Name:String;
Job:byte;
Hair:smallint;
level:Integer;
Sex:byte;
end; TUserEntryInfo=Record
LoginId:String[16];
Password:String[16];
UserName:String[32];
SSNo:String[18];
Quiz:String[32];
Answer:String[32];
Phone:String[15];
EMail:String[64];
end; TUserEntryAddInfo=Record
Quiz2:String[32];
Answer2:String[32];
MobilePhone:String[15];
BirthDay:String[16];
end; PTDropItem=^TDropItem;
TDropItem=record
Id:Integer;
X,Y:Integer;
Looks:integer;
FlashTime:LongInt;
Name:String[16];
BoFlash:Boolean;
FlashStepTime:LongInt;
FlashStep:Integer;
end; TDef=Record
Spell:integer;
DefSpell:integer;
EffectType:Integer;
MagicId:Integer;
Effect:Integer;
DelayTime:Integer;
MagicName:String[16];
MaxTrain:Array [0..255] of integer;
end; PTClientMagic=^TClientMagic;
TClientMagic=Record
Key:Char;
Def:TDef;
Level:Integer;
CurTrain:Integer;
end; TNakedAbility=Record
DC,MC,SC,AC,MAC:Integer;
HP,MP:Integer;
Hit:integer;
Speed:integer;
end;
Ident:Integer;
end; TMessageBodyW=Record
Param1:integer;
Param2:integer;
Tag1:integer;
Tag2:integer;
end; TCharDesc=Record
Feature:Integer;
Status:Integer;
end; TMessageBodyWL=Record
lParam1,lParam2:longint;
lTag1,lTag2:longint;
end; PTClientGoods=^TClientGoods;
TClientGoods=record
Name:string[16];
SubMenu:Integer;
Price:Integer;
Stock:integer;
Grade:integer;
end;function MakeDefaultMsg (msg:smallint; Recog:integer; param, tag, series:smallint):TDefaultMessage;
function UpInt(i:double):integer;
Function RACEfeature(Feature:word):smallint;
Function HAIRfeature(Feature:word):byte;
Function DRESSfeature(Feature:word):byte;
Function APPRfeature(Feature:word):byte;
Function WEAPONfeature(Feature:word):byte;
function MakeFeature(Race:Word;Appr,Hair,Dress,Weapon:byte):Integer;
implementationfunction MakeDefaultMsg (msg:smallint; Recog:integer; param, tag, series:smallint):TDefaultMessage;
begin
result.Ident:=Msg;
result.Param:=Param;
result.Tag:=Tag;
result.Series:=Series;
result.Recog:=Recog;
end;function UpInt(i:double):integer;
begin
result:=Ceil(i);
end;//人物Feature属性的分解和合成,共32位,高16位为Race和Appr,
// 低16位中,最左四位表示Hair,接下来6位表示Dress,最右6位表示Weapon。
// 当Race=0时,Dress mod 2 表示性别
// Race=0时武器也分男女,男的武器应该是偶数,女的是奇数
//*******对Feature的解释可以自己定义,但Race取值至少0..90,Appr:0..9
//*******Hair最多有6种发型(3600幅图片,每600幅图片一种发型),男女各3
//*******Dress的数量好象在Hum.WIL中表示,有多少种图片就有多少种服装,Hum.WIL可以扩展
//*******Weapon的数量见Weapon.WIL,有数万幅图片,同样的,每600幅对应一个Appr,分男女
//*********例如40800幅对应68种武器(男女合计)
Function RACEfeature(Feature:word):smallint;
begin
result:=Hiword(Feature) div 10;
end;Function HAIRfeature(Feature:word):byte;
begin
result:=(LoWord(Feature) and $F000) shr 12 ; //1111000000000000
end;Function DRESSfeature(Feature:word):byte;
begin
result:=(LoWord(Feature) and $3F00) shr 7; //0000111111000000
end;Function WEAPONfeature(Feature:word):byte;
begin
result:=LoWord(Feature) and $3F; //0000000000111111
end;Function APPRfeature(Feature:word):byte;
begin
result:=hiword(Feature) mod 10;
end;function MakeFeature(Race:Word;Appr,Hair,Dress,Weapon:byte):Integer;
begin
result:=MakeLong(((Hair And $0F)shl 12) + ((Dress And $3F) shl 6) + (Weapon And $3F) ,Race*10+Appr);
end;end.
祝大家好运
鄙视喜欢数据库、web、游戏、算法的人hehe^^
----------------------------------------------------
求大同,存小异,随便鄙视人的人才值得鄙视
说错了,是Mir2server不是mir3server另外mir3server的C++全部源码我这里也有,不过网络上到处也是,大家可以google
===========================
来一份呀??搜不到哟~~~~
http://www.cssafe.gov.cn/bbs/pic/green/client.rar
[email protected]
你上面给的都不行#$*@#$%&
http://www.cssafe.gov.cn/bbs/pic/green/client.rar
另外mir3server的C++全部源码我这里也有,不过网络上到处也是,大家可以google
===========================我搜索到了,在 http://www.fernys.co.uk/