群英Ⅲ吧 关注:14,113贴子:224,637
  • 3回复贴,共1

单挑规则修改(群三技术交流分享及解答疑问)

取消只看楼主收藏回复

群三原版有个非常奇葩的单挑规则,只要武将的武力和体力低于一定值,就会被AI无限单挑。基于这个原因,微笑大大修改了原版单挑规则,代码详见楼下


IP属地:浙江1楼2026-01-26 15:25回复
    以下是详细代码(微笑大大提供)
    AI单挑判断函数。
    原执行判断函数与 玩家进行单挑函数为同逻辑。故跳转新函数执行新的设定
    0047F506 |. E8 96F70C00 CALL 1_3合成.0054ECA1
    重新修改判断逻辑
    0054ECA1 55 PUSH EBP
    0054ECA2 8BEC MOV EBP,ESP
    0054ECA4 83EC 0C SUB ESP,0C
    0054ECA7 56 PUSH ESI
    0054ECA8 894D F4 MOV DWORD PTR SS:[EBP-C],ECX
    0054ECAB 8B4D F4 MOV ECX,DWORD PTR SS:[EBP-C]
    0054ECAE 81C1 C0000000 ADD ECX,0C0
    0054ECB4 E8 27DCF4FF CALL .0049C8E0 获取攻击方血量
    0054ECB9 8BF0 MOV ESI,EAX
    0054ECBB 8B4D 08 MOV ECX,DWORD PTR SS:[EBP+8] 获取被攻击方血量
    0054ECBE E8 BD69EBFF CALL .00405680
    0054ECC3 2BF0 SUB ESI,EAX 计算血量差
    0054ECC5 8B4D F4 MOV ECX,DWORD PTR SS:[EBP-C]
    0054ECC8 81C1 C0000000 ADD ECX,0C0
    0054ECCE E8 0DF3ECFF CALL .0041DFE0 获取攻击方最大血量
    0054ECD3 99 CDQ
    0054ECD4 B9 0A000000 MOV ECX,0A
    0054ECD9 F7F9 IDIV ECX 除10设定
    0054ECDB 3BF0 CMP ESI,EAX 比较 血量差与攻击方最大血量10%
    0054ECDD 7D 04 JGE SHORT .0054ECE3 大于等于则跳转 进入武力获取
    0054ECDF 32C0 XOR AL,AL 小于则不单挑
    0054ECE1 EB 4E JMP SHORT .0054ED3D 跳转结束函数
    0054ECE3 8B4D F4 MOV ECX,DWORD PTR SS:[EBP-C]
    0054ECE6 81C1 10010000 ADD ECX,110
    0054ECEC E8 EFDBF4FF CALL .0049C8E0
    0054ECF1 8BF0 MOV ESI,EAX
    0054ECF3 83F8 4B CMP ESI,4B 增加武力是否大于等于 75 检查
    0054ECF6 7C 16 JL SHORT .0054ED0E 小于 75 则不会进行单挑 跳转结束
    0054ECF8 8B4D 08 MOV ECX,DWORD PTR SS:[EBP+8]
    0054ECFB E8 F053EBFF CALL .004040F0
    0054ED00 2BF0 SUB ESI,EAX
    0054ED02 83FE FB CMP ESI,-5 判断武力差是否小于 -5 即 玩家武将武力 大于 AI武将 5点以上
    0054ED05 7C 07 JL SHORT .0054ED0E 跳转不单挑。结束函数
    0054ED07 83FE 0A CMP ESI,0A 判断武力差是否大于 10 即 AI武将武力 大于 AI玩家武将 10点以上
    0054ED0A 7F 02 JG SHORT .0054ED0E 跳转不单挑 结束函数。拒绝玩家利用低武力耍赖守门占营
    0054ED0C EB 04 JMP SHORT .0054ED12
    0054ED0E 32C0 XOR AL,AL
    0054ED10 EB 2B JMP SHORT .0054ED3D
    0054ED12 8B55 08 MOV EDX,DWORD PTR SS:[EBP+8]
    0054ED15 52 PUSH EDX
    0054ED16 8B4D F4 MOV ECX,DWORD PTR SS:[EBP-C]
    0054ED19 E8 03BEF0FF CALL .0045AB21
    0054ED1E E8 8961F9FF CALL .004E4EAC
    0054ED23 8945 FC MOV DWORD PTR SS:[EBP-4],EAX 获取比较值。这里测试固定输入是 32即 50
    0054ED26 6A 64 PUSH 64 判断成功。进行随机输出。是否进行单挑选择
    0054ED28 E8 43F5F7FF CALL .004CE270
    0054ED2D 83C4 04 ADD ESP,4
    0054ED30 3B45 FC CMP EAX,DWORD PTR SS:[EBP-4]
    0054ED33 1BC0 SBB EAX,EAX
    0054ED35 F7D8 NEG EAX
    0054ED37 8845 F8 MOV BYTE PTR SS:[EBP-8],AL
    0054ED3A 8A45 F8 MOV AL,BYTE PTR SS:[EBP-8]
    0054ED3D 5E POP ESI
    0054ED3E 8BE5 MOV ESP,EBP
    0054ED40 5D POP EBP
    0054ED41 C2 0400 RETN 4


    IP属地:浙江2楼2026-01-26 15:26
    回复
      2026-02-20 16:04:47
      广告
      不感兴趣
      开通SVIP免广告
      修改时遇到疑问的可以在楼中楼留下问题,大家一起探讨。(本人技术有限,只能处理一些简单问题)
      也希望各路大佬能帮忙解答。


      IP属地:浙江3楼2026-01-26 15:29
      回复
        目前我和几位大大组成了一个制作组,正在尝试创作一个不一样的群三版本,最近新加入了合成功能正在测试,大家都有很多想法,一起探讨,尝试在游戏内加入一些新功能,比如AI可以释放多次军师技,武将的进化或转生功能,AI行动的权重分析(比如减少移动令牌增加进攻次数)等等,有些还只是想法,有些已经有点眉目,希望能有更多大佬能加入进来一起交流,也欢迎喜爱群三的小伙伴参与测试,提供宝贵意见,如果有好点点子,可以在楼中楼回复。


        IP属地:浙江4楼2026-01-26 15:46
        回复