诛仙经验地址和怪物ID(7.3)

  • Post author:
  • Post category:其他


基址:&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

如果赋值为其他数字,就代表不同的命令或状态。

整个游戏程序里很多类似函数,只是赋值的数字不同,分别对应了各种状态和命令。