标题: HP回复类策略的计算
性别:男-离线 godtype
(毅)

刘国公
广南东路经略使
枢密直学士
★★★★★★★★★★★★
★★★

Rank: 24Rank: 24Rank: 24
柱国(正二品) 轩辕春秋年度最佳(轩辕工作室)
组别 经略使
级别 卫将军
好贴 1
功绩 1314
帖子 6207
编号 111321
注册 2007-2-18
来自 我家
家族 轩辕学院


发表于 2008-11-5 22:05 资料 个人空间 短消息 看全部作者
HP回复类策略的计算

趁这几天家中病人的情况稍有好转,有了一些空闲时间,研究了一下之前一直想修改的HP回复类策略,包括HP回复量的公式和哪些策略可以进行HP回复。高人可以无视本帖。
0043C548  /$ 55                   PUSH EBP
0043C549  |. 8BEC                 MOV EBP,ESP
0043C54B  |. 83EC 10              SUB ESP,10
0043C54E  |. 56                   PUSH ESI
0043C54F  |. 894D F4              MOV DWORD PTR SS:[EBP-C],ECX
0043C552  |. 8B45 F4              MOV EAX,DWORD PTR SS:[EBP-C]
0043C555  |. 8B08                 MOV ECX,DWORD PTR DS:[EAX]
0043C557  |. 6BC9 48              IMUL ECX,ECX,48
0043C55A  |. 81C1 0000D600        ADD ECX,0D60000
0043C560  |. 894D F8              MOV DWORD PTR SS:[EBP-8],ECX
0043C563  |. C745 FC 00000000     MOV DWORD PTR SS:[EBP-4],0
0043C56A  |. 8B55 08              MOV EDX,DWORD PTR SS:[EBP+8]
0043C56D  |. 81E2 FF000000        AND EDX,0FF
0043C573  |. 8955 F0              MOV DWORD PTR SS:[EBP-10],EDX
0043C576  |. 8B45 F0              MOV EAX,DWORD PTR SS:[EBP-10]
0043C579  |. 83E8 26              SUB EAX,26  ——减去编号26之前的策略
0043C57C  |. 8945 F0              MOV DWORD PTR SS:[EBP-10],EAX
0043C57F  |. 837D F0 1D           CMP DWORD PTR SS:[EBP-10],1D  ——比较一下是否最后一条策略(即原白虎,白虎编号43,43h-26h=1Dh)
0043C583  |. 0F87 FA000000        JA 0043C683
0043C589  |. 8B55 F0              MOV EDX,DWORD PTR SS:[EBP-10]
0043C58C  |. 33C9                 XOR ECX,ECX
0043C58E  |. 8A8A 1AC74300        MOV CL,BYTE PTR DS:[EDX+43C71A]
0043C594  |. FF248D F6C64300      JMP DWORD PTR DS:[ECX*4+43C6F6]

0043C59B  |> 8B4D 0C              MOV ECX,DWORD PTR SS:[EBP+C]
0043C59E  |. 81E1 FF000000        AND ECX,0FF
0043C5A4  |. 6BC9 24              IMUL ECX,ECX,24
0043C5A7  |. 81C1 502C4B00        ADD ECX,004B2C50
0043C5AD  |. E8 31300000          CALL 0043F5E3
0043C5B2  |. 33D2                 XOR EDX,EDX
0043C5B4  |. B9 0A000000          MOV ECX,0A
0043C5B9  |. F7F1                 DIV ECX
0043C5BB  |. 83C0 28              ADD EAX,28

