佳丽云

英雄无敌3-WoG中文站

 找回密码
 英雄注册|Register
查看: 4466|回复: 27

[ERM_HOOK]解决环击和吸血共存的问题

[复制链接]
  • TA的每日心情
    郁闷
    2015-6-6 16:12
  • 签到天数: 52 天

    连续签到: 1 天

    [LV.5]女巫

    4947

    回帖

    3万

    金币

    35

    精华

    超级版主

    Rank: 11Rank: 11Rank: 11Rank: 11

    积分
    34630

    论坛守望者论坛元老杰出贡献

    发表于 2015-9-18 10:28:27 | 显示全部楼层 |阅读模式
    本帖最后由 贤知有您 于 2015-10-3 23:40 编辑

    好吧.这个其实不算BUG.也许是硬编码偷懒吧.
    实际的吸血过程有2部分.
    1.肉搏攻击时,会记录被攻击者的当前总HP.
    2.吸血过程时,通过目标当前总HP(伤害后)和原总HP对比来确定攻击者能吸血多少.
    另外有个特定设置是,当被攻击者(被吸血者)是个镜像体时,纵使目标一下全灭,也只吸1HP.

    以下脚本分别针对2个过程来解决共存问题的.
    需要指出的时,环击的吸血也只针对目标一个,而非群体.群体吸血虽然在技术上可行,但却是非常麻烦.
    早写好了,论坛ERM技术有点冷清,放出来测试下.

    1. ZVSE
    2. *by贤知有您 Hawaiing 2015-7-31
    3. *bloodsuck&retaliation
    4. *用于解决环击和吸血无法共存的问题.修复后,环击时吸血生物可以对目标吸血(非群体吸血).
    5. *需要erm_hooker.era插件才能运行.不能与其它修改过相关地方的脚本混用.
    6. *FU111217-FU111218
    7. *FU111219-FU111220
    8. !?PI;[test]
    9. !!MA:X63/?i;
    10. !!VRi:|524288;
    11. !!MA:X63/i;[吸血鬼王为环击-用于测试]
    12. *--------------------SetHook&UnsetHook---------------
    13. !?BA0&1000;[战斗前]
    14. !!FU111217:P0;
    15. !!FU111219:P0;

    16. !?BA1&1000;[战斗后]
    17. !!FU111217:P1;
    18. !!FU111219:P1;
    19. *------------------------------------------------------------
    20. !?FU111217;[肉搏攻击,环击进行前]
    21. *004415FE - 8d 45 e8 - lea eax,[ebp-18]
    22. !!SN:L^EraPlugins\erm_hooker.era^/?y1 Ay1/^SetHook^/?y2 Ay1/^UnsetHook^/?y3;
    23. !!SN&x1=0:Ey2/1/4462078/111218; hook at 004415FE => FU111218
    24. !!SN&x1=1:Ey3/1/4462078;

    25. !?FU111218;
    26. *此时目标堆栈[ebp+08],写入的目标地址是[ebp-24]
    27. *计算目标堆栈的总HP,并写入目标地址
    28. *需提取地址: EBP (8)
    29. !!SN:X?y1/1;[按原命令执行]
    30. !!VRy2:Sy1+8;
    31. !!UN:Cy2/4/?y3; =ebp
    32. !!VRy4:Sy3+8;
    33. !!UN:Cy4/4/?y5; y5=目标堆栈[ebp+08]
    34. !!VRy6:Sy3-36; [ebp-24]
    35. !_!UN:Cy6/4/?y7; 原值
    36. !!VRy8:Sy5+192; BM:H
    37. !!VRy9:Sy5+76; BM:N
    38. !!VRy10:Sy5+88; BM:L
    39. !!UN:Cy8/4/?y11 Cy9/4/?y12 Cy10/4/?y13;
    40. !!VRy14:Sy11*y12-y13;
    41. !!VRy14&y14<0:S0;
    42. !!UN:Cy6/4/y14;[写入数据]
    43. *------------------------------------------------------------
    44. !?FU111219;[吸血过程中]
    45. *0044095A - 8b 8e c0 00 00 00 - mov ecx,[esi+000000c0]
    46. !!SN:L^EraPlugins\erm_hooker.era^/?y1 Ay1/^SetHook^/?y2 Ay1/^UnsetHook^/?y3;
    47. !!SN&x1=0:Ey2/1/4458842/111220; hook at 0044095A => FU111220
    48. !!SN&x1=1:Ey3/1/4458842;

    49. !?FU111220;
    50. *此时,本体堆栈esi,目标堆栈[ebp+08],目标堆栈原总HP[ebp+14],写入目标地址是[edi](指针)
    51. *若本体堆栈拥有环击标志,但重算可吸血HP.用原总HP-当前目标堆栈总HP获得.并写入到相应内存上.
    52. *需提取地址:EDI (0),ESI (4), EBP (8)
    53. !!SN:X?y1/1;[按原命令执行]
    54. !!UN:Cy1/4/?y2; y2=edi
    55. !!VRy3:Sy1+4;
    56. !!UN:Cy3/4/?y4; y4=esi
    57.   !!VRy21:Sy4+132;
    58.   !!UN:Cy21/4/?y22; y22=本体堆栈标志
    59.   !!VRy22:&524288;是否环击
    60.   !!FU&y22=0:E;
    61. !!VRy5:Sy1+8;
    62. !!UN:Cy5/4/?y6; y6=ebp
    63. !!VRy7:Sy6+8;
    64. !!UN:Cy7/4/?y8; y8=目标堆栈[ebp+08]
    65. !!VRy9:Sy6+20;
    66. !!UN:Cy9/4/?y10; y10=目标堆栈原总HP[ebp+14]
    67. !!VRy11:Sy8+192; BM:H
    68. !!VRy12:Sy8+76; BM:N
    69. !!VRy13:Sy8+88; BM:L
    70. !!VRy14:Sy8+132;BM:F
    71. !!UN:Cy11/4/?y15 Cy12/4/?y16 Cy13/4/?y17 Cy14/4/?y18;
    72. !!VRy19:Sy15*y16-y17;目标当前总HP
    73. !!VRy20:Sy10-y19;[HP差额]
    74. !!VRy20&y20<0:S0;
    75. !!VRy18:&8388608;[是否克隆体]
    76. !!VRy20&y18>0/y20>1:S1;[按原作设定克隆体只为1hp]
    77. !!UN:Cy2/4/y20; 写入到 [edi]上

    78. *贤知有您 Hawaiing*
    复制代码






    评分

    2

    查看全部评分

    本帖被以下淘专辑推荐:

  • TA的每日心情
    慵懒
    2019-8-17 09:46
  • 签到天数: 1158 天

    连续签到: 2 天

    [LV.10]圣龙

    2万

    回帖

    91万

    金币

    7

    精华

    论坛嘉宾

    守望论坛的稻草人

    Rank: 9Rank: 9Rank: 9

    积分
    87623

    社区QQ达人论坛守望者金牌裁判杰出贡献魅力之星TE联赛冠军

    发表于 2015-9-18 10:50:00 | 显示全部楼层
    群体吸血我记得寻梦人的李多海变态之旅这个地图的吸魂就是啊
  • TA的每日心情
    郁闷
    2015-6-6 16:12
  • 签到天数: 52 天

    连续签到: 1 天

    [LV.5]女巫

    4947

    回帖

    3万

    金币

    35

    精华

    超级版主

    Rank: 11Rank: 11Rank: 11Rank: 11

    积分
    34630

    论坛守望者论坛元老杰出贡献

     楼主| 发表于 2015-9-18 11:56:57 | 显示全部楼层
    兽哥哥 发表于 2015-9-18 10:50
    群体吸血我记得寻梦人的李多海变态之旅这个地图的吸魂就是啊

    特定的模拟和内存修改是两码事.
    纯ERM是无法解决 环击和吸血问题的.
    只有修改硬编码才行.(内存修改)
  • TA的每日心情
    擦汗
    2016-5-15 21:23
  • 签到天数: 86 天

    连续签到: 1 天

    [LV.6]地狱战马

    221

    回帖

    7054

    金币

    0

    精华

    2级 Adventuring Hero

    Rank: 2

    积分
    460
    发表于 2015-9-18 13:58:46 | 显示全部楼层
    环击吸血,是否说打了鸡血的九头也有可能每个头都孤注一掷?这样的九头生猛呀!
  • TA的每日心情
    慵懒
    2019-8-17 09:46
  • 签到天数: 1158 天

    连续签到: 2 天

    [LV.10]圣龙

    2万

    回帖

    91万

    金币

    7

    精华

    论坛嘉宾

    守望论坛的稻草人

    Rank: 9Rank: 9Rank: 9

    积分
    87623

    社区QQ达人论坛守望者金牌裁判杰出贡献魅力之星TE联赛冠军

    发表于 2015-9-18 14:44:12 | 显示全部楼层
    贤知有您 发表于 2015-9-18 11:56
    特定的模拟和内存修改是两码事.
    纯ERM是无法解决 环击和吸血问题的.
    只有修改硬编码才行.(内存修改)

    明白了

     成长值: 11065

  • TA的每日心情
    郁闷
    2024-3-3 18:17
  • 签到天数: 1609 天

    连续签到: 1 天

    [LV.Master]伴坛终老

    5443

    回帖

    3万

    金币

    8

    精华

    管理员

    ERA Project Team
    WoG俄文论坛版主

    Rank: 12Rank: 12Rank: 12

    积分
    103303

    社区QQ达人论坛守望者脚本测试狂杰出贡献年度明星魅力之星宣传部长

    发表于 2015-9-18 18:14:16 | 显示全部楼层
    zhuran0822 发表于 2015-9-18 16:33
    感谢好帖,如果集成到封神,那鬼族要再创巅峰,吸血鬼王海要彻底压下骷髅海、僵尸海了

    苍老师表示鬼族已经强到吐了……

     成长值: 11065

  • TA的每日心情
    郁闷
    2024-3-3 18:17
  • 签到天数: 1609 天

    连续签到: 1 天

    [LV.Master]伴坛终老

    5443

    回帖

    3万

    金币

    8

    精华

    管理员

    ERA Project Team
    WoG俄文论坛版主

    Rank: 12Rank: 12Rank: 12

    积分
    103303

    社区QQ达人论坛守望者脚本测试狂杰出贡献年度明星魅力之星宣传部长

    发表于 2015-9-18 18:16:13 | 显示全部楼层
    有些时候还挺期盼这个问题不解决的……

    吸血本身就是超级逆天的能力了,和环击集合到同一个单位身上实在是……有个龙息玩也挺不错了吧
  • TA的每日心情

    8 小时前
  • 签到天数: 2417 天

    连续签到: 9 天

    [LV.Master]伴坛终老

    1万

    回帖

    40万

    金币

    0

    精华

    白银会员

    Rank: 5Rank: 5

    积分
    93665

    魅力之星

    QQ
    发表于 2015-9-18 20:31:46 | 显示全部楼层
    内存修改,007特长
    该会员没有填写今日想说内容.
  • TA的每日心情
    擦汗
    2014-2-3 08:29
  • 签到天数: 1 天

    连续签到: 1 天

    [LV.1]投石矮人

    236

    回帖

    1万

    金币

    0

    精华

    4级 Famous Hero

    Rank: 4

    积分
    1073
    发表于 2015-9-19 07:35:23 | 显示全部楼层
    神物。

    能否环击和龙息共存呢?
  • TA的每日心情
    郁闷
    2015-6-6 16:12
  • 签到天数: 52 天

    连续签到: 1 天

    [LV.5]女巫

    4947

    回帖

    3万

    金币

    35

    精华

    超级版主

    Rank: 11Rank: 11Rank: 11Rank: 11

    积分
    34630

    论坛守望者论坛元老杰出贡献

     楼主| 发表于 2015-9-19 09:19:03 | 显示全部楼层
    本帖最后由 贤知有您 于 2015-9-19 09:20 编辑
    wuxiangjinxing 发表于 2015-9-19 07:35
    神物。

    能否环击和龙息共存呢?

    这两个属于同种类的技能.即都是生物的标志技能.
    在硬编码层面,首先判断是否环击(包括三首犬的攻击),没有环击才去继续判断龙息的.
    两段代码都涉及到真正目标的伤害计算,如果共存让两者都运行,那么目标将被处理了2次.
    要动大手术是很困难的.
    另外一个可行的解决方案是:
    给玩家一个选择框,提示用龙息还是环击攻击.
    楼主可自行编写这类脚本.
  • TA的每日心情
    郁闷
    2015-6-6 16:12
  • 签到天数: 52 天

    连续签到: 1 天

    [LV.5]女巫

    4947

    回帖

    3万

    金币

    35

    精华

    超级版主

    Rank: 11Rank: 11Rank: 11Rank: 11

    积分
    34630

    论坛守望者论坛元老杰出贡献

     楼主| 发表于 2015-9-20 08:03:07 | 显示全部楼层
    本帖最后由 贤知有您 于 2015-9-20 08:05 编辑
    zhuran0822 发表于 2015-9-19 14:12
    封神的元素族魔法元素是怎么实现双格环击的?环击的格数是参数可控的吗?目前见到的最牛的攻击方式就是这 ...

    !!if|y10=120/y10=121:;  元素范围攻击
    !!VRy35:Sy3 :21 *21;
    !!VRy36:Sy35 +19;
    !!if&y5=6:;
    !!VRz9:S^Fireblst.wav^;
    !!SN:Pz9;
    !!VRz3:S^DesODoS.def^;  灭世之门
    !!FU16042:P0/3/y1/1/1/1;  //调用指定堆栈施放外调DEF函数 By 007
    !!DO17005/y35/y36/1:P360/y1/y3/y4;  检查敌方堆栈
    !!VRz10:Sz220590;
    !!MM:Sz10;
    !!en:;
    !!en:;

    !?FU17005&x1=360;
    !!BMx16:T?y10 N?y11 P?y12 F?k;
    !!FU|x16=x3/y10=149/y11<1:E;
    !!FU16011:Px2/x16/?y13; //调用计算生物之间距离函数 By Besry
    !!if&y13=2:;   只对周围2格部队有效
    !!BMx16:Kx4;
    !!en:;

    只是个模拟的效果.
    原理很简单:遍历敌方所有部队与魔法元素之间的距离,距离为2时给它一个特定直接伤害.
    这里y13就是计算堆栈和堆栈的距离.设置为2时,就是2格外,同时排除了本来是环击的情况(1格).
    但模拟是不同于本来的环击的,有2点需要注意:
    1.模拟伤害是以环击时目标的伤害为基准,而不是每队都产生不同的伤害.
    2.模拟伤害时直接BM:K伤害,它不执行大部分WOG特征.比如不会触发格挡偏移之类.
    另外由于是在 MF1触发器下触发,也就是说,需要ERM作者排除所有其它MF1伤害.因为环击会产生多种MF1.
  • TA的每日心情
    擦汗
    2014-2-3 08:29
  • 签到天数: 1 天

    连续签到: 1 天

    [LV.1]投石矮人

    236

    回帖

    1万

    金币

    0

    精华

    4级 Famous Hero

    Rank: 4

    积分
    1073
    发表于 2015-10-3 00:48:47 | 显示全部楼层
    本帖最后由 wuxiangjinxing 于 2015-10-3 12:31 编辑

    本楼作废…………
    回复

    使用道具 举报

  • TA的每日心情
    开心
    2015-9-30 21:15
  • 签到天数: 2 天

    连续签到: 1 天

    [LV.1]投石矮人

    436

    回帖

    9009

    金币

    0

    精华

    4级 Famous Hero

    Rank: 4

    积分
    2094
    发表于 2015-10-3 02:31:24 | 显示全部楼层
    可是我不会用!!
  • TA的每日心情
    擦汗
    2014-2-3 08:29
  • 签到天数: 1 天

    连续签到: 1 天

    [LV.1]投石矮人

    236

    回帖

    1万

    金币

    0

    精华

    4级 Famous Hero

    Rank: 4

    积分
    1073
    发表于 2015-10-3 12:30:22 | 显示全部楼层
    上面的编码有个小错:

    第48行
    !!SN:L^EraPlugins\erm_hooker.era^/?y1 Ay1/^SetHook^/?y2 Ay1/^UnsetHook^/?y2;

    这个y2应该是y3

    @贤知有您

    评分

    1

    查看全部评分

  • TA的每日心情
    郁闷
    2015-6-6 16:12
  • 签到天数: 52 天

    连续签到: 1 天

    [LV.5]女巫

    4947

    回帖

    3万

    金币

    35

    精华

    超级版主

    Rank: 11Rank: 11Rank: 11Rank: 11

    积分
    34630

    论坛守望者论坛元老杰出贡献

     楼主| 发表于 2015-10-3 23:42:19 | 显示全部楼层
    wuxiangjinxing 发表于 2015-10-3 12:30
    上面的编码有个小错:

    第48行

    确实是笔误写错了.
    当时x1=0和x1=1分开2个FU函数,后来整合时写错了.
    谢谢反馈.
  • TA的每日心情

    2017-7-6 10:46
  • 签到天数: 45 天

    连续签到: 1 天

    [LV.5]女巫

    129

    回帖

    8354

    金币

    0

    精华

    2级 Adventuring Hero

    Rank: 2

    积分
    238
    发表于 2015-10-23 09:28:43 | 显示全部楼层
    好东西   可是作为小白应该怎么用捏
  • TA的每日心情
    慵懒
    2020-4-9 16:40
  • 签到天数: 120 天

    连续签到: 1 天

    [LV.7]血污怪

    192

    回帖

    9961

    金币

    0

    精华

    3级 Known Hero

    Rank: 3Rank: 3

    积分
    740

    社区QQ达人

    发表于 2015-11-5 12:45:06 | 显示全部楼层
    好高端。。。那些代码完全看不懂,捧个人场,楼主有心了
  • TA的每日心情
    无聊
    2017-3-28 18:52
  • 签到天数: 489 天

    连续签到: 1 天

    [LV.9]龙巫妖

    518

    回帖

    1万

    金币

    0

    精华

    4级 Famous Hero

    Rank: 4

    积分
    1746
    发表于 2015-11-6 14:09:13 | 显示全部楼层
    学习了。赶紧下一个体验下
  • TA的每日心情
    难过
    2023-5-14 22:17
  • 签到天数: 135 天

    连续签到: 1 天

    [LV.7]血污怪

    415

    回帖

    7810

    金币

    0

    精华

    4级 Famous Hero

    Rank: 4

    积分
    1779

    社区QQ达人

    发表于 2017-1-11 13:49:11 | 显示全部楼层
    请问楼主,那个hook.era插件要去哪里下载?然后这些代码放哪里?
  • TA的每日心情
    难过
    2023-5-14 22:17
  • 签到天数: 135 天

    连续签到: 1 天

    [LV.7]血污怪

    415

    回帖

    7810

    金币

    0

    精华

    4级 Famous Hero

    Rank: 4

    积分
    1779

    社区QQ达人

    发表于 2017-1-13 21:47:32 | 显示全部楼层
    本帖最后由 chenmissjin 于 2017-1-13 21:55 编辑

    贤知大大,我把这些代码粘贴到新建的erm文件中(放在data/s),的确是解决了鬼魂吸魂和环击的冲突,然而进入游戏第一次开始战斗和战斗结束都会erm报错并且第二次进入战斗后失效。请问应该如何解决?
    ahome_bigavatar:guest
    ahome_bigavatar:welcomelogin
    您需要登录后才可以回帖 登录 | 英雄注册|Register

    本版积分规则

    捐赠
    关注我们,英3Mod一网打尽!

    WoG中文站 ( 辽B2-20210485-10 )|辽公网安备 21128202000228 号

    GMT+8, 2024-4-26 17:17 , Processed in 0.945322 second(s), 21 queries , Gzip On, File On.

    Powered by Discuz! X3.4

    Copyright © 2004-2022, Beijing Second Sight Technology Co., LTD.

    快速回复 返回顶部 返回列表