基址:&H12F82C或&H9045ec
名字和坐标偏移+4
人物基址:[[&H12F82C]+&H28]=base
人物角色名:[[base+3a4]+0]
人物ID:[base+&H240]
职业代码:[base+&H248]
等级:[base+&H24c]
经验:[base+&H260] double 8字节
生命:[base+&H254]
生命上限:[base+&H26c]
[base+&H258]=真气
[base+&h270]=真气上限
[base+&H2a4]=最小攻击
[base+&H2a8]=最大攻击
[base+&H2b0]=防御
[base+&H2ac]=命中
[base+&H2b4]=闪躲
[base+&H7b8]=目标ID(目标玩家或怪物ID)
[base+&H2d4]=金钱
[base+&H3d8]=X坐标 single 4字节
[base+&H3e0]=Y坐标
-------------------------------当前地图----------------------------
[[ [&H12F82C]+&H8]+&H88]地图编号
-------------------------------目标玩家-----------------------------
[[base+&H138]=DestBase
[DestBase+&H14]=周围玩家数量
[DestBase+&H24]=玩家数组最大值
[DestBase+&H18]=玩家数组首地址
玩家偏移=(目标ID mod 玩家数组最大值)*4
选中玩家地址:[数组首地址+玩家偏移]=destpoint
[destpoint+&H4]=destpoint
[destpoint+&H24C]=目标等级
[destpoint+&H254]=目标生命地址
[destpoint+&H26c]=目标生命上限地址
[[destpoint+&H3a4]+0]=目标名字地址
[destpoint+&H118]=目标状态地址(医生有用)
-----------------------------目标怪物--------------------------------
[[[&H12F82C]+&H8]+&H20]=怪物地址BugbearBase
[BugbearBase+&H14]=怪物数量
[BugbearBase+&H24]=怪物数组最大值
[BugbearBase+&H18]=怪物数组首地址
ID>0
怪物偏移=(目标ID mod 玩家数组最大值)*4
ID<0
(目标IDmod 怪物数组最大值)* 4 + ($7FFFFFFF Mod 怪物数组最大值) * 8 + 8;
选中怪物地址:[怪物数组首地址+怪物偏移]=destpoint
[destpoint+&h4]=destpoint
[destpoint+&H128]=目标等级
[destpoint+&H130]=目标生命地址
[destpoint+&H148]=目标生命上限地址
[[destpoint+&H208]+0]=目标名字地址
[destpoint+&H22c]=目标与玩家之间距离
[destpoint+&H3c]=目标坐标x
[destpoint+&H44]=目标坐标y
---------------------背包----------------------------------
[base+&H874]=背包地址
[背包地址+&H10]=背包格数
[背包地址+&Hc]=背包首址Pfirst
[pfirst+i*&H4]=第i格地址(i=0-背包格数-1)Pbase
[pbase+&H8]=本格物品ID
[pbase+&14]=本格物品数量
------------------------地面物品----------------------------------
[[[[&H12F82C]+&H8]+&H24] +&H14]=地面物品数量
[[[[[[&H12F82C]+&H8]+&H24] +&H18+i*&H4]+&H4]=GoodsBase
[goodsbase+&H110]=物品ID
[goodsbase+&H10C]=物品系统编号(拾取call有用)
[[goodsbase+&H164]+0]=物品名字
[goodsbase+&H3C]=物品坐标x
[goodsbase+&H44]=物品坐标y
附:诛仙红药ID:1861-1870,22,大红:3999-4001
蓝:1871-1880 大蓝没有物品,不知道ID,估计:4002-4004
---------------------已学技能(限主动)-----------------------------------
[base+&H910]=已学技能数
[base+&H90c]=已学技能首地址 SkillBase
[SkillBase+i*&H4]=Skillfirst(i=0到技能数-1)
[Skillfirst+&H8]=技能ID
[[[Skillfirst+&H4]+&H4]+&H63]+0]=技能名称
部分call
//===========================自动寻路======================
7.3更新
asm
pushad
mov eax, x
mov [$906a28], eax
mov eax, z
mov [$906a2c], eax
mov eax, y
mov [$906a30], eax
mov eax, dword ptr [$9045ec]
mov eax, dword ptr [eax+$28]
lea eax, dword ptr [eax+$3c]
push id//地图ID
push $906a28
push eax
mov ecx, $900a90
mov eax, $42aa20
call eax
popad
end;
//==================根据怪物ID进行选择========================
addr:=pointer($5785c0); //7.3更新
asm
pushad
mov esi,gwid//怪物ID
push esi
MOV ECX,DWORD PTR DS:[$900adc]
MOV ECX,DWORD PTR DS:[ECX+$20]
add ecx,$D4
call addr
popad
end;
//=====================技能call==================================
addr:=pointer($4656f0);//7.3更新
asm
pushad
push -1
push 0
push 0
push JLID //技能ID
mov ecx,DWORD PTR DS:[$900adc]
mov edx,DWORD PTR DS:[ecx+$1c]
mov ecx,DWORD PTR DS:[edx+$28]
call addr
popad
end;
=====================普通攻击==========================
Address:=Pointer($5a1b50); //函数入口地址 7.3更新
asm
pushad
CALL Address
popad
end;
//===================Tab call=============================
Addr:=pointer($45f220);// 7.3更新
asm
pushad
mov eax,dword ptr ds:[$900adc]
mov eax,dword ptr ds:[eax+$1c]
mov eax,dword ptr ds:[eax+$28]
mov ecx, eax;
push 0
call Addr
popad
end;
//=====================死亡复活==========================
Address:=Pointer($5a1f70); //函数入口地址 7.3更新
asm
pushad
CALL Address
popad
end;
//========================物品拾取call=============================
Address:= Pointer($578550); //7.3更新
dw1:=物品ID号
dw2:=物品系统编号
asm
pushad
mov ecx, dword ptr [$900adc]
mov edx, dw1
push edx
mov ecx, dword ptr [ecx+$20]
mov eax, dw2
push eax
add ecx, $D4
call address
popad
end;
//========================Call物品使用=============================
address:=Pointer($578380);//7.3更新
dwid:=物品ID号
dwwz:=物品在背中的位置(0开始)
asm
pushad
mov edx, dwid
mov eax, dwwz
push 1
push edx
push eax
push 0
mov esi,dword ptr [$9045f0]
lea ecx,dword ptr [esi+$D4]
call address
popad
end;
//===================买物call============
mov ecx, dword ptr [esp+2C]
push ecx //这是存物品信息的指针
push eax //物品组数
call 005a2660
add esp, 8
//===================卖物call============
mov edx, dword ptr [esp+10]
push edx
push ebp //物品组数
call 005a26e0
add esp, 8
//======================仓库存取============ 6.19更新
PUSH EDI //包裹格子位置
PUSH EBX//仓库格子位置
CALL 005a0fd0//存取仓库Call
ADD ESP,8//这个不要忘了,不然堆栈不平衡
打开NPC对话框 (6.19更新)
mov ecx, dword ptr [esi+20]
mov edx, dword ptr [8fea5c]
push ecx
mov ecx, dword ptr [edx+20]
add ecx, 0D4
call 00577c90
取消NPC对话框
push 008bcbe4
mov ecx, esi
call 006b1830
诛仙飞天:$45D8A9
打坐:$5A21D0
停止打坐:$5A2190
买卖
5a34a0
5a3520
打开npc
578880
关闭npc
6b3100
明文发包
57d9c0
快捷call
35版的基址为0x90664c
35版:
复活回城:
005A238E 90 nop
005A238F 90 nop
005A2390 56 push esi
005A2391 6A 02 push 2
005A2393 E8 C8F91300 call elementc.006E1D60
005A2398 8BF0 mov esi, eax
005A239A 83C4 04 add esp, 4
005A239D 85F6 test esi, esi
005A239F 74 1E je short elementc.005A23BF
005A23A1 66:C706 0400 mov word ptr [esi], 4
005A23A6 A1 3C2B9000 mov eax, [902B3C]
005A23AB 6A 02 push 2
005A23AD 56 push esi
005A23AE 8B48 20 mov ecx, [eax+20]
005A23B1 E8 3AC0FDFF call elementc.0057E3F0
005A23B6 56 push esi
005A23B7 E8 B4F91300 call elementc.006E1D70
005A23BC 83C4 04 add esp, 4
005A23BF 5E pop esi
005A23C0 C3 retn
005A23C1 90 nop
005A23C2 90 nop
其中
005A23A1 66:C706 0400 mov word ptr [esi], 4
如果赋值为其他数字,就代表不同的命令或状态。
整个游戏程序里很多类似函数,只是赋值的数字不同,分别对应了各种状态和命令。