
标题: HP回复类策略的计算 [打印本页]
作者:
godtype 时间: 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是不能回复。
作者:
434902652 时间: 2008-11-6 08:20 标题: 作者辛苦了,不过对于我们大多人来说是看不东的,不过还是感谢做这的这份心意
[color作者辛苦了,不过对于我们大多人来说是看不东的,不过还是感谢做这的这份心意=Red]
作者:
crismon 时间: 2008-11-6 09:14
赞!之前有发帖询问过这个问题
这下可以把回血量和扩展的HP适应上了
之前的杯水车薪实在太可怜了
感谢楼主
作者:
godtype 时间: 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 编辑 ]
作者:
szwd1997 时间: 2009-1-18 11:29
这个hp的公式技术探讨我一直都很关注但是这个设计不合理
应该是群+的比单+的少才对
比如小补给/10+40 那么援队最好是/(12~15)+40 或者/10+0 原因很简单吧 全+总体要必单+多 所以单体是应该弥补而且恢复类不仅仅局限于文官而一些武职也应该适当会一点小加血 比如小补给是/10+40 援队是/10+0 那么武将即时有这招也是白搭。
大补给这更是文官的特长 可以设定为/5+100 援军/5+0 或者/(7~10)+100
而白虎 你的白虎 我无语
4s的的设置那种血也少100+99*4+99*4/5这都多少了,全屏幕血一次+满了。就是一次100mp也放得起100装备蓝减半就是50,回蓝20就是30,别的文官时不时的送一个蓝过来基本就是不死了,如果我设置白虎的话(请注意是全屏幕+血和异常状态解除)会这样/20+100 输送就是/10+50
全屏幕加血 和全屏幕+一人血都是无耻的
如果距离够且没有危险单+都会选择大补给吧 而输送最大的实惠是文官不用考虑站位无危险 所以加的血量个人认为应和小补给不相伯仲
[ 本帖最后由 szwd1997 于 2009-1-18 11:34 编辑 ]
作者:
godtype 时间: 2009-1-18 12:32
这个只是一个演示和参考,实际上就要靠制作者去决定。
作者:
afl001 时间: 2009-1-18 13:44
很好,请问是水木版还是新引擎
[ 本帖最后由 afl001 于 2009-1-18 13:46 编辑 ]
作者:
godtype 时间: 2009-1-18 15:52 标题: 回复 #7 afl001 的帖子
都通用。
作者:
szwd1997 时间: 2009-1-18 19:47 标题: 回复 #6 godtype 的帖子
我知道 这是我个人给出的建议而已
作者:
beast3210 时间: 2009-1-18 22:07
辛苦了
作者:
sddciwei 时间: 2009-1-19 16:34
用UE能否修改加血回复量的公式呢?这个实在看不懂
作者:
godtype 时间: 2009-1-19 16:52 标题: 回复 #11 sddciwei 的帖子
地址减去400C00就是UE地址,然后按中间的数字部分去修改。不过新增函数部分不可以照改,一定要用OB找空的位置再改,所以建议你学一下简单的OB用法。
作者:
sddciwei 时间: 2009-1-23 12:10
多谢godtype前辈。但我实在不会OB。能烦您再说的具体些吗?
例如:
0043C612 |. D1E8 SHR EAX,1
0043C614 |. 83C0 46 ADD EAX,46
大补给公式,怎么减400C00。
我想把公式中的精神力/2+70 改成精神力/2+140在UE里应该改哪些地址?
问题可能有些低级,请别笑话我。再次谢谢!!
作者:
godtype 时间: 2009-1-23 12:46
43C616-400C00=3BA16
将3BA16的46改成8C
作者:
sddciwei 时间: 2009-2-6 12:29
会了,会了
不过好像46的位置最大只能改到7F,改到80以上就会有问题。
godtype前辈每次都在我最需要的时候出现,太谢谢了!!
作者:
younger3 时间: 2009-2-6 12:50
哦?
好像有點看懂了(似懂非懂)
請問godtype大
新手在下低級解讀:
精神力/10是MOV ECX,0A
精神力/8是SHR EAX,3
精神力/2是SHR EAX,1
這樣對嗎?
(自己覺得怪怪的 但又想不出更好的解釋方式><)
作者:
godtype 时间: 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 时间: 2009-2-6 14:31
原帖由 sddciwei 于 2009-2-6 12:29 发表
不过好像46的位置最大只能改到7F,改到80以上就会有问题。
太大没有试过,估计汇编有限制吧。一般这里改大倒不如前面除小一点。
作者:
大明英烈 时间: 2009-12-15 04:24
做个记号,绝对实用的好贴啊。
作者:
WHITESHIP 时间: 2012-12-5 00:40 标题: 小补充下 43C623-43C648的解释
太奇葩了,大家都知道HP回复数量也和攻击伤害一样有波动,但是是有几率波动的,
刚发现这个几率居然和士气有关……
0043C623 |. E8 57300000 CALL 0043F67F 获取被加血武将的士气,注意,被加血的武将
0043C628 |. 8BF0 MOV ESI,EAX
0043C62A |. 68 C8000000 PUSH 0C8 取1-200的随机数
0043C62F |. E8 DF340400 CALL 0047FB13
0043C634 |. 83C4 04 ADD ESP,4
0043C637 |. 3BF0 CMP ESI,EAX
0043C639 |. 76 14 JBE SHORT 0043C64F
如果随机数大于被加血者的士气,那就跳过增加随机数阶段,换句话说,只要该武将士气大于200,就必然产生波动值!!
0043C63B |. 6A 06 PUSH 6 取0-6的随机数
0043C63D |. E8 D1340400 CALL 0047FB13
0043C645 |. 8B4D FC MOV ECX,DWORD PTR SS:[EBP-4]
0043C648 |. 8D5401 05 LEA EDX,DWORD PTR DS:[ECX+EAX+5] 最终加血量=固定回复量+随机数+5,也就是说随机增加5-11。
(这设定太二缺了……果断去掉,空出来的空间正好可以增加一个辅助回复量的特效。)
作者:
zhouhuan 时间: 2012-12-6 09:16
HP回复的波动都是正波动,士气高一般运气也高,估计是制作者给运气好的人一种福利,虽然没什么用就是了。。
欢迎光临 轩辕春秋文化论坛 (http://xycq.org.cn/forum/) |
Powered by Discuz! 5.0.0 |