<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="zh-Hans-CN">
	<id>https://rustedwarfare.org/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=User</id>
	<title>RustedWarfare Wiki - 用户贡献 [zh-cn]</title>
	<link rel="self" type="application/atom+xml" href="https://rustedwarfare.org/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=User"/>
	<link rel="alternate" type="text/html" href="https://rustedwarfare.org/wiki/%E7%89%B9%E6%AE%8A:%E7%94%A8%E6%88%B7%E8%B4%A1%E7%8C%AE/User"/>
	<updated>2026-06-15T11:37:12Z</updated>
	<subtitle>用户贡献</subtitle>
	<generator>MediaWiki 1.41.1</generator>
	<entry>
		<id>https://rustedwarfare.org/index.php?title=1.15&amp;diff=879</id>
		<title>1.15</title>
		<link rel="alternate" type="text/html" href="https://rustedwarfare.org/index.php?title=1.15&amp;diff=879"/>
		<updated>2021-07-18T10:34:00Z</updated>

		<summary type="html">&lt;p&gt;User：​&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;1.15版本的更新主要以Mod特性为主，暂时没有添加新单位。&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+1.15&lt;br /&gt;
! colspan=&amp;quot;2&amp;quot; |版本更新&lt;br /&gt;
|-&lt;br /&gt;
|首次更新时间&lt;br /&gt;
|2021-07-15 10:27:34&lt;br /&gt;
|-&lt;br /&gt;
|当前类型&lt;br /&gt;
|测试版&lt;br /&gt;
|-&lt;br /&gt;
|预发行版本&lt;br /&gt;
|1.15p3&lt;br /&gt;
|}&lt;br /&gt;
== 1.15p1 ==&lt;br /&gt;
1.15p1是Rusted Warfare在1.15版本中的首次公开更新，仅支持PC版本&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+&lt;br /&gt;
!1.15p1更新日志&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;Rusted Warfare Beta - v1.15p1&#039;&#039;&#039;&lt;br /&gt;
• 在单人游戏遭遇战的高级选项和多人游戏中, 可以单独为某个玩家设置游戏选项, 例如：&lt;br /&gt;
&lt;br /&gt;
    • 现在可以为每个AI玩家设置不同的难度等级。&lt;br /&gt;
&lt;br /&gt;
    • 不同的玩家可以有不同的初始单位, 可以用来选择模组中的派系。&lt;br /&gt;
&lt;br /&gt;
    • 可以为每个玩家分别覆盖不同的单位颜色。&lt;br /&gt;
&lt;br /&gt;
    &lt;br /&gt;
&lt;br /&gt;
• 为Android版添加&amp;quot;保存到内部存储&amp;quot;的选项, 让存档/模组/自定义地图功能可以在不授予存储权限的情况下正常运作。请注意, 在卸载时游戏时内部应用存储会被Android系统一并删除。&lt;br /&gt;
&lt;br /&gt;
• 可以从模组设置界面中删除或导出模组。&lt;br /&gt;
&lt;br /&gt;
• 可以从自定义地图界面导入新地图。&lt;br /&gt;
&lt;br /&gt;
• 电脑版：添加实验性的-teamshaders命令开关。开启后将使用着色器为队伍颜色着色, 减少含大图片的模组的内存占用以及第一次应用着色时的卡顿。&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
• 添加类似于TA（横扫千军）、C&amp;amp;C（命令与征服）中的可编写模组的流式资源系统。&lt;br /&gt;
&lt;br /&gt;
    • [core]streamingCost&lt;br /&gt;
&lt;br /&gt;
       • 类似于价格, 但该单位在建造队列中或正在建造时需要消耗资金。若在建造该单位时资源耗尽, 则建造过程或建造队列将暂停。&lt;br /&gt;
&lt;br /&gt;
    • [action]streamingCost&lt;br /&gt;
&lt;br /&gt;
       • 类似于价格, 但该动作在队列中时需要消耗资金, 若在该动作在队列时资源耗尽, 排队将暂停。Flags可以用于暂停或解除触发器的暂停。类似于价格, 但在这个单位在建造队列或建造时支付费用。 如果在建造过程中资源耗尽, 建造或排队将暂停。标志可以用来暂停和解除触发器的暂停。&lt;br /&gt;
&lt;br /&gt;
    • [core]switchPriceWithStreamingCost:boolean/[action]switchPriceWithStreamingCost:boolean&lt;br /&gt;
&lt;br /&gt;
       • 快捷方式, 将streamingCost设置为price的值并清除价格。&lt;br /&gt;
&lt;br /&gt;
       • 在all-units.template中增加[core]switchPriceWithStreamingCost, 以快速将mod切换到流式资源。&lt;br /&gt;
&lt;br /&gt;
       &lt;br /&gt;
&lt;br /&gt;
• 大幅修改动态逻辑布尔值, 新增动态数字、单位、字符串类型&lt;br /&gt;
&lt;br /&gt;
    • 与其使用&amp;quot;autoTrigger: if self.energy(greaterThan=100)&amp;quot;, 不如用&amp;quot;autoTrigger: if self.energy &amp;gt; 100&amp;quot;&lt;br /&gt;
&lt;br /&gt;
    &lt;br /&gt;
&lt;br /&gt;
• 逻辑布尔值与数字的数学运算： - + * /&lt;br /&gt;
&lt;br /&gt;
    • 示例：&amp;quot;autoTrigger: if 2*self.energy + parent.energy-10 &amp;gt; 50&amp;quot;&lt;br /&gt;
&lt;br /&gt;
    &lt;br /&gt;
