文明时代2吧 关注:51,496贴子:1,301,009
  • 9回复贴,共1

【教程】论如何干掉结盟

只看楼主收藏回复

找到getAllianceProposal_Positive方法
在return v0语句前一段加入
const/4 v0, 0x0
然后再找到getAllianceProposal_Negative方法
在return v0语句前加入
const/4 v0, -0x8
(这两个方法都在dioplmocyManager里)
好了 现在结盟可能性这辈子都不可能是“高”了。
什么?这两条语句什么意思?
好 让我们先来聊聊老卢是怎么写结盟倾向的
结盟倾向的分数获取分为两类方法 即getAllianceProposal_Positive(Negative)对应积极(消极)倾向。这个前缀下带有各种理由的分数 例如边界距离/政体/文明强度等
我们上述的这两个方法就是结盟倾向积极与消极的总获取方法。
const/4 是一条smali的指令 可以简单的理解为向某个变量(其实应该是寄存器,但在这里我们采取更易于理解的方法)存储指定的数据。
v0就是我们这个变量的名字 0x0和-0x8自然是我们要存入的内容。
为什么要存到v0里?因为下一条语句 return v0的意思就是返回v0变量的值。
那么 你可能还想要问 0x0和-0x8到底是啥? 在这里 我们不细讲 简单的化成常规的数字形式 就是0和-8。如果你还想要深究,可以了解一下16进制。
让我们把积极与消极的倾向加在一起:0+(-8)=-8。负数 那么AI自然不会同意。如果你想让每次结盟都被同意,可以试试把这两个数值改成别的数字让结果一定是正数。
嘿!如果有玩家用s和a切到别的国家强制同意结盟呢?我不想让玩家这么干!
emmmm……
当然 并不是没有办法。
通过mt管理器的dex++编辑器,搜索(代码)rebuildInGame_OfferAlliance,然后进入Menu_InGame_CivInfo_Stats_Actions$8这个结果 按道理来说编辑器会自动帮你定位到这个目标。把定位到的这一行删掉就可以了。
至于它的原理 自然非常简单:
既然玩家可以发出结盟申请然后切过去同意,那我们不让玩家发出申请不就好了?
没错,rebuildInGame_OfferAlliance就是启动结盟申请菜单的方法。 如果我们把这个方法删掉 在按下结盟申请按钮之后根本不会启动结盟申请菜单 自然发不出申请。
但你必须要注意一点:删掉这个启动调用不会让AI结盟消失,第一种方法才能让AI结盟消失。毕竟,AI可不需要点开菜单然后按下同意。
建议两个方法同时使用,毕竟谁都说不准玩家还能玩出什么花活。
--------------
这篇文章本来是写着玩的 但是发现好像现在还没有通过代码来调整结盟的教程 于是就发一下。


IP属地:福建1楼2023-01-25 18:04回复
    为什么要干掉结盟


    IP属地:上海来自Android客户端2楼2023-01-25 18:31
    收起回复
      这教程……MOD走事件有点用


      IP属地:山东来自Android客户端3楼2023-01-25 18:43
      回复
        2023.1.31更新:
        我去 老卢你坑害我!!!
        前述方法并不能阻挡AI自主结盟。
        找到AI_Style类,搜索diplomacyActions_Ally方法,删除
        invoke-static {v1, p1}, Lage/of/civilizations2/jakowski/lukasz/DiplomacyManager;->sendAllianceProposal(II)V
        语句,即可阻挡AI结盟。
        原因是AI自主结盟不通过倾向分数来运行,而是自行做了判断……
        sendAllianceProposal如果是两边AI似乎会自动同意,玩家会弹窗 blalala我也懒得写了 就这样


        IP属地:福建4楼2023-01-31 15:55
        回复
          支持技术贴


          IP属地:广东来自Android客户端5楼2023-12-10 12:22
          回复
            玩着玩着突然好多地区变荒漠啥情况


            IP属地:广东来自Android客户端6楼2023-12-22 23:02
            回复
              贴主 我有一个问题
              就是如何修改 基础防御 就是上了无论是玩家还是 Ai自带的18基础防御那个怎么去掉啊?


              IP属地:辽宁来自Android客户端7楼2024-03-20 17:43
              回复