以上红色部分就是小补给和援队的回复量计算,即精神力/10+40
0043C5BE  |. 8945 FC              MOV DWORD PTR SS:[EBP-4],EAX
0043C5C1  |. 837D 10 00           CMP DWORD PTR SS:[EBP+10],0
0043C5C5  |. 75 2F                JNZ SHORT 0043C5F6
0043C5C7  |. 8B4D F4              MOV ECX,DWORD PTR SS:[EBP-C]
0043C5CA  |. E8 B0300000          CALL 0043F67F
0043C5CF  |. 8BF0                 MOV ESI,EAX
0043C5D1  |. 68 C8000000          PUSH 0C8                                 ; /Arg1 = 000000C8
0043C5D6  |. E8 38350400          CALL 0047FB13                     ; \0047FB13
0043C5DB  |. 83C4 04              ADD ESP,4
0043C5DE  |. 3BF0                 CMP ESI,EAX
0043C5E0  |. 76 14                JBE SHORT 0043C5F6
0043C5E2  |. 6A 06                PUSH 6                                   ; /Arg1 = 00000006
0043C5E4  |. E8 2A350400          CALL 0047FB13                     ; \0047FB13
0043C5E9  |. 83C4 04              ADD ESP,4
0043C5EC  |. 8B55 FC              MOV EDX,DWORD PTR SS:[EBP-4]
0043C5EF  |. 8D4402 05            LEA EAX,DWORD PTR DS:[EDX+EAX+5]
0043C5F3  |. 8945 FC              MOV DWORD PTR SS:[EBP-4],EAX
0043C5F6  |> E9 88000000          JMP 0043C683

0043C5FB  |> 8B4D 0C              MOV ECX,DWORD PTR SS:[EBP+C]
0043C5FE  |. 81E1 FF000000        AND ECX,0FF
0043C604  |. 6BC9 24              IMUL ECX,ECX,24
0043C607  |. 81C1 502C4B00        ADD ECX,004B2C50
0043C60D  |. E8 D12F0000          CALL 0043F5E3
0043C612  |. D1E8                 SHR EAX,1
0043C614  |. 83C0 46              ADD EAX,46

以上红色部分就是大补给、援军、输送、白虎的回复量计算,即精神力/2+70
0043C617  |. 8945 FC              MOV DWORD PTR SS:[EBP-4],EAX
0043C61A  |. 837D 10 00           CMP DWORD PTR SS:[EBP+10],0
0043C61E  |. 75 2F                JNZ SHORT 0043C64F
0043C620  |. 8B4D F4              MOV ECX,DWORD PTR SS:[EBP-C]
0043C623  |. E8 57300000          CALL 0043F67F
0043C628  |. 8BF0                 MOV ESI,EAX
0043C62A  |. 68 C8000000          PUSH 0C8                                 ; /Arg1 = 000000C8
0043C62F  |. E8 DF340400          CALL 0047FB13                     ; \0047FB13
0043C634  |. 83C4 04              ADD ESP,4
0043C637  |. 3BF0                 CMP ESI,EAX
0043C639  |. 76 14                JBE SHORT 0043C64F
0043C63B  |. 6A 06                PUSH 6                                   ; /Arg1 = 00000006
0043C63D  |. E8 D1340400          CALL 0047FB13                     ; \0047FB13
0043C642  |. 83C4 04              ADD ESP,4
0043C645  |. 8B4D FC              MOV ECX,DWORD PTR SS:[EBP-4]
0043C648  |. 8D5401 05            LEA EDX,DWORD PTR DS:[ECX+EAX+5]
0043C64C  |. 8955 FC              MOV DWORD PTR SS:[EBP-4],EDX
0043C64F  |> EB 32                JMP SHORT 0043C683

0043C651  |> 8B4D F8              MOV ECX,DWORD PTR SS:[EBP-8]
0043C654  |. E8 D3ABFCFF          CALL 0040722C
0043C659  |. 8B4D F4              MOV ECX,DWORD PTR SS:[EBP-C]
0043C65C  |. 2B41 10              SUB EAX,DWORD PTR DS:[ECX+10]
0043C65F  |. 8945 FC              MOV DWORD PTR SS:[EBP-4],EAX
0043C662  |. EB 1F                JMP SHORT 0043C683
上面这一段是26八阵图和42玄武专用的。

