铁锈战争吧 关注:55,431贴子:267,852
  • 17回复贴,共1

【1.14生存图个人思路及部分代码讲解】

只看楼主收藏回复

①1.14部分生存图停止刷兵的原因?
刷兵需要基地,否则会停止刷兵计时导致资源差异,从而不断同步
假如主机的基地被打爆,那么全部玩家都会停止刷兵计时
②如何修复/改善此状况?
个人思路有两种
1.图外设立基地,
这是个小技巧,只需要制图者将单位的坐标设置为负数(或超出地图范围的正数)即可
例如:<object name="" type="" id="41" x="-500" y="-500" width="20" height="20">
<properties>
<property name="unit" value="commandCenter" />
<property name="team" value="0" />
</properties>
</object>
注意:每个玩家都需要这样的基地,所以别只设置一个,同时别忘了把二号基地与其他基地隔开,防止其被打爆
缺陷:被打没的玩家视野为一片漆黑(图一)
附:这个技巧还能干些别的 比如诛仙之战什么的
2.改用其他方法刷兵
可以使用新增加的刷兵代码来代替传统的生存图刷兵
例如:<object name="" type="unitAdd" id="15" x="1900" y="1040" width="20" height="20">
<properties>
<property name="spawnUnits" value="combatEngineer*2(falling=true)" />
<property name="team" value="1" />
<property name="warmup" value="5s" />
</properties>
</object>
翻译:在x1900 y1040的位置开局五秒后刷出两个二号玩家的战斗工程师(掉落形式)
我们可以通过改变刷出的单位和刷出的时间来完美的代替生存图刷兵
当然,如果是图一这种超大规模刷兵,还是老老实实用生存图吧ᕕ(ᐛ)ᕗ


来自Android客户端1楼2021-01-27 11:08回复
    其他的新代码和刷兵代码配合使用,可以达到很美妙的效果


    来自Android客户端2楼2021-01-27 11:12
    回复
      <object name="" type="mapText" id="2" x="1080" y="1080" width="60" height="60">
      <properties>
      <property name="deactivatedBy" value="ExtractorDetect" />
      <property name="style" value="arrow" />
      <property name="text" value="Ether:开启键" />
      <property name="textColor" value="#ff0000" />
      <property name="textOffsetY" value="0" />
      </properties>
      </object>


      来自Android客户端3楼2021-01-27 11:13
      收起回复
        这是地图悬浮告示
        deactivatedBy指的是停止活动条件 当后者(通常是unitDetect)被激活 这条活动(此处是悬浮告示)就会消失


        来自Android客户端4楼2021-01-27 11:19
        回复
          同样的 activatedBy是开始活动条件 可以在某一系列活动中充当开启装置


          来自Android客户端5楼2021-01-27 11:21
          回复
            也可以将unitDetect(单位检测)与刷兵代码搭配使用


            来自Android客户端6楼2021-01-27 11:24
            回复
              <object name="" type="unitDetect" id="41" x="960" y="1380" width="60" height="60">
              <properties>
              <property name="globalMessage" value="六号基地已被攻破,六号指挥官获得少量援军" />
              <property name="globalMessage_delayPerChar" value="slow" />
              <property name="id" value="liuhao" />
              <property name="maxUnits" value="0" />
              <property name="onlyMainBuildings" value="true" />
              <property name="showOnMap" value="true" />
              <property name="team" value="5" />
              </properties>
              </object>


              来自Android客户端7楼2021-01-27 11:25
              回复
                当检测到这片区域主要建筑(能造兵的)数量为0时发出全局信息“基地被攻破”并激活id“liuhao”


                来自Android客户端8楼2021-01-27 11:27
                回复
                  <object name="" type="unitAdd" id="41" x="740" y="2220" width="20" height="20">
                  <properties>
                  <property name="activatedBy" value="liuhao" />
                  <property name="spawnUnits" value="tankDestroyer*6(falling=true) , heavyTank*2(falling=true)" />
                  <property name="team" value="5" />
                  <property name="warmup" value="5s" />
                  </properties>
                  </object>


                  来自Android客户端9楼2021-01-27 11:28
                  回复
                    当检测到id“liuhao”六号被激活时,五秒后给予六号玩家一些单位于此位置


                    来自Android客户端10楼2021-01-27 11:30
                    回复
                      以上内容都是萌新对1.14战役一内新代码的一些不成熟的探索和思考,如有缺漏,欢迎各路大佬们指正和补充(๑`・ᴗ・´๑)


                      来自Android客户端11楼2021-01-27 11:34
                      收起回复
                        关于停止刷兵,理论上可以在地图信息中添加一个叫做loseCondition的property,它的value可以是allUnitsAndBuildings,allBuildings,mainBuildings,commandCenter或requiredObjectives,默认的是commandCenter。不过这条代码我使用得不多,也有过未生效的情况。楼主说的方法肯定是没问题的。
                        至于刷兵代码,不仅可以解决这个问题,同时也是自定义生存地图的方法之一。不过不论是用地图代码还是ini代码来刷兵,缺点就是工作量比较大。我觉得可以用编程中的循环语句来按照一定的规律批量生成刷兵代码(地图代码和ini代码都可以)。写循环语句是非常基础的操作,并不比做地图或者写铁锈ini困难。我建议用py语言,IDE使用jupyter或pyCharm,优点在于这两个编程软件体量比较小,只有几十兆的样子。缺点在于py环境可能稍稍有点不好配置。或者可以使用vs201x(如果只写个循环语句的话vs2010足够了),它自带c#和c++等语言,不用配置。但是缺点在于体量在一个Gb以上。
                        用循环语句写出来的刷兵机制,缺点在于比较粗糙,变化性不是很强,但也足够用了,毕竟原版的刷兵也是按照一定的规律在循环生成。而且还可以添加if语句来根据当前波次等其它条件添加一些分支,或者可以在生成刷兵代码之后额外地手动添加几个特殊波次等等。


                        IP属地:辽宁来自Android客户端13楼2021-01-29 08:42
                        收起回复
                          真是麻烦。



                          IP属地:辽宁来自Android客户端14楼2021-01-29 08:57
                          回复


                            IP属地:广东来自Android客户端15楼2021-02-02 01:07
                            回复