绝命时刻吧 关注:21,444贴子:402,777
  • 9回复贴,共1

关于【 螺旋( 蜗牛 )容器 】的问题

只看楼主收藏回复

一楼略。


IP属地:四川1楼2023-05-08 11:16回复
    目的:
    让螺旋直升机获得全部的升级
    方案:
    将广播塔效果与碉堡效果集中在加特林升级上
    ( 当然,如果有更好的实现方案也可以讨论 )
    分析:
    1. 在ChinaAir.ini中, 找到了对象: ChinaVehicleHelix
    2. 发现关键部分:
    ;// 创建对象( 创建加特林版本的螺旋直升机 )
    Behavior = ObjectCreationUpgrade ModuleTag_22
    UpgradeObject = OCL_HelixGattlingCannon
    TriggeredBy = Upgrade_ChinaHelixGattlingCannon
    ....
    End
    3. 在ChinaAir.ini中, 找到了对象: ChinaHelixGattlingCannon
    4. 准备在对象: ChinaHelixGattlingCannon中移植广播塔效果
    5. 添加广播塔效果( 来源: ChinaHelixPropagandaTower )
    ;// 广播塔
    Behavior = PropagandaTowerBehavior ModuleTag_04
    ...
    End
    6. 查看碉堡的实现逻辑( 碉堡逻辑在对象: ChinaVehicleHelix中 )
    ;// ( 允许 )乘员开火
    Behavior = PassengersFireUpgrade ModuleTag_34
    TriggeredBy = Upgrade_ChinaHelixBattleBunker
    End
    7. 将触发替换为加特林升级: Upgrade_ChinaHelixGattlingCannon
    ;// ( 允许 )乘员开火
    Behavior = PassengersFireUpgrade ModuleTag_34
    TriggeredBy = Upgrade_ChinaHelixGattlingCannon
    End
    8. 清理无效的代码, 检查ModuleTag是否重复
    9. 保存, 运行
    问题:
    1. 修改之后, 无论是否升级( 加特林或者碉堡 ), 人员进入直升机都不会在命令栏中显示, 只能上车不能下车
    2. 直升机升级加特林后, 的确获得了广播塔的能力, 但是乘员显示中, 却显示了加特林的图标
    3. 直升机升级加特林后, 乘员的确能开火了, 但是不能和我的攻击目标一致


    IP属地:四川2楼2023-05-08 11:37
    回复
      2026-05-07 18:46:12
      广告
      不感兴趣
      开通SVIP免广告


      IP属地:四川3楼2023-05-08 11:44
      回复
        手动求助昨天查资料眼熟的大佬野生的大佬帮忙也非常感激
        @失控的AI
        @紫Loli
        @saite240mt


        IP属地:四川5楼2023-05-08 11:53
        回复
          目前已解决:
          1. 螺旋直升机装载步兵后不会正常显示的问题
          2. 升级仅能升级1个的配件的问题
          3. 升级时不能连续点击形成队列
          问题诱因:
          不详, 直接修改ZH原本的螺旋直升机对象就会有各种各样的问题
          解决方案:( 说是重写, 但也没有改多少内容 )
          1. 重写新的对象, 按钮, 升级, OCL, 命令
          2. 取消升级后的更新命令栏行为, 同时由于是新的按钮, 所以可以全部升级
          ;// 几个按钮需要全部注释掉
          Behavior = CommandSetUpgrade ModuleTag_26
          CommandSet = ChinaHelixGattlingCannonCommandSet
          TriggeredBy = Upgrade_ChinaHelix_GCannon
          End
          3. 注释掉: 按钮中的NOT_QUEUEABLE, 并修改最大队列数量, 则可以形成队列, 自动升级
          CommandButton Command_UpgradeChinaHelix_GCannon
          ...
          Options = OK_FOR_MULTI_SELECT ;// 注释掉: NOT_QUEUEABLE
          ...
          End
          Behavior = ProductionUpdate ModuleTag_25
          MaxQueueEntries = 4;// 最大队列数量
          End
          4. 基础逻辑并没有太大变化, 只是全部对象都是新的, 此时则可以正常装卸步兵了
          遗留问题:
          1. 即使可以全部升级, 但是模型却不能反复叠加, 同时只能有1个模型显示。先升级的盖特, 就是盖特的模型, 后升级的广播塔碉堡全部都没有模型( 但是有效果, 说明对象的确创建了 )
          2.虽然能正确装卸部队了, 但是装载栏里还是有些奇怪的东西.
          2.1 先升级盖特, 后升级碉堡和广播塔, 则盖特模型显示, 同时碉堡和广播塔在装载栏中
          2.2 先升级碉堡, 后升级盖特和广播塔, 则碉堡模型显示, 同时盖特和广播塔在装载栏中
          2.3 ...


          IP属地:四川6楼2023-05-09 09:37
          回复


            IP属地:四川7楼2023-05-09 09:41
            回复
              研究后得出不算准确的结论:
              1. 螺旋容器默认有且仅有1个功能插槽( 并不是指的装载步兵的装载插槽 )
              2. 功能插槽仅支持1个对象, 如果装上的是盖特, 那么后续再装上广播塔或者碉堡都是无效的( 此时指模型 )
              3. 我尝试使用嵌套模式: 直升机 -> 盖特 -> 广播塔 -> 碉堡, 但是移动起来的时候, 碉堡与广播塔绑骨是盖特, 所以会穿模
              4. 目前这种: 升级什么就给直升机加装什么模型, 好像实现不了
              猜测:
              1. 对于编程来讲, 0才是第1个数字, 根据目前遇见的情况, 感觉很有可能是0作为功能插槽, 而后续装上广播塔以及碉堡, 则对应排队变成了1和2, 而1~5正好是装载插槽, 所以被放在了容器里
              2.在这个猜想的前提下: 假如螺旋容器的大小是5, 其实是0~5, 有6个插槽位置, 其中0是第1个, 算功能性插槽, 后面的1~5才是装载插槽


              IP属地:四川8楼2023-05-10 12:09
              回复


                IP属地:四川9楼2023-05-12 00:53
                回复
                  2026-05-07 18:40:12
                  广告
                  不感兴趣
                  开通SVIP免广告


                  IP属地:四川10楼2023-05-13 11:40
                  回复
                    在不断地请教之后,暂时得出了一个看似有效地逻辑(没能实验成功,还有细节没有处理)
                    创建新的对象给直升机时,销毁旧的需乘员。同时旧的虚乘员设置为:保持残骸


                    IP属地:四川11楼2023-05-14 10:52
                    回复