0043C664  |> 8B4D 08              MOV ECX,DWORD PTR SS:[EBP+8]
0043C667  |. 81E1 FF000000        AND ECX,0FF
0043C66D  |. 6BC9 46              IMUL ECX,ECX,46
0043C670  |. 81C1 C0F44A00        ADD ECX,004AF4C0
0043C676  |. E8 5594FEFF          CALL 00425AD0
0043C67B  |. 25 FF000000          AND EAX,0FF
0043C680  |. 8945 FC              MOV DWORD PTR SS:[EBP-4],EAX
上面这一段是2C建言和2D献策专用的

0043C683  |> 8B55 08              MOV EDX,DWORD PTR SS:[EBP+8]
0043C686  |. 81E2 FF000000        AND EDX,0FF
0043C68C  |. 83FA 2C              CMP EDX,2C  ——建言的编号
0043C68F  |. 74 0D                JE SHORT 0043C69E
0043C691  |. 8B45 08              MOV EAX,DWORD PTR SS:[EBP+8]
0043C694  |. 25 FF000000          AND EAX,0FF
0043C699  |. 83F8 2D              CMP EAX,2D  ——献策的编号
0043C69C  |. 75 28                JNZ SHORT 0043C6C6
0043C69E  |> 8B4D F4              MOV ECX,DWORD PTR SS:[EBP-C]
0043C6A1  |. 8B75 FC              MOV ESI,DWORD PTR SS:[EBP-4]
0043C6A4  |. 0371 14              ADD ESI,DWORD PTR DS:[ECX+14]
0043C6A7  |. 8B4D F8              MOV ECX,DWORD PTR SS:[EBP-8]
0043C6AA  |. E8 A7ABFCFF          CALL 00407256
0043C6AF  |. 3BF0                 CMP ESI,EAX
0043C6B1  |. 76 11                JBE SHORT 0043C6C4
0043C6B3  |. 8B4D F8              MOV ECX,DWORD PTR SS:[EBP-8]
0043C6B6  |. E8 9BABFCFF          CALL 00407256
0043C6BB  |. 8B55 F4              MOV EDX,DWORD PTR SS:[EBP-C]
0043C6BE  |. 2B42 14              SUB EAX,DWORD PTR DS:[EDX+14]
0043C6C1  |. 8945 FC              MOV DWORD PTR SS:[EBP-4],EAX
0043C6C4  |> EB 26                JMP SHORT 0043C6EC
0043C6C6  |> 8B45 F4              MOV EAX,DWORD PTR SS:[EBP-C]
0043C6C9  |. 8B75 FC              MOV ESI,DWORD PTR SS:[EBP-4]
0043C6CC  |. 0370 10              ADD ESI,DWORD PTR DS:[EAX+10]
0043C6CF  |. 8B4D F8              MOV ECX,DWORD PTR SS:[EBP-8]
0043C6D2  |. E8 55ABFCFF          CALL 0040722C
0043C6D7  |. 3BF0                 CMP ESI,EAX
0043C6D9  |. 76 11                JBE SHORT 0043C6EC
0043C6DB  |. 8B4D F8              MOV ECX,DWORD PTR SS:[EBP-8]
0043C6DE  |. E8 49ABFCFF          CALL 0040722C
0043C6E3  |. 8B4D F4              MOV ECX,DWORD PTR SS:[EBP-C]
0043C6E6  |. 2B41 10              SUB EAX,DWORD PTR DS:[ECX+10]
0043C6E9  |. 8945 FC              MOV DWORD PTR SS:[EBP-4],EAX
0043C6EC  |> 8B45 FC              MOV EAX,DWORD PTR SS:[EBP-4]
0043C6EF  |. 5E                   POP ESI
0043C6F0  |. 8BE5                 MOV ESP,EBP
0043C6F2  |. 5D                   POP EBP
0043C6F3  \. C2 0C00              RETN 0C
0043C6F6   . 51C64300             DD 0043C651                       ;  Switch table used at 0043C594
0043C6FA   . 9BC54300             DD 0043C59B
0043C6FE   . FBC54300             DD 0043C5FB
0043C702   . 9BC54300             DD 0043C59B
0043C706   . FBC54300             DD 0043C5FB
0043C70A   . 64C64300             DD 0043C664
0043C70E   . 51C64300             DD 0043C651
0043C712   . FBC54300             DD 0043C5FB
0043C716   . 83C64300             DD 0043C683
0043C71A   . 00                   DB 00                                    ;  Index table to switch 0043C6F6
0043C71B   . 01                   DB 01
0043C71C   . 02                   DB 02
0043C71D   . 03                   DB 03
0043C71E   . 04                   DB 04
0043C71F   . 04                   DB 04
0043C720   . 05                   DB 05
0043C721   . 05                   DB 05
0043C722   . 08                   DB 08
0043C723   . 08                   DB 08
0043C724   . 08                   DB 08
0043C725   . 08                   DB 08
0043C726   . 08                   DB 08
0043C727   . 08                   DB 08
0043C728   . 08                   DB 08
0043C729   . 08                   DB 08
0043C72A   . 08                   DB 08
0043C72B   . 08                   DB 08
0043C72C   . 08                   DB 08
0043C72D   . 08                   DB 08
0043C72E   . 08                   DB 08
0043C72F   . 08                   DB 08
0043C730   . 08                   DB 08
0043C731   . 08                   DB 08
0043C732   . 08                   DB 08
0043C733   . 08                   DB 08
0043C734   . 08                   DB 08
0043C735   . 08                   DB 08
0043C736   . 06                   DB 06
0043C737   . 07                   DB 07
上面的43C71A(UE是3BB1)开始就是从八阵图到白虎的HP回复量的设值,0和6是八阵图和玄武专用,1和3是小补给类,2、4和7是大补给类,5是MP回复专用,8是不能回复。