&lt;br /&gt;
• 动态文本, 例如: [action]text: 队伍:%{ self.teamName } 还剩 %{ parent.resource(&#039;gold&#039;) } 颗黄金。&lt;br /&gt;
&lt;br /&gt;
    • 动态文本支持已经被添加到[action]text, [action]description, [action]setUnitMemory, [action]showMessageToPlayer, [action]showMessageToAllPlayers, [action]showMessageToAllEnemyPlayers, [action]showQuickWarLogToPlayer, [action]showQuickWarLogToAllPlayers, [action]debugMessagee中。&lt;br /&gt;
&lt;br /&gt;
    &lt;br /&gt;
&lt;br /&gt;
• 增加了对多行的支持, 可以在ini的任何key上使用3个引号来开始和结束。示例：&lt;br /&gt;
 copyFrom:&amp;quot;&amp;quot;&amp;quot;&lt;br /&gt;
 ROOT:a.ini。&lt;br /&gt;
 ROOT:b.ini,&lt;br /&gt;
 ROOT:c.ini&lt;br /&gt;
 &amp;quot;&amp;quot;&amp;quot;&lt;br /&gt;
• 添加 [attack]shootDelayMultiplier, 默认为1&lt;br /&gt;
&lt;br /&gt;
• 添加 [action]setUnitStats, 允许动态地改变一些选定的字段而无需转换。 支持=/+=/-=,支持动态数字或逻辑. 可修改的字段有:maxHp, hp, maxShield, shield, shieldRegen, maxEnergy, energy, armour, mass, shootDelayMultiplier, moveSpeed, maxAttackRange.。示例: setUnitStats: maxHp+=self.energy+100, hp+=50, shieldRegen=0.5&lt;br /&gt;
&lt;br /&gt;
• 添加 [action]resetUnitStats (布尔值)&lt;br /&gt;
&lt;br /&gt;
• 添加 [action]convertTo_keepCurrentFields - 转换时不要更改这些字段, 配合setUnitStats食用更佳 (允许的字段: maxHp, maxShield, shieldRegen, maxEnergy, armour, mass, shootDelayMultiplier, moveSpeed, maxAttackRange.)&lt;br /&gt;
&lt;br /&gt;
• 添加 [action]whenBuilding_temporarilyConvertTo_keepFields - 使用whenBuilding_temporarilyConvertTo或whenBuilding_temporarilyConvertFrom时请勿更改这些字段,配合setUnitStats食用更佳。&lt;br /&gt;
&lt;br /&gt;
• 修复了whenBuilding_temporarilyConvertTo在单位类型之间闪烁的问题。&lt;br /&gt;
&lt;br /&gt;
• 修复了沙盒模式中重载单位时临时标签被重置的问题。&lt;br /&gt;
&lt;br /&gt;
• 修复了沙盒模式所有标签栏都会显示触发器调试的问题。&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
• 添加了[core]defineUnitMemory&lt;br /&gt;
&lt;br /&gt;
    • 可为自定义存储给每个单位创建独一无二的变量。&lt;br /&gt;
&lt;br /&gt;
       • 示例1：&lt;br /&gt;
&lt;br /&gt;
       [core]defineUnitMemory: boolean nukeActive, boolean laserReady, float experience, unit nextTarget, unit homeBase, string customText&lt;br /&gt;
&lt;br /&gt;
       • 示例2：&lt;br /&gt;
 [action]setUnitMemory: &amp;quot;&amp;quot;&amp;quot;&lt;br /&gt;
 customText=memory.customText+&#039;hello&#039;,&lt;br /&gt;
 nukeActive=true。&lt;br /&gt;
 experience=experience+attacking.hp,&lt;br /&gt;
 nextTarget=self.attacking.nearestUnit(withinRange=300, withTag=&#039;x&#039;, relation=&#039;enemy&#039;) &amp;quot;&amp;quot;&amp;quot;&lt;br /&gt;
• 新的逻辑布尔函数：readUnitMemory(name:string, type:string{boolean,unit,float,string}, [default])&lt;br /&gt;
&lt;br /&gt;
    • 示例：parent.readUnitMemory(&#039;nukeCountdown&#039;, type=&#039;float&#039;) .如果该单位的存储不存在该数据或保存的数据类型是错误的, 则使用默认值。&lt;br /&gt;
&lt;br /&gt;
    &lt;br /&gt;
&lt;br /&gt;
• 新增逻辑布尔函数：memory(name), 它是读取当前defineUnitMemory类型的单位的快捷方式。&lt;br /&gt;
&lt;br /&gt;
• 修复同一张图片使用不同模式时teamColoringMode的问题。&lt;br /&gt;
&lt;br /&gt;
• 新的资源快捷方式。示例：self.resource.credits和self.resource(&#039;credits&#039;)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
• 新增逻辑布尔/数字/单位/字符串函数&lt;br /&gt;
&lt;br /&gt;
    • self.maxHp() &lt;br /&gt;
&lt;br /&gt;
    • self.teamId() - 返回当前单位的队伍id。在单位和一些标记物上可用。 //译者注：原文疑似有误，此处已纠正&lt;br /&gt;
&lt;br /&gt;
    • self.x() - 返回地图上的x坐标值。在单位和标记物上可用。&lt;br /&gt;
&lt;br /&gt;
    • self.y() - 返回地图上的y坐标值。在单位和标记物上可用。&lt;br /&gt;
&lt;br /&gt;
    • self.z() - 返回地图上的z坐标值。在单位和标记物上可用。&lt;br /&gt;
&lt;br /&gt;
    • self.dir() - 返回该单位的朝向。在单位和标记上可用。&lt;br /&gt;
&lt;br /&gt;
    • self.priceCredits() - 返回该单位的费用。&lt;br /&gt;
&lt;br /&gt;
    • distance(x1,y1,x2,y2) - 计算两点之间的距离。比distanceSquared慢。&lt;br /&gt;
&lt;br /&gt;
    • distanceSquared(x1,y1,x2,y2) - 更快地计算两点之间的距离, 但结果是平方。 //译者注：更适用于比较两点距离&lt;br /&gt;
&lt;br /&gt;
    • distanceBetween(unit1, unit2) - 示例: distanceBetween(self, activeWaypointTarget) &amp;lt; 100&lt;br /&gt;
&lt;br /&gt;
    • distanceBetweenSquared(unit1, unit2) - 比distanceBetween用起来快一点点...&lt;br /&gt;
&lt;br /&gt;
    • int(x) - 移除一个数字的小数部分. 示例：int(4.2) == 4&lt;br /&gt;
&lt;br /&gt;
    • select(bool, textA, textB) - 若为true则返回文本A, 否则返回文本B。&lt;br /&gt;
&lt;br /&gt;
    • debug(logicBoolean) - 返回一个文本字符串, 帮助解释这个结果是怎么来的。可以看到嵌套逻辑、比较和运算符。&lt;br /&gt;
&lt;br /&gt;
    • str(x) - 将数字、单位或布尔值转换成字符串. 示例：str(self.energy)+&#039;x&#039;==&#039;100x&#039;&lt;br /&gt;
&lt;br /&gt;
    • substring(text,start,end) - 示例：substring(&#039;hello&#039;,0,2) == &#039;he&#039;&lt;br /&gt;
&lt;br /&gt;
    • length(string) - 以数字形式返回文本长度。&lt;br /&gt;
&lt;br /&gt;
    • squareRoot(num) - 求一个数字的平方根。&lt;br /&gt;
&lt;br /&gt;
    • min(num, min2) - 返回最小数, 示例： damage = min(self.hp, self.energy)&lt;br /&gt;
&lt;br /&gt;
    • max(num, min2) - 返回最大值, 示例： max(5, 10) == 10&lt;br /&gt;
&lt;br /&gt;
    • createMarker(x,y,[height],[teamId],[dir]) - 返回一个临时的单位标记。可以保存在自定义存储中或作为移动命令的参考, 等等。不影响游戏状态。如果不再被引用, 则自动删除。&lt;br /&gt;
&lt;br /&gt;
    • globalSearchForFirstUnit(withTag=x, relation) - 返回找到的第一个与筛选器匹配的单位。&lt;br /&gt;
&lt;br /&gt;
    • null/nullUnit - 一个空的/缺失的单位。在需要比较时很有用, 示例：self.customTarget2 != null&lt;br /&gt;
&lt;br /&gt;
• 新的逻辑布尔/单位参照体系&lt;br /&gt;
&lt;br /&gt;
    • 支持函数之间的链接, 示例: self.attachment(withTag=&#039;x&#039;).lastDamagedBy.getAsMarker()&lt;br /&gt;
&lt;br /&gt;
    • self - 这是当前单位的现有参照(在以前的版本中是唯一选项)。示例：autoTrigger: if self.energy &amp;gt; 100&lt;br /&gt;
&lt;br /&gt;
    • attachment([slot], [withTag])&lt;br /&gt;
&lt;br /&gt;
    • attacking - 单位正在攻击的当前目标，不一定是当前的路径点目标。&lt;br /&gt;
&lt;br /&gt;
    • lastDamagedBy - 攻击此单位的最后一个单位&lt;br /&gt;
&lt;br /&gt;
    • parent - 父级 - 运输单位或附带单位的父级。 示例：autoTrigger: if parent.energy &amp;gt; 100&lt;br /&gt;
&lt;br /&gt;
    • activeWaypointTarget 当前动作的路径点目标。包括攻击、运输、修复等动作。&lt;br /&gt;
&lt;br /&gt;
    • customTarget1 - 自定义存储, 默认为建造此单位的单位。&lt;br /&gt;
&lt;br /&gt;
    • customTarget2 - 自定义存储, 默认为空。&lt;br /&gt;
&lt;br /&gt;
    • nearestUnit(withinRange=500, withTag=&#039;x&#039;, relation=&#039;any&#039;) - 按条件查找一个单位,该代码运行较慢,不建议在autoTrigger中使用&lt;br /&gt;
&lt;br /&gt;
    • getAsMarker() - 立即在单位的当前位置创建临时标记。标记创建速度快并在不被引用时自动移除. 它不会链接到任何单位，并且在单位死亡时仍然存在，在创建源移动时仍然保持不变。&lt;br /&gt;
&lt;br /&gt;
    • getOffsetAbsolute([x],[y],[height]) - 返回带有绝对偏移量的标记。&lt;br /&gt;
&lt;br /&gt;
    • getOffsetRelative([x],[y],[height],[dirOffset]) - 返回带有相对偏移量的标记。&lt;br /&gt;
&lt;br /&gt;
    • thisActionTarget - 在[action_NAME] / [hiddenAction_NAME]中使用，以获得动作的目标、位置、自动触发事件源等等。会根据动作触发源设置为单位、标记或空值。注意：当用于界面文本之类的字段时它将始终为空，因为该值只在动作事件上有效。如果你想让它显示在界面上，请将该值保存到自定义存储中。&lt;br /&gt;
&lt;br /&gt;
    • thisActionTarget - 示例：fireTurretXAtGround: mainGun (thisActionTarget==带地面位置的标记)&lt;br /&gt;
&lt;br /&gt;
    • autoTriggerOnEvent: tookDamage (thisActionTarget==造成伤害的单位)&lt;br /&gt;
&lt;br /&gt;
    • autoTriggerOnEvent: killedAnyUnit (thisActionTarget==被摧毁的单位)&lt;br /&gt;
&lt;br /&gt;
    • autoTriggerOnEvent: transportingNewUnit (thisActionTarget==被运输的单位)&lt;br /&gt;
&lt;br /&gt;
    • autoTriggerOnEvent: transportUnloadedOrRemovedUnit (thisActionTarget==被卸载的单位)&lt;br /&gt;
&lt;br /&gt;
    • autoTriggerOnEvent: queuedUnitFinished (thisActionTarget==被建造的新单位)&lt;br /&gt;
&lt;br /&gt;
    • autoTriggerOnEvent: touchTargetSuccess (thisActionTarget==碰到的目标)&lt;br /&gt;
&lt;br /&gt;
    • alsoTriggerAction: x (thisActionTarget==与原动作相同)&lt;br /&gt;
&lt;br /&gt;
    • [turret]onShoot_triggerActions: x  (thisActionTarget==被击中的目标)&lt;br /&gt;
&lt;br /&gt;
    • takeResources_triggerActionIfAnyCollected: x (thisActionTarget==带有资源的目标)&lt;br /&gt;
&lt;br /&gt;
    • addWaypoint_triggerActionIfMatched: x (thisActionTarget == 移动动作的标记/攻击的目标等。注：如果只是想搜索，请使用addWaypoint_maxTime: 0)&lt;br /&gt;
&lt;br /&gt;
• 向所有单位添加了customTarget1/customTarget2。可用于存储对另一个单元的引用。CustomTarget1默认为建造该单位的可移动单位或建筑物。适用于航空母舰、步兵小队、传送器链接等([core]defineUnitMemory还可用于添加更多内容)&lt;br /&gt;
&lt;br /&gt;
    • 添加了 [action]takeResources_excludeUnitsWithoutCustomTarget1EqualTo&lt;br /&gt;
&lt;br /&gt;
    • 添加了 [action]takeResources_saveFirstUnitToCustomTarget1&lt;br /&gt;
&lt;br /&gt;
    • 添加了 [action]takeResources_saveFirstUnitToCustomTarget2&lt;br /&gt;
&lt;br /&gt;
    • 添加了 [action]setCustomTarget1 - 单位参照&lt;br /&gt;
&lt;br /&gt;
    • 添加了 [action]setCustomTarget2 - 单位参照&lt;br /&gt;
&lt;br /&gt;
    • 添加了 [action]swapCustomTarget1And2 - 布尔值&lt;br /&gt;
&lt;br /&gt;
    • 在动态逻辑中添加了self.customTarget1&lt;br /&gt;
&lt;br /&gt;
    • 在动态逻辑中添加了self.customTarget2&lt;br /&gt;
&lt;br /&gt;
• 添加了[action]setResourcesWithLogic/[action]addResourcesWithLogic&lt;br /&gt;
&lt;br /&gt;
    • 示例: setResourcesWithLogic: hp=self.parent.hp - 10, energy = self.energy / 2&lt;br /&gt;
&lt;br /&gt;
    • 示例: addResourcesWithLogic: hp = select( self.parent.energy&amp;gt;5, 10, 20 )&lt;br /&gt;
&lt;br /&gt;
• 添加了[core]autoTriggerCheckRate 和 [core]autoTriggerCheckRate&lt;br /&gt;
&lt;br /&gt;
    •  可用选项： everyFrame (默认值), every4Frames, every8Frames &lt;br /&gt;
&lt;br /&gt;
    • 注: 所有的触发器，无论检查速率如何，都会在首次创建时和自动触发器冷却时间后进行检查。每4帧/每8帧的检查率是随机分布在各单位之间的，这样它们就不会全部出现在同一帧上，使其更流畅。对于具有复杂自动触发器的mods来说，在all-units.template中添加[core]autoTriggerCheckRate:every8Frames后会有很大的性能提升。通常自动触发器的性能会提高8倍。在极少数情况下，一些触发器可能仍然需要逐帧检查，所以这不是一个默认值。&lt;br /&gt;
&lt;br /&gt;
• 新的单位生产/生成参数：&lt;br /&gt;
&lt;br /&gt;
    • 添加了spawnSource(unitRef) - 影响位置和队伍。&lt;br /&gt;
&lt;br /&gt;
       • 示例: [action]spawnUnits: tank(spawnSource=memory.lastLocation)  &lt;br /&gt;
&lt;br /&gt;
    • 添加了copyWaypointsFrom(unitRef) - 将目标上的所有路点复制到创建的单位上。&lt;br /&gt;
&lt;br /&gt;
       • 示例: spawnUnits: tank(copyWaypointsFrom=self)&lt;br /&gt;
&lt;br /&gt;
• 向${}模板板块添加了系数操作符(%)&lt;br /&gt;
&lt;br /&gt;
• [turret]unloadUpToXUnitsAndGiveAttackOrder - 在炮塔位置卸载单位(需要测试)&lt;br /&gt;
&lt;br /&gt;
• 添加了 [core]borrowResourcesWhileBuilt&lt;br /&gt;
&lt;br /&gt;
• 类似于[core]borrowResourcesWhileAlive但在单位建成后才会生效。主要对房屋之类的建筑有用，这些建筑有负的资源，可以加到单位上限等。&lt;br /&gt;
&lt;br /&gt;
• 添加了 [action]takeResources_includeReference &lt;br /&gt;
&lt;br /&gt;
    •  示例: [action]takeResources_includeReference: self.lastDamagedBy&lt;br /&gt;
&lt;br /&gt;
• 添加了 [action]addWaypoint_target_fromReference - 单位参照&lt;br /&gt;
&lt;br /&gt;
• 修复Android版自定义抛射体的imageShadow不显示的问题。&lt;br /&gt;
&lt;br /&gt;
• 以及此处未列出的其它大量修复。&lt;br /&gt;
|}&lt;br /&gt;
== 你知道吗 ==&lt;br /&gt;
*1.15p1版本有两次更新，其中第二次更新于2021-07-16 19:39:05并解决了玩家选项界面的崩溃问题。 [[File:glitch in rw1-15.png|缩略图|393x393像素|在32位Oracle JRE中运行的Rusted Warfare 1.15p1的bug，若是在游戏自带的OpenJDK中运行则会立即崩溃。第二次更新修复了此问题。]]&lt;/div&gt;</summary>
		<author><name>User</name></author>
	</entry>
	<entry>
		<id>https://rustedwarfare.org/index.php?title=1.15&amp;diff=871</id>
		<title>1.15</title>
		<link rel="alternate" type="text/html" href="https://rustedwarfare.org/index.php?title=1.15&amp;diff=871"/>
		<updated>2021-07-18T02:43:34Z</updated>

		<summary type="html">&lt;p&gt;User：​&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;1.15版本的更新主要以Mod特性为主，暂时没有添加新单位。&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+1.15&lt;br /&gt;
! colspan=&amp;quot;2&amp;quot; |版本更新&lt;br /&gt;
|-&lt;br /&gt;
|首次更新时间&lt;br /&gt;
|2021-07-15 10:27:34&lt;br /&gt;
|-&lt;br /&gt;
|当前类型&lt;br /&gt;
|测试版&lt;br /&gt;
|-&lt;br /&gt;
|预发行版本&lt;br /&gt;
|1.15p1&lt;br /&gt;
|}&lt;br /&gt;
== 1.15p1 ==&lt;br /&gt;
1.15p1是Rusted Warfare在1.15版本中的首次公开更新，仅支持PC版本&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+&lt;br /&gt;
!1.15p1更新日志&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;Rusted Warfare Beta - v1.15p1&#039;&#039;&#039;&lt;br /&gt;
• 在单人游戏遭遇战的高级选项和多人游戏中, 可以单独为某个玩家设置游戏选项, 例如：&lt;br /&gt;
&lt;br /&gt;
    • 现在可以为每个AI玩家设置不同的难度等级。&lt;br /&gt;
&lt;br /&gt;
    • 不同的玩家可以有不同的初始单位, 可以用来选择模组中的派系。&lt;br /&gt;
&lt;br /&gt;
    • 可以为每个玩家分别覆盖不同的单位颜色。&lt;br /&gt;
&lt;br /&gt;
    &lt;br /&gt;
&lt;br /&gt;
• 为Android版添加&amp;quot;保存到内部存储&amp;quot;的选项, 让存档/模组/自定义地图功能可以在不授予存储权限的情况下正常运作。请注意, 在卸载时游戏时内部应用存储会被Android系统一并删除。&lt;br /&gt;
&lt;br /&gt;
• 可以从模组设置界面中删除或导出模组。&lt;br /&gt;
&lt;br /&gt;
• 可以从自定义地图界面导入新地图。&lt;br /&gt;
&lt;br /&gt;
• 电脑版：添加实验性的-teamshaders命令开关。开启后将使用着色器为队伍颜色着色, 减少含大图片的模组的内存占用以及第一次应用着色时的卡顿。&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
• 添加类似于TA（横扫千军）、C&amp;amp;C（命令与征服）中的可编写模组的流式资源系统。&lt;br /&gt;
&lt;br /&gt;
    • [core]streamingCost&lt;br /&gt;
&lt;br /&gt;
       • 类似于价格, 但该单位在建造队列中或正在建造时需要消耗资金。若在建造该单位时资源耗尽, 则建造过程或建造队列将暂停。&lt;br /&gt;
&lt;br /&gt;
    • [action]streamingCost&lt;br /&gt;
&lt;br /&gt;
       • 类似于价格, 但该动作在队列中时需要消耗资金, 若在该动作在队列时资源耗尽, 排队将暂停。Flags可以用于暂停或解除触发器的暂停。类似于价格, 但在这个单位在建造队列或建造时支付费用。 如果在建造过程中资源耗尽, 建造或排队将暂停。标志可以用来暂停和解除触发器的暂停。&lt;br /&gt;
&lt;br /&gt;
    • [core]switchPriceWithStreamingCost:boolean/[action]switchPriceWithStreamingCost:boolean&lt;br /&gt;
&lt;br /&gt;
       • 快捷方式, 将streamingCost设置为price的值并清除价格。&lt;br /&gt;
&lt;br /&gt;
       • 在all-units.template中增加[core]switchPriceWithStreamingCost, 以快速将mod切换到流式资源。&lt;br /&gt;
&lt;br /&gt;
       &lt;br /&gt;
&lt;br /&gt;
• 大幅修改动态逻辑布尔值, 新增动态数字、单位、字符串类型&lt;br /&gt;
&lt;br /&gt;
    • 与其使用&amp;quot;autoTrigger: if self.energy(greaterThan=100)&amp;quot;, 不如用&amp;quot;autoTrigger: if self.energy &amp;gt; 100&amp;quot;&lt;br /&gt;
&lt;br /&gt;
    &lt;br /&gt;
&lt;br /&gt;
• 逻辑布尔值与数字的数学运算： - + * /&lt;br /&gt;
&lt;br /&gt;
    • 示例：&amp;quot;autoTrigger: if 2*self.energy + parent.energy-10 &amp;gt; 50&amp;quot;&lt;br /&gt;
&lt;br /&gt;
    &lt;br /&gt;
&lt;br /&gt;
• 动态文本, 例如: [action]text: 队伍:%{ self.teamName } 还剩 %{ parent.resource(&#039;gold&#039;) } 颗黄金。&lt;br /&gt;
&lt;br /&gt;
    • 动态文本支持已经被添加到[action]text, [action]description, [action]setUnitMemory, [action]showMessageToPlayer, [action]showMessageToAllPlayers, [action]showMessageToAllEnemyPlayers, [action]showQuickWarLogToPlayer, [action]showQuickWarLogToAllPlayers, [action]debugMessagee中。&lt;br /&gt;
&lt;br /&gt;
    &lt;br /&gt;
&lt;br /&gt;
• 增加了对多行的支持, 可以在ini的任何key上使用3个引号来开始和结束。示例：&lt;br /&gt;
 copyFrom:&amp;quot;&amp;quot;&amp;quot;&lt;br /&gt;
 ROOT:a.ini。&lt;br /&gt;
 ROOT:b.ini,&lt;br /&gt;
 ROOT:c.ini&lt;br /&gt;
 &amp;quot;&amp;quot;&amp;quot;&lt;br /&gt;
• 添加 [attack]shootDelayMultiplier, 默认为1&lt;br /&gt;
&lt;br /&gt;
• 添加 [action]setUnitStats, 允许动态地改变一些选定的字段而无需转换。 支持=/+=/-=,支持动态数字或逻辑. 可修改的字段有:maxHp, hp, maxShield, shield, shieldRegen, maxEnergy, energy, armour, mass, shootDelayMultiplier, moveSpeed, maxAttackRange.。示例: setUnitStats: maxHp+=self.energy+100, hp+=50, shieldRegen=0.5&lt;br /&gt;
&lt;br /&gt;
• 添加 [action]resetUnitStats (布尔值)&lt;br /&gt;
&lt;br /&gt;
• 添加 [action]convertTo_keepCurrentFields - 转换时不要更改这些字段, 配合setUnitStats食用更佳 (允许的字段: maxHp, maxShield, shieldRegen, maxEnergy, armour, mass, shootDelayMultiplier, moveSpeed, maxAttackRange.)&lt;br /&gt;
&lt;br /&gt;
• 添加 [action]whenBuilding_temporarilyConvertTo_keepFields - 使用whenBuilding_temporarilyConvertTo或whenBuilding_temporarilyConvertFrom时请勿更改这些字段,配合setUnitStats食用更佳。&lt;br /&gt;
&lt;br /&gt;
• 修复了whenBuilding_temporarilyConvertTo在单位类型之间闪烁的问题。&lt;br /&gt;
&lt;br /&gt;
• 修复了沙盒模式中重载单位时临时标签被重置的问题。&lt;br /&gt;
&lt;br /&gt;
• 修复了沙盒模式所有标签栏都会显示触发器调试的问题。&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
• 添加了[core]defineUnitMemory&lt;br /&gt;
&lt;br /&gt;
    • 可为自定义存储给每个单位创建独一无二的变量。&lt;br /&gt;
&lt;br /&gt;
       • 示例1：&lt;br /&gt;
&lt;br /&gt;
       [core]defineUnitMemory: boolean nukeActive, boolean laserReady, float experience, unit nextTarget, unit homeBase, string customText&lt;br /&gt;
&lt;br /&gt;
       • 示例2：&lt;br /&gt;
 [action]setUnitMemory: &amp;quot;&amp;quot;&amp;quot;&lt;br /&gt;
 customText=memory.customText+&#039;hello&#039;,&lt;br /&gt;
 nukeActive=true。&lt;br /&gt;
 experience=experience+attacking.hp,&lt;br /&gt;
 nextTarget=self.attacking.nearestUnit(withinRange=300, withTag=&#039;x&#039;, relation=&#039;enemy&#039;) &amp;quot;&amp;quot;&amp;quot;&lt;br /&gt;
• 新的逻辑布尔函数：readUnitMemory(name:string, type:string{boolean,unit,float,string}, [default])&lt;br /&gt;
&lt;br /&gt;
    • 示例：parent.readUnitMemory(&#039;nukeCountdown&#039;, type=&#039;float&#039;) .如果该单位的存储不存在该数据或保存的数据类型是错误的, 则使用默认值。&lt;br /&gt;
&lt;br /&gt;
    &lt;br /&gt;
&lt;br /&gt;
• 新增逻辑布尔函数：memory(name), 它是读取当前defineUnitMemory类型的单位的快捷方式。&lt;br /&gt;
&lt;br /&gt;
• 修复同一张图片使用不同模式时teamColoringMode的问题。&lt;br /&gt;
&lt;br /&gt;
• 新的资源快捷方式。示例：self.resource.credits和self.resource(&#039;credits&#039;)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
• 新增逻辑布尔/数字/单位/字符串函数&lt;br /&gt;
&lt;br /&gt;
    • self.maxHp() &lt;br /&gt;
&lt;br /&gt;
    • self.teamId() - 返回当前单位的队伍id。在单位和一些标记物上可用。 //译者注：原文疑似有误，此处已纠正&lt;br /&gt;
&lt;br /&gt;
    • self.x() - 返回地图上的x坐标值。在单位和标记物上可用。&lt;br /&gt;
&lt;br /&gt;
    • self.y() - 返回地图上的y坐标值。在单位和标记物上可用。&lt;br /&gt;
&lt;br /&gt;
    • self.z() - 返回地图上的z坐标值。在单位和标记物上可用。&lt;br /&gt;
&lt;br /&gt;
    • self.dir() - 返回该单位的朝向。在单位和标记上可用。&lt;br /&gt;
&lt;br /&gt;
    • self.priceCredits() - 返回该单位的费用。&lt;br /&gt;
&lt;br /&gt;
    • distance(x1,y1,x2,y2) - 计算两点之间的距离。比distanceSquared慢。&lt;br /&gt;
&lt;br /&gt;
    • distanceSquared(x1,y1,x2,y2) - 更快地计算两点之间的距离, 但结果是平方。 //译者注：更适用于比较两点距离&lt;br /&gt;
&lt;br /&gt;
    • distanceBetween(unit1, unit2) - 示例: distanceBetween(self, activeWaypointTarget) &amp;lt; 100&lt;br /&gt;
&lt;br /&gt;
    • distanceBetweenSquared(unit1, unit2) - 比distanceBetween用起来快一点点...&lt;br /&gt;
&lt;br /&gt;
    • int(x) - 移除一个数字的小数部分. 示例：int(4.2) == 4&lt;br /&gt;
&lt;br /&gt;
    • select(bool, textA, textB) - 若为true则返回文本A, 否则返回文本B。&lt;br /&gt;
&lt;br /&gt;
    • debug(logicBoolean) - 返回一个文本字符串, 帮助解释这个结果是怎么来的。可以看到嵌套逻辑、比较和运算符。&lt;br /&gt;
&lt;br /&gt;
    • str(x) - 将数字、单位或布尔值转换成字符串. 示例：str(self.energy)+&#039;x&#039;==&#039;100x&#039;&lt;br /&gt;
&lt;br /&gt;
    • substring(text,start,end) - 示例：substring(&#039;hello&#039;,0,2) == &#039;he&#039;&lt;br /&gt;
&lt;br /&gt;
    • length(string) - 以数字形式返回文本长度。&lt;br /&gt;
&lt;br /&gt;
    • squareRoot(num) - 求一个数字的平方根。&lt;br /&gt;
&lt;br /&gt;
    • min(num, min2) - 返回最小数, 示例： damage = min(self.hp, self.energy)&lt;br /&gt;
&lt;br /&gt;
    • max(num, min2) - 返回最大值, 示例： max(5, 10) == 10&lt;br /&gt;
&lt;br /&gt;
    • createMarker(x,y,[height],[teamId],[dir]) - 返回一个临时的单位标记。可以保存在自定义存储中或作为移动命令的参考, 等等。不影响游戏状态。如果不再被引用, 则自动删除。&lt;br /&gt;
&lt;br /&gt;
    • globalSearchForFirstUnit(withTag=x, relation) - 返回找到的第一个与筛选器匹配的单位。&lt;br /&gt;
&lt;br /&gt;
    • null/nullUnit - 一个空的/缺失的单位。在需要比较时很有用, 示例：self.customTarget2 != null&lt;br /&gt;
&lt;br /&gt;
• 新的逻辑布尔/单位参照体系&lt;br /&gt;
&lt;br /&gt;
    • 支持函数之间的链接, 示例: self.attachment(withTag=&#039;x&#039;).lastDamagedBy.getAsMarker()&lt;br /&gt;
&lt;br /&gt;
    • self - 这是当前单位的现有参照(在以前的版本中是唯一选项)。示例：autoTrigger: if self.energy &amp;gt; 100&lt;br /&gt;
&lt;br /&gt;
    • attachment([slot], [withTag])&lt;br /&gt;
&lt;br /&gt;
    • attacking - 单位正在攻击的当前目标，不一定是当前的路径点目标。&lt;br /&gt;
&lt;br /&gt;
    • lastDamagedBy - 攻击此单位的最后一个单位&lt;br /&gt;
&lt;br /&gt;
    • parent - 父级 - 运输单位或附带单位的父级。 示例：autoTrigger: if parent.energy &amp;gt; 100&lt;br /&gt;
&lt;br /&gt;
    • activeWaypointTarget 当前动作的路径点目标。包括攻击、运输、修复等动作。&lt;br /&gt;
&lt;br /&gt;
    • customTarget1 - 自定义存储, 默认为建造此单位的单位。&lt;br /&gt;
&lt;br /&gt;
    • customTarget2 - 自定义存储, 默认为空。&lt;br /&gt;
&lt;br /&gt;
    • nearestUnit(withinRange=500, withTag=&#039;x&#039;, relation=&#039;any&#039;) - 按条件查找一个单位,该代码运行较慢,不建议在autoTrigger中使用&lt;br /&gt;
&lt;br /&gt;
    • getAsMarker() - 立即在单位的当前位置创建临时标记。标记创建速度快并在不被引用时自动移除. 它不会链接到任何单位，并且在单位死亡时仍然存在，在创建源移动时仍然保持不变。&lt;br /&gt;
&lt;br /&gt;
    • getOffsetAbsolute([x],[y],[height]) - 返回带有绝对偏移量的标记。&lt;br /&gt;
&lt;br /&gt;
    • getOffsetRelative([x],[y],[height],[dirOffset]) - 返回带有相对偏移量的标记。&lt;br /&gt;
&lt;br /&gt;
    • thisActionTarget - 在[action_NAME] / [hiddenAction_NAME]中使用，以获得动作的目标、位置、自动触发事件源等等。会根据动作触发源设置为单位、标记或空值。注意：当用于界面文本之类的字段时它将始终为空，因为该值只在动作事件上有效。如果你想让它显示在界面上，请将该值保存到自定义存储中。&lt;br /&gt;
&lt;br /&gt;
    • thisActionTarget - 示例：fireTurretXAtGround: mainGun (thisActionTarget==带地面位置的标记)&lt;br /&gt;
&lt;br /&gt;
    • autoTriggerOnEvent: tookDamage (thisActionTarget==造成伤害的单位)&lt;br /&gt;
&lt;br /&gt;
    • autoTriggerOnEvent: killedAnyUnit (thisActionTarget==被摧毁的单位)&lt;br /&gt;
&lt;br /&gt;
    • autoTriggerOnEvent: transportingNewUnit (thisActionTarget==被运输的单位)&lt;br /&gt;
&lt;br /&gt;
    • autoTriggerOnEvent: transportUnloadedOrRemovedUnit (thisActionTarget==被卸载的单位)&lt;br /&gt;
&lt;br /&gt;
    • autoTriggerOnEvent: queuedUnitFinished (thisActionTarget==被建造的新单位)&lt;br /&gt;
&lt;br /&gt;
    • autoTriggerOnEvent: touchTargetSuccess (thisActionTarget==碰到的目标)&lt;br /&gt;
&lt;br /&gt;
    • alsoTriggerAction: x (thisActionTarget==与原动作相同)&lt;br /&gt;
&lt;br /&gt;
    • [turret]onShoot_triggerActions: x  (thisActionTarget==被击中的目标)&lt;br /&gt;
&lt;br /&gt;
    • takeResources_triggerActionIfAnyCollected: x (thisActionTarget==带有资源的目标)&lt;br /&gt;
&lt;br /&gt;
    • addWaypoint_triggerActionIfMatched: x (thisActionTarget == 移动动作的标记/攻击的目标等。注：如果只是想搜索，请使用addWaypoint_maxTime: 0)&lt;br /&gt;
&lt;br /&gt;
• 向所有单位添加了customTarget1/customTarget2。可用于存储对另一个单元的引用。CustomTarget1默认为建造该单位的可移动单位或建筑物。适用于航空母舰、步兵小队、传送器链接等([core]defineUnitMemory还可用于添加更多内容)&lt;br /&gt;
&lt;br /&gt;
    • 添加了 [action]takeResources_excludeUnitsWithoutCustomTarget1EqualTo&lt;br /&gt;
&lt;br /&gt;
    • 添加了 [action]takeResources_saveFirstUnitToCustomTarget1&lt;br /&gt;
&lt;br /&gt;
    • 添加了 [action]takeResources_saveFirstUnitToCustomTarget2&lt;br /&gt;
&lt;br /&gt;
    • 添加了 [action]setCustomTarget1 - 单位参照&lt;br /&gt;
&lt;br /&gt;
    • 添加了 [action]setCustomTarget2 - 单位参照&lt;br /&gt;
&lt;br /&gt;
    • 添加了 [action]swapCustomTarget1And2 - 布尔值&lt;br /&gt;
&lt;br /&gt;
    • 在动态逻辑中添加了self.customTarget1&lt;br /&gt;
&lt;br /&gt;
    • 在动态逻辑中添加了self.customTarget2&lt;br /&gt;
&lt;br /&gt;
• 添加了[action]setResourcesWithLogic/[action]addResourcesWithLogic&lt;br /&gt;
&lt;br /&gt;
    • 示例: setResourcesWithLogic: hp=self.parent.hp - 10, energy = self.energy / 2&lt;br /&gt;
&lt;br /&gt;
    • 示例: addResourcesWithLogic: hp = select( self.parent.energy&amp;gt;5, 10, 20 )&lt;br /&gt;
&lt;br /&gt;
• 添加了[core]autoTriggerCheckRate 和 [core]autoTriggerCheckRate&lt;br /&gt;
&lt;br /&gt;
    •  可用选项： everyFrame (默认值), every4Frames, every8Frames &lt;br /&gt;
&lt;br /&gt;
    • 注: 所有的触发器，无论检查速率如何，都会在首次创建时和自动触发器冷却时间后进行检查。每4帧/每8帧的检查率是随机分布在各单位之间的，这样它们就不会全部出现在同一帧上，使其更流畅。对于具有复杂自动触发器的mods来说，在all-units.template中添加[core]autoTriggerCheckRate:every8Frames后会有很大的性能提升。通常自动触发器的性能会提高8倍。在极少数情况下，一些触发器可能仍然需要逐帧检查，所以这不是一个默认值。&lt;br /&gt;
&lt;br /&gt;
• 新的单位生产/生成参数：&lt;br /&gt;
&lt;br /&gt;
    • 添加了spawnSource(unitRef) - 影响位置和队伍。&lt;br /&gt;
&lt;br /&gt;
       • 示例: [action]spawnUnits: tank(spawnSource=memory.lastLocation)  &lt;br /&gt;
&lt;br /&gt;
    • 添加了copyWaypointsFrom(unitRef) - 将目标上的所有路点复制到创建的单位上。&lt;br /&gt;
&lt;br /&gt;
       • 示例: spawnUnits: tank(copyWaypointsFrom=self)&lt;br /&gt;
&lt;br /&gt;
• 向${}模板板块添加了系数操作符(%)&lt;br /&gt;
&lt;br /&gt;
• [turret]unloadUpToXUnitsAndGiveAttackOrder - 在炮塔位置卸载单位(需要测试)&lt;br /&gt;
&lt;br /&gt;
• 添加了 [core]borrowResourcesWhileBuilt&lt;br /&gt;
&lt;br /&gt;
• 类似于[core]borrowResourcesWhileAlive但在单位建成后才会生效。主要对房屋之类的建筑有用，这些建筑有负的资源，可以加到单位上限等。&lt;br /&gt;
&lt;br /&gt;
• 添加了 [action]takeResources_includeReference &lt;br /&gt;
&lt;br /&gt;
    •  示例: [action]takeResources_includeReference: self.lastDamagedBy&lt;br /&gt;
&lt;br /&gt;
• 添加了 [action]addWaypoint_target_fromReference - 单位参照&lt;br /&gt;
&lt;br /&gt;
• 修复Android版自定义抛射体的imageShadow不显示的问题。&lt;br /&gt;
&lt;br /&gt;
• 以及此处未列出的其它大量修复。&lt;br /&gt;
|}&lt;br /&gt;
== 你知道吗 ==&lt;br /&gt;
* 1.15p1版本有两次更新，其中第二次更新于2021-07-16 19:39:05并解决了玩家选项界面的崩溃问题。[请求来源]&lt;/div&gt;</summary>
		<author><name>User</name></author>
	</entry>
</feed>