诛仙经验表

基址:&H12F82C或&H9045ec名字和坐标偏移+4人物基址:[[&H12F82C]+&H28]=base人物角色名:[[base+3a4]+0]人物ID:[base+&H240]职业代码:[base+&H248]等级:[base+&H24c]经验:[base+

基址:&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
如果赋值为其他数字,就代表不同的命令或状态。
整个游戏程序里很多类似函数,只是赋值的数字不同,分别对应了各种状态和命令。

 

知秋君
上一篇 2024-07-06 08:48
下一篇 2024-07-06 08:12

相关推荐