本帖最近评分记录
司徒苍月 2009-1-18 17:34 +52


顶部
性别:男-离线 godtype
(毅)

刘国公
广南东路经略使
枢密直学士
★★★★★★★★★★★★
★★★

Rank: 24Rank: 24Rank: 24
柱国(正二品) 轩辕春秋年度最佳(轩辕工作室)
组别 经略使
级别 卫将军
好贴 1
功绩 1314
帖子 6207
编号 111321
注册 2007-2-18
来自 我家
家族 轩辕学院


发表于 2009-1-18 11:03 资料 个人空间 短消息 看全部作者
更新

更新一下,细化到每一个HP回复策略都有不同的计算公式

0043C59B  |> 8B4D 0C           MOV ECX,DWORD PTR SS:[EBP+C]
0043C59E     E8 31CEFCFF       CALL 004093D4  ---这个新增加的函数
0043C5A3     33D2              XOR EDX,EDX
0043C5A5     B9 0A000000       MOV ECX,0A
0043C5AA     F7F1              DIV ECX
0043C5AC     83C0 28           ADD EAX,28
0043C5AF     EB 66             JMP SHORT 0043C617
以上是小补给,跟原来不变,即回复量=用计者的精神力/10+40
0043C5B1     8B4D 0C           MOV ECX,DWORD PTR SS:[EBP+C]
0043C5B4     E8 1BCEFCFF       CALL 004093D4
0043C5B9     D1E8              SHR EAX,1
0043C5BB     83C0 46           ADD EAX,46
0043C5BE     EB 57             JMP SHORT 0043C617
以上是大补给,跟原来不变,即回复量=用计者的精神力/2+70
0043C5C0     8B4D 0C           MOV ECX,DWORD PTR SS:[EBP+C]
0043C5C3     E8 0CCEFCFF       CALL 004093D4
0043C5C8     C1E8 03           SHR EAX,3
0043C5CB     83C0 28           ADD EAX,28
0043C5CE     EB 47             JMP SHORT 0043C617
以上是援队,改为回复量=用计者的精神力/8+40
0043C5D0     8B4D 0C           MOV ECX,DWORD PTR SS:[EBP+C]
0043C5D3     E8 FCCDFCFF       CALL 004093D4
0043C5D8     D1E8              SHR EAX,1
0043C5DA     83C0 5A           ADD EAX,5A
0043C5DD     EB 38             JMP SHORT 0043C617
以上是援军,改为回复量=用计者的精神力/2+90
0043C5DF     8B4D 0C           MOV ECX,DWORD PTR SS:[EBP+C]
0043C5E2     E8 EDCDFCFF       CALL 004093D4
0043C5E7     D1E8              SHR EAX,1
0043C5E9     83C0 50           ADD EAX,50
0043C5EC     EB 29             JMP SHORT 0043C617
以上是输送,改为回复量=用计者的精神力/2+80
0043C5EE     8B4D 0C           MOV ECX,DWORD PTR SS:[EBP+C]
0043C5F1     E8 DECDFCFF       CALL 004093D4
0043C5F6     EB 1F             JMP SHORT 0043C617
以上是白虎,改为回复量=用计者的精神力

下面的红色部分也要改:
0043C6F6   . 51C64300          DD 0043C651                        ;  Switch table used at 0043C594
0043C6FA   . 9BC54300          DD 0043C59B
0043C6FE   . B1C54300          DD 0043C5B1
0043C702   . C0C54300          DD 0043C5C0
0043C706   . D0C54300          DD 0043C5D0

0043C70A   . 64C64300          DD 0043C664
0043C70E   . DFC54300          DD 0043C5DF
0043C712   . EEC54300          DD 0043C5EE

0043C716   . 83C64300          DD 0043C683
0043C71A   . 00                DB 00                                    ;  Index table to switch 0043C6F6
0043C71B   . 01                DB 01
0043C71C   . 02                DB 02
0043C71D   . 03                DB 03
0043C71E   . 04                DB 04
0043C71F   . 06                DB 06
0043C720   . 05                DB 05
0043C721   . 05                DB 05
0043C722   . 08                DB 08
0043C723   . 08                DB 08
0043C724   . 08                DB 08
0043C725   . 08                DB 08
0043C726   . 08                DB 08
0043C727   . 08                DB 08
0043C728   . 08                DB 08
0043C729   . 08                DB 08
0043C72A   . 08                DB 08
0043C72B   . 08                DB 08
0043C72C   . 08                DB 08
0043C72D   . 08                DB 08
0043C72E   . 08                DB 08
0043C72F   . 08                DB 08
0043C730   . 08                DB 08
0043C731   . 08                DB 08
0043C732   . 08                DB 08
0043C733   . 08                DB 08
0043C734   . 08                DB 08
0043C735   . 08                DB 08
0043C736   . 00                DB 00
0043C737   . 07                DB 07

新增函数是:
004093D4     55                PUSH EBP
004093D5     8BEC              MOV EBP,ESP
004093D7     81E1 FF000000     AND ECX,0FF
004093DD     6BC9 24           IMUL ECX,ECX,24
004093E0     81C1 502C4B00     ADD ECX,004B2C50
004093E6     E8 F8610300       CALL 0043F5E3
004093EB     8BE5              MOV ESP,EBP
004093ED     5D                POP EBP
004093EE     C3                RETN

这样,六个HP回复策略都有自己不同的回复量了。

[ 本帖最后由 godtype 于 2009-1-18 11:05 编辑 ]


顶部
性别:男-离线 godtype
(毅)

刘国公
广南东路经略使
枢密直学士
★★★★★★★★★★★★
★★★

Rank: 24Rank: 24Rank: 24
柱国(正二品) 轩辕春秋年度最佳(轩辕工作室)
组别 经略使
级别 卫将军
好贴 1
功绩 1314
帖子 6207
编号 111321
注册 2007-2-18
来自 我家
家族 轩辕学院


发表于 2009-1-18 12:32 资料 个人空间 短消息 看全部作者
这个只是一个演示和参考,实际上就要靠制作者去决定。
顶部
性别:男-离线 godtype
(毅)

刘国公
广南东路经略使
枢密直学士
★★★★★★★★★★★★
★★★

Rank: 24Rank: 24Rank: 24
柱国(正二品) 轩辕春秋年度最佳(轩辕工作室)
组别 经略使
级别 卫将军
好贴 1
功绩 1314
帖子 6207
编号 111321
注册 2007-2-18
来自 我家
家族 轩辕学院


发表于 2009-1-18 15:52 资料 个人空间 短消息 看全部作者
回复 #7 afl001 的帖子

都通用。
顶部
性别:男-离线 godtype
(毅)

刘国公
广南东路经略使
枢密直学士
★★★★★★★★★★★★
★★★

Rank: 24Rank: 24Rank: 24
柱国(正二品) 轩辕春秋年度最佳(轩辕工作室)
组别 经略使
级别 卫将军
好贴 1
功绩 1314
帖子 6207
编号 111321
注册 2007-2-18
来自 我家
家族 轩辕学院


发表于 2009-1-19 16:52 资料 个人空间 短消息 看全部作者
回复 #11 sddciwei 的帖子

地址减去400C00就是UE地址,然后按中间的数字部分去修改。不过新增函数部分不可以照改,一定要用OB找空的位置再改,所以建议你学一下简单的OB用法。
顶部
性别:男-离线 godtype
(毅)

刘国公
广南东路经略使
枢密直学士
★★★★★★★★★★★★
★★★

Rank: 24Rank: 24Rank: 24
柱国(正二品) 轩辕春秋年度最佳(轩辕工作室)
组别 经略使
级别 卫将军
好贴 1
功绩 1314
帖子 6207
编号 111321
注册 2007-2-18
来自 我家
家族 轩辕学院


发表于 2009-1-23 12:46 资料 个人空间 短消息 看全部作者
43C616-400C00=3BA16

将3BA16的46改成8C
顶部
性别:男-离线 godtype
(毅)

刘国公
广南东路经略使
枢密直学士
★★★★★★★★★★★★
★★★

Rank: 24Rank: 24Rank: 24
柱国(正二品) 轩辕春秋年度最佳(轩辕工作室)
组别 经略使
级别 卫将军
好贴 1
功绩 1314
帖子 6207
编号 111321
注册 2007-2-18
来自 我家
家族 轩辕学院


发表于 2009-2-6 14:29 资料 个人空间 短消息 看全部作者
回复 #16 younger3 的帖子

汇编我也只会一点点

0043C5A3     33D2              XOR EDX,EDX
0043C5A5     B9 0A000000       MOV ECX,0A
0043C5AA     F7F1              DIV ECX
这三行才是完整的除以10,是将前面的函数4093D4里面得出的数值除以ECX中的数值,在这里是10

SHR EAX,n
术名叫逻辑右移n位,我自己的理解是二进制的移动n位。SHR EAX,3就是右移3位,二进制的1向移动3位变成1000,即十进制的8,右移是除,左移(SHL)是乘,所以这里的SHR EAX,3就是除以8了。
顶部
性别:男-离线 godtype
(毅)

刘国公
广南东路经略使
枢密直学士
★★★★★★★★★★★★
★★★

Rank: 24Rank: 24Rank: 24
柱国(正二品) 轩辕春秋年度最佳(轩辕工作室)
组别 经略使
级别 卫将军
好贴 1
功绩 1314
帖子 6207
编号 111321
注册 2007-2-18
来自 我家
家族 轩辕学院


发表于 2009-2-6 14:31 资料 个人空间 短消息 看全部作者


QUOTE:
原帖由 sddciwei 于 2009-2-6 12:29 发表
不过好像46的位置最大只能改到7F,改到80以上就会有问题。

太大没有试过,估计汇编有限制吧。一般这里改大倒不如前面除小一点。
顶部

正在浏览此帖的会员 - 共 10 人在线




当前时区 GMT+8, 现在时间是 2025-2-23 08:50
京ICP备2023018092号 轩辕春秋 2003-2023 www.xycq.org.cn

Powered by Discuz! 5.0.0 2001-2006 Comsenz Inc.
Processed in 0.014269 second(s), 10 queries , Gzip enabled

清除 Cookies - 联系我们 - 轩辕春秋 - Archiver - WAP