<?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=GMBOX</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=GMBOX"/>
	<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/GMBOX"/>
	<updated>2026-04-21T04:49:18Z</updated>
	<subtitle>用户贡献</subtitle>
	<generator>MediaWiki 1.41.1</generator>
	<entry>
		<id>https://rustedwarfare.org/index.php?title=%E5%8D%95%E4%BD%8D%E5%BC%95%E7%94%A8&amp;diff=4769</id>
		<title>单位引用</title>
		<link rel="alternate" type="text/html" href="https://rustedwarfare.org/index.php?title=%E5%8D%95%E4%BD%8D%E5%BC%95%E7%94%A8&amp;diff=4769"/>
		<updated>2026-02-25T05:43:26Z</updated>

		<summary type="html">&lt;p&gt;GMBOX：​&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;br /&gt;
&#039;&#039;&#039;单位引用&#039;&#039;&#039;（Unit References，缩写：unitref）是铁锈战争[[1.15]]新加入的单位选择器，可引用符合条件的单位。&lt;br /&gt;
&lt;br /&gt;
==查询==&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+单位引用&lt;br /&gt;
|标记&lt;br /&gt;
|getAsMarker()&lt;br /&gt;
getOffsetRelative()&lt;br /&gt;
&lt;br /&gt;
getOffsetAbsolute()&lt;br /&gt;
&lt;br /&gt;
createMarker()&lt;br /&gt;
|-&lt;br /&gt;
|变量引用&lt;br /&gt;
|thisActionTarget&lt;br /&gt;
eventSource&lt;br /&gt;
|-&lt;br /&gt;
|函数引用&lt;br /&gt;
|attachment()&lt;br /&gt;
transporting()&lt;br /&gt;
&lt;br /&gt;
nearestUnit()&lt;br /&gt;
&lt;br /&gt;
globalSearchForFirstUnit()&lt;br /&gt;
&lt;br /&gt;
self&lt;br /&gt;
&lt;br /&gt;
attacking&lt;br /&gt;
&lt;br /&gt;
lastDamagedBy&lt;br /&gt;
&lt;br /&gt;
parent&lt;br /&gt;
&lt;br /&gt;
activeWaypointTarget&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|存储引用&lt;br /&gt;
|customTarget1&lt;br /&gt;
customTarget2&lt;br /&gt;
|-&lt;br /&gt;
|空引用&lt;br /&gt;
|nullUnit&lt;br /&gt;
|}&lt;br /&gt;
==标记==&lt;br /&gt;
你可立即创建一个临时标记，可用来反映位置（Position）、朝向（Direction）、高度（Height）、队伍编号（Team ID），且不需要用到时会自动销毁，不隶属任何单位也不受单位后续行为的影响。&lt;br /&gt;
标记可分为两种，照铁锈战争的说法，一种是&#039;&#039;&#039;获取&#039;&#039;&#039;（get...），另一种是&#039;&#039;&#039;创建&#039;&#039;&#039;(create...)。获取会在以单位的基础创建标记，而&#039;&#039;&#039;创建&#039;&#039;&#039;完全与创建它的单位无关。&lt;br /&gt;
===标记的格式（注：方括号参数为选填）===&lt;br /&gt;
&amp;lt;p&amp;gt;获取：&amp;lt;code&amp;gt;getAsMarker()&amp;lt;/code&amp;gt;&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;相对：&amp;lt;code&amp;gt;getOffsetRelative([x], [y], [height], [dirOffset])&amp;lt;/code&amp;gt;&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;绝对：&amp;lt;code&amp;gt;getOffsetAbsolute([x], [y], [height])&amp;lt;/code&amp;gt;&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;创建：&amp;lt;code&amp;gt;createMarker(x, y, [height], [teamId], [dir])&amp;lt;/code&amp;gt;&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===标记的用法===&lt;br /&gt;
想直接获取当前位置等信息可以使用&amp;lt;code&amp;gt;getAsMarker&amp;lt;/code&amp;gt;。&lt;br /&gt;
铁锈战争为偏移提供了两种方案，一种是&#039;&#039;&#039;相对偏移&#039;&#039;&#039;，不止受单位位置、高度，还受朝向影响。通俗易懂就是你坐在一辆车上，你当然可以移动、旋转（&amp;lt;code&amp;gt;dirOffset&amp;lt;/code&amp;gt;），但车移动、旋转你也必须移动、旋转。&lt;br /&gt;
另一种是&#039;&#039;&#039;绝对偏移&#039;&#039;&#039;，只受单位位置、高度影响，比如单位坐标(1000, 1000)，向左偏移5个单位（995, 1000）。&lt;br /&gt;
&#039;&#039;&#039;创建标记&#039;&#039;&#039;是直接在地图上创建一个标记，队伍编号可由自己决定，可以注意的是创建标记的(x, y)必须要填，但铁锈战争允许省略&amp;lt;code&amp;gt;(x=, y=)&amp;lt;/code&amp;gt;。&lt;br /&gt;
&lt;br /&gt;
{{折叠|标记的例子|&amp;lt;pre&amp;gt;&lt;br /&gt;
[hiddenAction_teleport]&lt;br /&gt;
# 传送到以该单位朝向角为基础再偏移自定义计时器数量角度的方向纵轴为十的位置。&lt;br /&gt;
teleportTo: getOffsetRelative( y = 10, dirOffset = self.customTimer )&lt;br /&gt;
&lt;br /&gt;
[hiddenAction_strike]&lt;br /&gt;
# 炮弹发射到以路径点为中心最近标签为前哨的我方单位。&lt;br /&gt;
fireXTurretAtGround: 1&lt;br /&gt;
fireXTurretAtGround_withTarget: createMarker( activeWaypointTarget.x, activeWaypointTarget.y, teamId = self.teamId ).nearestUnit( withinRange = 1500, withTag = &amp;quot;outpost&amp;quot;, relation = &amp;quot;own&amp;quot; )&lt;br /&gt;
&amp;lt;/pre&amp;gt;}}&lt;br /&gt;
&lt;br /&gt;
==变量引用==&lt;br /&gt;
变量引用只能存在于&#039;&#039;&#039;行动链&#039;&#039;&#039;（Action Chain），可用&#039;&#039;&#039;也触发行动&#039;&#039;&#039;（&amp;lt;code&amp;gt;alsoTriggerAction&amp;lt;/code&amp;gt;）或&#039;&#039;&#039;也加入队列（&#039;&#039;&#039;&amp;lt;code&amp;gt;alsoQueueAction&amp;lt;/code&amp;gt;）将其传递下去，连续&amp;lt;code&amp;gt;alsoTriggerAction&amp;lt;/code&amp;gt;或&amp;lt;code&amp;gt;alsoQueueAction&amp;lt;/code&amp;gt;只允许十层，但可交替使用绕过限制，可存储在&amp;lt;code&amp;gt;Unit&amp;lt;/code&amp;gt;类型的[[自定义内存]]或[[数组]]。&#039;&#039;&#039;当前行动目标&#039;&#039;&#039;（&amp;lt;code&amp;gt;thisActionTarget&amp;lt;/code&amp;gt;）在不同情况下所指代的单位不同，与&#039;&#039;&#039;事件来源&#039;&#039;&#039;（&amp;lt;code&amp;gt;eventSource&amp;lt;/code&amp;gt;）不同，后者只与&#039;&#039;&#039;自动触发事件&#039;&#039;&#039;（&amp;lt;code&amp;gt;autoTriggerOnEvent&amp;lt;/code&amp;gt;）绑定，触发的事件不同所指代单位也不同。&lt;br /&gt;
&lt;br /&gt;
===thisActionIndex的用法===&lt;br /&gt;
&#039;&#039;&#039;当前行动索引&#039;&#039;&#039;&amp;lt;code&amp;gt;thisActionIndex&amp;lt;/code&amp;gt;能在遍历过程中同时知道每个元素的位置信息，&#039;&#039;&#039;索引&#039;&#039;&#039;（&amp;lt;code&amp;gt;index&amp;lt;/code&amp;gt;）为其缩略形式。受&#039;&#039;&#039;重复触发&#039;&#039;&#039;（&amp;lt;code&amp;gt;alsoTriggerActionRepeat&amp;lt;/code&amp;gt;）与&#039;&#039;&#039;提取资源为每个触发行动（&#039;&#039;&#039;&amp;lt;code&amp;gt;takeResources_triggerActionForEach&amp;lt;/code&amp;gt;）影响。值为&amp;lt;code&amp;gt;Int&amp;lt;/code&amp;gt;（整数）类型，从0开始，用于遍历数组。&amp;lt;pre&amp;gt;eg:&lt;br /&gt;
[core]&lt;br /&gt;
# 定义类型为Number的数组。&lt;br /&gt;
@memory array: number[]&lt;br /&gt;
[hiddenAction_1]&lt;br /&gt;
# 触发行动2数组长度次（1次）。&lt;br /&gt;
alsoTriggerAction: 2&lt;br /&gt;
alsoTriggerActionRepeat: memory.array.size&lt;br /&gt;
[hiddenAction_2]&lt;br /&gt;
# 如果m.array[i]为0，则赋值在第i个元素赋0，否则减1。&lt;br /&gt;
setUnitMemory: array[index] = select( memory.array[index] == 0,0, memory.array[index] - 1 )&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===对应的情况===&lt;br /&gt;
{| class=&amp;quot;wikitable sortable mw-collapsible mw-collapsed&amp;quot;&lt;br /&gt;
|+thisActionTarget用处&lt;br /&gt;
|fireXTurretAtGround&lt;br /&gt;
|指向的位置&lt;br /&gt;
|-&lt;br /&gt;
|alsoTriggerAction&lt;br /&gt;
|与原行动的thisActionTarget相同&lt;br /&gt;
|-&lt;br /&gt;
|onShoot_triggerActions&lt;br /&gt;
|炮塔射击的单位&lt;br /&gt;
|-&lt;br /&gt;
|takeResources_triggerActionIfAnyCollected&lt;br /&gt;
|提取到的单位&lt;br /&gt;
|-&lt;br /&gt;
|takeResources_triggerActionForEach&lt;br /&gt;
|与上同理&lt;br /&gt;
|-&lt;br /&gt;
|addWaypoint_triggerActionIfMatched&lt;br /&gt;
|被添加路径点的单位（没明确指定某个单位时则为在那个位置的标记，如move等）&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable sortable mw-collapsible mw-collapsed&amp;quot;&lt;br /&gt;
|+eventSource用处&lt;br /&gt;
|tookDamage&lt;br /&gt;
|攻击方&lt;br /&gt;
|-&lt;br /&gt;
|killedAnyUnit&lt;br /&gt;
|杀死的单位&lt;br /&gt;
|-&lt;br /&gt;
|transportingNewUnit&lt;br /&gt;
|新装载的单位&lt;br /&gt;
|-&lt;br /&gt;
|transportUnloadedOrRemovedUnit&lt;br /&gt;
|刚卸载的单位&lt;br /&gt;
|-&lt;br /&gt;
|queuedUnitFinished&lt;br /&gt;
|刚生产的单位&lt;br /&gt;
|-&lt;br /&gt;
|touchTargetSuccess&lt;br /&gt;
|碰到的单位（需配合路径点）&lt;br /&gt;
|-&lt;br /&gt;
|newMessage&lt;br /&gt;
|给这个单位发信的单位&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
{{折叠|thisActionTarget与eventSource的例子|&amp;lt;pre&amp;gt;&lt;br /&gt;
[turret_super]&lt;br /&gt;
# 发射时触发行动。&lt;br /&gt;
onShoot_triggerActions: idol&lt;br /&gt;
[hiddenAction_idol]&lt;br /&gt;
# 当前行动目标指代击中的单位。&lt;br /&gt;
showMessageToAllPlayers: %{thisActionTarget}的笑容。&lt;br /&gt;
&lt;br /&gt;
[hiddenAction_tookDmg]&lt;br /&gt;
# 事件来源指代攻击方。&lt;br /&gt;
autoTriggerOnEvent: tookDamage( withTag  = &amp;quot;APCR&amp;quot; )&lt;br /&gt;
showMessageToAllPlayers: 来自%{eventSource}的攻击！&lt;br /&gt;
&amp;lt;/pre&amp;gt;}}&lt;br /&gt;
&lt;br /&gt;
==函数引用==&lt;br /&gt;
铁锈战争提供了一些常见情况可能用到的单位选择器，且所以节都能使用，可填入参数。&lt;br /&gt;
&lt;br /&gt;
===选填参数部分（注：方括号为选填参数）===&lt;br /&gt;
&amp;lt;p&amp;gt;附属：&amp;lt;code&amp;gt;attachment([slot], [withTag])&amp;lt;/code&amp;gt;&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;运输：&amp;lt;code&amp;gt;transporting([slot])&amp;lt;/code&amp;gt;&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;最近单位：&amp;lt;code&amp;gt;nearestUnit([withinRange], [withTag], [relation], [incompleteBuildings], [withoutTag])&amp;lt;/code&amp;gt;&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;搜索首个单位&amp;lt;code&amp;gt;globalSearchForFirstUnit([withTag], [relation], [incompleteBuildings])&amp;lt;/code&amp;gt;&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====&#039;&#039;&#039;&amp;lt;big&amp;gt;请慎重使用默认参数。&amp;lt;/big&amp;gt;&#039;&#039;&#039;====&lt;br /&gt;
*附属&lt;br /&gt;
不填参数则返回行数最高的附属。&lt;br /&gt;
*运输&lt;br /&gt;
不填参数则返回最近运输的单位。&lt;br /&gt;
*最近单位&lt;br /&gt;
不填参数则返回范围550的单位。&lt;br /&gt;
*搜索首个单位&lt;br /&gt;
不填参数则返回该地图最小id的单位。&lt;br /&gt;
&lt;br /&gt;
===无参数部分===&lt;br /&gt;
这些单位引用的特点很明显，都是指向具体的某个单位。&#039;&#039;&#039;自身（&amp;lt;code&amp;gt;self&amp;lt;/code&amp;gt;）&#039;&#039;&#039;一般情况下指向单位自己，也用于指代前面的单位引用，在涉及复杂单位引用逻辑时，请慎重使用&amp;lt;code&amp;gt;self&amp;lt;/code&amp;gt;，请在初始化处定义个内存赋值&#039;&#039;&#039;&amp;lt;code&amp;gt;self&amp;lt;/code&amp;gt;&#039;&#039;&#039;，选择使用存储自身的内存。&#039;&#039;&#039;攻击目标&#039;&#039;&#039;（&amp;lt;code&amp;gt;attacking&amp;lt;/code&amp;gt;）为&amp;lt;code&amp;gt;activeWaypointTarget&amp;lt;/code&amp;gt;为攻击时套上单位的快捷引用方式，相当于&amp;lt;code&amp;gt;Attack&amp;lt;/code&amp;gt;类型的路径点。&#039;&#039;&#039;最后伤害源&#039;&#039;&#039;&amp;lt;code&amp;gt;lastDamagedBy&amp;lt;/code&amp;gt;在事件来源为&#039;&#039;&#039;受击（&#039;&#039;&#039;&amp;lt;code&amp;gt;tookDamage&amp;lt;/code&amp;gt;）时的快捷引用方式。&#039;&#039;&#039;父单位&#039;&#039;&#039;（&amp;lt;code&amp;gt;parent&amp;lt;/code&amp;gt;）在单位自身为他人附属或乘员时可使用，&amp;lt;code&amp;gt;unitref.hasParent( [withTag] )&amp;lt;/code&amp;gt;为其快捷方式。&#039;&#039;&#039;当前路径点&#039;&#039;&#039;（&amp;lt;code&amp;gt;activeWaypointTarget&amp;lt;/code&amp;gt;）能够实时监控路径点情况，如果没明确指定某个单位则返回在那个位置的标记（Marker），但似乎不能获取该路径点的类型，路径点类型可[https://docs.google.com/spreadsheets/d/1aeP3pUic0IutZlgGix_cM8xR7LEH44gS4itAxETK954/htmlview 详见]代码&amp;lt;code&amp;gt;addWaypoint_type&amp;lt;/code&amp;gt;。&lt;br /&gt;
&lt;br /&gt;
{{折叠|函数引用的例子|&amp;lt;pre&amp;gt;&lt;br /&gt;
[decal_1]&lt;br /&gt;
# 父单位的名为5的附属为自己则显示贴花。（注：UI世界与单位所在世界不同，请使用发送消息。）&lt;br /&gt;
isVisible: if parent.attachment( slot= 5 ) == self&lt;br /&gt;
&lt;br /&gt;
[hiddenAction_repair]&lt;br /&gt;
# 在玩家创建新路径点时触发。&lt;br /&gt;
autoTriggerOnEvent: newWaypointGivenByPlayer&lt;br /&gt;
# 过滤，只允许类型为”修复“的路径点时触发，&lt;br /&gt;
requireConditional: if self.hasActiveWaypoint( type = &amp;quot;repair&amp;quot; )&lt;br /&gt;
showMessageToPlayer: 你正在治疗%{activeWaypointTarget}。&lt;br /&gt;
&amp;lt;/pre&amp;gt;}}&lt;br /&gt;
&lt;br /&gt;
==存储引用==&lt;br /&gt;
与[[自定义内存]]相比，虽然&#039;&#039;&#039;自定义目标1&#039;&#039;&#039;&amp;lt;code&amp;gt;customTarget1&amp;lt;/code&amp;gt;&#039;&#039;&#039;自定义目标2&#039;&#039;&#039;&amp;lt;code&amp;gt;customTarget2&amp;lt;/code&amp;gt;与&amp;lt;code&amp;gt;@memory x:unit&amp;lt;/code&amp;gt;（&amp;lt;code&amp;gt;Unit&amp;lt;/code&amp;gt;类型的内存）用途相当，都可用于存储单位，但与内存不同，自定义目标在单位死亡、删除的情况下会自动清除。内存需要手动管理，而自定义目标会自动管理。&lt;br /&gt;
内存可以用高频触发行动复现。&lt;br /&gt;
&lt;br /&gt;
&amp;lt;nowiki&amp;gt;{{折叠|复现CustomTarget的例子|&amp;lt;pre&amp;gt;[core]# 高频，一秒六十次。autoTriggerCooldownTime: 1autoTriggerCooldownTime_allowDangerousHighCPU: true# 不推荐使用关键字命名内存。@memory customTarget1: unit[hiddenAction_update]# 高频触发检测单位是否死亡或删除。autoTrigger: if substring( str(memory.customTarget1), length(str(memory.customTarget1)) - 7, length(str(memory.customTarget1)) - 1 ) == &amp;quot;[dead]&amp;quot; or substring( str(memory.customTarget1), length(str(memory.customTarget1)) - 10, length(str(memory.customTarget1)) - 1 ) == &amp;quot;[deleted]&amp;quot;# 清空内存。setUnitMemory: customTarget1 = nullUnit&amp;lt;/pre&amp;gt;}}&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
单位生产（&amp;lt;code&amp;gt;canBuild&amp;lt;/code&amp;gt;)、产生(&amp;lt;code&amp;gt;produceUnits&amp;lt;/code&amp;gt;&amp;lt;code&amp;gt;spawnUnit(s)&amp;lt;/code&amp;gt;）出来时，该出厂单位的&#039;&#039;&#039;自定义目标1&#039;&#039;&#039;默认为工厂。工厂不必通过&amp;lt;code&amp;gt;queuedUnitFinished&amp;lt;/code&amp;gt;事件配合&amp;lt;code&amp;gt;sendMessageTo&amp;lt;/code&amp;gt;告诉出厂单位谁是工厂。&lt;br /&gt;
&lt;br /&gt;
==空引用==&lt;br /&gt;
单位引用中，&#039;&#039;&#039;空&#039;&#039;&#039;（&amp;lt;code&amp;gt;null&amp;lt;/code&amp;gt;）指向不存在的单位引用。逻辑布尔值（&amp;lt;code&amp;gt;Logic Boolean&amp;lt;/code&amp;gt;，类似条件判断）中，可搭配不等式避免返回&amp;lt;code&amp;gt;Unit&amp;lt;/code&amp;gt;类型。[[自定义内存]]中，也可作为空值赋值，也可用于清空[[数组]]。&#039;&#039;&#039;空单位引用&#039;&#039;&#039;&amp;lt;code&amp;gt;nullUnit&amp;lt;/code&amp;gt;与前者不同，不可用于清空数组。&lt;/div&gt;</summary>
		<author><name>GMBOX</name></author>
	</entry>
	<entry>
		<id>https://rustedwarfare.org/index.php?title=%E5%8D%95%E4%BD%8D%E5%BC%95%E7%94%A8&amp;diff=4768</id>
		<title>单位引用</title>
		<link rel="alternate" type="text/html" href="https://rustedwarfare.org/index.php?title=%E5%8D%95%E4%BD%8D%E5%BC%95%E7%94%A8&amp;diff=4768"/>
		<updated>2026-02-25T04:40:14Z</updated>

		<summary type="html">&lt;p&gt;GMBOX：​/* 标记的用法 */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;br /&gt;
&#039;&#039;&#039;单位引用&#039;&#039;&#039;（Unit References，缩写：unitref）是铁锈战争[[1.15]]新加入的单位选择器，可引用符合条件的单位。&lt;br /&gt;
&lt;br /&gt;
==查询==&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+单位引用&lt;br /&gt;
|标记&lt;br /&gt;
|getAsMarker()&lt;br /&gt;
getOffsetRelative()&lt;br /&gt;
&lt;br /&gt;
getOffsetAbsolute()&lt;br /&gt;
&lt;br /&gt;
createMarker()&lt;br /&gt;
|-&lt;br /&gt;
|变量引用&lt;br /&gt;
|thisActionTarget&lt;br /&gt;
eventSource&lt;br /&gt;
|-&lt;br /&gt;
|函数引用&lt;br /&gt;
|attachment()&lt;br /&gt;
transporting()&lt;br /&gt;
&lt;br /&gt;
nearestUnit()&lt;br /&gt;
&lt;br /&gt;
globalSearchForFirstUnit()&lt;br /&gt;
&lt;br /&gt;
self&lt;br /&gt;
&lt;br /&gt;
attacking&lt;br /&gt;
&lt;br /&gt;
lastDamagedBy&lt;br /&gt;
&lt;br /&gt;
parent&lt;br /&gt;
&lt;br /&gt;
activeWaypointTarget&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|存储引用&lt;br /&gt;
|customTarget1&lt;br /&gt;
customTarget2&lt;br /&gt;
|-&lt;br /&gt;
|空引用&lt;br /&gt;
|nullUnit&lt;br /&gt;
|}&lt;br /&gt;
==标记==&lt;br /&gt;
你可立即创建一个临时标记，可用来反映位置（Position）、朝向（Direction）、高度（Height）、队伍编号（Team ID），且不需要用到时会自动销毁，不隶属任何单位也不受单位后续行为的影响。&lt;br /&gt;
标记可分为两种，照铁锈战争的说法，一种是&#039;&#039;&#039;获取&#039;&#039;&#039;（get...），另一种是&#039;&#039;&#039;创建&#039;&#039;&#039;(create...)。获取会在以单位的基础创建标记，而&#039;&#039;&#039;创建&#039;&#039;&#039;完全与创建它的单位无关。&lt;br /&gt;
===标记的格式（注：方括号参数为选填）===&lt;br /&gt;
&amp;lt;p&amp;gt;获取：&amp;lt;code&amp;gt;getAsMarker()&amp;lt;/code&amp;gt;&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;相对：&amp;lt;code&amp;gt;getOffsetRelative([x], [y], [height], [dirOffset])&amp;lt;/code&amp;gt;&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;绝对：&amp;lt;code&amp;gt;getOffsetAbsolute([x], [y], [height])&amp;lt;/code&amp;gt;&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;创建：&amp;lt;code&amp;gt;createMarker(x, y, [height], [teamId], [dir])&amp;lt;/code&amp;gt;&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===标记的用法===&lt;br /&gt;
想直接获取当前位置等信息可以使用&amp;lt;code&amp;gt;getAsMarker&amp;lt;/code&amp;gt;。&lt;br /&gt;
铁锈战争为偏移提供了两种方案，一种是&#039;&#039;&#039;相对偏移&#039;&#039;&#039;，不止受单位位置、高度，还受朝向影响。通俗易懂就是你坐在一辆车上，你当然可以移动、旋转（&amp;lt;code&amp;gt;dirOffset&amp;lt;/code&amp;gt;），但车移动、旋转你也必须移动、旋转。&lt;br /&gt;
另一种是&#039;&#039;&#039;绝对偏移&#039;&#039;&#039;，只受单位位置、高度影响，比如单位坐标(1000, 1000)，向左偏移5个单位（995, 1000）。&lt;br /&gt;
&#039;&#039;&#039;创建标记&#039;&#039;&#039;是直接在地图上创建一个标记，队伍编号可由自己决定，可以注意的是创建标记的(x, y)必须要填，但铁锈战争允许省略&amp;lt;code&amp;gt;(x=, y=)&amp;lt;/code&amp;gt;。&lt;br /&gt;
&lt;br /&gt;
{{折叠|标记的例子|&amp;lt;pre&amp;gt;&lt;br /&gt;
[hiddenAction_teleport]&lt;br /&gt;
# 传送到以该单位朝向角为基础再偏移自定义计时器数量角度的方向纵轴为十的位置。&lt;br /&gt;
teleportTo: getOffsetRelative( y = 10, dirOffset = self.customTimer )&lt;br /&gt;
&lt;br /&gt;
[hiddenAction_strike]&lt;br /&gt;
# 炮弹发射到以路径点为中心最近标签为前哨的我方单位。&lt;br /&gt;
fireXTurretAtGround: 1&lt;br /&gt;
fireXTurretAtGround_withTarget: createMarker( activeWaypointTarget.x, activeWaypointTarget.y, teamId = self.teamId ).nearestUnit( withinRange = 1500, withTag = &amp;quot;outpost&amp;quot;, relation = &amp;quot;own&amp;quot; )&lt;br /&gt;
&amp;lt;/pre&amp;gt;}}&lt;br /&gt;
&lt;br /&gt;
==变量引用==&lt;br /&gt;
变量引用只能存在于&#039;&#039;&#039;行动链&#039;&#039;&#039;（Action Chain），可用&#039;&#039;&#039;也触发行动&#039;&#039;&#039;（&amp;lt;code&amp;gt;alsoTriggerAction&amp;lt;/code&amp;gt;）或&#039;&#039;&#039;也加入队列（&#039;&#039;&#039;&amp;lt;code&amp;gt;alsoQueueAction&amp;lt;/code&amp;gt;）将其传递下去，连续&amp;lt;code&amp;gt;alsoTriggerAction&amp;lt;/code&amp;gt;或&amp;lt;code&amp;gt;alsoQueueAction&amp;lt;/code&amp;gt;只允许十层，但可交替使用绕过限制，可存储在&amp;lt;code&amp;gt;Unit&amp;lt;/code&amp;gt;类型的[[自定义内存]]或[[数组]]。&#039;&#039;&#039;当前行动目标&#039;&#039;&#039;（&amp;lt;code&amp;gt;thisActionTarget&amp;lt;/code&amp;gt;）在不同情况下所指代的单位不同，与&#039;&#039;&#039;事件来源&#039;&#039;&#039;（&amp;lt;code&amp;gt;eventSource&amp;lt;/code&amp;gt;）不同，后者只与&#039;&#039;&#039;自动触发事件&#039;&#039;&#039;（&amp;lt;code&amp;gt;autoTriggerOnEvent&amp;lt;/code&amp;gt;）绑定，触发的事件不同所指代单位也不同。&lt;br /&gt;
&lt;br /&gt;
===thisActionIndex的用法===&lt;br /&gt;
&#039;&#039;&#039;当前行动索引&#039;&#039;&#039;&amp;lt;code&amp;gt;thisActionIndex&amp;lt;/code&amp;gt;能在遍历过程中同时知道每个元素的位置信息，&#039;&#039;&#039;索引&#039;&#039;&#039;（&amp;lt;code&amp;gt;index&amp;lt;/code&amp;gt;）为其缩略形式。受&#039;&#039;&#039;重复触发&#039;&#039;&#039;（&amp;lt;code&amp;gt;alsoTriggerActionRepeat&amp;lt;/code&amp;gt;）与&#039;&#039;&#039;提取资源为每个触发行动（&#039;&#039;&#039;&amp;lt;code&amp;gt;takeResources_triggerActionForEach&amp;lt;/code&amp;gt;）影响。值为&amp;lt;code&amp;gt;Int&amp;lt;/code&amp;gt;（整数）类型，从0开始，用于遍历数组。&amp;lt;pre&amp;gt;eg:&lt;br /&gt;
[core]&lt;br /&gt;
# 定义类型为Number的数组。&lt;br /&gt;
@memory array: number[]&lt;br /&gt;
[hiddenAction_1]&lt;br /&gt;
# 触发行动2数组长度次（1次）。&lt;br /&gt;
alsoTriggerAction: 2&lt;br /&gt;
alsoTriggerActionRepeat: memory.array.size&lt;br /&gt;
[hiddenAction_2]&lt;br /&gt;
# 如果m.array[i]为0，则赋值在第i个元素赋0，否则减1。&lt;br /&gt;
setUnitMemory: array[index] = select( memory.array[index] == 0,0, memory.array[index] - 1 )&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===对应的情况===&lt;br /&gt;
{| class=&amp;quot;wikitable sortable mw-collapsible mw-collapsed&amp;quot;&lt;br /&gt;
|+thisActionTarget用处&lt;br /&gt;
|fireXTurretAtGround&lt;br /&gt;
|指向的位置&lt;br /&gt;
|-&lt;br /&gt;
|alsoTriggerAction&lt;br /&gt;
|与原行动的thisActionTarget相同&lt;br /&gt;
|-&lt;br /&gt;
|onShoot_triggerActions&lt;br /&gt;
|炮塔射击的单位&lt;br /&gt;
|-&lt;br /&gt;
|takeResources_triggerActionIfAnyCollected&lt;br /&gt;
|提取到的单位&lt;br /&gt;
|-&lt;br /&gt;
|takeResources_triggerActionForEach&lt;br /&gt;
|与上同理&lt;br /&gt;
|-&lt;br /&gt;
|addWaypoint_triggerActionIfMatched&lt;br /&gt;
|被添加路径点的单位（没明确指定某个单位时则为在那个位置的标记，如move等）&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable sortable mw-collapsible mw-collapsed&amp;quot;&lt;br /&gt;
|+eventSource用处&lt;br /&gt;
|tookDamage&lt;br /&gt;
|攻击方&lt;br /&gt;
|-&lt;br /&gt;
|killedAnyUnit&lt;br /&gt;
|杀死的单位&lt;br /&gt;
|-&lt;br /&gt;
|transportingNewUnit&lt;br /&gt;
|新装载的单位&lt;br /&gt;
|-&lt;br /&gt;
|transportUnloadedOrRemovedUnit&lt;br /&gt;
|刚卸载的单位&lt;br /&gt;
|-&lt;br /&gt;
|queuedUnitFinished&lt;br /&gt;
|刚生产的单位&lt;br /&gt;
|-&lt;br /&gt;
|touchTargetSuccess&lt;br /&gt;
|碰到的单位（需配合路径点）&lt;br /&gt;
|-&lt;br /&gt;
|newMessage&lt;br /&gt;
|给这个单位发信的单位&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
{{折叠|thisActionTarget与eventSource的例子|&amp;lt;pre&amp;gt;&lt;br /&gt;
[turret_super]&lt;br /&gt;
# 发射时触发行动。&lt;br /&gt;
onShoot_triggerActions: idol&lt;br /&gt;
[hiddenAction_idol]&lt;br /&gt;
# 当前行动目标指代击中的单位。&lt;br /&gt;
showMessageToAllPlayers: %{thisActionTarget}的笑容。&lt;br /&gt;
&lt;br /&gt;
[hiddenAction_tookDmg]&lt;br /&gt;
# 事件来源指代攻击方。&lt;br /&gt;
autoTriggerOnEvent: tookDamage( withTag  = &amp;quot;APCR&amp;quot; )&lt;br /&gt;
showMessageToAllPlayers: 来自%{eventSource}的攻击！&lt;br /&gt;
&amp;lt;/pre&amp;gt;}}&lt;br /&gt;
&lt;br /&gt;
==函数引用==&lt;br /&gt;
铁锈战争提供了一些常见情况可能用到的单位选择器，且所以节都能使用，可填入参数。&lt;br /&gt;
&lt;br /&gt;
===选填参数部分（注：方括号为选填参数）===&lt;br /&gt;
&amp;lt;p&amp;gt;附属：&amp;lt;code&amp;gt;attachment([slot], [withTag])&amp;lt;/code&amp;gt;&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;运输：&amp;lt;code&amp;gt;transporting([slot])&amp;lt;/code&amp;gt;&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;最近单位：&amp;lt;code&amp;gt;nearestUnit([withinRange], [withTag], [relation], [incompleteBuildings], [withoutTag])&amp;lt;/code&amp;gt;&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;搜索首个单位&amp;lt;code&amp;gt;globalSearchForFirstUnit([withTag], [relation], [incompleteBuildings])&amp;lt;/code&amp;gt;&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====&#039;&#039;&#039;&amp;lt;big&amp;gt;请慎重使用默认参数。&amp;lt;/big&amp;gt;&#039;&#039;&#039;====&lt;br /&gt;
*附属&lt;br /&gt;
不填参数则返回行数最高的附属。&lt;br /&gt;
*运输&lt;br /&gt;
不填参数则返回最近运输的单位。&lt;br /&gt;
*最近单位&lt;br /&gt;
不填参数则返回范围550的单位。&lt;br /&gt;
*搜索首个单位&lt;br /&gt;
不填参数则返回该地图最小id的单位。&lt;br /&gt;
&lt;br /&gt;
===无参数部分===&lt;br /&gt;
这些单位引用的特点很明显，都是指向具体的某个单位。&#039;&#039;&#039;自身（&amp;lt;code&amp;gt;self&amp;lt;/code&amp;gt;）&#039;&#039;&#039;一般情况下指向单位自己，也用于指代前面的单位引用，在涉及复杂单位引用逻辑时，请慎重使用&amp;lt;code&amp;gt;self&amp;lt;/code&amp;gt;，请在初始化处定义个内存赋值&#039;&#039;&#039;&amp;lt;code&amp;gt;self&amp;lt;/code&amp;gt;&#039;&#039;&#039;，选择使用存储自身的内存。&#039;&#039;&#039;攻击目标&#039;&#039;&#039;（&amp;lt;code&amp;gt;attacking&amp;lt;/code&amp;gt;）为&amp;lt;code&amp;gt;activeWaypointTarget&amp;lt;/code&amp;gt;为攻击时套上单位的快捷引用方式，相当于&amp;lt;code&amp;gt;Attack&amp;lt;/code&amp;gt;类型的路径点。&#039;&#039;&#039;最后伤害源&#039;&#039;&#039;&amp;lt;code&amp;gt;lastDamagedBy&amp;lt;/code&amp;gt;在事件来源为&#039;&#039;&#039;受击（&#039;&#039;&#039;&amp;lt;code&amp;gt;tookDamage&amp;lt;/code&amp;gt;）时的快捷引用方式。&#039;&#039;&#039;父单位&#039;&#039;&#039;（&amp;lt;code&amp;gt;parent&amp;lt;/code&amp;gt;）在单位自身为他人附属或乘员时可使用，&amp;lt;code&amp;gt;unitref.hasParent( [withTag] )&amp;lt;/code&amp;gt;为其快捷方式。&#039;&#039;&#039;当前路径点&#039;&#039;&#039;（&amp;lt;code&amp;gt;activeWaypointTarget&amp;lt;/code&amp;gt;）能够实时监控路径点情况，如果没明确指定某个单位则返回在那个位置的标记（Marker），但似乎不能获取该路径点的类型，路径点类型可[https://docs.google.com/spreadsheets/d/1aeP3pUic0IutZlgGix_cM8xR7LEH44gS4itAxETK954/htmlview 详见]代码&amp;lt;code&amp;gt;addWaypoint_type&amp;lt;/code&amp;gt;。&lt;br /&gt;
&lt;br /&gt;
{{折叠|函数引用的例子|&amp;lt;pre&amp;gt;&lt;br /&gt;
[decal_1]&lt;br /&gt;
# 父单位的名为5的附属为自己则显示贴花。（注：UI世界与单位所在世界不同，请使用发送消息。）&lt;br /&gt;
isVisible: if parent.attachment( slot= 5 ) == self&lt;br /&gt;
&lt;br /&gt;
[hiddenAction_repair]&lt;br /&gt;
# 在玩家创建新路径点时触发。&lt;br /&gt;
autoTriggerOnEvent: newWaypointGivenByPlayer&lt;br /&gt;
# 过滤，只允许类型为”修复“的路径点时触发，&lt;br /&gt;
requireConditional: if self.hasActiveWaypoint( type = &amp;quot;repair&amp;quot; )&lt;br /&gt;
showMessageToPlayer: 你正在治疗%{activeWaypointTarget}。&lt;br /&gt;
&amp;lt;/pre&amp;gt;}}&lt;br /&gt;
&lt;br /&gt;
==存储引用==&lt;br /&gt;
与[[自定义内存]]相比，虽然&#039;&#039;&#039;自定义目标1&#039;&#039;&#039;&amp;lt;code&amp;gt;customTarget1&amp;lt;/code&amp;gt;&#039;&#039;&#039;自定义目标2&#039;&#039;&#039;&amp;lt;code&amp;gt;customTarget2&amp;lt;/code&amp;gt;与&amp;lt;code&amp;gt;@memory x:unit&amp;lt;/code&amp;gt;（&amp;lt;code&amp;gt;Unit&amp;lt;/code&amp;gt;类型的内存）用途相当，都可用于存储单位，但与内存不同，自定义目标在单位死亡、删除的情况下会自动清除。内存需要手动管理，而自定义目标会自动管理。&lt;br /&gt;
内存可以用高频触发行动复现。&lt;br /&gt;
单位生产（&amp;lt;code&amp;gt;canBuild&amp;lt;/code&amp;gt;)、产生(&amp;lt;code&amp;gt;produceUnits&amp;lt;/code&amp;gt;&amp;lt;code&amp;gt;spawnUnit(s)&amp;lt;/code&amp;gt;）出来时，该出厂单位的&#039;&#039;&#039;自定义目标1&#039;&#039;&#039;默认为工厂。工厂不必通过&amp;lt;code&amp;gt;queuedUnitFinished&amp;lt;/code&amp;gt;事件配合&amp;lt;code&amp;gt;sendMessageTo&amp;lt;/code&amp;gt;告诉出厂单位谁是工厂。&lt;br /&gt;
&lt;br /&gt;
==空引用==&lt;br /&gt;
单位引用中，&#039;&#039;&#039;空&#039;&#039;&#039;（&amp;lt;code&amp;gt;null&amp;lt;/code&amp;gt;）指向不存在的单位引用。逻辑布尔值（&amp;lt;code&amp;gt;Logic Boolean&amp;lt;/code&amp;gt;，类似条件判断）中，可搭配不等式避免返回&amp;lt;code&amp;gt;Unit&amp;lt;/code&amp;gt;类型。[[自定义内存]]中，也可作为空值赋值，也可用于清空[[数组]]。&#039;&#039;&#039;空单位引用&#039;&#039;&#039;&amp;lt;code&amp;gt;nullUnit&amp;lt;/code&amp;gt;与前者不同，不可用于清空数组。&lt;/div&gt;</summary>
		<author><name>GMBOX</name></author>
	</entry>
	<entry>
		<id>https://rustedwarfare.org/index.php?title=%E5%8D%95%E4%BD%8D%E5%BC%95%E7%94%A8&amp;diff=4767</id>
		<title>单位引用</title>
		<link rel="alternate" type="text/html" href="https://rustedwarfare.org/index.php?title=%E5%8D%95%E4%BD%8D%E5%BC%95%E7%94%A8&amp;diff=4767"/>
		<updated>2026-02-25T04:05:23Z</updated>

		<summary type="html">&lt;p&gt;GMBOX：​错别字。&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;br /&gt;
&#039;&#039;&#039;单位引用&#039;&#039;&#039;（Unit References，缩写：unitref）是铁锈战争[[1.15]]新加入的单位选择器，可引用符合条件的单位。&lt;br /&gt;
&lt;br /&gt;
==查询==&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+单位引用&lt;br /&gt;
|标记&lt;br /&gt;
|getAsMarker()&lt;br /&gt;
getOffsetRelative()&lt;br /&gt;
&lt;br /&gt;
getOffsetAbsolute()&lt;br /&gt;
&lt;br /&gt;
createMarker()&lt;br /&gt;
|-&lt;br /&gt;
|变量引用&lt;br /&gt;
|thisActionTarget&lt;br /&gt;
eventSource&lt;br /&gt;
|-&lt;br /&gt;
|函数引用&lt;br /&gt;
|attachment()&lt;br /&gt;
transporting()&lt;br /&gt;
&lt;br /&gt;
nearestUnit()&lt;br /&gt;
&lt;br /&gt;
globalSearchForFirstUnit()&lt;br /&gt;
&lt;br /&gt;
self&lt;br /&gt;
&lt;br /&gt;
attacking&lt;br /&gt;
&lt;br /&gt;
lastDamagedBy&lt;br /&gt;
&lt;br /&gt;
parent&lt;br /&gt;
&lt;br /&gt;
activeWaypointTarget&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|存储引用&lt;br /&gt;
|customTarget1&lt;br /&gt;
customTarget2&lt;br /&gt;
|-&lt;br /&gt;
|空引用&lt;br /&gt;
|nullUnit&lt;br /&gt;
|}&lt;br /&gt;
==标记==&lt;br /&gt;
你可立即创建一个临时标记，可用来反映位置（Position）、朝向（Direction）、高度（Height）、队伍编号（Team ID），且不需要用到时会自动销毁，不隶属任何单位也不受单位后续行为的影响。&lt;br /&gt;
标记可分为两种，照铁锈战争的说法，一种是&#039;&#039;&#039;获取&#039;&#039;&#039;（get...），另一种是&#039;&#039;&#039;创建&#039;&#039;&#039;(create...)。获取会在以单位的基础创建标记，而&#039;&#039;&#039;创建&#039;&#039;&#039;完全与创建它的单位无关。&lt;br /&gt;
===标记的格式（注：方括号参数为选填）===&lt;br /&gt;
&amp;lt;p&amp;gt;获取：&amp;lt;code&amp;gt;getAsMarker()&amp;lt;/code&amp;gt;&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;相对：&amp;lt;code&amp;gt;getOffsetRelative([x], [y], [height], [dirOffset])&amp;lt;/code&amp;gt;&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;绝对：&amp;lt;code&amp;gt;getOffsetAbsolute([x], [y], [height])&amp;lt;/code&amp;gt;&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;创建：&amp;lt;code&amp;gt;createMarker(x, y, [height], [teamId], [dir])&amp;lt;/code&amp;gt;&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===标记的用法===&lt;br /&gt;
想直接获取当前位置等信息可以使用&amp;lt;code&amp;gt;getAsMarker&amp;lt;/code&amp;gt;。&lt;br /&gt;
铁锈战争为偏移提供了两种方案，一种是&#039;&#039;&#039;相对偏移&#039;&#039;&#039;，不止受单位位置、高度，还受朝向影响。通俗易懂就是你坐在一辆车上，你当然可以移动、旋转（&amp;lt;code&amp;gt;dirOffset&amp;lt;/code&amp;gt;），但车移动、旋转你也必须移动、旋转。&lt;br /&gt;
另一种是&#039;&#039;&#039;绝对偏移&#039;&#039;&#039;，只受单位位置、高度影响，比如单位坐标(1000, 1000)，向左偏移5个单位（995, 1000）。&lt;br /&gt;
&#039;&#039;&#039;创建标记&#039;&#039;&#039;是直接在地图上创建一个标记，队伍编号可由自己决定，可以注意的是创建标记的(x, y)必须要填，但铁锈战争允许省略&amp;lt;code&amp;gt;(x=, y=)&amp;lt;/code&amp;gt;。&lt;br /&gt;
&lt;br /&gt;
{{折叠|标记的例子|&amp;lt;pre&amp;gt;&lt;br /&gt;
# 传送到以该单位朝向角为基础再偏移自定义计时器数量角度的方向纵轴为十的位置。&lt;br /&gt;
teleportTo: getOffsetRelative( y = 10, dirOffset = self.customTimer )&lt;br /&gt;
&lt;br /&gt;
# 炮弹发射到以路径点为中心最近标签为前哨的我方单位。&lt;br /&gt;
fireXTurretAtGround: 1&lt;br /&gt;
fireXTurretAtGround_withTarget: createMarker( activeWaypointTarget.x, activeWaypointTarget.y, teamId = self.teamId ).nearestUnit( withinRange = 1500, withTag = &amp;quot;outpost&amp;quot;, relation = &amp;quot;own&amp;quot; )&lt;br /&gt;
&amp;lt;/pre&amp;gt;}}&lt;br /&gt;
&lt;br /&gt;
==变量引用==&lt;br /&gt;
变量引用只能存在于&#039;&#039;&#039;行动链&#039;&#039;&#039;（Action Chain），可用&#039;&#039;&#039;也触发行动&#039;&#039;&#039;（&amp;lt;code&amp;gt;alsoTriggerAction&amp;lt;/code&amp;gt;）或&#039;&#039;&#039;也加入队列（&#039;&#039;&#039;&amp;lt;code&amp;gt;alsoQueueAction&amp;lt;/code&amp;gt;）将其传递下去，连续&amp;lt;code&amp;gt;alsoTriggerAction&amp;lt;/code&amp;gt;或&amp;lt;code&amp;gt;alsoQueueAction&amp;lt;/code&amp;gt;只允许十层，但可交替使用绕过限制，可存储在&amp;lt;code&amp;gt;Unit&amp;lt;/code&amp;gt;类型的[[自定义内存]]或[[数组]]。&#039;&#039;&#039;当前行动目标&#039;&#039;&#039;（&amp;lt;code&amp;gt;thisActionTarget&amp;lt;/code&amp;gt;）在不同情况下所指代的单位不同，与&#039;&#039;&#039;事件来源&#039;&#039;&#039;（&amp;lt;code&amp;gt;eventSource&amp;lt;/code&amp;gt;）不同，后者只与&#039;&#039;&#039;自动触发事件&#039;&#039;&#039;（&amp;lt;code&amp;gt;autoTriggerOnEvent&amp;lt;/code&amp;gt;）绑定，触发的事件不同所指代单位也不同。&lt;br /&gt;
&lt;br /&gt;
===thisActionIndex的用法===&lt;br /&gt;
&#039;&#039;&#039;当前行动索引&#039;&#039;&#039;&amp;lt;code&amp;gt;thisActionIndex&amp;lt;/code&amp;gt;能在遍历过程中同时知道每个元素的位置信息，&#039;&#039;&#039;索引&#039;&#039;&#039;（&amp;lt;code&amp;gt;index&amp;lt;/code&amp;gt;）为其缩略形式。受&#039;&#039;&#039;重复触发&#039;&#039;&#039;（&amp;lt;code&amp;gt;alsoTriggerActionRepeat&amp;lt;/code&amp;gt;）与&#039;&#039;&#039;提取资源为每个触发行动（&#039;&#039;&#039;&amp;lt;code&amp;gt;takeResources_triggerActionForEach&amp;lt;/code&amp;gt;）影响。值为&amp;lt;code&amp;gt;Int&amp;lt;/code&amp;gt;（整数）类型，从0开始，用于遍历数组。&amp;lt;pre&amp;gt;eg:&lt;br /&gt;
[core]&lt;br /&gt;
# 定义类型为Number的数组。&lt;br /&gt;
@memory array: number[]&lt;br /&gt;
[hiddenAction_1]&lt;br /&gt;
# 触发行动2数组长度次（1次）。&lt;br /&gt;
alsoTriggerAction: 2&lt;br /&gt;
alsoTriggerActionRepeat: memory.array.size&lt;br /&gt;
[hiddenAction_2]&lt;br /&gt;
# 如果m.array[i]为0，则赋值在第i个元素赋0，否则减1。&lt;br /&gt;
setUnitMemory: array[index] = select( memory.array[index] == 0,0, memory.array[index] - 1 )&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===对应的情况===&lt;br /&gt;
{| class=&amp;quot;wikitable sortable mw-collapsible mw-collapsed&amp;quot;&lt;br /&gt;
|+thisActionTarget用处&lt;br /&gt;
|fireXTurretAtGround&lt;br /&gt;
|指向的位置&lt;br /&gt;
|-&lt;br /&gt;
|alsoTriggerAction&lt;br /&gt;
|与原行动的thisActionTarget相同&lt;br /&gt;
|-&lt;br /&gt;
|onShoot_triggerActions&lt;br /&gt;
|炮塔射击的单位&lt;br /&gt;
|-&lt;br /&gt;
|takeResources_triggerActionIfAnyCollected&lt;br /&gt;
|提取到的单位&lt;br /&gt;
|-&lt;br /&gt;
|takeResources_triggerActionForEach&lt;br /&gt;
|与上同理&lt;br /&gt;
|-&lt;br /&gt;
|addWaypoint_triggerActionIfMatched&lt;br /&gt;
|被添加路径点的单位（没明确指定某个单位时则为在那个位置的标记，如move等）&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable sortable mw-collapsible mw-collapsed&amp;quot;&lt;br /&gt;
|+eventSource用处&lt;br /&gt;
|tookDamage&lt;br /&gt;
|攻击方&lt;br /&gt;
|-&lt;br /&gt;
|killedAnyUnit&lt;br /&gt;
|杀死的单位&lt;br /&gt;
|-&lt;br /&gt;
|transportingNewUnit&lt;br /&gt;
|新装载的单位&lt;br /&gt;
|-&lt;br /&gt;
|transportUnloadedOrRemovedUnit&lt;br /&gt;
|刚卸载的单位&lt;br /&gt;
|-&lt;br /&gt;
|queuedUnitFinished&lt;br /&gt;
|刚生产的单位&lt;br /&gt;
|-&lt;br /&gt;
|touchTargetSuccess&lt;br /&gt;
|碰到的单位（需配合路径点）&lt;br /&gt;
|-&lt;br /&gt;
|newMessage&lt;br /&gt;
|给这个单位发信的单位&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
{{折叠|thisActionTarget与eventSource的例子|&amp;lt;pre&amp;gt;&lt;br /&gt;
[turret_super]&lt;br /&gt;
# 发射时触发行动。&lt;br /&gt;
onShoot_triggerActions: idol&lt;br /&gt;
[hiddenAction_idol]&lt;br /&gt;
# 当前行动目标指代击中的单位。&lt;br /&gt;
showMessageToAllPlayers: %{thisActionTarget}的笑容。&lt;br /&gt;
&lt;br /&gt;
[hiddenAction_tookDmg]&lt;br /&gt;
# 事件来源指代攻击方。&lt;br /&gt;
autoTriggerOnEvent: tookDamage( withTag  = &amp;quot;APCR&amp;quot; )&lt;br /&gt;
showMessageToAllPlayers: 来自%{eventSource}的攻击！&lt;br /&gt;
&amp;lt;/pre&amp;gt;}}&lt;br /&gt;
&lt;br /&gt;
==函数引用==&lt;br /&gt;
铁锈战争提供了一些常见情况可能用到的单位选择器，且所以节都能使用，可填入参数。&lt;br /&gt;
&lt;br /&gt;
===选填参数部分（注：方括号为选填参数）===&lt;br /&gt;
&amp;lt;p&amp;gt;附属：&amp;lt;code&amp;gt;attachment([slot], [withTag])&amp;lt;/code&amp;gt;&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;运输：&amp;lt;code&amp;gt;transporting([slot])&amp;lt;/code&amp;gt;&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;最近单位：&amp;lt;code&amp;gt;nearestUnit([withinRange], [withTag], [relation], [incompleteBuildings], [withoutTag])&amp;lt;/code&amp;gt;&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;搜索首个单位&amp;lt;code&amp;gt;globalSearchForFirstUnit([withTag], [relation], [incompleteBuildings])&amp;lt;/code&amp;gt;&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====&#039;&#039;&#039;&amp;lt;big&amp;gt;请慎重使用默认参数。&amp;lt;/big&amp;gt;&#039;&#039;&#039;====&lt;br /&gt;
*附属&lt;br /&gt;
不填参数则返回行数最高的附属。&lt;br /&gt;
*运输&lt;br /&gt;
不填参数则返回最近运输的单位。&lt;br /&gt;
*最近单位&lt;br /&gt;
不填参数则返回范围550的单位。&lt;br /&gt;
*搜索首个单位&lt;br /&gt;
不填参数则返回该地图最小id的单位。&lt;br /&gt;
&lt;br /&gt;
===无参数部分===&lt;br /&gt;
这些单位引用的特点很明显，都是指向具体的某个单位。&#039;&#039;&#039;自身（&amp;lt;code&amp;gt;self&amp;lt;/code&amp;gt;）&#039;&#039;&#039;一般情况下指向单位自己，也用于指代前面的单位引用，在涉及复杂单位引用逻辑时，请慎重使用&amp;lt;code&amp;gt;self&amp;lt;/code&amp;gt;，请在初始化处定义个内存赋值&#039;&#039;&#039;&amp;lt;code&amp;gt;self&amp;lt;/code&amp;gt;&#039;&#039;&#039;，选择使用存储自身的内存。&#039;&#039;&#039;攻击目标&#039;&#039;&#039;（&amp;lt;code&amp;gt;attacking&amp;lt;/code&amp;gt;）为&amp;lt;code&amp;gt;activeWaypointTarget&amp;lt;/code&amp;gt;为攻击时套上单位的快捷引用方式，相当于&amp;lt;code&amp;gt;Attack&amp;lt;/code&amp;gt;类型的路径点。&#039;&#039;&#039;最后伤害源&#039;&#039;&#039;&amp;lt;code&amp;gt;lastDamagedBy&amp;lt;/code&amp;gt;在事件来源为&#039;&#039;&#039;受击（&#039;&#039;&#039;&amp;lt;code&amp;gt;tookDamage&amp;lt;/code&amp;gt;）时的快捷引用方式。&#039;&#039;&#039;父单位&#039;&#039;&#039;（&amp;lt;code&amp;gt;parent&amp;lt;/code&amp;gt;）在单位自身为他人附属或乘员时可使用，&amp;lt;code&amp;gt;unitref.hasParent( [withTag] )&amp;lt;/code&amp;gt;为其快捷方式。&#039;&#039;&#039;当前路径点&#039;&#039;&#039;（&amp;lt;code&amp;gt;activeWaypointTarget&amp;lt;/code&amp;gt;）能够实时监控路径点情况，如果没明确指定某个单位则返回在那个位置的标记（Marker），但似乎不能获取该路径点的类型，路径点类型可[https://docs.google.com/spreadsheets/d/1aeP3pUic0IutZlgGix_cM8xR7LEH44gS4itAxETK954/htmlview 详见]代码&amp;lt;code&amp;gt;addWaypoint_type&amp;lt;/code&amp;gt;。&lt;br /&gt;
&lt;br /&gt;
{{折叠|函数引用的例子|&amp;lt;pre&amp;gt;&lt;br /&gt;
[decal_1]&lt;br /&gt;
# 父单位的名为5的附属为自己则显示贴花。（注：UI世界与单位所在世界不同，请使用发送消息。）&lt;br /&gt;
isVisible: if parent.attachment( slot= 5 ) == self&lt;br /&gt;
&lt;br /&gt;
[hiddenAction_repair]&lt;br /&gt;
# 在玩家创建新路径点时触发。&lt;br /&gt;
autoTriggerOnEvent: newWaypointGivenByPlayer&lt;br /&gt;
# 过滤，只允许类型为”修复“的路径点时触发，&lt;br /&gt;
requireConditional: if self.hasActiveWaypoint( type = &amp;quot;repair&amp;quot; )&lt;br /&gt;
showMessageToPlayer: 你正在治疗%{activeWaypointTarget}。&lt;br /&gt;
&amp;lt;/pre&amp;gt;}}&lt;br /&gt;
&lt;br /&gt;
==存储引用==&lt;br /&gt;
与[[自定义内存]]相比，虽然&#039;&#039;&#039;自定义目标1&#039;&#039;&#039;&amp;lt;code&amp;gt;customTarget1&amp;lt;/code&amp;gt;&#039;&#039;&#039;自定义目标2&#039;&#039;&#039;&amp;lt;code&amp;gt;customTarget2&amp;lt;/code&amp;gt;与&amp;lt;code&amp;gt;@memory x:unit&amp;lt;/code&amp;gt;（&amp;lt;code&amp;gt;Unit&amp;lt;/code&amp;gt;类型的内存）用途相当，都可用于存储单位，但与内存不同，自定义目标在单位死亡、删除的情况下会自动清除。内存需要手动管理，而自定义目标会自动管理。&lt;br /&gt;
内存可以用高频触发行动复现。&lt;br /&gt;
单位生产（&amp;lt;code&amp;gt;canBuild&amp;lt;/code&amp;gt;)、产生(&amp;lt;code&amp;gt;produceUnits&amp;lt;/code&amp;gt;&amp;lt;code&amp;gt;spawnUnit(s)&amp;lt;/code&amp;gt;）出来时，该出厂单位的&#039;&#039;&#039;自定义目标1&#039;&#039;&#039;默认为工厂。工厂不必通过&amp;lt;code&amp;gt;queuedUnitFinished&amp;lt;/code&amp;gt;事件配合&amp;lt;code&amp;gt;sendMessageTo&amp;lt;/code&amp;gt;告诉出厂单位谁是工厂。&lt;br /&gt;
&lt;br /&gt;
==空引用==&lt;br /&gt;
单位引用中，&#039;&#039;&#039;空&#039;&#039;&#039;（&amp;lt;code&amp;gt;null&amp;lt;/code&amp;gt;）指向不存在的单位引用。逻辑布尔值（&amp;lt;code&amp;gt;Logic Boolean&amp;lt;/code&amp;gt;，类似条件判断）中，可搭配不等式避免返回&amp;lt;code&amp;gt;Unit&amp;lt;/code&amp;gt;类型。[[自定义内存]]中，也可作为空值赋值，也可用于清空[[数组]]。&#039;&#039;&#039;空单位引用&#039;&#039;&#039;&amp;lt;code&amp;gt;nullUnit&amp;lt;/code&amp;gt;与前者不同，不可用于清空数组。&lt;/div&gt;</summary>
		<author><name>GMBOX</name></author>
	</entry>
	<entry>
		<id>https://rustedwarfare.org/index.php?title=%E5%8D%95%E4%BD%8D%E5%BC%95%E7%94%A8&amp;diff=4766</id>
		<title>单位引用</title>
		<link rel="alternate" type="text/html" href="https://rustedwarfare.org/index.php?title=%E5%8D%95%E4%BD%8D%E5%BC%95%E7%94%A8&amp;diff=4766"/>
		<updated>2026-02-25T04:04:50Z</updated>

		<summary type="html">&lt;p&gt;GMBOX：​错别字。&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;br /&gt;
&#039;&#039;&#039;单位引用&#039;&#039;&#039;（Unit References，缩写：unitref）是铁锈战争[[1.15]]新加入的单位选择器，可引用符合条件的单位。&lt;br /&gt;
&lt;br /&gt;
==查询==&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+单位引用&lt;br /&gt;
|标记&lt;br /&gt;
|getAsMarker()&lt;br /&gt;
getOffsetRelative()&lt;br /&gt;
&lt;br /&gt;
getOffsetAbsolute()&lt;br /&gt;
&lt;br /&gt;
createMarker()&lt;br /&gt;
|-&lt;br /&gt;
|变量引用&lt;br /&gt;
|thisActionTarget&lt;br /&gt;
eventSource&lt;br /&gt;
|-&lt;br /&gt;
|函数引用&lt;br /&gt;
|attachment()&lt;br /&gt;
transporting()&lt;br /&gt;
&lt;br /&gt;
nearestUnit()&lt;br /&gt;
&lt;br /&gt;
globalSearchForFirstUnit()&lt;br /&gt;
&lt;br /&gt;
self&lt;br /&gt;
&lt;br /&gt;
attacking&lt;br /&gt;
&lt;br /&gt;
lastDamagedBy&lt;br /&gt;
&lt;br /&gt;
parent&lt;br /&gt;
&lt;br /&gt;
activeWaypointTarget&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|存储引用&lt;br /&gt;
|customTarget1&lt;br /&gt;
customTarget2&lt;br /&gt;
|-&lt;br /&gt;
|空引用&lt;br /&gt;
|nullUnit&lt;br /&gt;
|}&lt;br /&gt;
==标记==&lt;br /&gt;
你可立即创建一个临时标记，可用来反映位置（Position）、朝向（Direction）、高度（Height）、队伍编号（Team ID），且不需要用到时会自动销毁，不隶属任何单位也不受单位后续行为的影响。&lt;br /&gt;
标记可分为两种，照铁锈战争的说法，一种是&#039;&#039;&#039;获取&#039;&#039;&#039;（get...），另一种是&#039;&#039;&#039;创建&#039;&#039;&#039;(create...)。获取会在以单位的基础创建标记，而&#039;&#039;&#039;创建&#039;&#039;&#039;完全与创建它的单位无关。&lt;br /&gt;
===标记的格式（注：方括号参数为选填）===&lt;br /&gt;
&amp;lt;p&amp;gt;获取：&amp;lt;code&amp;gt;getAsMarker()&amp;lt;/code&amp;gt;&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;相对：&amp;lt;code&amp;gt;getOffsetRelative([x], [y], [height], [dirOffset])&amp;lt;/code&amp;gt;&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;绝对：&amp;lt;code&amp;gt;getOffsetAbsolute([x], [y], [height])&amp;lt;/code&amp;gt;&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;创建：&amp;lt;code&amp;gt;createMarker(x, y, [height], [teamId], [dir])&amp;lt;/code&amp;gt;&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===标记的用法===&lt;br /&gt;
想直接获取当前位置等信息可以使用&amp;lt;code&amp;gt;getAsMarker&amp;lt;/code&amp;gt;。&lt;br /&gt;
铁锈战争为偏移提供了两种方案，一种是&#039;&#039;&#039;相对偏移&#039;&#039;&#039;，不止受单位位置、高度，还受朝向影响。通俗易懂就是你坐在一辆车上，你当然可以移动、旋转（&amp;lt;code&amp;gt;dirOffset&amp;lt;/code&amp;gt;），但车移动、旋转你也必须移动、旋转。&lt;br /&gt;
另一种是&#039;&#039;&#039;绝对偏移&#039;&#039;&#039;，只受单位位置、高度影响，比如单位坐标(1000, 1000)，向左偏移5个单位（995, 1000）。&lt;br /&gt;
&#039;&#039;&#039;创建标记&#039;&#039;&#039;是直接在地图上创建一个标记，队伍编号可由自己决定，可以注意的是创建标记的(x, y)必须要填，但铁锈战争允许省略&amp;lt;code&amp;gt;(x=, y=)&amp;lt;/code&amp;gt;。&lt;br /&gt;
&lt;br /&gt;
{{折叠|标记的例子|&amp;lt;pre&amp;gt;&lt;br /&gt;
# 传送到以该单位朝向角为基础再偏移自定义计时器数量角度的方向纵轴为十的位置。&lt;br /&gt;
teleportTo: getOffsetRelative( y = 10, dirOffset = self.customTimer )&lt;br /&gt;
&lt;br /&gt;
# 炮弹发射到以路径点为中心最近标签为前哨的我方单位。&lt;br /&gt;
fireXTurretAtGround: 1&lt;br /&gt;
fireXTurretAtGround_withTarget: createMarker( activeWaypointTarget.x, activeWaypointTarget.y, teamId = self.teamId ).nearestUnit( withinRange = 1500, withTag = &amp;quot;outpost&amp;quot;, relation = &amp;quot;own&amp;quot; )&lt;br /&gt;
&amp;lt;/pre&amp;gt;}}&lt;br /&gt;
&lt;br /&gt;
==变量引用==&lt;br /&gt;
变量引用只能存在于&#039;&#039;&#039;行动链&#039;&#039;&#039;（Action Chain），可用&#039;&#039;&#039;也触发行动&#039;&#039;&#039;（&amp;lt;code&amp;gt;alsoTriggerAction&amp;lt;/code&amp;gt;）或&#039;&#039;&#039;也加入队列（&#039;&#039;&#039;&amp;lt;code&amp;gt;alsoQueueAction&amp;lt;/code&amp;gt;）将其传递下去，连续&amp;lt;code&amp;gt;alsoTriggerAction&amp;lt;/code&amp;gt;或&amp;lt;code&amp;gt;alsoQueueAction&amp;lt;/code&amp;gt;只允许十层，但可交替使用绕过限制，可存储在&amp;lt;code&amp;gt;Unit&amp;lt;/code&amp;gt;类型的[[自定义内存]]或[[数组]]。&#039;&#039;&#039;当前行动目标&#039;&#039;&#039;（&amp;lt;code&amp;gt;thisActionTarget&amp;lt;/code&amp;gt;）在不同情况下所指代的单位不同，与&#039;&#039;&#039;事件来源&#039;&#039;&#039;（&amp;lt;code&amp;gt;eventSource&amp;lt;/code&amp;gt;）不同，后者只与&#039;&#039;&#039;自动触发事件&#039;&#039;&#039;（&amp;lt;code&amp;gt;autoTriggerOnEvent&amp;lt;/code&amp;gt;）绑定，触发的事件不同所指代单位也不同。&lt;br /&gt;
&lt;br /&gt;
===thisActionIndex的用法===&lt;br /&gt;
&#039;&#039;&#039;当前行动索引&#039;&#039;&#039;&amp;lt;code&amp;gt;thisActionIndex&amp;lt;/code&amp;gt;能在遍历过程中同时知道每个元素的位置信息，&#039;&#039;&#039;索引&#039;&#039;&#039;（&amp;lt;code&amp;gt;index&amp;lt;/code&amp;gt;）为其缩略形式。受&#039;&#039;&#039;重复触发&#039;&#039;&#039;（&amp;lt;code&amp;gt;alsoTriggerActionRepeat&amp;lt;/code&amp;gt;）与&#039;&#039;&#039;提取资源为每个触发行动（&#039;&#039;&#039;&amp;lt;code&amp;gt;takeResources_triggerActionForEach&amp;lt;/code&amp;gt;）影响。值为&amp;lt;code&amp;gt;Int&amp;lt;/code&amp;gt;（整数）类型，从0开始，用于遍历数组。&amp;lt;pre&amp;gt;eg:&lt;br /&gt;
[core]&lt;br /&gt;
# 定义类型为Number的数组。&lt;br /&gt;
@memory array: number[]&lt;br /&gt;
[hiddenAction_1]&lt;br /&gt;
# 触发行动2数组长度次（1次）。&lt;br /&gt;
alsoTriggerAction: 2&lt;br /&gt;
alsoTriggerActionRepeat: memory.array.size&lt;br /&gt;
[hiddenAction_2]&lt;br /&gt;
# 如果m.array[i]为0，则赋值在第i个元素赋0，否则减1。&lt;br /&gt;
setUnitMemory: array[index] = select( memory.array[index] == 0,0, memory.array[index] - 1 )&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===对应的情况===&lt;br /&gt;
{| class=&amp;quot;wikitable sortable mw-collapsible mw-collapsed&amp;quot;&lt;br /&gt;
|+thisActionTarget用处&lt;br /&gt;
|fireXTurretAtGround&lt;br /&gt;
|指向的位置&lt;br /&gt;
|-&lt;br /&gt;
|alsoTriggerAction&lt;br /&gt;
|与原行动的thisActionTarget相同&lt;br /&gt;
|-&lt;br /&gt;
|onShoot_triggerActions&lt;br /&gt;
|炮塔射击的单位&lt;br /&gt;
|-&lt;br /&gt;
|takeResources_triggerActionIfAnyCollected&lt;br /&gt;
|提取到的单位&lt;br /&gt;
|-&lt;br /&gt;
|takeResources_triggerActionForEach&lt;br /&gt;
|与上同理&lt;br /&gt;
|-&lt;br /&gt;
|addWaypoint_triggerActionIfMatched&lt;br /&gt;
|被添加路径点的单位（没明确指定某个单位时则为在那个位置的标记，如move等）&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable sortable mw-collapsible mw-collapsed&amp;quot;&lt;br /&gt;
|+eventSource用处&lt;br /&gt;
|tookDamage&lt;br /&gt;
|攻击方&lt;br /&gt;
|-&lt;br /&gt;
|killedAnyUnit&lt;br /&gt;
|杀死的单位&lt;br /&gt;
|-&lt;br /&gt;
|transportingNewUnit&lt;br /&gt;
|新装载的单位&lt;br /&gt;
|-&lt;br /&gt;
|transportUnloadedOrRemovedUnit&lt;br /&gt;
|刚卸载的单位&lt;br /&gt;
|-&lt;br /&gt;
|queuedUnitFinished&lt;br /&gt;
|刚生产的单位&lt;br /&gt;
|-&lt;br /&gt;
|touchTargetSuccess&lt;br /&gt;
|碰到的单位（需配合路径点）&lt;br /&gt;
|-&lt;br /&gt;
|newMessage&lt;br /&gt;
|给这个单位发信的单位&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
{{折叠|thisActionTarget与eventSource的例子|&amp;lt;pre&amp;gt;&lt;br /&gt;
[turret_super]&lt;br /&gt;
# 发射时触发行动。&lt;br /&gt;
onShoot_triggerActions: idol&lt;br /&gt;
[hiddenAction_idol]&lt;br /&gt;
# 当前行动目标指代击中的单位。&lt;br /&gt;
showMessageToAllPlayers: %{thisActionTarget}的笑容。&lt;br /&gt;
&lt;br /&gt;
[hiddenAction_tookDmg]&lt;br /&gt;
# 事件来源指代攻击方。&lt;br /&gt;
autoTriggerOnEvent: tookDamage( withTag  = &amp;quot;APCR&amp;quot; )&lt;br /&gt;
showMessageToAllPlayers: 来自%{eventSource}的攻击！&lt;br /&gt;
&amp;lt;/pre&amp;gt;}}&lt;br /&gt;
&lt;br /&gt;
==函数引用==&lt;br /&gt;
铁锈战争提供了一些常见情况可能用到的单位选择器，且所以节都能使用，可填入参数。&lt;br /&gt;
&lt;br /&gt;
===选填参数部分（注：方括号为选填参数）===&lt;br /&gt;
&amp;lt;p&amp;gt;附属：&amp;lt;code&amp;gt;attachment([slot], [withTag])&amp;lt;/code&amp;gt;&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;运输：&amp;lt;code&amp;gt;transporting([slot])&amp;lt;/code&amp;gt;&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;最近单位：&amp;lt;code&amp;gt;nearestUnit([withinRange], [withTag], [relation], [incompleteBuildings], [withoutTag])&amp;lt;/code&amp;gt;&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;搜索首个单位&amp;lt;code&amp;gt;globalSearchForFirstUnit([withTag], [relation], [incompleteBuildings])&amp;lt;/code&amp;gt;&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====&#039;&#039;&#039;&amp;lt;big&amp;gt;请慎重使用默认参数。&amp;lt;/big&amp;gt;&#039;&#039;&#039;====&lt;br /&gt;
*附属&lt;br /&gt;
不填参数则返回行数最高的附属。&lt;br /&gt;
*运输&lt;br /&gt;
不填参数则返回最近运输的单位。&lt;br /&gt;
*最近单位&lt;br /&gt;
不填参数则返回范围550的单位。&lt;br /&gt;
*搜索首个单位&lt;br /&gt;
不填参数则返回该地图最小id的单位。&lt;br /&gt;
&lt;br /&gt;
===无参数部分===&lt;br /&gt;
这些单位引用的特点很明显，都是指向具体的某个单位。&#039;&#039;&#039;自身（&amp;lt;code&amp;gt;self&amp;lt;/code&amp;gt;）&#039;&#039;&#039;一般情况下指向单位自己，也用于指代前面的单位引用，在涉及复杂单位引用逻辑时，请慎重使用&amp;lt;code&amp;gt;self&amp;lt;/code&amp;gt;，请在初始化处定义个内存赋值&#039;&#039;&#039;&amp;lt;code&amp;gt;self&amp;lt;/code&amp;gt;&#039;&#039;&#039;，选择使用存储自身的内存。&#039;&#039;&#039;攻击目标&#039;&#039;&#039;（&amp;lt;code&amp;gt;attacking&amp;lt;/code&amp;gt;）为&amp;lt;code&amp;gt;activeWaypointTarget&amp;lt;/code&amp;gt;为攻击时套上单位的快捷引用方式，相当于&amp;lt;code&amp;gt;Attack&amp;lt;/code&amp;gt;类型的路径点。&#039;&#039;&#039;最后伤害源&#039;&#039;&#039;&amp;lt;code&amp;gt;lastDamagedBy&amp;lt;/code&amp;gt;在事件来源为&#039;&#039;&#039;受击（&#039;&#039;&#039;&amp;lt;code&amp;gt;tookDamage&amp;lt;/code&amp;gt;）时的快捷引用方式。&#039;&#039;&#039;父单位&#039;&#039;&#039;（&amp;lt;code&amp;gt;parent&amp;lt;/code&amp;gt;）在单位自身为他人附属或乘员时可使用，&amp;lt;code&amp;gt;unitref.hasParent( [withTag] )&amp;lt;/code&amp;gt;为其快捷方式。&#039;&#039;&#039;当前路径点&#039;&#039;&#039;（&amp;lt;code&amp;gt;activeWaypointTarget&amp;lt;/code&amp;gt;）能够实时监控路径点情况，如果没明确指定某个单位则返回在那个位置的标记（Marker），但似乎不能获取该路径点的类型，路径点类型可[https://docs.google.com/spreadsheets/d/1aeP3pUic0IutZlgGix_cM8xR7LEH44gS4itAxETK954/htmlview 详见]代码&amp;lt;code&amp;gt;addWaypoint_type&amp;lt;/code&amp;gt;。&lt;br /&gt;
&lt;br /&gt;
{{折叠|h函数引用的例子|&amp;lt;pre&amp;gt;&lt;br /&gt;
[decal_1]&lt;br /&gt;
# 父单位的名为5的附属为自己则显示贴花。（注：UI世界与单位所在世界不同，请使用发送消息。）&lt;br /&gt;
isVisible: if parent.attachment( slot= 5 ) == self&lt;br /&gt;
&lt;br /&gt;
[hiddenAction_repair]&lt;br /&gt;
# 在玩家创建新路径点时触发。&lt;br /&gt;
autoTriggerOnEvent: newWaypointGivenByPlayer&lt;br /&gt;
# 过滤，只允许类型为”修复“的路径点时触发，&lt;br /&gt;
requireConditional: if self.hasActiveWaypoint( type = &amp;quot;repair&amp;quot; )&lt;br /&gt;
showMessageToPlayer: 你正在治疗%{activeWaypointTarget}。&lt;br /&gt;
&amp;lt;/pre&amp;gt;}}&lt;br /&gt;
&lt;br /&gt;
==存储引用==&lt;br /&gt;
与[[自定义内存]]相比，虽然&#039;&#039;&#039;自定义目标1&#039;&#039;&#039;&amp;lt;code&amp;gt;customTarget1&amp;lt;/code&amp;gt;&#039;&#039;&#039;自定义目标2&#039;&#039;&#039;&amp;lt;code&amp;gt;customTarget2&amp;lt;/code&amp;gt;与&amp;lt;code&amp;gt;@memory x:unit&amp;lt;/code&amp;gt;（&amp;lt;code&amp;gt;Unit&amp;lt;/code&amp;gt;类型的内存）用途相当，都可用于存储单位，但与内存不同，自定义目标在单位死亡、删除的情况下会自动清除。内存需要手动管理，而自定义目标会自动管理。&lt;br /&gt;
内存可以用高频触发行动复现。&lt;br /&gt;
单位生产（&amp;lt;code&amp;gt;canBuild&amp;lt;/code&amp;gt;)、产生(&amp;lt;code&amp;gt;produceUnits&amp;lt;/code&amp;gt;&amp;lt;code&amp;gt;spawnUnit(s)&amp;lt;/code&amp;gt;）出来时，该出厂单位的&#039;&#039;&#039;自定义目标1&#039;&#039;&#039;默认为工厂。工厂不必通过&amp;lt;code&amp;gt;queuedUnitFinished&amp;lt;/code&amp;gt;事件配合&amp;lt;code&amp;gt;sendMessageTo&amp;lt;/code&amp;gt;告诉出厂单位谁是工厂。&lt;br /&gt;
&lt;br /&gt;
==空引用==&lt;br /&gt;
单位引用中，&#039;&#039;&#039;空&#039;&#039;&#039;（&amp;lt;code&amp;gt;null&amp;lt;/code&amp;gt;）指向不存在的单位引用。逻辑布尔值（&amp;lt;code&amp;gt;Logic Boolean&amp;lt;/code&amp;gt;，类似条件判断）中，可搭配不等式避免返回&amp;lt;code&amp;gt;Unit&amp;lt;/code&amp;gt;类型。[[自定义内存]]中，也可作为空值赋值，也可用于清空[[数组]]。&#039;&#039;&#039;空单位引用&#039;&#039;&#039;&amp;lt;code&amp;gt;nullUnit&amp;lt;/code&amp;gt;与前者不同，不可用于清空数组。&lt;/div&gt;</summary>
		<author><name>GMBOX</name></author>
	</entry>
	<entry>
		<id>https://rustedwarfare.org/index.php?title=%E5%8D%95%E4%BD%8D%E5%BC%95%E7%94%A8&amp;diff=4765</id>
		<title>单位引用</title>
		<link rel="alternate" type="text/html" href="https://rustedwarfare.org/index.php?title=%E5%8D%95%E4%BD%8D%E5%BC%95%E7%94%A8&amp;diff=4765"/>
		<updated>2026-02-23T20:04:20Z</updated>

		<summary type="html">&lt;p&gt;GMBOX：​/* 无参数部分 */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;br /&gt;
&#039;&#039;&#039;单位引用&#039;&#039;&#039;（Unit References，缩写：unitref）是铁锈战争[[1.15]]新加入的单位选择器，可引用符合条件的单位。&lt;br /&gt;
&lt;br /&gt;
==查询==&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+单位引用&lt;br /&gt;
|标记&lt;br /&gt;
|getAsMarker()&lt;br /&gt;
getOffsetRelative()&lt;br /&gt;
&lt;br /&gt;
getOffsetAbsolute()&lt;br /&gt;
&lt;br /&gt;
createMarker()&lt;br /&gt;
|-&lt;br /&gt;
|变量引用&lt;br /&gt;
|thisActionTarget&lt;br /&gt;
eventSource&lt;br /&gt;
|-&lt;br /&gt;
|函数引用&lt;br /&gt;
|attachment()&lt;br /&gt;
transporting()&lt;br /&gt;
&lt;br /&gt;
nearestUnit()&lt;br /&gt;
&lt;br /&gt;
globalSearchForFirstUnit()&lt;br /&gt;
&lt;br /&gt;
self&lt;br /&gt;
&lt;br /&gt;
attacking&lt;br /&gt;
&lt;br /&gt;
lastDamagedBy&lt;br /&gt;
&lt;br /&gt;
parent&lt;br /&gt;
&lt;br /&gt;
activeWaypointTarget&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|存储引用&lt;br /&gt;
|customTarget1&lt;br /&gt;
customTarget2&lt;br /&gt;
|-&lt;br /&gt;
|空引用&lt;br /&gt;
|nullUnit&lt;br /&gt;
|}&lt;br /&gt;
==标记==&lt;br /&gt;
你可立即创建一个临时标记，可用来反映位置（Position）、朝向（Direction）、高度（Height）、队伍编号（Team ID），且不需要用到时会自动销毁，不隶属任何单位也不受单位后续行为的影响。&lt;br /&gt;
标记可分为两种，照铁锈战争的说法，一种是&#039;&#039;&#039;获取&#039;&#039;&#039;（get...），另一种是&#039;&#039;&#039;创建&#039;&#039;&#039;(create...)。获取会在以单位的基础创建标记，而&#039;&#039;&#039;创建&#039;&#039;&#039;完全与创建它的单位无关。&lt;br /&gt;
===标记的格式（注：方括号参数为选填）===&lt;br /&gt;
&amp;lt;p&amp;gt;获取：&amp;lt;code&amp;gt;getAsMarker()&amp;lt;/code&amp;gt;&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;相对：&amp;lt;code&amp;gt;getOffsetRelative([x], [y], [height], [dirOffset])&amp;lt;/code&amp;gt;&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;绝对：&amp;lt;code&amp;gt;getOffsetAbsolute([x], [y], [height])&amp;lt;/code&amp;gt;&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;创建：&amp;lt;code&amp;gt;createMarker(x, y, [height], [teamId], [dir])&amp;lt;/code&amp;gt;&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===标记的用法===&lt;br /&gt;
想直接获取当前位置等信息可以使用&amp;lt;code&amp;gt;getAsMarker&amp;lt;/code&amp;gt;。&lt;br /&gt;
铁锈战争为偏移提供了两种方案，一种是&#039;&#039;&#039;相对偏移&#039;&#039;&#039;，不止受单位位置、高度，还受朝向影响。通俗易懂就是你坐在一辆车上，你当然可以移动、旋转（&amp;lt;code&amp;gt;dirOffset&amp;lt;/code&amp;gt;），但车移动、旋转你也必须移动、旋转。&lt;br /&gt;
另一种是&#039;&#039;&#039;绝对偏移&#039;&#039;&#039;，只受单位位置、高度影响，比如单位坐标(1000, 1000)，向左偏移5个单位（995, 1000）。&lt;br /&gt;
&#039;&#039;&#039;创建标记&#039;&#039;&#039;是直接在地图上创建一个标记，队伍编号可由自己决定，可以注意的是创建标记的(x, y)必须要填，但铁锈战争允许省略&amp;lt;code&amp;gt;(x=, y=)&amp;lt;/code&amp;gt;。&lt;br /&gt;
&lt;br /&gt;
{{折叠|标记的例子|&amp;lt;pre&amp;gt;&lt;br /&gt;
# 传送到以该单位朝向角为基础再偏移自定义计时器数量角度的方向纵轴为十的位置。&lt;br /&gt;
teleportTo: getOffsetRelative( y = 10, dirOffset = self.customTimer )&lt;br /&gt;
&lt;br /&gt;
# 炮弹发射到以路径点为中心最近标签为前哨的我方单位。&lt;br /&gt;
fireXTurretAtGround: 1&lt;br /&gt;
fireXTurretAtGround_withTarget: createMarker( activeWaypointTarget.x, activeWaypointTarget.y, teamId = self.teamId ).nearestUnit( withinRange = 1500, withTag = &amp;quot;outpost&amp;quot;, relation = &amp;quot;own&amp;quot; )&lt;br /&gt;
&amp;lt;/pre&amp;gt;}}&lt;br /&gt;
&lt;br /&gt;
==变量引用==&lt;br /&gt;
变量引用只能存在于&#039;&#039;&#039;行动链&#039;&#039;&#039;（Action Chain），可用&#039;&#039;&#039;也触发行动&#039;&#039;&#039;（&amp;lt;code&amp;gt;alsoTriggerAction&amp;lt;/code&amp;gt;）或&#039;&#039;&#039;也加入队列（&#039;&#039;&#039;&amp;lt;code&amp;gt;alsoQueueAction&amp;lt;/code&amp;gt;）将其传递下去，连续&amp;lt;code&amp;gt;alsoTriggerAction&amp;lt;/code&amp;gt;或&amp;lt;code&amp;gt;alsoQueueAction&amp;lt;/code&amp;gt;只允许十层，但可交替使用绕过限制，可存储在&amp;lt;code&amp;gt;Unit&amp;lt;/code&amp;gt;类型的[[自定义内存]]或[[数组]]。&#039;&#039;&#039;当前行动目标&#039;&#039;&#039;（&amp;lt;code&amp;gt;thisActionTarget&amp;lt;/code&amp;gt;）在不同情况下所指代的单位不同，与&#039;&#039;&#039;事件来源&#039;&#039;&#039;（&amp;lt;code&amp;gt;eventSource&amp;lt;/code&amp;gt;）不同，后者只与&#039;&#039;&#039;自动触发事件&#039;&#039;&#039;（&amp;lt;code&amp;gt;autoTriggerOnEvent&amp;lt;/code&amp;gt;）绑定，触发的事件不同所指代单位也不同。&lt;br /&gt;
&lt;br /&gt;
===thisActionIndex的用法===&lt;br /&gt;
&#039;&#039;&#039;当前行动索引&#039;&#039;&#039;&amp;lt;code&amp;gt;thisActionIndex&amp;lt;/code&amp;gt;能在遍历过程中同时知道每个元素的位置信息，&#039;&#039;&#039;索引&#039;&#039;&#039;（&amp;lt;code&amp;gt;index&amp;lt;/code&amp;gt;）为其缩略形式。受&#039;&#039;&#039;重复触发&#039;&#039;&#039;（&amp;lt;code&amp;gt;alsoTriggerActionRepeat&amp;lt;/code&amp;gt;）与&#039;&#039;&#039;提取资源为每个触发行动（&#039;&#039;&#039;&amp;lt;code&amp;gt;takeResources_triggerActionForEach&amp;lt;/code&amp;gt;）影响。值为&amp;lt;code&amp;gt;Int&amp;lt;/code&amp;gt;（整数）类型，从0开始，用于遍历数组。&amp;lt;pre&amp;gt;eg:&lt;br /&gt;
[core]&lt;br /&gt;
# 定义类型为Number的数组。&lt;br /&gt;
@mmeory array: number[]&lt;br /&gt;
[hiddenAction_1]&lt;br /&gt;
# 触发行动2数组长度次（1次）。&lt;br /&gt;
alsoTriggerAction: 2&lt;br /&gt;
alsoTriggerActionRepeat: memory.array.size&lt;br /&gt;
[hiddenAction_2]&lt;br /&gt;
# 如果m.array[i]为0，则赋值在第i个元素赋0，否则减1。&lt;br /&gt;
setUnitMemory: array[index] = select( memory.array[index] == 0,0, memory.array[index] - 1 )&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===对应的情况===&lt;br /&gt;
{| class=&amp;quot;wikitable sortable mw-collapsible mw-collapsed&amp;quot;&lt;br /&gt;
|+thisActionTarget用处&lt;br /&gt;
|fireXTurretAtGround&lt;br /&gt;
|指向的位置&lt;br /&gt;
|-&lt;br /&gt;
|alsoTriggerAction&lt;br /&gt;
|与原行动的thisActionTarget相同&lt;br /&gt;
|-&lt;br /&gt;
|onShoot_triggerActions&lt;br /&gt;
|炮塔射击的单位&lt;br /&gt;
|-&lt;br /&gt;
|takeResources_triggerActionIfAnyCollected&lt;br /&gt;
|提取到的单位&lt;br /&gt;
|-&lt;br /&gt;
|takeResources_triggerActionForEach&lt;br /&gt;
|与上同理&lt;br /&gt;
|-&lt;br /&gt;
|addWaypoint_triggerActionIfMatched&lt;br /&gt;
|被添加路径点的单位（没明确指定某个单位时则为在那个位置的标记，如move等）&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable sortable mw-collapsible mw-collapsed&amp;quot;&lt;br /&gt;
|+eventSource用处&lt;br /&gt;
|tookDamage&lt;br /&gt;
|攻击方&lt;br /&gt;
|-&lt;br /&gt;
|killedAnyUnit&lt;br /&gt;
|杀死的单位&lt;br /&gt;
|-&lt;br /&gt;
|transportingNewUnit&lt;br /&gt;
|新装载的单位&lt;br /&gt;
|-&lt;br /&gt;
|transportUnloadedOrRemovedUnit&lt;br /&gt;
|刚卸载的单位&lt;br /&gt;
|-&lt;br /&gt;
|queuedUnitFinished&lt;br /&gt;
|刚生产的单位&lt;br /&gt;
|-&lt;br /&gt;
|touchTargetSuccess&lt;br /&gt;
|碰到的单位（需配合路径点）&lt;br /&gt;
|-&lt;br /&gt;
|newMessage&lt;br /&gt;
|给这个单位发信的单位&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
{{折叠|thisActionTarget与eventSource的例子|&amp;lt;pre&amp;gt;&lt;br /&gt;
[turret_super]&lt;br /&gt;
# 发射时触发行动。&lt;br /&gt;
onShoot_triggerActions: idol&lt;br /&gt;
[hiddenAction_idol]&lt;br /&gt;
# 当前行动目标指代击中的单位。&lt;br /&gt;
showMessageToAllPlayers: %{thisActionTarget}的笑容。&lt;br /&gt;
&lt;br /&gt;
[hiddenAction_tookDmg]&lt;br /&gt;
# 事件来源指代攻击方。&lt;br /&gt;
autoTriggerOnEvent: tookDamage( withTag  = &amp;quot;APCR&amp;quot; )&lt;br /&gt;
showMessageToAllPlayers: 来自%{eventSource}的攻击！&lt;br /&gt;
&amp;lt;/pre&amp;gt;}}&lt;br /&gt;
&lt;br /&gt;
==函数引用==&lt;br /&gt;
铁锈战争提供了一些常见情况可能用到的单位选择器，且所以节都能使用，可填入参数。&lt;br /&gt;
&lt;br /&gt;
===选填参数部分（注：方括号为选填参数）===&lt;br /&gt;
&amp;lt;p&amp;gt;附属：&amp;lt;code&amp;gt;attachment([slot], [withTag])&amp;lt;/code&amp;gt;&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;运输：&amp;lt;code&amp;gt;transporting([slot])&amp;lt;/code&amp;gt;&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;最近单位：&amp;lt;code&amp;gt;nearestUnit([withinRange], [withTag], [relation], [incompleteBuildings], [withoutTag])&amp;lt;/code&amp;gt;&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;搜索首个单位&amp;lt;code&amp;gt;globalSearchForFirstUnit([withTag], [relation], [incompleteBuildings])&amp;lt;/code&amp;gt;&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====&#039;&#039;&#039;&amp;lt;big&amp;gt;请慎重使用默认参数。&amp;lt;/big&amp;gt;&#039;&#039;&#039;====&lt;br /&gt;
*附属&lt;br /&gt;
不填参数则返回行数最高的附属。&lt;br /&gt;
*运输&lt;br /&gt;
不填参数则返回最近运输的单位。&lt;br /&gt;
*最近单位&lt;br /&gt;
不填参数则返回范围550的单位。&lt;br /&gt;
*搜索首个单位&lt;br /&gt;
不填参数则返回该地图最小id的单位。&lt;br /&gt;
&lt;br /&gt;
===无参数部分===&lt;br /&gt;
这些单位引用的特点很明显，都是指向具体的某个单位。&#039;&#039;&#039;自身（&amp;lt;code&amp;gt;self&amp;lt;/code&amp;gt;）&#039;&#039;&#039;一般情况下指向单位自己，也用于指代前面的单位引用，在涉及复杂单位引用逻辑时，请慎重使用&amp;lt;code&amp;gt;self&amp;lt;/code&amp;gt;，请在初始化处定义个内存赋值&#039;&#039;&#039;&amp;lt;code&amp;gt;self&amp;lt;/code&amp;gt;&#039;&#039;&#039;，选择使用存储自身的内存。&#039;&#039;&#039;攻击目标&#039;&#039;&#039;（&amp;lt;code&amp;gt;attacking&amp;lt;/code&amp;gt;）为&amp;lt;code&amp;gt;activeWaypointTarget&amp;lt;/code&amp;gt;为攻击时套上单位的快捷引用方式，相当于&amp;lt;code&amp;gt;Attack&amp;lt;/code&amp;gt;类型的路径点。&#039;&#039;&#039;最后伤害源&#039;&#039;&#039;&amp;lt;code&amp;gt;lastDamagedBy&amp;lt;/code&amp;gt;在事件来源为&#039;&#039;&#039;受击（&#039;&#039;&#039;&amp;lt;code&amp;gt;tookDamage&amp;lt;/code&amp;gt;）时的快捷引用方式。&#039;&#039;&#039;父单位&#039;&#039;&#039;（&amp;lt;code&amp;gt;parent&amp;lt;/code&amp;gt;）在单位自身为他人附属或乘员时可使用，&amp;lt;code&amp;gt;unitref.hasParent( [withTag] )&amp;lt;/code&amp;gt;为其快捷方式。&#039;&#039;&#039;当前路径点&#039;&#039;&#039;（&amp;lt;code&amp;gt;activeWaypointTarget&amp;lt;/code&amp;gt;）能够实时监控路径点情况，如果没明确指定某个单位则返回在那个位置的标记（Marker），但似乎不能获取该路径点的类型，路径点类型可[https://docs.google.com/spreadsheets/d/1aeP3pUic0IutZlgGix_cM8xR7LEH44gS4itAxETK954/htmlview 详见]代码&amp;lt;code&amp;gt;addWaypoint_type&amp;lt;/code&amp;gt;。&lt;br /&gt;
&lt;br /&gt;
{{折叠|h函数引用的例子|&amp;lt;pre&amp;gt;&lt;br /&gt;
[decal_1]&lt;br /&gt;
# 父单位的名为5的附属为自己则显示贴花。（注：UI世界与单位所在世界不同，请使用发送消息。）&lt;br /&gt;
isVisible: if parent.attachment( slot= 5 ) == self&lt;br /&gt;
&lt;br /&gt;
[hiddenAction_repair]&lt;br /&gt;
# 在玩家创建新路径点时触发。&lt;br /&gt;
autoTriggerOnEvent: newWaypointGivenByPlayer&lt;br /&gt;
# 过滤，只允许类型为”修复“的路径点时触发，&lt;br /&gt;
requireConditional: if self.hasActiveWaypoint( type = &amp;quot;repair&amp;quot; )&lt;br /&gt;
showMessageToPlayer: 你正在治疗%{activeWaypointTarget}。&lt;br /&gt;
&amp;lt;/pre&amp;gt;}}&lt;br /&gt;
&lt;br /&gt;
==存储引用==&lt;br /&gt;
与[[自定义内存]]相比，虽然&#039;&#039;&#039;自定义目标1&#039;&#039;&#039;&amp;lt;code&amp;gt;customTarget1&amp;lt;/code&amp;gt;&#039;&#039;&#039;自定义目标2&#039;&#039;&#039;&amp;lt;code&amp;gt;customTarget2&amp;lt;/code&amp;gt;与&amp;lt;code&amp;gt;@memory x:unit&amp;lt;/code&amp;gt;（&amp;lt;code&amp;gt;Unit&amp;lt;/code&amp;gt;类型的内存）用途相当，都可用于存储单位，但与内存不同，自定义目标在单位死亡、删除的情况下会自动清除。内存需要手动管理，而自定义目标会自动管理。&lt;br /&gt;
内存可以用高频触发行动复现。&lt;br /&gt;
单位生产（&amp;lt;code&amp;gt;canBuild&amp;lt;/code&amp;gt;)、产生(&amp;lt;code&amp;gt;produceUnits&amp;lt;/code&amp;gt;&amp;lt;code&amp;gt;spawnUnit(s)&amp;lt;/code&amp;gt;）出来时，该出厂单位的&#039;&#039;&#039;自定义目标1&#039;&#039;&#039;默认为工厂。工厂不必通过&amp;lt;code&amp;gt;queuedUnitFinished&amp;lt;/code&amp;gt;事件配合&amp;lt;code&amp;gt;sendMessageTo&amp;lt;/code&amp;gt;告诉出厂单位谁是工厂。&lt;br /&gt;
&lt;br /&gt;
==空引用==&lt;br /&gt;
单位引用中，&#039;&#039;&#039;空&#039;&#039;&#039;（&amp;lt;code&amp;gt;null&amp;lt;/code&amp;gt;）指向不存在的单位引用。逻辑布尔值（&amp;lt;code&amp;gt;Logic Boolean&amp;lt;/code&amp;gt;，类似条件判断）中，可搭配不等式避免返回&amp;lt;code&amp;gt;Unit&amp;lt;/code&amp;gt;类型。[[自定义内存]]中，也可作为空值赋值，也可用于清空[[数组]]。&#039;&#039;&#039;空单位引用&#039;&#039;&#039;&amp;lt;code&amp;gt;nullUnit&amp;lt;/code&amp;gt;与前者不同，不可用于清空数组。&lt;/div&gt;</summary>
		<author><name>GMBOX</name></author>
	</entry>
	<entry>
		<id>https://rustedwarfare.org/index.php?title=%E5%8D%95%E4%BD%8D%E5%BC%95%E7%94%A8&amp;diff=4764</id>
		<title>单位引用</title>
		<link rel="alternate" type="text/html" href="https://rustedwarfare.org/index.php?title=%E5%8D%95%E4%BD%8D%E5%BC%95%E7%94%A8&amp;diff=4764"/>
		<updated>2026-02-23T20:02:36Z</updated>

		<summary type="html">&lt;p&gt;GMBOX：​/* 对应的情况 */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;br /&gt;
&#039;&#039;&#039;单位引用&#039;&#039;&#039;（Unit References，缩写：unitref）是铁锈战争[[1.15]]新加入的单位选择器，可引用符合条件的单位。&lt;br /&gt;
&lt;br /&gt;
==查询==&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+单位引用&lt;br /&gt;
|标记&lt;br /&gt;
|getAsMarker()&lt;br /&gt;
getOffsetRelative()&lt;br /&gt;
&lt;br /&gt;
getOffsetAbsolute()&lt;br /&gt;
&lt;br /&gt;
createMarker()&lt;br /&gt;
|-&lt;br /&gt;
|变量引用&lt;br /&gt;
|thisActionTarget&lt;br /&gt;
eventSource&lt;br /&gt;
|-&lt;br /&gt;
|函数引用&lt;br /&gt;
|attachment()&lt;br /&gt;
transporting()&lt;br /&gt;
&lt;br /&gt;
nearestUnit()&lt;br /&gt;
&lt;br /&gt;
globalSearchForFirstUnit()&lt;br /&gt;
&lt;br /&gt;
self&lt;br /&gt;
&lt;br /&gt;
attacking&lt;br /&gt;
&lt;br /&gt;
lastDamagedBy&lt;br /&gt;
&lt;br /&gt;
parent&lt;br /&gt;
&lt;br /&gt;
activeWaypointTarget&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|存储引用&lt;br /&gt;
|customTarget1&lt;br /&gt;
customTarget2&lt;br /&gt;
|-&lt;br /&gt;
|空引用&lt;br /&gt;
|nullUnit&lt;br /&gt;
|}&lt;br /&gt;
==标记==&lt;br /&gt;
你可立即创建一个临时标记，可用来反映位置（Position）、朝向（Direction）、高度（Height）、队伍编号（Team ID），且不需要用到时会自动销毁，不隶属任何单位也不受单位后续行为的影响。&lt;br /&gt;
标记可分为两种，照铁锈战争的说法，一种是&#039;&#039;&#039;获取&#039;&#039;&#039;（get...），另一种是&#039;&#039;&#039;创建&#039;&#039;&#039;(create...)。获取会在以单位的基础创建标记，而&#039;&#039;&#039;创建&#039;&#039;&#039;完全与创建它的单位无关。&lt;br /&gt;
===标记的格式（注：方括号参数为选填）===&lt;br /&gt;
&amp;lt;p&amp;gt;获取：&amp;lt;code&amp;gt;getAsMarker()&amp;lt;/code&amp;gt;&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;相对：&amp;lt;code&amp;gt;getOffsetRelative([x], [y], [height], [dirOffset])&amp;lt;/code&amp;gt;&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;绝对：&amp;lt;code&amp;gt;getOffsetAbsolute([x], [y], [height])&amp;lt;/code&amp;gt;&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;创建：&amp;lt;code&amp;gt;createMarker(x, y, [height], [teamId], [dir])&amp;lt;/code&amp;gt;&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===标记的用法===&lt;br /&gt;
想直接获取当前位置等信息可以使用&amp;lt;code&amp;gt;getAsMarker&amp;lt;/code&amp;gt;。&lt;br /&gt;
铁锈战争为偏移提供了两种方案，一种是&#039;&#039;&#039;相对偏移&#039;&#039;&#039;，不止受单位位置、高度，还受朝向影响。通俗易懂就是你坐在一辆车上，你当然可以移动、旋转（&amp;lt;code&amp;gt;dirOffset&amp;lt;/code&amp;gt;），但车移动、旋转你也必须移动、旋转。&lt;br /&gt;
另一种是&#039;&#039;&#039;绝对偏移&#039;&#039;&#039;，只受单位位置、高度影响，比如单位坐标(1000, 1000)，向左偏移5个单位（995, 1000）。&lt;br /&gt;
&#039;&#039;&#039;创建标记&#039;&#039;&#039;是直接在地图上创建一个标记，队伍编号可由自己决定，可以注意的是创建标记的(x, y)必须要填，但铁锈战争允许省略&amp;lt;code&amp;gt;(x=, y=)&amp;lt;/code&amp;gt;。&lt;br /&gt;
&lt;br /&gt;
{{折叠|标记的例子|&amp;lt;pre&amp;gt;&lt;br /&gt;
# 传送到以该单位朝向角为基础再偏移自定义计时器数量角度的方向纵轴为十的位置。&lt;br /&gt;
teleportTo: getOffsetRelative( y = 10, dirOffset = self.customTimer )&lt;br /&gt;
&lt;br /&gt;
# 炮弹发射到以路径点为中心最近标签为前哨的我方单位。&lt;br /&gt;
fireXTurretAtGround: 1&lt;br /&gt;
fireXTurretAtGround_withTarget: createMarker( activeWaypointTarget.x, activeWaypointTarget.y, teamId = self.teamId ).nearestUnit( withinRange = 1500, withTag = &amp;quot;outpost&amp;quot;, relation = &amp;quot;own&amp;quot; )&lt;br /&gt;
&amp;lt;/pre&amp;gt;}}&lt;br /&gt;
&lt;br /&gt;
==变量引用==&lt;br /&gt;
变量引用只能存在于&#039;&#039;&#039;行动链&#039;&#039;&#039;（Action Chain），可用&#039;&#039;&#039;也触发行动&#039;&#039;&#039;（&amp;lt;code&amp;gt;alsoTriggerAction&amp;lt;/code&amp;gt;）或&#039;&#039;&#039;也加入队列（&#039;&#039;&#039;&amp;lt;code&amp;gt;alsoQueueAction&amp;lt;/code&amp;gt;）将其传递下去，连续&amp;lt;code&amp;gt;alsoTriggerAction&amp;lt;/code&amp;gt;或&amp;lt;code&amp;gt;alsoQueueAction&amp;lt;/code&amp;gt;只允许十层，但可交替使用绕过限制，可存储在&amp;lt;code&amp;gt;Unit&amp;lt;/code&amp;gt;类型的[[自定义内存]]或[[数组]]。&#039;&#039;&#039;当前行动目标&#039;&#039;&#039;（&amp;lt;code&amp;gt;thisActionTarget&amp;lt;/code&amp;gt;）在不同情况下所指代的单位不同，与&#039;&#039;&#039;事件来源&#039;&#039;&#039;（&amp;lt;code&amp;gt;eventSource&amp;lt;/code&amp;gt;）不同，后者只与&#039;&#039;&#039;自动触发事件&#039;&#039;&#039;（&amp;lt;code&amp;gt;autoTriggerOnEvent&amp;lt;/code&amp;gt;）绑定，触发的事件不同所指代单位也不同。&lt;br /&gt;
&lt;br /&gt;
===thisActionIndex的用法===&lt;br /&gt;
&#039;&#039;&#039;当前行动索引&#039;&#039;&#039;&amp;lt;code&amp;gt;thisActionIndex&amp;lt;/code&amp;gt;能在遍历过程中同时知道每个元素的位置信息，&#039;&#039;&#039;索引&#039;&#039;&#039;（&amp;lt;code&amp;gt;index&amp;lt;/code&amp;gt;）为其缩略形式。受&#039;&#039;&#039;重复触发&#039;&#039;&#039;（&amp;lt;code&amp;gt;alsoTriggerActionRepeat&amp;lt;/code&amp;gt;）与&#039;&#039;&#039;提取资源为每个触发行动（&#039;&#039;&#039;&amp;lt;code&amp;gt;takeResources_triggerActionForEach&amp;lt;/code&amp;gt;）影响。值为&amp;lt;code&amp;gt;Int&amp;lt;/code&amp;gt;（整数）类型，从0开始，用于遍历数组。&amp;lt;pre&amp;gt;eg:&lt;br /&gt;
[core]&lt;br /&gt;
# 定义类型为Number的数组。&lt;br /&gt;
@mmeory array: number[]&lt;br /&gt;
[hiddenAction_1]&lt;br /&gt;
# 触发行动2数组长度次（1次）。&lt;br /&gt;
alsoTriggerAction: 2&lt;br /&gt;
alsoTriggerActionRepeat: memory.array.size&lt;br /&gt;
[hiddenAction_2]&lt;br /&gt;
# 如果m.array[i]为0，则赋值在第i个元素赋0，否则减1。&lt;br /&gt;
setUnitMemory: array[index] = select( memory.array[index] == 0,0, memory.array[index] - 1 )&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===对应的情况===&lt;br /&gt;
{| class=&amp;quot;wikitable sortable mw-collapsible mw-collapsed&amp;quot;&lt;br /&gt;
|+thisActionTarget用处&lt;br /&gt;
|fireXTurretAtGround&lt;br /&gt;
|指向的位置&lt;br /&gt;
|-&lt;br /&gt;
|alsoTriggerAction&lt;br /&gt;
|与原行动的thisActionTarget相同&lt;br /&gt;
|-&lt;br /&gt;
|onShoot_triggerActions&lt;br /&gt;
|炮塔射击的单位&lt;br /&gt;
|-&lt;br /&gt;
|takeResources_triggerActionIfAnyCollected&lt;br /&gt;
|提取到的单位&lt;br /&gt;
|-&lt;br /&gt;
|takeResources_triggerActionForEach&lt;br /&gt;
|与上同理&lt;br /&gt;
|-&lt;br /&gt;
|addWaypoint_triggerActionIfMatched&lt;br /&gt;
|被添加路径点的单位（没明确指定某个单位时则为在那个位置的标记，如move等）&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable sortable mw-collapsible mw-collapsed&amp;quot;&lt;br /&gt;
|+eventSource用处&lt;br /&gt;
|tookDamage&lt;br /&gt;
|攻击方&lt;br /&gt;
|-&lt;br /&gt;
|killedAnyUnit&lt;br /&gt;
|杀死的单位&lt;br /&gt;
|-&lt;br /&gt;
|transportingNewUnit&lt;br /&gt;
|新装载的单位&lt;br /&gt;
|-&lt;br /&gt;
|transportUnloadedOrRemovedUnit&lt;br /&gt;
|刚卸载的单位&lt;br /&gt;
|-&lt;br /&gt;
|queuedUnitFinished&lt;br /&gt;
|刚生产的单位&lt;br /&gt;
|-&lt;br /&gt;
|touchTargetSuccess&lt;br /&gt;
|碰到的单位（需配合路径点）&lt;br /&gt;
|-&lt;br /&gt;
|newMessage&lt;br /&gt;
|给这个单位发信的单位&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
{{折叠|thisActionTarget与eventSource的例子|&amp;lt;pre&amp;gt;&lt;br /&gt;
[turret_super]&lt;br /&gt;
# 发射时触发行动。&lt;br /&gt;
onShoot_triggerActions: idol&lt;br /&gt;
[hiddenAction_idol]&lt;br /&gt;
# 当前行动目标指代击中的单位。&lt;br /&gt;
showMessageToAllPlayers: %{thisActionTarget}的笑容。&lt;br /&gt;
&lt;br /&gt;
[hiddenAction_tookDmg]&lt;br /&gt;
# 事件来源指代攻击方。&lt;br /&gt;
autoTriggerOnEvent: tookDamage( withTag  = &amp;quot;APCR&amp;quot; )&lt;br /&gt;
showMessageToAllPlayers: 来自%{eventSource}的攻击！&lt;br /&gt;
&amp;lt;/pre&amp;gt;}}&lt;br /&gt;
&lt;br /&gt;
==函数引用==&lt;br /&gt;
铁锈战争提供了一些常见情况可能用到的单位选择器，且所以节都能使用，可填入参数。&lt;br /&gt;
&lt;br /&gt;
===选填参数部分（注：方括号为选填参数）===&lt;br /&gt;
&amp;lt;p&amp;gt;附属：&amp;lt;code&amp;gt;attachment([slot], [withTag])&amp;lt;/code&amp;gt;&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;运输：&amp;lt;code&amp;gt;transporting([slot])&amp;lt;/code&amp;gt;&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;最近单位：&amp;lt;code&amp;gt;nearestUnit([withinRange], [withTag], [relation], [incompleteBuildings], [withoutTag])&amp;lt;/code&amp;gt;&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;搜索首个单位&amp;lt;code&amp;gt;globalSearchForFirstUnit([withTag], [relation], [incompleteBuildings])&amp;lt;/code&amp;gt;&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====&#039;&#039;&#039;&amp;lt;big&amp;gt;请慎重使用默认参数。&amp;lt;/big&amp;gt;&#039;&#039;&#039;====&lt;br /&gt;
*附属&lt;br /&gt;
不填参数则返回行数最高的附属。&lt;br /&gt;
*运输&lt;br /&gt;
不填参数则返回最近运输的单位。&lt;br /&gt;
*最近单位&lt;br /&gt;
不填参数则返回范围550的单位。&lt;br /&gt;
*搜索首个单位&lt;br /&gt;
不填参数则返回该地图最小id的单位。&lt;br /&gt;
&lt;br /&gt;
===无参数部分===&lt;br /&gt;
这些单位引用的特点很明显，都是指向具体的某个单位。&#039;&#039;&#039;自身（&amp;lt;code&amp;gt;self&amp;lt;/code&amp;gt;）&#039;&#039;&#039;一般情况下指向单位自己，也用于指代前面的单位引用，在涉及复杂单位引用逻辑时，请慎重使用&amp;lt;code&amp;gt;self&amp;lt;/code&amp;gt;，请在初始化处定义个内存赋值&#039;&#039;&#039;&amp;lt;code&amp;gt;self&amp;lt;/code&amp;gt;&#039;&#039;&#039;，选择使用存储自身的内存。&#039;&#039;&#039;攻击目标&#039;&#039;&#039;（&amp;lt;code&amp;gt;attacking&amp;lt;/code&amp;gt;）为&amp;lt;code&amp;gt;activeWaypointTarget&amp;lt;/code&amp;gt;为攻击时套上单位的快捷引用方式，相当于&amp;lt;code&amp;gt;Attack&amp;lt;/code&amp;gt;类型的路径点。&#039;&#039;&#039;最后伤害源&#039;&#039;&#039;&amp;lt;code&amp;gt;lastDamagedBy&amp;lt;/code&amp;gt;在事件来源为&#039;&#039;&#039;受击（&#039;&#039;&#039;&amp;lt;code&amp;gt;tookDamage&amp;lt;/code&amp;gt;）时的快捷引用方式。&#039;&#039;&#039;父单位&#039;&#039;&#039;（&amp;lt;code&amp;gt;parent&amp;lt;/code&amp;gt;）在单位自身为他人附属或乘员时可使用，&amp;lt;code&amp;gt;unitref.hasParent( [withTag] )&amp;lt;/code&amp;gt;为其快捷方式。&#039;&#039;&#039;当前路径点&#039;&#039;&#039;（&amp;lt;code&amp;gt;activeWaypointTarget&amp;lt;/code&amp;gt;）能够实时监控路径点情况，如果没明确指定某个单位则返回在那个位置的标记（Marker），但似乎不能获取该路径点的类型，路径点类型可[https://docs.google.com/spreadsheets/d/1aeP3pUic0IutZlgGix_cM8xR7LEH44gS4itAxETK954/htmlview 详见]代码&amp;lt;code&amp;gt;addWaypoint_type&amp;lt;/code&amp;gt;。&lt;br /&gt;
&lt;br /&gt;
{{折叠|全局单位引用的例子|&amp;lt;pre&amp;gt;&lt;br /&gt;
[decal_1]&lt;br /&gt;
# 父单位的名为5的附属为自己则显示贴花。（注：UI世界与单位所在世界不同，请使用发送消息。）&lt;br /&gt;
isVisible: if parent.attachment( slot= 5 ) == self&lt;br /&gt;
&lt;br /&gt;
[hiddenAction_repair]&lt;br /&gt;
# 在玩家创建新路径点时触发。&lt;br /&gt;
autoTriggerOnEvent: newWaypointGivenByPlayer&lt;br /&gt;
# 过滤，只允许类型为”修复“的路径点时触发，&lt;br /&gt;
requireConditional: if self.hasActiveWaypoint( type = &amp;quot;repair&amp;quot; )&lt;br /&gt;
showMessageToPlayer: 你正在治疗%{activeWaypointTarget}。&lt;br /&gt;
&amp;lt;/pre&amp;gt;}}&lt;br /&gt;
&lt;br /&gt;
==存储引用==&lt;br /&gt;
与[[自定义内存]]相比，虽然&#039;&#039;&#039;自定义目标1&#039;&#039;&#039;&amp;lt;code&amp;gt;customTarget1&amp;lt;/code&amp;gt;&#039;&#039;&#039;自定义目标2&#039;&#039;&#039;&amp;lt;code&amp;gt;customTarget2&amp;lt;/code&amp;gt;与&amp;lt;code&amp;gt;@memory x:unit&amp;lt;/code&amp;gt;（&amp;lt;code&amp;gt;Unit&amp;lt;/code&amp;gt;类型的内存）用途相当，都可用于存储单位，但与内存不同，自定义目标在单位死亡、删除的情况下会自动清除。内存需要手动管理，而自定义目标会自动管理。&lt;br /&gt;
内存可以用高频触发行动复现。&lt;br /&gt;
单位生产（&amp;lt;code&amp;gt;canBuild&amp;lt;/code&amp;gt;)、产生(&amp;lt;code&amp;gt;produceUnits&amp;lt;/code&amp;gt;&amp;lt;code&amp;gt;spawnUnit(s)&amp;lt;/code&amp;gt;）出来时，该出厂单位的&#039;&#039;&#039;自定义目标1&#039;&#039;&#039;默认为工厂。工厂不必通过&amp;lt;code&amp;gt;queuedUnitFinished&amp;lt;/code&amp;gt;事件配合&amp;lt;code&amp;gt;sendMessageTo&amp;lt;/code&amp;gt;告诉出厂单位谁是工厂。&lt;br /&gt;
&lt;br /&gt;
==空引用==&lt;br /&gt;
单位引用中，&#039;&#039;&#039;空&#039;&#039;&#039;（&amp;lt;code&amp;gt;null&amp;lt;/code&amp;gt;）指向不存在的单位引用。逻辑布尔值（&amp;lt;code&amp;gt;Logic Boolean&amp;lt;/code&amp;gt;，类似条件判断）中，可搭配不等式避免返回&amp;lt;code&amp;gt;Unit&amp;lt;/code&amp;gt;类型。[[自定义内存]]中，也可作为空值赋值，也可用于清空[[数组]]。&#039;&#039;&#039;空单位引用&#039;&#039;&#039;&amp;lt;code&amp;gt;nullUnit&amp;lt;/code&amp;gt;与前者不同，不可用于清空数组。&lt;/div&gt;</summary>
		<author><name>GMBOX</name></author>
	</entry>
	<entry>
		<id>https://rustedwarfare.org/index.php?title=%E5%8D%95%E4%BD%8D%E5%BC%95%E7%94%A8&amp;diff=4763</id>
		<title>单位引用</title>
		<link rel="alternate" type="text/html" href="https://rustedwarfare.org/index.php?title=%E5%8D%95%E4%BD%8D%E5%BC%95%E7%94%A8&amp;diff=4763"/>
		<updated>2026-02-23T18:58:02Z</updated>

		<summary type="html">&lt;p&gt;GMBOX：​/* 存储 */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;br /&gt;
&#039;&#039;&#039;单位引用&#039;&#039;&#039;（Unit Reference）是铁锈战争[[1.15]]新加入的单位选择器，可引用符合条件的单位。&lt;br /&gt;
&lt;br /&gt;
==查询==&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+单位引用&lt;br /&gt;
|标记&lt;br /&gt;
|getAsMarker()&lt;br /&gt;
getOffsetRelative()&lt;br /&gt;
getOffsetAbsolute()&lt;br /&gt;
createMarker()&lt;br /&gt;
|-&lt;br /&gt;
|局内&lt;br /&gt;
|thisActionTarget&lt;br /&gt;
eventSource&lt;br /&gt;
|-&lt;br /&gt;
|全局&lt;br /&gt;
|attachment()&lt;br /&gt;
transporting()&lt;br /&gt;
attacking&lt;br /&gt;
lastDamagedBy&lt;br /&gt;
parent&lt;br /&gt;
activeWaypointTarget&lt;br /&gt;
nearestUnit()&lt;br /&gt;
globalSearchForFirstUnit()&lt;br /&gt;
|-&lt;br /&gt;
|存储&lt;br /&gt;
|customTarget1&lt;br /&gt;
customTarget2&lt;br /&gt;
|-&lt;br /&gt;
|其他&lt;br /&gt;
|nullUnit&lt;br /&gt;
|}&lt;br /&gt;
==标记==&lt;br /&gt;
临时、快速地创建一个标记，可用来反映位置、朝向、高度、队伍编号，且不需要用到时会自动移除，不隶属任何单位也不受单位后续行为的影响。&lt;br /&gt;
标记可分为两种，照铁锈战争的说法，一种是&#039;&#039;&#039;获取&#039;&#039;&#039;（get...），另一种是&#039;&#039;&#039;创建&#039;&#039;&#039;(create...)。获取会在以单位的基础创建标记，而&#039;&#039;&#039;创建&#039;&#039;&#039;完全与创建它的单位无关。&lt;br /&gt;
===标记的格式===&lt;br /&gt;
&amp;lt;p&amp;gt;获取：&amp;lt;code&amp;gt;getAsMarker()&amp;lt;/code&amp;gt;&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;相对：&amp;lt;code&amp;gt;getOffsetRelative([x], [y], [height], [dirOffset])&amp;lt;/code&amp;gt;&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;绝对：&amp;lt;code&amp;gt;getOffsetAbsolute([x], [y], [height])&amp;lt;/code&amp;gt;&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;创建：&amp;lt;code&amp;gt;createMarker(x, y, [height], [teamId], [dir])&amp;lt;/code&amp;gt;&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===标记的用法===&lt;br /&gt;
想直接获取当前位置等信息可以使用&amp;lt;code&amp;gt;getAsMarker&amp;lt;/code&amp;gt;。&lt;br /&gt;
铁锈战争为偏移提供了两种方案，一种是&#039;&#039;&#039;相对偏移&#039;&#039;&#039;，不止受单位位置、高度，还受朝向影响。通俗易懂就是你坐在一辆车上，你当然可以移动、旋转（&amp;lt;code&amp;gt;dirOffset&amp;lt;/code&amp;gt;），但车移动、旋转你也必须移动、旋转。&lt;br /&gt;
另一种是&#039;&#039;&#039;绝对偏移&#039;&#039;&#039;，只受单位位置、高度影响，比如单位坐标(1000, 1000)，向左偏移5个单位（995, 1000）。&lt;br /&gt;
&#039;&#039;&#039;创建标记&#039;&#039;&#039;是直接在地图上创建一个标记，队伍编号可由自己决定，可以注意的是创建标记的(x, y)必须要填，但铁锈战争允许省略&amp;lt;code&amp;gt;(x=, y=)&amp;lt;/code&amp;gt;。&lt;br /&gt;
&lt;br /&gt;
{{折叠|标记的例子|&amp;lt;pre&amp;gt;&lt;br /&gt;
teleportTo: getOffsetRelative(y= 10, dirOffset= self.customTimer)&lt;br /&gt;
&lt;br /&gt;
fireXTurretAtGround_withTarget: createMarker(activeWaypointTarget.x, activeWaypointTarget.y, teamId= self.teamId).nearestUnit(withinRange= 1500, withTag= &amp;quot;outpost&amp;quot;, relation= &amp;quot;own&amp;quot;)&lt;br /&gt;
&amp;lt;/pre&amp;gt;}}&lt;br /&gt;
&lt;br /&gt;
==局内==&lt;br /&gt;
局内只能在行动内使用，可用&amp;lt;code&amp;gt;alsoTriggerAction&amp;lt;/code&amp;gt;或&amp;lt;code&amp;gt;alsoQueueAction&amp;lt;/code&amp;gt;延长“寿命”，你也可以用内存将其存储。&amp;lt;code&amp;gt;thisActionTarget&amp;lt;/code&amp;gt;在不同情况下所指代的单位不同，与&amp;lt;code&amp;gt;eventSource&amp;lt;/code&amp;gt;不同，后者只与&amp;lt;code&amp;gt;autoTriggerOnEvent&amp;lt;/code&amp;gt;绑定，触发的事件不同所指代的单位也不同。&lt;br /&gt;
===thisActionIndex的用法===&lt;br /&gt;
&amp;lt;code&amp;gt;thisActionIndex&amp;lt;/code&amp;gt;能在遍历过程中同时知道每个元素的位置信息，&amp;lt;code&amp;gt;index&amp;lt;/code&amp;gt;为其缩略形式。受&amp;lt;code&amp;gt;alsoTriggerActionRepeat&amp;lt;/code&amp;gt;与&amp;lt;code&amp;gt;takeResources_triggerActionForEach&amp;lt;/code&amp;gt;影响。值为int（整数）类型，从0开始，用于遍历数组。&lt;br /&gt;
&amp;lt;pre&amp;gt;eg:&lt;br /&gt;
[hiddenAction_1]&lt;br /&gt;
alsoTriggerAction:2&lt;br /&gt;
alsoTriggerActionRepeat:memory.array.size&lt;br /&gt;
[hiddenAction_2]&lt;br /&gt;
setUnitMemory:array[index]=select(memory.array[index]==0,0,memory.array[index]-1)&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===对应的情况===&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+thisActionTarget用处&lt;br /&gt;
|fireXTurretAtGround&lt;br /&gt;
|指向的位置&lt;br /&gt;
|-&lt;br /&gt;
|alsoTriggerAction&lt;br /&gt;
|与原行动的thisActionTarget相同&lt;br /&gt;
|-&lt;br /&gt;
|onShoot_triggerActions&lt;br /&gt;
|炮塔射击的单位&lt;br /&gt;
|-&lt;br /&gt;
|takeResources_triggerActionIfAnyCollected&lt;br /&gt;
|提取到的单位&lt;br /&gt;
|-&lt;br /&gt;
|takeResources_triggerActionForEach&lt;br /&gt;
|与上同理&lt;br /&gt;
|-&lt;br /&gt;
|addWaypoint_triggerActionIfMatched&lt;br /&gt;
|被添加路径点的单位（没明确指定某个单位时则为在那个位置的标记，如move等）&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+eventSource用处&lt;br /&gt;
|tookDamage&lt;br /&gt;
|攻击你的单位&lt;br /&gt;
|-&lt;br /&gt;
|killedAnyUnit&lt;br /&gt;
|杀死的单位&lt;br /&gt;
|-&lt;br /&gt;
|transportingNewUnit&lt;br /&gt;
|新装载的单位&lt;br /&gt;
|-&lt;br /&gt;
|transportUnloadedOrRemovedUnit&lt;br /&gt;
|刚卸载的单位&lt;br /&gt;
|-&lt;br /&gt;
|queuedUnitFinished&lt;br /&gt;
|刚生产的单位&lt;br /&gt;
|-&lt;br /&gt;
|touchTargetSuccess&lt;br /&gt;
|碰到的单位（需配合路径点）&lt;br /&gt;
|-&lt;br /&gt;
|newMessage&lt;br /&gt;
|给这个单位发信的单位&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
{{折叠|thisActionTarget与eventSource的例子|&amp;lt;pre&amp;gt;&lt;br /&gt;
[turret_super]&lt;br /&gt;
onShoot_triggerActions: idol&lt;br /&gt;
[hiddenAction_idol]&lt;br /&gt;
showMessageToAllPlayers: %{thisActionTarget}的笑容。&lt;br /&gt;
&lt;br /&gt;
[hiddenAction_tookDmg]&lt;br /&gt;
autoTriggerOnEvent: tookDamage(withTag=&amp;quot;APCR&amp;quot;)&lt;br /&gt;
showMessageToAllPlayers: 来自%{eventSource}的攻击！&lt;br /&gt;
&amp;lt;/pre&amp;gt;}}&lt;br /&gt;
&lt;br /&gt;
==全局==&lt;br /&gt;
铁锈战争提供了一些常见情况可能用到的单位选择器，且所以节都能使用，与&#039;&#039;&#039;局内&#039;&#039;&#039;相对。&lt;br /&gt;
&lt;br /&gt;
===选填参数部分===&lt;br /&gt;
&amp;lt;p&amp;gt;附属：&amp;lt;code&amp;gt;attachment([slot], [withTag])&amp;lt;/code&amp;gt;&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;运输：&amp;lt;code&amp;gt;transporting([slot])&amp;lt;/code&amp;gt;&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;最近单位：&amp;lt;code&amp;gt;nearestUnit([withinRange], [withTag], [relation], [incompleteBuildings], [withoutTag])&amp;lt;/code&amp;gt;&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;搜索首个单位&amp;lt;code&amp;gt;globalSearchForFirstUnit([withTag], [relation], [incompleteBuildings])&amp;lt;/code&amp;gt;&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====参数都为选填，默认情况就很有趣了。====&lt;br /&gt;
*附属&lt;br /&gt;
不填参数则返回行数最高的单位。&lt;br /&gt;
*运输&lt;br /&gt;
不填参数则返回最近运输的单位。&lt;br /&gt;
*最近单位&lt;br /&gt;
不填参数则返回范围约为500内的单位。&lt;br /&gt;
*搜索首个单位&lt;br /&gt;
不填参数则返回该地图最小id的单位。&lt;br /&gt;
&lt;br /&gt;
===无参数部分===&lt;br /&gt;
这些单位引用的特点很明显，都是指向具体的某个单位。&lt;br /&gt;
&amp;lt;code&amp;gt;attacking&amp;lt;/code&amp;gt;为&amp;lt;code&amp;gt;activeWaypointTarget&amp;lt;/code&amp;gt;为攻击时套上单位的快捷引用方式。&amp;lt;code&amp;gt;lastDamagedBy&amp;lt;/code&amp;gt;在事件来源为tookDamage时的快捷引用方式。&amp;lt;code&amp;gt;parent&amp;lt;/code&amp;gt;在单位自身为他人附属时可使用。&amp;lt;code&amp;gt;activeWaypointTarget&amp;lt;/code&amp;gt;能够实时监控路径点情况，如果没明确指定某个单位则返回在那个位置的标记（Marker），但似乎不能获取该路径点的类型，路径点类型可[https://docs.google.com/spreadsheets/d/1aeP3pUic0IutZlgGix_cM8xR7LEH44gS4itAxETK954/htmlview 详见]代码&amp;lt;code&amp;gt;addWaypoint_type&amp;lt;/code&amp;gt;。&lt;br /&gt;
&lt;br /&gt;
{{折叠|全局单位引用的例子|&amp;lt;pre&amp;gt;&lt;br /&gt;
isVisible: if parent.attachment(slot= 5) == self&lt;br /&gt;
&lt;br /&gt;
[hiddenAction_repair]&lt;br /&gt;
autoTriggerOnEvent: newWaypointGivenByPlayer&lt;br /&gt;
requireConditional: if self.hasActiveWaypoint(type= &amp;quot;repair&amp;quot;)&lt;br /&gt;
showMessageToPlayer: 你正在治疗%{activeWaypointTarget}。&lt;br /&gt;
&amp;lt;/pre&amp;gt;}}&lt;br /&gt;
&lt;br /&gt;
==存储引用==&lt;br /&gt;
与[[自定义内存]]相比，虽然&#039;&#039;&#039;自定义目标1&#039;&#039;&#039;&amp;lt;code&amp;gt;customTarget1&amp;lt;/code&amp;gt;&#039;&#039;&#039;自定义目标2&#039;&#039;&#039;&amp;lt;code&amp;gt;customTarget2&amp;lt;/code&amp;gt;与&amp;lt;code&amp;gt;@memory x:unit&amp;lt;/code&amp;gt;（&amp;lt;code&amp;gt;Unit&amp;lt;/code&amp;gt;类型的内存）用途相当，都可用于存储单位，但与内存不同，自定义目标在单位死亡、删除的情况下会自动清除。内存需要手动管理，而自定义目标会自动管理。&lt;br /&gt;
内存可以用高频触发行动复现。&lt;br /&gt;
单位生产（&amp;lt;code&amp;gt;canBuild&amp;lt;/code&amp;gt;)、产生(&amp;lt;code&amp;gt;produceUnits&amp;lt;/code&amp;gt;&amp;lt;code&amp;gt;spawnUnit(s)&amp;lt;/code&amp;gt;）出来时，该出厂单位的&#039;&#039;&#039;自定义目标1&#039;&#039;&#039;默认为工厂。工厂不必通过&amp;lt;code&amp;gt;queuedUnitFinished&amp;lt;/code&amp;gt;事件配合&amp;lt;code&amp;gt;sendMessageTo&amp;lt;/code&amp;gt;告诉出厂单位谁是工厂。&lt;br /&gt;
&lt;br /&gt;
==空引用==&lt;br /&gt;
单位引用中，&#039;&#039;&#039;空&#039;&#039;&#039;（&amp;lt;code&amp;gt;null&amp;lt;/code&amp;gt;）指向不存在的单位引用。逻辑布尔值（&amp;lt;code&amp;gt;Logic Boolean&amp;lt;/code&amp;gt;，类似条件判断）中，可搭配不等式避免返回&amp;lt;code&amp;gt;Unit&amp;lt;/code&amp;gt;类型。[[自定义内存]]中，也可作为空值赋值，也可用于清空[[数组]]。&#039;&#039;&#039;空单位引用&#039;&#039;&#039;&amp;lt;code&amp;gt;nullUnit&amp;lt;/code&amp;gt;与前者不同，不可用于清空数组。&lt;/div&gt;</summary>
		<author><name>GMBOX</name></author>
	</entry>
	<entry>
		<id>https://rustedwarfare.org/index.php?title=%E5%8D%95%E4%BD%8D%E5%BC%95%E7%94%A8&amp;diff=4762</id>
		<title>单位引用</title>
		<link rel="alternate" type="text/html" href="https://rustedwarfare.org/index.php?title=%E5%8D%95%E4%BD%8D%E5%BC%95%E7%94%A8&amp;diff=4762"/>
		<updated>2026-02-23T18:38:40Z</updated>

		<summary type="html">&lt;p&gt;GMBOX：​/* 其他 */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;br /&gt;
&#039;&#039;&#039;单位引用&#039;&#039;&#039;（Unit Reference）是铁锈战争[[1.15]]新加入的单位选择器，可引用符合条件的单位。&lt;br /&gt;
&lt;br /&gt;
==查询==&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+单位引用&lt;br /&gt;
|标记&lt;br /&gt;
|getAsMarker()&lt;br /&gt;
getOffsetRelative()&lt;br /&gt;
getOffsetAbsolute()&lt;br /&gt;
createMarker()&lt;br /&gt;
|-&lt;br /&gt;
|局内&lt;br /&gt;
|thisActionTarget&lt;br /&gt;
eventSource&lt;br /&gt;
|-&lt;br /&gt;
|全局&lt;br /&gt;
|attachment()&lt;br /&gt;
transporting()&lt;br /&gt;
attacking&lt;br /&gt;
lastDamagedBy&lt;br /&gt;
parent&lt;br /&gt;
activeWaypointTarget&lt;br /&gt;
nearestUnit()&lt;br /&gt;
globalSearchForFirstUnit()&lt;br /&gt;
|-&lt;br /&gt;
|存储&lt;br /&gt;
|customTarget1&lt;br /&gt;
customTarget2&lt;br /&gt;
|-&lt;br /&gt;
|其他&lt;br /&gt;
|nullUnit&lt;br /&gt;
|}&lt;br /&gt;
==标记==&lt;br /&gt;
临时、快速地创建一个标记，可用来反映位置、朝向、高度、队伍编号，且不需要用到时会自动移除，不隶属任何单位也不受单位后续行为的影响。&lt;br /&gt;
标记可分为两种，照铁锈战争的说法，一种是&#039;&#039;&#039;获取&#039;&#039;&#039;（get...），另一种是&#039;&#039;&#039;创建&#039;&#039;&#039;(create...)。获取会在以单位的基础创建标记，而&#039;&#039;&#039;创建&#039;&#039;&#039;完全与创建它的单位无关。&lt;br /&gt;
===标记的格式===&lt;br /&gt;
&amp;lt;p&amp;gt;获取：&amp;lt;code&amp;gt;getAsMarker()&amp;lt;/code&amp;gt;&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;相对：&amp;lt;code&amp;gt;getOffsetRelative([x], [y], [height], [dirOffset])&amp;lt;/code&amp;gt;&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;绝对：&amp;lt;code&amp;gt;getOffsetAbsolute([x], [y], [height])&amp;lt;/code&amp;gt;&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;创建：&amp;lt;code&amp;gt;createMarker(x, y, [height], [teamId], [dir])&amp;lt;/code&amp;gt;&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===标记的用法===&lt;br /&gt;
想直接获取当前位置等信息可以使用&amp;lt;code&amp;gt;getAsMarker&amp;lt;/code&amp;gt;。&lt;br /&gt;
铁锈战争为偏移提供了两种方案，一种是&#039;&#039;&#039;相对偏移&#039;&#039;&#039;，不止受单位位置、高度，还受朝向影响。通俗易懂就是你坐在一辆车上，你当然可以移动、旋转（&amp;lt;code&amp;gt;dirOffset&amp;lt;/code&amp;gt;），但车移动、旋转你也必须移动、旋转。&lt;br /&gt;
另一种是&#039;&#039;&#039;绝对偏移&#039;&#039;&#039;，只受单位位置、高度影响，比如单位坐标(1000, 1000)，向左偏移5个单位（995, 1000）。&lt;br /&gt;
&#039;&#039;&#039;创建标记&#039;&#039;&#039;是直接在地图上创建一个标记，队伍编号可由自己决定，可以注意的是创建标记的(x, y)必须要填，但铁锈战争允许省略&amp;lt;code&amp;gt;(x=, y=)&amp;lt;/code&amp;gt;。&lt;br /&gt;
&lt;br /&gt;
{{折叠|标记的例子|&amp;lt;pre&amp;gt;&lt;br /&gt;
teleportTo: getOffsetRelative(y= 10, dirOffset= self.customTimer)&lt;br /&gt;
&lt;br /&gt;
fireXTurretAtGround_withTarget: createMarker(activeWaypointTarget.x, activeWaypointTarget.y, teamId= self.teamId).nearestUnit(withinRange= 1500, withTag= &amp;quot;outpost&amp;quot;, relation= &amp;quot;own&amp;quot;)&lt;br /&gt;
&amp;lt;/pre&amp;gt;}}&lt;br /&gt;
&lt;br /&gt;
==局内==&lt;br /&gt;
局内只能在行动内使用，可用&amp;lt;code&amp;gt;alsoTriggerAction&amp;lt;/code&amp;gt;或&amp;lt;code&amp;gt;alsoQueueAction&amp;lt;/code&amp;gt;延长“寿命”，你也可以用内存将其存储。&amp;lt;code&amp;gt;thisActionTarget&amp;lt;/code&amp;gt;在不同情况下所指代的单位不同，与&amp;lt;code&amp;gt;eventSource&amp;lt;/code&amp;gt;不同，后者只与&amp;lt;code&amp;gt;autoTriggerOnEvent&amp;lt;/code&amp;gt;绑定，触发的事件不同所指代的单位也不同。&lt;br /&gt;
===thisActionIndex的用法===&lt;br /&gt;
&amp;lt;code&amp;gt;thisActionIndex&amp;lt;/code&amp;gt;能在遍历过程中同时知道每个元素的位置信息，&amp;lt;code&amp;gt;index&amp;lt;/code&amp;gt;为其缩略形式。受&amp;lt;code&amp;gt;alsoTriggerActionRepeat&amp;lt;/code&amp;gt;与&amp;lt;code&amp;gt;takeResources_triggerActionForEach&amp;lt;/code&amp;gt;影响。值为int（整数）类型，从0开始，用于遍历数组。&lt;br /&gt;
&amp;lt;pre&amp;gt;eg:&lt;br /&gt;
[hiddenAction_1]&lt;br /&gt;
alsoTriggerAction:2&lt;br /&gt;
alsoTriggerActionRepeat:memory.array.size&lt;br /&gt;
[hiddenAction_2]&lt;br /&gt;
setUnitMemory:array[index]=select(memory.array[index]==0,0,memory.array[index]-1)&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===对应的情况===&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+thisActionTarget用处&lt;br /&gt;
|fireXTurretAtGround&lt;br /&gt;
|指向的位置&lt;br /&gt;
|-&lt;br /&gt;
|alsoTriggerAction&lt;br /&gt;
|与原行动的thisActionTarget相同&lt;br /&gt;
|-&lt;br /&gt;
|onShoot_triggerActions&lt;br /&gt;
|炮塔射击的单位&lt;br /&gt;
|-&lt;br /&gt;
|takeResources_triggerActionIfAnyCollected&lt;br /&gt;
|提取到的单位&lt;br /&gt;
|-&lt;br /&gt;
|takeResources_triggerActionForEach&lt;br /&gt;
|与上同理&lt;br /&gt;
|-&lt;br /&gt;
|addWaypoint_triggerActionIfMatched&lt;br /&gt;
|被添加路径点的单位（没明确指定某个单位时则为在那个位置的标记，如move等）&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+eventSource用处&lt;br /&gt;
|tookDamage&lt;br /&gt;
|攻击你的单位&lt;br /&gt;
|-&lt;br /&gt;
|killedAnyUnit&lt;br /&gt;
|杀死的单位&lt;br /&gt;
|-&lt;br /&gt;
|transportingNewUnit&lt;br /&gt;
|新装载的单位&lt;br /&gt;
|-&lt;br /&gt;
|transportUnloadedOrRemovedUnit&lt;br /&gt;
|刚卸载的单位&lt;br /&gt;
|-&lt;br /&gt;
|queuedUnitFinished&lt;br /&gt;
|刚生产的单位&lt;br /&gt;
|-&lt;br /&gt;
|touchTargetSuccess&lt;br /&gt;
|碰到的单位（需配合路径点）&lt;br /&gt;
|-&lt;br /&gt;
|newMessage&lt;br /&gt;
|给这个单位发信的单位&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
{{折叠|thisActionTarget与eventSource的例子|&amp;lt;pre&amp;gt;&lt;br /&gt;
[turret_super]&lt;br /&gt;
onShoot_triggerActions: idol&lt;br /&gt;
[hiddenAction_idol]&lt;br /&gt;
showMessageToAllPlayers: %{thisActionTarget}的笑容。&lt;br /&gt;
&lt;br /&gt;
[hiddenAction_tookDmg]&lt;br /&gt;
autoTriggerOnEvent: tookDamage(withTag=&amp;quot;APCR&amp;quot;)&lt;br /&gt;
showMessageToAllPlayers: 来自%{eventSource}的攻击！&lt;br /&gt;
&amp;lt;/pre&amp;gt;}}&lt;br /&gt;
&lt;br /&gt;
==全局==&lt;br /&gt;
铁锈战争提供了一些常见情况可能用到的单位选择器，且所以节都能使用，与&#039;&#039;&#039;局内&#039;&#039;&#039;相对。&lt;br /&gt;
&lt;br /&gt;
===选填参数部分===&lt;br /&gt;
&amp;lt;p&amp;gt;附属：&amp;lt;code&amp;gt;attachment([slot], [withTag])&amp;lt;/code&amp;gt;&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;运输：&amp;lt;code&amp;gt;transporting([slot])&amp;lt;/code&amp;gt;&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;最近单位：&amp;lt;code&amp;gt;nearestUnit([withinRange], [withTag], [relation], [incompleteBuildings], [withoutTag])&amp;lt;/code&amp;gt;&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;搜索首个单位&amp;lt;code&amp;gt;globalSearchForFirstUnit([withTag], [relation], [incompleteBuildings])&amp;lt;/code&amp;gt;&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====参数都为选填，默认情况就很有趣了。====&lt;br /&gt;
*附属&lt;br /&gt;
不填参数则返回行数最高的单位。&lt;br /&gt;
*运输&lt;br /&gt;
不填参数则返回最近运输的单位。&lt;br /&gt;
*最近单位&lt;br /&gt;
不填参数则返回范围约为500内的单位。&lt;br /&gt;
*搜索首个单位&lt;br /&gt;
不填参数则返回该地图最小id的单位。&lt;br /&gt;
&lt;br /&gt;
===无参数部分===&lt;br /&gt;
这些单位引用的特点很明显，都是指向具体的某个单位。&lt;br /&gt;
&amp;lt;code&amp;gt;attacking&amp;lt;/code&amp;gt;为&amp;lt;code&amp;gt;activeWaypointTarget&amp;lt;/code&amp;gt;为攻击时套上单位的快捷引用方式。&amp;lt;code&amp;gt;lastDamagedBy&amp;lt;/code&amp;gt;在事件来源为tookDamage时的快捷引用方式。&amp;lt;code&amp;gt;parent&amp;lt;/code&amp;gt;在单位自身为他人附属时可使用。&amp;lt;code&amp;gt;activeWaypointTarget&amp;lt;/code&amp;gt;能够实时监控路径点情况，如果没明确指定某个单位则返回在那个位置的标记（Marker），但似乎不能获取该路径点的类型，路径点类型可[https://docs.google.com/spreadsheets/d/1aeP3pUic0IutZlgGix_cM8xR7LEH44gS4itAxETK954/htmlview 详见]代码&amp;lt;code&amp;gt;addWaypoint_type&amp;lt;/code&amp;gt;。&lt;br /&gt;
&lt;br /&gt;
{{折叠|全局单位引用的例子|&amp;lt;pre&amp;gt;&lt;br /&gt;
isVisible: if parent.attachment(slot= 5) == self&lt;br /&gt;
&lt;br /&gt;
[hiddenAction_repair]&lt;br /&gt;
autoTriggerOnEvent: newWaypointGivenByPlayer&lt;br /&gt;
requireConditional: if self.hasActiveWaypoint(type= &amp;quot;repair&amp;quot;)&lt;br /&gt;
showMessageToPlayer: 你正在治疗%{activeWaypointTarget}。&lt;br /&gt;
&amp;lt;/pre&amp;gt;}}&lt;br /&gt;
&lt;br /&gt;
==存储==&lt;br /&gt;
与[[自定义内存]]相比，虽然&amp;lt;code&amp;gt;customTarget1&amp;lt;/code&amp;gt;与&amp;lt;code&amp;gt;customTarget2&amp;lt;/code&amp;gt;与&amp;lt;code&amp;gt;@memory x:unit&amp;lt;/code&amp;gt;功能相当，但前者能实时清理使用不了的单位。&lt;br /&gt;
单位生产、产生出来时，它的&#039;&#039;&#039;自定义目标1&#039;&#039;&#039;默认为工厂（把你生成出来的单位），这很有用，工厂不必通过&amp;lt;code&amp;gt;queuedUnitFinished&amp;lt;/code&amp;gt;事件配合&amp;lt;code&amp;gt;sendMessageTo&amp;lt;/code&amp;gt;告诉产物&#039;&#039;把你生产出来的是谁&#039;&#039;。&lt;br /&gt;
&lt;br /&gt;
==空引用==&lt;br /&gt;
单位引用中，&#039;&#039;&#039;空&#039;&#039;&#039;（&amp;lt;code&amp;gt;null&amp;lt;/code&amp;gt;）指向不存在的单位引用。逻辑布尔值（&amp;lt;code&amp;gt;Logic Boolean&amp;lt;/code&amp;gt;，类似条件判断）中，可搭配不等式避免返回&amp;lt;code&amp;gt;Unit&amp;lt;/code&amp;gt;类型。[[自定义内存]]中，也可作为空值赋值，也可用于清空[[数组]]。&#039;&#039;&#039;空单位引用&#039;&#039;&#039;&amp;lt;code&amp;gt;nullUnit&amp;lt;/code&amp;gt;与前者不同，不可用于清空数组。&lt;/div&gt;</summary>
		<author><name>GMBOX</name></author>
	</entry>
	<entry>
		<id>https://rustedwarfare.org/index.php?title=%E5%8D%95%E4%BD%8D%E5%BC%95%E7%94%A8&amp;diff=4722</id>
		<title>单位引用</title>
		<link rel="alternate" type="text/html" href="https://rustedwarfare.org/index.php?title=%E5%8D%95%E4%BD%8D%E5%BC%95%E7%94%A8&amp;diff=4722"/>
		<updated>2025-07-20T05:28:55Z</updated>

		<summary type="html">&lt;p&gt;GMBOX：​/* 全局 */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;br /&gt;
&#039;&#039;&#039;单位引用&#039;&#039;&#039;（Unit Reference）是铁锈战争[[1.15]]新加入的单位选择器，可引用符合条件的单位。&lt;br /&gt;
&lt;br /&gt;
==查询==&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+单位引用&lt;br /&gt;
|标记&lt;br /&gt;
|getAsMarker()&lt;br /&gt;
getOffsetRelative()&lt;br /&gt;
getOffsetAbsolute()&lt;br /&gt;
createMarker()&lt;br /&gt;
|-&lt;br /&gt;
|局内&lt;br /&gt;
|thisActionTarget&lt;br /&gt;
eventSource&lt;br /&gt;
|-&lt;br /&gt;
|全局&lt;br /&gt;
|attachment()&lt;br /&gt;
transporting()&lt;br /&gt;
attacking&lt;br /&gt;
lastDamagedBy&lt;br /&gt;
parent&lt;br /&gt;
activeWaypointTarget&lt;br /&gt;
nearestUnit()&lt;br /&gt;
globalSearchForFirstUnit()&lt;br /&gt;
|-&lt;br /&gt;
|存储&lt;br /&gt;
|customTarget1&lt;br /&gt;
customTarget2&lt;br /&gt;
|-&lt;br /&gt;
|其他&lt;br /&gt;
|nullUnit&lt;br /&gt;
|}&lt;br /&gt;
==标记==&lt;br /&gt;
临时、快速地创建一个标记，可用来反映位置、朝向、高度、队伍编号，且不需要用到时会自动移除，不隶属任何单位也不受单位后续行为的影响。&lt;br /&gt;
标记可分为两种，照铁锈战争的说法，一种是&#039;&#039;&#039;获取&#039;&#039;&#039;（get...），另一种是&#039;&#039;&#039;创建&#039;&#039;&#039;(create...)。获取会在以单位的基础创建标记，而&#039;&#039;&#039;创建&#039;&#039;&#039;完全与创建它的单位无关。&lt;br /&gt;
===标记的格式===&lt;br /&gt;
&amp;lt;p&amp;gt;获取：&amp;lt;code&amp;gt;getAsMarker()&amp;lt;/code&amp;gt;&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;相对：&amp;lt;code&amp;gt;getOffsetRelative([x], [y], [height], [dirOffset])&amp;lt;/code&amp;gt;&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;绝对：&amp;lt;code&amp;gt;getOffsetAbsolute([x], [y], [height])&amp;lt;/code&amp;gt;&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;创建：&amp;lt;code&amp;gt;createMarker(x, y, [height], [teamId], [dir])&amp;lt;/code&amp;gt;&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===标记的用法===&lt;br /&gt;
想直接获取当前位置等信息可以使用&amp;lt;code&amp;gt;getAsMarker&amp;lt;/code&amp;gt;。&lt;br /&gt;
铁锈战争为偏移提供了两种方案，一种是&#039;&#039;&#039;相对偏移&#039;&#039;&#039;，不止受单位位置、高度，还受朝向影响。通俗易懂就是你坐在一辆车上，你当然可以移动、旋转（&amp;lt;code&amp;gt;dirOffset&amp;lt;/code&amp;gt;），但车移动、旋转你也必须移动、旋转。&lt;br /&gt;
另一种是&#039;&#039;&#039;绝对偏移&#039;&#039;&#039;，只受单位位置、高度影响，比如单位坐标(1000, 1000)，向左偏移5个单位（995, 1000）。&lt;br /&gt;
&#039;&#039;&#039;创建标记&#039;&#039;&#039;是直接在地图上创建一个标记，队伍编号可由自己决定，可以注意的是创建标记的(x, y)必须要填，但铁锈战争允许省略&amp;lt;code&amp;gt;(x=, y=)&amp;lt;/code&amp;gt;。&lt;br /&gt;
&lt;br /&gt;
{{折叠|标记的例子|&amp;lt;pre&amp;gt;&lt;br /&gt;
teleportTo: getOffsetRelative(y= 10, dirOffset= self.customTimer)&lt;br /&gt;
&lt;br /&gt;
fireXTurretAtGround_withTarget: createMarker(activeWaypointTarget.x, activeWaypointTarget.y, teamId= self.teamId).nearestUnit(withinRange= 1500, withTag= &amp;quot;outpost&amp;quot;, relation= &amp;quot;own&amp;quot;)&lt;br /&gt;
&amp;lt;/pre&amp;gt;}}&lt;br /&gt;
&lt;br /&gt;
==局内==&lt;br /&gt;
局内只能在行动内使用，可用&amp;lt;code&amp;gt;alsoTriggerAction&amp;lt;/code&amp;gt;或&amp;lt;code&amp;gt;alsoQueueAction&amp;lt;/code&amp;gt;延长“寿命”，你也可以用内存将其存储。&amp;lt;code&amp;gt;thisActionTarget&amp;lt;/code&amp;gt;在不同情况下所指代的单位不同，与&amp;lt;code&amp;gt;eventSource&amp;lt;/code&amp;gt;不同，后者只与&amp;lt;code&amp;gt;autoTriggerOnEvent&amp;lt;/code&amp;gt;绑定，触发的事件不同所指代的单位也不同。&lt;br /&gt;
===thisActionIndex的用法===&lt;br /&gt;
&amp;lt;code&amp;gt;thisActionIndex&amp;lt;/code&amp;gt;能在遍历过程中同时知道每个元素的位置信息，&amp;lt;code&amp;gt;index&amp;lt;/code&amp;gt;为其缩略形式。受&amp;lt;code&amp;gt;alsoTriggerActionRepeat&amp;lt;/code&amp;gt;与&amp;lt;code&amp;gt;takeResources_triggerActionForEach&amp;lt;/code&amp;gt;影响。值为int（整数）类型，从0开始，用于遍历数组。&lt;br /&gt;
&amp;lt;pre&amp;gt;eg:&lt;br /&gt;
[hiddenAction_1]&lt;br /&gt;
alsoTriggerAction:2&lt;br /&gt;
alsoTriggerActionRepeat:memory.array.size&lt;br /&gt;
[hiddenAction_2]&lt;br /&gt;
setUnitMemory:array[index]=select(memory.array[index]==0,0,memory.array[index]-1)&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===对应的情况===&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+thisActionTarget用处&lt;br /&gt;
|fireXTurretAtGround&lt;br /&gt;
|指向的位置&lt;br /&gt;
|-&lt;br /&gt;
|alsoTriggerAction&lt;br /&gt;
|与原行动的thisActionTarget相同&lt;br /&gt;
|-&lt;br /&gt;
|onShoot_triggerActions&lt;br /&gt;
|炮塔射击的单位&lt;br /&gt;
|-&lt;br /&gt;
|takeResources_triggerActionIfAnyCollected&lt;br /&gt;
|提取到的单位&lt;br /&gt;
|-&lt;br /&gt;
|takeResources_triggerActionForEach&lt;br /&gt;
|与上同理&lt;br /&gt;
|-&lt;br /&gt;
|addWaypoint_triggerActionIfMatched&lt;br /&gt;
|被添加路径点的单位（没明确指定某个单位时则为在那个位置的标记，如move等）&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+eventSource用处&lt;br /&gt;
|tookDamage&lt;br /&gt;
|攻击你的单位&lt;br /&gt;
|-&lt;br /&gt;
|killedAnyUnit&lt;br /&gt;
|杀死的单位&lt;br /&gt;
|-&lt;br /&gt;
|transportingNewUnit&lt;br /&gt;
|新装载的单位&lt;br /&gt;
|-&lt;br /&gt;
|transportUnloadedOrRemovedUnit&lt;br /&gt;
|刚卸载的单位&lt;br /&gt;
|-&lt;br /&gt;
|queuedUnitFinished&lt;br /&gt;
|刚生产的单位&lt;br /&gt;
|-&lt;br /&gt;
|touchTargetSuccess&lt;br /&gt;
|碰到的单位（需配合路径点）&lt;br /&gt;
|-&lt;br /&gt;
|newMessage&lt;br /&gt;
|给这个单位发信的单位&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
{{折叠|thisActionTarget与eventSource的例子|&amp;lt;pre&amp;gt;&lt;br /&gt;
[turret_super]&lt;br /&gt;
onShoot_triggerActions: idol&lt;br /&gt;
[hiddenAction_idol]&lt;br /&gt;
showMessageToAllPlayers: %{thisActionTarget}的笑容。&lt;br /&gt;
&lt;br /&gt;
[hiddenAction_tookDmg]&lt;br /&gt;
autoTriggerOnEvent: tookDamage(withTag=&amp;quot;APCR&amp;quot;)&lt;br /&gt;
showMessageToAllPlayers: 来自%{eventSource}的攻击！&lt;br /&gt;
&amp;lt;/pre&amp;gt;}}&lt;br /&gt;
&lt;br /&gt;
==全局==&lt;br /&gt;
铁锈战争提供了一些常见情况可能用到的单位选择器，且所以节都能使用，与&#039;&#039;&#039;局内&#039;&#039;&#039;相对。&lt;br /&gt;
&lt;br /&gt;
===选填参数部分===&lt;br /&gt;
&amp;lt;p&amp;gt;附属：&amp;lt;code&amp;gt;attachment([slot], [withTag])&amp;lt;/code&amp;gt;&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;运输：&amp;lt;code&amp;gt;transporting([slot])&amp;lt;/code&amp;gt;&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;最近单位：&amp;lt;code&amp;gt;nearestUnit([withinRange], [withTag], [relation], [incompleteBuildings], [withoutTag])&amp;lt;/code&amp;gt;&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;搜索首个单位&amp;lt;code&amp;gt;globalSearchForFirstUnit([withTag], [relation], [incompleteBuildings])&amp;lt;/code&amp;gt;&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====参数都为选填，默认情况就很有趣了。====&lt;br /&gt;
*附属&lt;br /&gt;
不填参数则返回行数最高的单位。&lt;br /&gt;
*运输&lt;br /&gt;
不填参数则返回最近运输的单位。&lt;br /&gt;
*最近单位&lt;br /&gt;
不填参数则返回范围约为500内的单位。&lt;br /&gt;
*搜索首个单位&lt;br /&gt;
不填参数则返回该地图最小id的单位。&lt;br /&gt;
&lt;br /&gt;
===无参数部分===&lt;br /&gt;
这些单位引用的特点很明显，都是指向具体的某个单位。&lt;br /&gt;
&amp;lt;code&amp;gt;attacking&amp;lt;/code&amp;gt;为&amp;lt;code&amp;gt;activeWaypointTarget&amp;lt;/code&amp;gt;为攻击时套上单位的快捷引用方式。&amp;lt;code&amp;gt;lastDamagedBy&amp;lt;/code&amp;gt;在事件来源为tookDamage时的快捷引用方式。&amp;lt;code&amp;gt;parent&amp;lt;/code&amp;gt;在单位自身为他人附属时可使用。&amp;lt;code&amp;gt;activeWaypointTarget&amp;lt;/code&amp;gt;能够实时监控路径点情况，如果没明确指定某个单位则返回在那个位置的标记（Marker），但似乎不能获取该路径点的类型，路径点类型可[https://docs.google.com/spreadsheets/d/1aeP3pUic0IutZlgGix_cM8xR7LEH44gS4itAxETK954/htmlview 详见]代码&amp;lt;code&amp;gt;addWaypoint_type&amp;lt;/code&amp;gt;。&lt;br /&gt;
&lt;br /&gt;
{{折叠|全局单位引用的例子|&amp;lt;pre&amp;gt;&lt;br /&gt;
isVisible: if parent.attachment(slot= 5) == self&lt;br /&gt;
&lt;br /&gt;
[hiddenAction_repair]&lt;br /&gt;
autoTriggerOnEvent: newWaypointGivenByPlayer&lt;br /&gt;
requireConditional: if self.hasActiveWaypoint(type= &amp;quot;repair&amp;quot;)&lt;br /&gt;
showMessageToPlayer: 你正在治疗%{activeWaypointTarget}。&lt;br /&gt;
&amp;lt;/pre&amp;gt;}}&lt;br /&gt;
&lt;br /&gt;
==存储==&lt;br /&gt;
与[[自定义内存]]相比，虽然&amp;lt;code&amp;gt;customTarget1&amp;lt;/code&amp;gt;与&amp;lt;code&amp;gt;customTarget2&amp;lt;/code&amp;gt;与&amp;lt;code&amp;gt;@memory x:unit&amp;lt;/code&amp;gt;功能相当，但前者能实时清理使用不了的单位。&lt;br /&gt;
单位生产、产生出来时，它的&#039;&#039;&#039;自定义目标1&#039;&#039;&#039;默认为工厂（把你生成出来的单位），这很有用，工厂不必通过&amp;lt;code&amp;gt;queuedUnitFinished&amp;lt;/code&amp;gt;事件配合&amp;lt;code&amp;gt;sendMessageTo&amp;lt;/code&amp;gt;告诉产物&#039;&#039;把你生产出来的是谁&#039;&#039;。&lt;br /&gt;
&lt;br /&gt;
==其他==&lt;br /&gt;
&amp;lt;code&amp;gt;nullUnit&amp;lt;/code&amp;gt;有另一种写法，也就是&amp;lt;code&amp;gt;null&amp;lt;/code&amp;gt;，但后者更泛用且简略，前者更像是特指，特指&#039;&#039;&#039;空&#039;&#039;&#039;的是单位。&lt;/div&gt;</summary>
		<author><name>GMBOX</name></author>
	</entry>
	<entry>
		<id>https://rustedwarfare.org/index.php?title=%E6%A8%A1%E5%9D%97%E5%8C%96%E8%9C%98%E8%9B%9B&amp;diff=4721</id>
		<title>模块化蜘蛛</title>
		<link rel="alternate" type="text/html" href="https://rustedwarfare.org/index.php?title=%E6%A8%A1%E5%9D%97%E5%8C%96%E8%9C%98%E8%9B%9B&amp;diff=4721"/>
		<updated>2025-07-17T15:54:21Z</updated>

		<summary type="html">&lt;p&gt;GMBOX：​/* 你知道吗 */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{欢迎编辑}}&lt;br /&gt;
&lt;br /&gt;
==基本信息==&lt;br /&gt;
&#039;&#039;&#039;模块化蜘蛛&#039;&#039;&#039;（modularSpider）是一种可以装备模块的强大实验单位。&lt;br /&gt;
{{Units|name=模块化蜘蛛|price=90000|hp=10000|mass=120000|turn_speed=0.4|move_speed=0.6|extra=* 由6个模块槽提供武器和功能&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
==来源==&lt;br /&gt;
*在沙盒中建造&lt;br /&gt;
*作为开局单位&lt;br /&gt;
&lt;br /&gt;
==优点==&lt;br /&gt;
*可以装载模块。&lt;br /&gt;
*能自己赚钱。&lt;br /&gt;
*血量非常高。&lt;br /&gt;
*拥有护盾功能。&lt;br /&gt;
*能极速的建造部分单位。&lt;br /&gt;
*死亡会核爆。&lt;br /&gt;
*能自动修复其他单位。&lt;br /&gt;
&lt;br /&gt;
==缺点==&lt;br /&gt;
*无法反潜。&lt;br /&gt;
*被喷火机甲，轰炸机克制。&lt;br /&gt;
==模块介绍==&lt;br /&gt;
*此单位可以装备6个模块，每个模块都可以装备对应的武器。&lt;br /&gt;
*当装载了任何一个模块时，它的移动速度会降低。&amp;lt;s&amp;gt;速度模块&amp;lt;/s&amp;gt;&lt;br /&gt;
*速度模块可以让搭载模块的模块蜘蛛速度恢复空装状态，多余的速度模块没有用&lt;br /&gt;
*模块有自己的血量，也可以被敌方单位直接集火攻击，但敌方单位无法绕过蜘蛛自身的盾&lt;br /&gt;
==单位设计==&lt;br /&gt;
（待补充）&lt;br /&gt;
==作用==&lt;br /&gt;
搭配飞行堡垒可以突袭敌人大后方（最好多带几架血厚的飞机抗伤）&lt;br /&gt;
==你知道吗==&lt;br /&gt;
&lt;br /&gt;
* 在[[1.15|1.15p9]]更新后，选中模块化蜘蛛的槽位可以看到一个箭头指向选择的槽位，这个箭头是由贴花节实现的，也是官方单位首次使用贴花节。&lt;br /&gt;
* 官方单位首次使用&amp;lt;code&amp;gt;setUnitStats&amp;lt;/code&amp;gt;代码是在模块化蜘蛛的速度模块。&lt;br /&gt;
&lt;br /&gt;
==技术性==&lt;br /&gt;
{{折叠|1=单位数据|2=&amp;lt;table border=&amp;quot;1&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;th&amp;gt;名称&amp;lt;/th&amp;gt;&amp;lt;td&amp;gt;英文名：Modular Spider&amp;lt;br /&amp;gt;参考译名：模块蜘蛛&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;th&amp;gt;类型&amp;lt;/th&amp;gt;&amp;lt;td&amp;gt;实验陆军&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;th&amp;gt;可建造&amp;lt;/th&amp;gt;&amp;lt;td&amp;gt;-建造者，成本：$500，耗时：1s&amp;lt;br /&amp;gt;-建造船，成本：$500，耗时：2.1s&amp;lt;br /&amp;gt;-战斗工程师，成本：$3500，耗时：8.3s&amp;lt;br /&amp;gt;-重型坦克，成本：$800，耗时：1.9s&amp;lt;br /&amp;gt;-登陆艇，成本：$600，耗时：0.7s&amp;lt;br /&amp;gt;-重型悬浮坦克，成本：$1000，耗时：2.1s&amp;lt;br /&amp;gt;-自行火炮，成本：$900，耗时：1.5s&amp;lt;br /&amp;gt;-侦察者，成本：$700，耗时：1.4s&amp;lt;br /&amp;gt;-枪塔-T1，成本：$500，耗时：2.6s&amp;lt;br /&amp;gt;-火炮-T1，成本：$2100，耗时：5.2s&amp;lt;br /&amp;gt;-导弹塔-T1，成本：$600，耗时：2.6s&amp;lt;br /&amp;gt;-抽取器-T1，成本：$700，耗时：2.1s&amp;lt;br /&amp;gt;-制造器-T1，成本：$2200，耗时：4.2s&amp;lt;br /&amp;gt;-陆军工厂-T1，成本：$700，耗时：2.1s&amp;lt;br /&amp;gt;-机甲工厂-T1，成本：$1000，耗时：2.1s&amp;lt;br /&amp;gt;-空军工厂-T1，成本：$1000，耗时：2.1s&amp;lt;br /&amp;gt;-海军工厂-T1，成本：$1000，耗时：3s&amp;lt;br /&amp;gt;-激光防御-T1，成本：$1200，耗时：2.1s&amp;lt;br /&amp;gt;-修复湾，成本：$1500，耗时：2.1s&amp;lt;br /&amp;gt;-轰炸机，成本：$4000，耗时：16.7s&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;th&amp;gt;资源&amp;lt;/th&amp;gt;&amp;lt;td&amp;gt;hp：10000，回复：6/s&amp;lt;br /&amp;gt;shield：5000，回复：18/s&amp;lt;br /&amp;gt;credits：+45/s&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;th&amp;gt;碰撞&amp;lt;/th&amp;gt;&amp;lt;td&amp;gt;半径：49&amp;lt;br /&amp;gt;质量：120000&amp;lt;br /&amp;gt;软碰撞：3&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;th&amp;gt;运输需&amp;lt;/th&amp;gt;&amp;lt;td&amp;gt;14格&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;th&amp;gt;纳米&amp;lt;/th&amp;gt;&amp;lt;td&amp;gt;范围：220，建造速度：8倍&amp;lt;br /&amp;gt;维修：单位，建筑，速度：24/s&amp;lt;br /&amp;gt;回收：单位，建筑，速度：122.4/s&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;th&amp;gt;技能&amp;lt;/th&amp;gt;&amp;lt;td&amp;gt;「核爆」：&amp;lt;br /&amp;gt;-被摧毁时核爆，对200半径内的所有地上和空中单位造成最高4400的中心扩散伤害&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;th&amp;gt;运动&amp;lt;/th&amp;gt;&amp;lt;td&amp;gt;最大移动速度：36/s&amp;lt;br /&amp;gt;最大转向速度：24°/s&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;th rowSpan=&amp;quot;12&amp;quot;&amp;gt;模块&amp;lt;/th&amp;gt;&amp;lt;td&amp;gt;说明：共6个炮座，凡有一个炮台本体移动速度由36/s减到24/s，本体有护盾时对炮台的伤害都转移到护盾上(范围武器快速破盾!)，炮台50%原价3秒回收&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;可用武器：「等离子T1/T2」、「机枪T2/T3」、「电击」、「火炮」、「对空导弹T1/T3/高射炮」、「资源制造仪T1/T2」、「激光防御」、「护盾加速」、「移速增加」、「反核防御」、「瞬移」&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;/table&amp;gt;}}&lt;/div&gt;</summary>
		<author><name>GMBOX</name></author>
	</entry>
	<entry>
		<id>https://rustedwarfare.org/index.php?title=%E5%8D%95%E4%BD%8D%E5%BC%95%E7%94%A8&amp;diff=4708</id>
		<title>单位引用</title>
		<link rel="alternate" type="text/html" href="https://rustedwarfare.org/index.php?title=%E5%8D%95%E4%BD%8D%E5%BC%95%E7%94%A8&amp;diff=4708"/>
		<updated>2025-06-30T07:07:07Z</updated>

		<summary type="html">&lt;p&gt;GMBOX：​/* 无参数部分 */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;br /&gt;
&#039;&#039;&#039;单位引用&#039;&#039;&#039;（Unit Reference）是铁锈战争[[1.15]]新加入的单位选择器，可引用符合条件的单位。&lt;br /&gt;
&lt;br /&gt;
==查询==&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+单位引用&lt;br /&gt;
|标记&lt;br /&gt;
|getAsMarker()&lt;br /&gt;
getOffsetRelative()&lt;br /&gt;
getOffsetAbsolute()&lt;br /&gt;
createMarker()&lt;br /&gt;
|-&lt;br /&gt;
|局内&lt;br /&gt;
|thisActionTarget&lt;br /&gt;
eventSource&lt;br /&gt;
|-&lt;br /&gt;
|全局&lt;br /&gt;
|attachment()&lt;br /&gt;
transporting()&lt;br /&gt;
attacking&lt;br /&gt;
lastDamagedBy&lt;br /&gt;
parent&lt;br /&gt;
activeWaypointTarget&lt;br /&gt;
nearestUnit()&lt;br /&gt;
globalSearchForFirstUnit()&lt;br /&gt;
|-&lt;br /&gt;
|存储&lt;br /&gt;
|customTarget1&lt;br /&gt;
customTarget2&lt;br /&gt;
|-&lt;br /&gt;
|其他&lt;br /&gt;
|nullUnit&lt;br /&gt;
|}&lt;br /&gt;
==标记==&lt;br /&gt;
临时、快速地创建一个标记，可用来反映位置、朝向、高度、队伍编号，且不需要用到时会自动移除，不隶属任何单位也不受单位后续行为的影响。&lt;br /&gt;
标记可分为两种，照铁锈战争的说法，一种是&#039;&#039;&#039;获取&#039;&#039;&#039;（get...），另一种是&#039;&#039;&#039;创建&#039;&#039;&#039;(create...)。获取会在以单位的基础创建标记，而&#039;&#039;&#039;创建&#039;&#039;&#039;完全与创建它的单位无关。&lt;br /&gt;
===标记的格式===&lt;br /&gt;
&amp;lt;p&amp;gt;获取：&amp;lt;code&amp;gt;getAsMarker()&amp;lt;/code&amp;gt;&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;相对：&amp;lt;code&amp;gt;getOffsetRelative([x], [y], [height], [dirOffset])&amp;lt;/code&amp;gt;&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;绝对：&amp;lt;code&amp;gt;getOffsetAbsolute([x], [y], [height])&amp;lt;/code&amp;gt;&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;创建：&amp;lt;code&amp;gt;createMarker(x, y, [height], [teamId], [dir])&amp;lt;/code&amp;gt;&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===标记的用法===&lt;br /&gt;
想直接获取当前位置等信息可以使用&amp;lt;code&amp;gt;getAsMarker&amp;lt;/code&amp;gt;。&lt;br /&gt;
铁锈战争为偏移提供了两种方案，一种是&#039;&#039;&#039;相对偏移&#039;&#039;&#039;，不止受单位位置、高度，还受朝向影响。通俗易懂就是你坐在一辆车上，你当然可以移动、旋转（&amp;lt;code&amp;gt;dirOffset&amp;lt;/code&amp;gt;），但车移动、旋转你也必须移动、旋转。&lt;br /&gt;
另一种是&#039;&#039;&#039;绝对偏移&#039;&#039;&#039;，只受单位位置、高度影响，比如单位坐标(1000, 1000)，向左偏移5个单位（995, 1000）。&lt;br /&gt;
&#039;&#039;&#039;创建标记&#039;&#039;&#039;是直接在地图上创建一个标记，队伍编号可由自己决定，可以注意的是创建标记的(x, y)必须要填，但铁锈战争允许省略&amp;lt;code&amp;gt;(x=, y=)&amp;lt;/code&amp;gt;。&lt;br /&gt;
&lt;br /&gt;
{{折叠|标记的例子|&amp;lt;pre&amp;gt;&lt;br /&gt;
teleportTo: getOffsetRelative(y= 10, dirOffset= self.customTimer)&lt;br /&gt;
&lt;br /&gt;
fireXTurretAtGround_withTarget: createMarker(activeWaypointTarget.x, activeWaypointTarget.y, teamId= self.teamId).nearestUnit(withinRange= 1500, withTag= &amp;quot;outpost&amp;quot;, relation= &amp;quot;own&amp;quot;)&lt;br /&gt;
&amp;lt;/pre&amp;gt;}}&lt;br /&gt;
&lt;br /&gt;
==局内==&lt;br /&gt;
局内只能在行动内使用，可用&amp;lt;code&amp;gt;alsoTriggerAction&amp;lt;/code&amp;gt;或&amp;lt;code&amp;gt;alsoQueueAction&amp;lt;/code&amp;gt;延长“寿命”，你也可以用内存将其存储。&amp;lt;code&amp;gt;thisActionTarget&amp;lt;/code&amp;gt;在不同情况下所指代的单位不同，与&amp;lt;code&amp;gt;eventSource&amp;lt;/code&amp;gt;不同，后者只与&amp;lt;code&amp;gt;autoTriggerOnEvent&amp;lt;/code&amp;gt;绑定，触发的事件不同所指代的单位也不同。&lt;br /&gt;
===thisActionIndex的用法===&lt;br /&gt;
&amp;lt;code&amp;gt;thisActionIndex&amp;lt;/code&amp;gt;能在遍历过程中同时知道每个元素的位置信息，&amp;lt;code&amp;gt;index&amp;lt;/code&amp;gt;为其缩略形式。受&amp;lt;code&amp;gt;alsoTriggerActionRepeat&amp;lt;/code&amp;gt;与&amp;lt;code&amp;gt;takeResources_triggerActionForEach&amp;lt;/code&amp;gt;影响。&lt;br /&gt;
&lt;br /&gt;
===对应的情况===&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+thisActionTarget用处&lt;br /&gt;
|fireXTurretAtGround&lt;br /&gt;
|指向的位置&lt;br /&gt;
|-&lt;br /&gt;
|alsoTriggerAction&lt;br /&gt;
|与原行动的thisActionTarget相同&lt;br /&gt;
|-&lt;br /&gt;
|onShoot_triggerActions&lt;br /&gt;
|炮塔射击的单位&lt;br /&gt;
|-&lt;br /&gt;
|takeResources_triggerActionIfAnyCollected&lt;br /&gt;
|提取到的单位&lt;br /&gt;
|-&lt;br /&gt;
|takeResources_triggerActionForEach&lt;br /&gt;
|与上同理&lt;br /&gt;
|-&lt;br /&gt;
|addWaypoint_triggerActionIfMatched&lt;br /&gt;
|被添加路径点的单位（没明确指定某个单位时则为在那个位置的标记，如move等）&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+eventSource用处&lt;br /&gt;
|tookDamage&lt;br /&gt;
|攻击你的单位&lt;br /&gt;
|-&lt;br /&gt;
|killedAnyUnit&lt;br /&gt;
|杀死的单位&lt;br /&gt;
|-&lt;br /&gt;
|transportingNewUnit&lt;br /&gt;
|新装载的单位&lt;br /&gt;
|-&lt;br /&gt;
|transportUnloadedOrRemovedUnit&lt;br /&gt;
|刚卸载的单位&lt;br /&gt;
|-&lt;br /&gt;
|queuedUnitFinished&lt;br /&gt;
|刚生产的单位&lt;br /&gt;
|-&lt;br /&gt;
|touchTargetSuccess&lt;br /&gt;
|碰到的单位（需配合路径点）&lt;br /&gt;
|-&lt;br /&gt;
|newMessage&lt;br /&gt;
|给这个单位发信的单位&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
{{折叠|thisActionTarget与eventSource的例子|&amp;lt;pre&amp;gt;&lt;br /&gt;
[turret_super]&lt;br /&gt;
onShoot_triggerActions: idol&lt;br /&gt;
[hiddenAction_idol]&lt;br /&gt;
showMessageToAllPlayers: %{thisActionTarget}的笑容。&lt;br /&gt;
&lt;br /&gt;
[hiddenAction_tookDmg]&lt;br /&gt;
autoTriggerOnEvent: tookDamage(withTag=&amp;quot;APCR&amp;quot;)&lt;br /&gt;
showMessageToAllPlayers: 来自%{eventSource}的攻击！&lt;br /&gt;
&amp;lt;/pre&amp;gt;}}&lt;br /&gt;
&lt;br /&gt;
==全局==&lt;br /&gt;
铁锈战争提供了一些常见情况可能用到的单位选择器，且所以节都能使用，与&#039;&#039;&#039;局内&#039;&#039;&#039;相对。&lt;br /&gt;
&lt;br /&gt;
===选填参数部分===&lt;br /&gt;
&amp;lt;p&amp;gt;附属：&amp;lt;code&amp;gt;attachment([slot], [withTag])&amp;lt;/code&amp;gt;&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;运输：&amp;lt;code&amp;gt;transporting([slot])&amp;lt;/code&amp;gt;&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;最近单位：&amp;lt;code&amp;gt;nearestUnit([withinRange], [withTag], [relation])&amp;lt;/code&amp;gt;&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;搜索首个单位&amp;lt;code&amp;gt;globalSearchForFirstUnit([withTag], [relation])&amp;lt;/code&amp;gt;&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====参数都为选填，默认情况就很有趣了。====&lt;br /&gt;
*附属&lt;br /&gt;
不填参数则返回行数最高的单位。&lt;br /&gt;
*运输&lt;br /&gt;
不填参数则返回最近运输的单位。&lt;br /&gt;
*最近单位&lt;br /&gt;
不填参数则返回范围约为500内的单位。&lt;br /&gt;
*搜索首个单位&lt;br /&gt;
不填参数则返回该地图最小id的单位。&lt;br /&gt;
&lt;br /&gt;
===无参数部分===&lt;br /&gt;
这些单位引用的特点很明显，都是指向具体的某个单位。&lt;br /&gt;
&amp;lt;code&amp;gt;attacking&amp;lt;/code&amp;gt;为&amp;lt;code&amp;gt;activeWaypointTarget&amp;lt;/code&amp;gt;为攻击时套上单位的快捷引用方式。&amp;lt;code&amp;gt;lastDamagedBy&amp;lt;/code&amp;gt;在事件来源为tookDamage时的快捷引用方式。&amp;lt;code&amp;gt;parent&amp;lt;/code&amp;gt;在单位自身为他人附属时可使用。&amp;lt;code&amp;gt;activeWaypointTarget&amp;lt;/code&amp;gt;能够实时监控路径点情况，如果没明确指定某个单位则返回在那个位置的标记（Marker），但似乎不能获取该路径点的类型，路径点类型可[https://docs.google.com/spreadsheets/d/1aeP3pUic0IutZlgGix_cM8xR7LEH44gS4itAxETK954/htmlview 详见]代码&amp;lt;code&amp;gt;addWaypoint_type&amp;lt;/code&amp;gt;。&lt;br /&gt;
&lt;br /&gt;
{{折叠|全局单位引用的例子|&amp;lt;pre&amp;gt;&lt;br /&gt;
isVisible: if parent.attachment(slot= 5) == self&lt;br /&gt;
&lt;br /&gt;
[hiddenAction_repair]&lt;br /&gt;
autoTriggerOnEvent: newWaypointGivenByPlayer&lt;br /&gt;
requireConditional: if self.hasActiveWaypoint(type= &amp;quot;repair&amp;quot;)&lt;br /&gt;
showMessageToPlayer: 你正在治疗%{activeWaypointTarget}。&lt;br /&gt;
&amp;lt;/pre&amp;gt;}}&lt;br /&gt;
&lt;br /&gt;
==存储==&lt;br /&gt;
与[[自定义内存]]相比，虽然&amp;lt;code&amp;gt;customTarget1&amp;lt;/code&amp;gt;与&amp;lt;code&amp;gt;customTarget2&amp;lt;/code&amp;gt;与&amp;lt;code&amp;gt;@memory x:unit&amp;lt;/code&amp;gt;功能相当，但前者能实时清理使用不了的单位。&lt;br /&gt;
单位生产、产生出来时，它的&#039;&#039;&#039;自定义目标1&#039;&#039;&#039;默认为工厂（把你生成出来的单位），这很有用，工厂不必通过&amp;lt;code&amp;gt;queuedUnitFinished&amp;lt;/code&amp;gt;事件配合&amp;lt;code&amp;gt;sendMessageTo&amp;lt;/code&amp;gt;告诉产物&#039;&#039;把你生产出来的是谁&#039;&#039;。&lt;br /&gt;
&lt;br /&gt;
==其他==&lt;br /&gt;
&amp;lt;code&amp;gt;nullUnit&amp;lt;/code&amp;gt;有另一种写法，也就是&amp;lt;code&amp;gt;null&amp;lt;/code&amp;gt;，但后者更泛用且简略，前者更像是特指，特指&#039;&#039;&#039;空&#039;&#039;&#039;的是单位。&lt;/div&gt;</summary>
		<author><name>GMBOX</name></author>
	</entry>
	<entry>
		<id>https://rustedwarfare.org/index.php?title=%E5%8D%95%E4%BD%8D%E5%BC%95%E7%94%A8&amp;diff=4707</id>
		<title>单位引用</title>
		<link rel="alternate" type="text/html" href="https://rustedwarfare.org/index.php?title=%E5%8D%95%E4%BD%8D%E5%BC%95%E7%94%A8&amp;diff=4707"/>
		<updated>2025-06-30T06:56:05Z</updated>

		<summary type="html">&lt;p&gt;GMBOX：​描述不全。&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;br /&gt;
&#039;&#039;&#039;单位引用&#039;&#039;&#039;（Unit Reference）是铁锈战争[[1.15]]新加入的单位选择器，可引用符合条件的单位。&lt;br /&gt;
&lt;br /&gt;
==查询==&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+单位引用&lt;br /&gt;
|标记&lt;br /&gt;
|getAsMarker()&lt;br /&gt;
getOffsetRelative()&lt;br /&gt;
getOffsetAbsolute()&lt;br /&gt;
createMarker()&lt;br /&gt;
|-&lt;br /&gt;
|局内&lt;br /&gt;
|thisActionTarget&lt;br /&gt;
eventSource&lt;br /&gt;
|-&lt;br /&gt;
|全局&lt;br /&gt;
|attachment()&lt;br /&gt;
transporting()&lt;br /&gt;
attacking&lt;br /&gt;
lastDamagedBy&lt;br /&gt;
parent&lt;br /&gt;
activeWaypointTarget&lt;br /&gt;
nearestUnit()&lt;br /&gt;
globalSearchForFirstUnit()&lt;br /&gt;
|-&lt;br /&gt;
|存储&lt;br /&gt;
|customTarget1&lt;br /&gt;
customTarget2&lt;br /&gt;
|-&lt;br /&gt;
|其他&lt;br /&gt;
|nullUnit&lt;br /&gt;
|}&lt;br /&gt;
==标记==&lt;br /&gt;
临时、快速地创建一个标记，可用来反映位置、朝向、高度、队伍编号，且不需要用到时会自动移除，不隶属任何单位也不受单位后续行为的影响。&lt;br /&gt;
标记可分为两种，照铁锈战争的说法，一种是&#039;&#039;&#039;获取&#039;&#039;&#039;（get...），另一种是&#039;&#039;&#039;创建&#039;&#039;&#039;(create...)。获取会在以单位的基础创建标记，而&#039;&#039;&#039;创建&#039;&#039;&#039;完全与创建它的单位无关。&lt;br /&gt;
===标记的格式===&lt;br /&gt;
&amp;lt;p&amp;gt;获取：&amp;lt;code&amp;gt;getAsMarker()&amp;lt;/code&amp;gt;&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;相对：&amp;lt;code&amp;gt;getOffsetRelative([x], [y], [height], [dirOffset])&amp;lt;/code&amp;gt;&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;绝对：&amp;lt;code&amp;gt;getOffsetAbsolute([x], [y], [height])&amp;lt;/code&amp;gt;&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;创建：&amp;lt;code&amp;gt;createMarker(x, y, [height], [teamId], [dir])&amp;lt;/code&amp;gt;&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===标记的用法===&lt;br /&gt;
想直接获取当前位置等信息可以使用&amp;lt;code&amp;gt;getAsMarker&amp;lt;/code&amp;gt;。&lt;br /&gt;
铁锈战争为偏移提供了两种方案，一种是&#039;&#039;&#039;相对偏移&#039;&#039;&#039;，不止受单位位置、高度，还受朝向影响。通俗易懂就是你坐在一辆车上，你当然可以移动、旋转（&amp;lt;code&amp;gt;dirOffset&amp;lt;/code&amp;gt;），但车移动、旋转你也必须移动、旋转。&lt;br /&gt;
另一种是&#039;&#039;&#039;绝对偏移&#039;&#039;&#039;，只受单位位置、高度影响，比如单位坐标(1000, 1000)，向左偏移5个单位（995, 1000）。&lt;br /&gt;
&#039;&#039;&#039;创建标记&#039;&#039;&#039;是直接在地图上创建一个标记，队伍编号可由自己决定，可以注意的是创建标记的(x, y)必须要填，但铁锈战争允许省略&amp;lt;code&amp;gt;(x=, y=)&amp;lt;/code&amp;gt;。&lt;br /&gt;
&lt;br /&gt;
{{折叠|标记的例子|&amp;lt;pre&amp;gt;&lt;br /&gt;
teleportTo: getOffsetRelative(y= 10, dirOffset= self.customTimer)&lt;br /&gt;
&lt;br /&gt;
fireXTurretAtGround_withTarget: createMarker(activeWaypointTarget.x, activeWaypointTarget.y, teamId= self.teamId).nearestUnit(withinRange= 1500, withTag= &amp;quot;outpost&amp;quot;, relation= &amp;quot;own&amp;quot;)&lt;br /&gt;
&amp;lt;/pre&amp;gt;}}&lt;br /&gt;
&lt;br /&gt;
==局内==&lt;br /&gt;
局内只能在行动内使用，可用&amp;lt;code&amp;gt;alsoTriggerAction&amp;lt;/code&amp;gt;或&amp;lt;code&amp;gt;alsoQueueAction&amp;lt;/code&amp;gt;延长“寿命”，你也可以用内存将其存储。&amp;lt;code&amp;gt;thisActionTarget&amp;lt;/code&amp;gt;在不同情况下所指代的单位不同，与&amp;lt;code&amp;gt;eventSource&amp;lt;/code&amp;gt;不同，后者只与&amp;lt;code&amp;gt;autoTriggerOnEvent&amp;lt;/code&amp;gt;绑定，触发的事件不同所指代的单位也不同。&lt;br /&gt;
===thisActionIndex的用法===&lt;br /&gt;
&amp;lt;code&amp;gt;thisActionIndex&amp;lt;/code&amp;gt;能在遍历过程中同时知道每个元素的位置信息，&amp;lt;code&amp;gt;index&amp;lt;/code&amp;gt;为其缩略形式。受&amp;lt;code&amp;gt;alsoTriggerActionRepeat&amp;lt;/code&amp;gt;与&amp;lt;code&amp;gt;takeResources_triggerActionForEach&amp;lt;/code&amp;gt;影响。&lt;br /&gt;
&lt;br /&gt;
===对应的情况===&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+thisActionTarget用处&lt;br /&gt;
|fireXTurretAtGround&lt;br /&gt;
|指向的位置&lt;br /&gt;
|-&lt;br /&gt;
|alsoTriggerAction&lt;br /&gt;
|与原行动的thisActionTarget相同&lt;br /&gt;
|-&lt;br /&gt;
|onShoot_triggerActions&lt;br /&gt;
|炮塔射击的单位&lt;br /&gt;
|-&lt;br /&gt;
|takeResources_triggerActionIfAnyCollected&lt;br /&gt;
|提取到的单位&lt;br /&gt;
|-&lt;br /&gt;
|takeResources_triggerActionForEach&lt;br /&gt;
|与上同理&lt;br /&gt;
|-&lt;br /&gt;
|addWaypoint_triggerActionIfMatched&lt;br /&gt;
|被添加路径点的单位（没明确指定某个单位时则为在那个位置的标记，如move等）&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+eventSource用处&lt;br /&gt;
|tookDamage&lt;br /&gt;
|攻击你的单位&lt;br /&gt;
|-&lt;br /&gt;
|killedAnyUnit&lt;br /&gt;
|杀死的单位&lt;br /&gt;
|-&lt;br /&gt;
|transportingNewUnit&lt;br /&gt;
|新装载的单位&lt;br /&gt;
|-&lt;br /&gt;
|transportUnloadedOrRemovedUnit&lt;br /&gt;
|刚卸载的单位&lt;br /&gt;
|-&lt;br /&gt;
|queuedUnitFinished&lt;br /&gt;
|刚生产的单位&lt;br /&gt;
|-&lt;br /&gt;
|touchTargetSuccess&lt;br /&gt;
|碰到的单位（需配合路径点）&lt;br /&gt;
|-&lt;br /&gt;
|newMessage&lt;br /&gt;
|给这个单位发信的单位&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
{{折叠|thisActionTarget与eventSource的例子|&amp;lt;pre&amp;gt;&lt;br /&gt;
[turret_super]&lt;br /&gt;
onShoot_triggerActions: idol&lt;br /&gt;
[hiddenAction_idol]&lt;br /&gt;
showMessageToAllPlayers: %{thisActionTarget}的笑容。&lt;br /&gt;
&lt;br /&gt;
[hiddenAction_tookDmg]&lt;br /&gt;
autoTriggerOnEvent: tookDamage(withTag=&amp;quot;APCR&amp;quot;)&lt;br /&gt;
showMessageToAllPlayers: 来自%{eventSource}的攻击！&lt;br /&gt;
&amp;lt;/pre&amp;gt;}}&lt;br /&gt;
&lt;br /&gt;
==全局==&lt;br /&gt;
铁锈战争提供了一些常见情况可能用到的单位选择器，且所以节都能使用，与&#039;&#039;&#039;局内&#039;&#039;&#039;相对。&lt;br /&gt;
&lt;br /&gt;
===选填参数部分===&lt;br /&gt;
&amp;lt;p&amp;gt;附属：&amp;lt;code&amp;gt;attachment([slot], [withTag])&amp;lt;/code&amp;gt;&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;运输：&amp;lt;code&amp;gt;transporting([slot])&amp;lt;/code&amp;gt;&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;最近单位：&amp;lt;code&amp;gt;nearestUnit([withinRange], [withTag], [relation])&amp;lt;/code&amp;gt;&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;搜索首个单位&amp;lt;code&amp;gt;globalSearchForFirstUnit([withTag], [relation])&amp;lt;/code&amp;gt;&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====参数都为选填，默认情况就很有趣了。====&lt;br /&gt;
*附属&lt;br /&gt;
不填参数则返回行数最高的单位。&lt;br /&gt;
*运输&lt;br /&gt;
不填参数则返回最近运输的单位。&lt;br /&gt;
*最近单位&lt;br /&gt;
不填参数则返回范围约为500内的单位。&lt;br /&gt;
*搜索首个单位&lt;br /&gt;
不填参数则返回该地图最小id的单位。&lt;br /&gt;
&lt;br /&gt;
===无参数部分===&lt;br /&gt;
这些单位引用的特点很明显，都是指向具体的某个单位。&lt;br /&gt;
&amp;lt;code&amp;gt;attacking&amp;lt;/code&amp;gt;为&amp;lt;code&amp;gt;activeWaypointTarget&amp;lt;/code&amp;gt;为攻击时套上单位的快捷引用方式。&amp;lt;code&amp;gt;lastDamagedBy&amp;lt;/code&amp;gt;在事件来源为tookDamage时的快捷引用方式。&amp;lt;code&amp;gt;parent&amp;lt;/code&amp;gt;在单位自身为他人附属时可使用。&lt;br /&gt;
&lt;br /&gt;
{{折叠|全局单位引用的例子|&amp;lt;pre&amp;gt;&lt;br /&gt;
isVisible: if parent.attachment(slot= 5) == self&lt;br /&gt;
&lt;br /&gt;
[hiddenAction_repair]&lt;br /&gt;
autoTriggerOnEvent: newWaypointGivenByPlayer&lt;br /&gt;
requireConditional: if self.hasActiveWaypoint(type= &amp;quot;repair&amp;quot;)&lt;br /&gt;
showMessageToPlayer: 你正在治疗%{activeWaypointTarget}。&lt;br /&gt;
&amp;lt;/pre&amp;gt;}}&lt;br /&gt;
&lt;br /&gt;
==存储==&lt;br /&gt;
与[[自定义内存]]相比，虽然&amp;lt;code&amp;gt;customTarget1&amp;lt;/code&amp;gt;与&amp;lt;code&amp;gt;customTarget2&amp;lt;/code&amp;gt;与&amp;lt;code&amp;gt;@memory x:unit&amp;lt;/code&amp;gt;功能相当，但前者能实时清理使用不了的单位。&lt;br /&gt;
单位生产、产生出来时，它的&#039;&#039;&#039;自定义目标1&#039;&#039;&#039;默认为工厂（把你生成出来的单位），这很有用，工厂不必通过&amp;lt;code&amp;gt;queuedUnitFinished&amp;lt;/code&amp;gt;事件配合&amp;lt;code&amp;gt;sendMessageTo&amp;lt;/code&amp;gt;告诉产物&#039;&#039;把你生产出来的是谁&#039;&#039;。&lt;br /&gt;
&lt;br /&gt;
==其他==&lt;br /&gt;
&amp;lt;code&amp;gt;nullUnit&amp;lt;/code&amp;gt;有另一种写法，也就是&amp;lt;code&amp;gt;null&amp;lt;/code&amp;gt;，但后者更泛用且简略，前者更像是特指，特指&#039;&#039;&#039;空&#039;&#039;&#039;的是单位。&lt;/div&gt;</summary>
		<author><name>GMBOX</name></author>
	</entry>
	<entry>
		<id>https://rustedwarfare.org/index.php?title=%E5%8D%95%E4%BD%8D%E5%BC%95%E7%94%A8&amp;diff=4706</id>
		<title>单位引用</title>
		<link rel="alternate" type="text/html" href="https://rustedwarfare.org/index.php?title=%E5%8D%95%E4%BD%8D%E5%BC%95%E7%94%A8&amp;diff=4706"/>
		<updated>2025-06-29T12:47:29Z</updated>

		<summary type="html">&lt;p&gt;GMBOX：​/* 局内 */错别字。&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;br /&gt;
&#039;&#039;&#039;单位引用&#039;&#039;&#039;（Unit Reference）是铁锈战争[[1.15]]新加入的单位选择器，可引用符合条件的单位。&lt;br /&gt;
&lt;br /&gt;
==查询==&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+单位引用&lt;br /&gt;
|标记&lt;br /&gt;
|getAsMarker()&lt;br /&gt;
getOffsetRelative()&lt;br /&gt;
getOffsetAbsolute()&lt;br /&gt;
createMarker()&lt;br /&gt;
|-&lt;br /&gt;
|局内&lt;br /&gt;
|thisActionTarget&lt;br /&gt;
eventSource&lt;br /&gt;
|-&lt;br /&gt;
|全局&lt;br /&gt;
|attachment()&lt;br /&gt;
transporting()&lt;br /&gt;
attacking&lt;br /&gt;
lastDamagedBy&lt;br /&gt;
parent&lt;br /&gt;
activeWaypointTarget&lt;br /&gt;
nearestUnit()&lt;br /&gt;
globalSearchForFirstUnit()&lt;br /&gt;
|-&lt;br /&gt;
|存储&lt;br /&gt;
|customTarget1&lt;br /&gt;
customTarget2&lt;br /&gt;
|-&lt;br /&gt;
|其他&lt;br /&gt;
|nullUnit&lt;br /&gt;
|}&lt;br /&gt;
==标记==&lt;br /&gt;
临时、快速地创建一个标记，可用来反映位置、朝向、高度、队伍编号，且不需要用到时会自动移除，不隶属任何单位也不受单位后续行为的影响。&lt;br /&gt;
标记可分为两种，照铁锈战争的说法，一种是&#039;&#039;&#039;获取&#039;&#039;&#039;（get...），另一种是&#039;&#039;&#039;创建&#039;&#039;&#039;(create...)。获取会在以单位的基础创建标记，而&#039;&#039;&#039;创建&#039;&#039;&#039;完全与创建它的单位无关。&lt;br /&gt;
===标记的格式===&lt;br /&gt;
&amp;lt;p&amp;gt;获取：&amp;lt;code&amp;gt;getAsMarker()&amp;lt;/code&amp;gt;&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;相对：&amp;lt;code&amp;gt;getOffsetRelative([x], [y], [height], [dirOffset])&amp;lt;/code&amp;gt;&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;绝对：&amp;lt;code&amp;gt;getOffsetAbsolute([x], [y], [height])&amp;lt;/code&amp;gt;&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;创建：&amp;lt;code&amp;gt;createMarker(x, y, [height], [teamId], [dir])&amp;lt;/code&amp;gt;&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===标记的用法===&lt;br /&gt;
想直接获取当前位置等信息可以使用&amp;lt;code&amp;gt;getAsMarker&amp;lt;/code&amp;gt;。&lt;br /&gt;
铁锈战争为偏移提供了两种方案，一种是&#039;&#039;&#039;相对偏移&#039;&#039;&#039;，不止受单位位置、高度，还受朝向影响。通俗易懂就是你坐在一辆车上，你当然可以移动、旋转（&amp;lt;code&amp;gt;dirOffset&amp;lt;/code&amp;gt;），但车移动、旋转你也必须移动、旋转。&lt;br /&gt;
另一种是&#039;&#039;&#039;绝对偏移&#039;&#039;&#039;，只受单位位置、高度影响，比如单位坐标(1000, 1000)，向左偏移5个单位（995, 1000）。&lt;br /&gt;
&#039;&#039;&#039;创建标记&#039;&#039;&#039;是直接在地图上创建一个标记，队伍编号可由自己决定，可以注意的是创建标记的(x, y)必须要填，但铁锈战争允许省略&amp;lt;code&amp;gt;(x=, y=)&amp;lt;/code&amp;gt;。&lt;br /&gt;
&lt;br /&gt;
{{折叠|标记的例子|&amp;lt;pre&amp;gt;&lt;br /&gt;
teleportTo: getOffsetRelative(y= 10, dirOffset= self.customTimer)&lt;br /&gt;
&lt;br /&gt;
fireXTurretAtGround_withTarget: createMarker(activeWaypointTarget.x, activeWaypointTarget.y, teamId= self.teamId).nearestUnit(withinRange= 1500, withTag= &amp;quot;outpost&amp;quot;, relation= &amp;quot;own&amp;quot;)&lt;br /&gt;
&amp;lt;/pre&amp;gt;}}&lt;br /&gt;
&lt;br /&gt;
==局内==&lt;br /&gt;
局内只能在行动内使用，可用&amp;lt;code&amp;gt;alsoTriggerAction&amp;lt;/code&amp;gt;或&amp;lt;code&amp;gt;alsoQueueAction&amp;lt;/code&amp;gt;延长“寿命”，你也可以用内存将其存储。&amp;lt;code&amp;gt;thisActionTarget&amp;lt;/code&amp;gt;在不同情况下所指代的单位不同，与&amp;lt;code&amp;gt;eventSource&amp;lt;/code&amp;gt;不同，后者只与&amp;lt;code&amp;gt;autoTriggerOnEvent&amp;lt;/code&amp;gt;绑定，触发的事件不同所指代的单位也不同。&lt;br /&gt;
===thisActionIndex的用法===&lt;br /&gt;
&amp;lt;code&amp;gt;thisActionIndex&amp;lt;/code&amp;gt;能在遍历过程中同时知道每个元素的位置信息，&amp;lt;code&amp;gt;index&amp;lt;/code&amp;gt;为其缩略形式。受&amp;lt;code&amp;gt;alsoTriggerActionRepeat&amp;lt;/code&amp;gt;与&amp;lt;code&amp;gt;takeResources_triggerActionForEach&amp;lt;/code&amp;gt;影响。&lt;br /&gt;
&lt;br /&gt;
===对应的情况===&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+thisActionTarget用处&lt;br /&gt;
|fireXTurretAtGround&lt;br /&gt;
|指向的位置&lt;br /&gt;
|-&lt;br /&gt;
|alsoTriggerAction&lt;br /&gt;
|与原行动的thisActionTarget相同&lt;br /&gt;
|-&lt;br /&gt;
|onShoot_triggerActions&lt;br /&gt;
|炮塔射击的单位&lt;br /&gt;
|-&lt;br /&gt;
|takeResources_triggerActionIfAnyCollected&lt;br /&gt;
|提取到的单位&lt;br /&gt;
|-&lt;br /&gt;
|takeResources_triggerActionForEach&lt;br /&gt;
|与上同理&lt;br /&gt;
|-&lt;br /&gt;
|addWaypoint_triggerActionIfMatched&lt;br /&gt;
|添加路径的位置（攻击则为被攻击的单位）&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+eventSource用处&lt;br /&gt;
|tookDamage&lt;br /&gt;
|攻击你的单位&lt;br /&gt;
|-&lt;br /&gt;
|killedAnyUnit&lt;br /&gt;
|杀死的单位&lt;br /&gt;
|-&lt;br /&gt;
|transportingNewUnit&lt;br /&gt;
|新装载的单位&lt;br /&gt;
|-&lt;br /&gt;
|transportUnloadedOrRemovedUnit&lt;br /&gt;
|刚卸载的单位&lt;br /&gt;
|-&lt;br /&gt;
|queuedUnitFinished&lt;br /&gt;
|刚生产的单位&lt;br /&gt;
|-&lt;br /&gt;
|touchTargetSuccess&lt;br /&gt;
|碰到的单位（需配合路径点）&lt;br /&gt;
|-&lt;br /&gt;
|newMessage&lt;br /&gt;
|给这个单位发信的单位&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
{{折叠|thisActionTarget与eventSource的例子|&amp;lt;pre&amp;gt;&lt;br /&gt;
[turret_super]&lt;br /&gt;
onShoot_triggerActions: idol&lt;br /&gt;
[hiddenAction_idol]&lt;br /&gt;
showMessageToAllPlayers: %{thisActionTarget}的笑容。&lt;br /&gt;
&lt;br /&gt;
[hiddenAction_tookDmg]&lt;br /&gt;
autoTriggerOnEvent: tookDamage(withTag=&amp;quot;APCR&amp;quot;)&lt;br /&gt;
showMessageToAllPlayers: 来自%{eventSource}的攻击！&lt;br /&gt;
&amp;lt;/pre&amp;gt;}}&lt;br /&gt;
&lt;br /&gt;
==全局==&lt;br /&gt;
铁锈战争提供了一些常见情况可能用到的单位选择器，且所以节都能使用，与&#039;&#039;&#039;局内&#039;&#039;&#039;相对。&lt;br /&gt;
&lt;br /&gt;
===选填参数部分===&lt;br /&gt;
&amp;lt;p&amp;gt;附属：&amp;lt;code&amp;gt;attachment([slot], [withTag])&amp;lt;/code&amp;gt;&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;运输：&amp;lt;code&amp;gt;transporting([slot])&amp;lt;/code&amp;gt;&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;最近单位：&amp;lt;code&amp;gt;nearestUnit([withinRange], [withTag], [relation])&amp;lt;/code&amp;gt;&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;搜索首个单位&amp;lt;code&amp;gt;globalSearchForFirstUnit([withTag], [relation])&amp;lt;/code&amp;gt;&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====参数都为选填，默认情况就很有趣了。====&lt;br /&gt;
*附属&lt;br /&gt;
不填参数则返回行数最高的单位。&lt;br /&gt;
*运输&lt;br /&gt;
不填参数则返回最近运输的单位。&lt;br /&gt;
*最近单位&lt;br /&gt;
不填参数则返回范围约为500内的单位。&lt;br /&gt;
*搜索首个单位&lt;br /&gt;
不填参数则返回该地图最小id的单位。&lt;br /&gt;
&lt;br /&gt;
===无参数部分===&lt;br /&gt;
这些单位引用的特点很明显，都是指向具体的某个单位。&lt;br /&gt;
&amp;lt;code&amp;gt;attacking&amp;lt;/code&amp;gt;为&amp;lt;code&amp;gt;activeWaypointTarget&amp;lt;/code&amp;gt;为攻击时套上单位的快捷引用方式。&amp;lt;code&amp;gt;lastDamagedBy&amp;lt;/code&amp;gt;在事件来源为tookDamage时的快捷引用方式。&amp;lt;code&amp;gt;parent&amp;lt;/code&amp;gt;在单位自身为他人附属时可使用。&lt;br /&gt;
&lt;br /&gt;
{{折叠|全局单位引用的例子|&amp;lt;pre&amp;gt;&lt;br /&gt;
isVisible: if parent.attachment(slot= 5) == self&lt;br /&gt;
&lt;br /&gt;
[hiddenAction_repair]&lt;br /&gt;
autoTriggerOnEvent: newWaypointGivenByPlayer&lt;br /&gt;
requireConditional: if self.hasActiveWaypoint(type= &amp;quot;repair&amp;quot;)&lt;br /&gt;
showMessageToPlayer: 你正在治疗%{activeWaypointTarget}。&lt;br /&gt;
&amp;lt;/pre&amp;gt;}}&lt;br /&gt;
&lt;br /&gt;
==存储==&lt;br /&gt;
与[[自定义内存]]相比，虽然&amp;lt;code&amp;gt;customTarget1&amp;lt;/code&amp;gt;与&amp;lt;code&amp;gt;customTarget2&amp;lt;/code&amp;gt;与&amp;lt;code&amp;gt;@memory x:unit&amp;lt;/code&amp;gt;功能相当，但前者能实时清理使用不了的单位。&lt;br /&gt;
单位生产、产生出来时，它的&#039;&#039;&#039;自定义目标1&#039;&#039;&#039;默认为工厂（把你生成出来的单位），这很有用，工厂不必通过&amp;lt;code&amp;gt;queuedUnitFinished&amp;lt;/code&amp;gt;事件配合&amp;lt;code&amp;gt;sendMessageTo&amp;lt;/code&amp;gt;告诉产物&#039;&#039;把你生产出来的是谁&#039;&#039;。&lt;br /&gt;
&lt;br /&gt;
==其他==&lt;br /&gt;
&amp;lt;code&amp;gt;nullUnit&amp;lt;/code&amp;gt;有另一种写法，也就是&amp;lt;code&amp;gt;null&amp;lt;/code&amp;gt;，但后者更泛用且简略，前者更像是特指，特指&#039;&#039;&#039;空&#039;&#039;&#039;的是单位。&lt;/div&gt;</summary>
		<author><name>GMBOX</name></author>
	</entry>
	<entry>
		<id>https://rustedwarfare.org/index.php?title=%E5%8D%95%E4%BD%8D%E5%BC%95%E7%94%A8&amp;diff=4705</id>
		<title>单位引用</title>
		<link rel="alternate" type="text/html" href="https://rustedwarfare.org/index.php?title=%E5%8D%95%E4%BD%8D%E5%BC%95%E7%94%A8&amp;diff=4705"/>
		<updated>2025-06-29T12:46:43Z</updated>

		<summary type="html">&lt;p&gt;GMBOX：​/* 标记的格式 */错别字。&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;br /&gt;
&#039;&#039;&#039;单位引用&#039;&#039;&#039;（Unit Reference）是铁锈战争[[1.15]]新加入的单位选择器，可引用符合条件的单位。&lt;br /&gt;
&lt;br /&gt;
==查询==&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+单位引用&lt;br /&gt;
|标记&lt;br /&gt;
|getAsMarker()&lt;br /&gt;
getOffsetRelative()&lt;br /&gt;
getOffsetAbsolute()&lt;br /&gt;
createMarker()&lt;br /&gt;
|-&lt;br /&gt;
|局内&lt;br /&gt;
|thisActionTarget&lt;br /&gt;
eventSource&lt;br /&gt;
|-&lt;br /&gt;
|全局&lt;br /&gt;
|attachment()&lt;br /&gt;
transporting()&lt;br /&gt;
attacking&lt;br /&gt;
lastDamagedBy&lt;br /&gt;
parent&lt;br /&gt;
activeWaypointTarget&lt;br /&gt;
nearestUnit()&lt;br /&gt;
globalSearchForFirstUnit()&lt;br /&gt;
|-&lt;br /&gt;
|存储&lt;br /&gt;
|customTarget1&lt;br /&gt;
customTarget2&lt;br /&gt;
|-&lt;br /&gt;
|其他&lt;br /&gt;
|nullUnit&lt;br /&gt;
|}&lt;br /&gt;
==标记==&lt;br /&gt;
临时、快速地创建一个标记，可用来反映位置、朝向、高度、队伍编号，且不需要用到时会自动移除，不隶属任何单位也不受单位后续行为的影响。&lt;br /&gt;
标记可分为两种，照铁锈战争的说法，一种是&#039;&#039;&#039;获取&#039;&#039;&#039;（get...），另一种是&#039;&#039;&#039;创建&#039;&#039;&#039;(create...)。获取会在以单位的基础创建标记，而&#039;&#039;&#039;创建&#039;&#039;&#039;完全与创建它的单位无关。&lt;br /&gt;
===标记的格式===&lt;br /&gt;
&amp;lt;p&amp;gt;获取：&amp;lt;code&amp;gt;getAsMarker()&amp;lt;/code&amp;gt;&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;相对：&amp;lt;code&amp;gt;getOffsetRelative([x], [y], [height], [dirOffset])&amp;lt;/code&amp;gt;&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;绝对：&amp;lt;code&amp;gt;getOffsetAbsolute([x], [y], [height])&amp;lt;/code&amp;gt;&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;创建：&amp;lt;code&amp;gt;createMarker(x, y, [height], [teamId], [dir])&amp;lt;/code&amp;gt;&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===标记的用法===&lt;br /&gt;
想直接获取当前位置等信息可以使用&amp;lt;code&amp;gt;getAsMarker&amp;lt;/code&amp;gt;。&lt;br /&gt;
铁锈战争为偏移提供了两种方案，一种是&#039;&#039;&#039;相对偏移&#039;&#039;&#039;，不止受单位位置、高度，还受朝向影响。通俗易懂就是你坐在一辆车上，你当然可以移动、旋转（&amp;lt;code&amp;gt;dirOffset&amp;lt;/code&amp;gt;），但车移动、旋转你也必须移动、旋转。&lt;br /&gt;
另一种是&#039;&#039;&#039;绝对偏移&#039;&#039;&#039;，只受单位位置、高度影响，比如单位坐标(1000, 1000)，向左偏移5个单位（995, 1000）。&lt;br /&gt;
&#039;&#039;&#039;创建标记&#039;&#039;&#039;是直接在地图上创建一个标记，队伍编号可由自己决定，可以注意的是创建标记的(x, y)必须要填，但铁锈战争允许省略&amp;lt;code&amp;gt;(x=, y=)&amp;lt;/code&amp;gt;。&lt;br /&gt;
&lt;br /&gt;
{{折叠|标记的例子|&amp;lt;pre&amp;gt;&lt;br /&gt;
teleportTo: getOffsetRelative(y= 10, dirOffset= self.customTimer)&lt;br /&gt;
&lt;br /&gt;
fireXTurretAtGround_withTarget: createMarker(activeWaypointTarget.x, activeWaypointTarget.y, teamId= self.teamId).nearestUnit(withinRange= 1500, withTag= &amp;quot;outpost&amp;quot;, relation= &amp;quot;own&amp;quot;)&lt;br /&gt;
&amp;lt;/pre&amp;gt;}}&lt;br /&gt;
&lt;br /&gt;
==局内==&lt;br /&gt;
局内只能在行动内使用，可用&amp;lt;code&amp;gt;alsoTriggerAction&amp;lt;/code&amp;gt;或&amp;lt;code&amp;gt;alsoQueueAction&amp;lt;/code&amp;gt;延长“寿命”，你也可以用内存将其存储。&amp;lt;code&amp;gt;thisActionTarget&amp;lt;/code&amp;gt;在不同情况下所指代的单位不同，与&amp;lt;code&amp;gt;eventSource&amp;lt;/code&amp;gt;不同，后者只与&amp;lt;code&amp;gt;autoTriggerOnEvent&amp;lt;/code&amp;gt;绑定，触发的事件不同所指代的单位也不同。&lt;br /&gt;
===thisActionIndex的用法===&lt;br /&gt;
&amp;lt;code&amp;gt;thisActionIndex&amp;lt;/code&amp;gt;能在遍历过程中同时知道每个元素的位置信息，&amp;lt;code&amp;gt;index&amp;lt;/code&amp;gt;为其缩略形式。受&amp;lt;code&amp;gt;alsoTriggerActionRepeat&amp;lt;/code&amp;gt;与&amp;lt;code&amp;gt;takeResources_triggerActionForEach&amp;lt;/code&amp;gt;影响。&lt;br /&gt;
&lt;br /&gt;
===对应的情况===&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+thisActionTarget用处&lt;br /&gt;
|fireXTurretAtGround&lt;br /&gt;
|指向的位置&lt;br /&gt;
|-&lt;br /&gt;
|alsoTriggerAction&lt;br /&gt;
|与原行动的thisActionTarget相同&lt;br /&gt;
|-&lt;br /&gt;
|onShoot_triggerActions&lt;br /&gt;
|炮塔射击的单位&lt;br /&gt;
|-&lt;br /&gt;
|takeResources_triggerActionIfAnyCollected&lt;br /&gt;
|提取到的单位&lt;br /&gt;
|-&lt;br /&gt;
|takeResources_triggerActionForEach&lt;br /&gt;
|与上同理&lt;br /&gt;
|-&lt;br /&gt;
|addWaypoint_triggerActionIfMatched&lt;br /&gt;
|添加路径的位置（攻击则为被攻击的单位）&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+eventSource用处&lt;br /&gt;
|tookDamage&lt;br /&gt;
|攻击你的单位&lt;br /&gt;
|-&lt;br /&gt;
|killedAnyUnit&lt;br /&gt;
|杀死的单位&lt;br /&gt;
|-&lt;br /&gt;
|transportingNewUnit&lt;br /&gt;
|新装载的单位&lt;br /&gt;
|-&lt;br /&gt;
|transportUnloadedOrRemovedUnit&lt;br /&gt;
|刚卸载的单位&lt;br /&gt;
|-&lt;br /&gt;
|queuedUnitFinished&lt;br /&gt;
|刚生产的单位&lt;br /&gt;
|-&lt;br /&gt;
|touchTargetSuccess&lt;br /&gt;
|碰到的单位（需配合路径点）&lt;br /&gt;
|-&lt;br /&gt;
|newMessage&lt;br /&gt;
|给这个单位发信的单位&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
{{折叠|thisActionTarget与eventSource的例子|&amp;lt;pre&amp;gt;&lt;br /&gt;
[turret_super]&lt;br /&gt;
onShoot_triggerActions: idol&lt;br /&gt;
[hiddenAction_idol]&lt;br /&gt;
showMessageToAllPlayers: %{thisActionTarget}的笑容。&lt;br /&gt;
&lt;br /&gt;
[hiddenAction_tookDmg]&lt;br /&gt;
autoTriggerOnEvent: tookDamge(withTag=&amp;quot;APCR&amp;quot;)&lt;br /&gt;
showMessageToAllPlayers: 来自%{eventSource}的攻击！&lt;br /&gt;
&amp;lt;/pre&amp;gt;}}&lt;br /&gt;
&lt;br /&gt;
==全局==&lt;br /&gt;
铁锈战争提供了一些常见情况可能用到的单位选择器，且所以节都能使用，与&#039;&#039;&#039;局内&#039;&#039;&#039;相对。&lt;br /&gt;
&lt;br /&gt;
===选填参数部分===&lt;br /&gt;
&amp;lt;p&amp;gt;附属：&amp;lt;code&amp;gt;attachment([slot], [withTag])&amp;lt;/code&amp;gt;&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;运输：&amp;lt;code&amp;gt;transporting([slot])&amp;lt;/code&amp;gt;&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;最近单位：&amp;lt;code&amp;gt;nearestUnit([withinRange], [withTag], [relation])&amp;lt;/code&amp;gt;&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;搜索首个单位&amp;lt;code&amp;gt;globalSearchForFirstUnit([withTag], [relation])&amp;lt;/code&amp;gt;&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====参数都为选填，默认情况就很有趣了。====&lt;br /&gt;
*附属&lt;br /&gt;
不填参数则返回行数最高的单位。&lt;br /&gt;
*运输&lt;br /&gt;
不填参数则返回最近运输的单位。&lt;br /&gt;
*最近单位&lt;br /&gt;
不填参数则返回范围约为500内的单位。&lt;br /&gt;
*搜索首个单位&lt;br /&gt;
不填参数则返回该地图最小id的单位。&lt;br /&gt;
&lt;br /&gt;
===无参数部分===&lt;br /&gt;
这些单位引用的特点很明显，都是指向具体的某个单位。&lt;br /&gt;
&amp;lt;code&amp;gt;attacking&amp;lt;/code&amp;gt;为&amp;lt;code&amp;gt;activeWaypointTarget&amp;lt;/code&amp;gt;为攻击时套上单位的快捷引用方式。&amp;lt;code&amp;gt;lastDamagedBy&amp;lt;/code&amp;gt;在事件来源为tookDamage时的快捷引用方式。&amp;lt;code&amp;gt;parent&amp;lt;/code&amp;gt;在单位自身为他人附属时可使用。&lt;br /&gt;
&lt;br /&gt;
{{折叠|全局单位引用的例子|&amp;lt;pre&amp;gt;&lt;br /&gt;
isVisible: if parent.attachment(slot= 5) == self&lt;br /&gt;
&lt;br /&gt;
[hiddenAction_repair]&lt;br /&gt;
autoTriggerOnEvent: newWaypointGivenByPlayer&lt;br /&gt;
requireConditional: if self.hasActiveWaypoint(type= &amp;quot;repair&amp;quot;)&lt;br /&gt;
showMessageToPlayer: 你正在治疗%{activeWaypointTarget}。&lt;br /&gt;
&amp;lt;/pre&amp;gt;}}&lt;br /&gt;
&lt;br /&gt;
==存储==&lt;br /&gt;
与[[自定义内存]]相比，虽然&amp;lt;code&amp;gt;customTarget1&amp;lt;/code&amp;gt;与&amp;lt;code&amp;gt;customTarget2&amp;lt;/code&amp;gt;与&amp;lt;code&amp;gt;@memory x:unit&amp;lt;/code&amp;gt;功能相当，但前者能实时清理使用不了的单位。&lt;br /&gt;
单位生产、产生出来时，它的&#039;&#039;&#039;自定义目标1&#039;&#039;&#039;默认为工厂（把你生成出来的单位），这很有用，工厂不必通过&amp;lt;code&amp;gt;queuedUnitFinished&amp;lt;/code&amp;gt;事件配合&amp;lt;code&amp;gt;sendMessageTo&amp;lt;/code&amp;gt;告诉产物&#039;&#039;把你生产出来的是谁&#039;&#039;。&lt;br /&gt;
&lt;br /&gt;
==其他==&lt;br /&gt;
&amp;lt;code&amp;gt;nullUnit&amp;lt;/code&amp;gt;有另一种写法，也就是&amp;lt;code&amp;gt;null&amp;lt;/code&amp;gt;，但后者更泛用且简略，前者更像是特指，特指&#039;&#039;&#039;空&#039;&#039;&#039;的是单位。&lt;/div&gt;</summary>
		<author><name>GMBOX</name></author>
	</entry>
	<entry>
		<id>https://rustedwarfare.org/index.php?title=%E5%8D%95%E4%BD%8D%E5%BC%95%E7%94%A8&amp;diff=4704</id>
		<title>单位引用</title>
		<link rel="alternate" type="text/html" href="https://rustedwarfare.org/index.php?title=%E5%8D%95%E4%BD%8D%E5%BC%95%E7%94%A8&amp;diff=4704"/>
		<updated>2025-06-29T09:39:29Z</updated>

		<summary type="html">&lt;p&gt;GMBOX：​/* thisActionIndex的用法 */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;br /&gt;
&#039;&#039;&#039;单位引用&#039;&#039;&#039;（Unit Reference）是铁锈战争[[1.15]]新加入的单位选择器，可引用符合条件的单位。&lt;br /&gt;
&lt;br /&gt;
==查询==&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+单位引用&lt;br /&gt;
|标记&lt;br /&gt;
|getAsMarker()&lt;br /&gt;
getOffsetRelative()&lt;br /&gt;
getOffsetAbsolute()&lt;br /&gt;
createMarker()&lt;br /&gt;
|-&lt;br /&gt;
|局内&lt;br /&gt;
|thisActionTarget&lt;br /&gt;
eventSource&lt;br /&gt;
|-&lt;br /&gt;
|全局&lt;br /&gt;
|attachment()&lt;br /&gt;
transporting()&lt;br /&gt;
attacking&lt;br /&gt;
lastDamagedBy&lt;br /&gt;
parent&lt;br /&gt;
activeWaypointTarget&lt;br /&gt;
nearestUnit()&lt;br /&gt;
globalSearchForFirstUnit()&lt;br /&gt;
|-&lt;br /&gt;
|存储&lt;br /&gt;
|customTarget1&lt;br /&gt;
customTarget2&lt;br /&gt;
|-&lt;br /&gt;
|其他&lt;br /&gt;
|nullUnit&lt;br /&gt;
|}&lt;br /&gt;
==标记==&lt;br /&gt;
临时、快速地创建一个标记，可用来反映位置、朝向、高度、队伍编号，且不需要用到时会自动移除，不隶属任何单位也不受单位后续行为的影响。&lt;br /&gt;
标记可分为两种，照铁锈战争的说法，一种是&#039;&#039;&#039;获取&#039;&#039;&#039;（get...），另一种是&#039;&#039;&#039;创建&#039;&#039;&#039;(create...)。获取会在以单位的基础创建标记，而&#039;&#039;&#039;创建&#039;&#039;&#039;完全与创建它的单位无关。&lt;br /&gt;
===标记的格式===&lt;br /&gt;
&amp;lt;p&amp;gt;获取：&amp;lt;code&amp;gt;getAsMarker()&amp;lt;/code&amp;gt;&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;相对：&amp;lt;code&amp;gt;getOffsetRelative([x], [y], [height], [offsetDir])&amp;lt;/code&amp;gt;&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;绝对：&amp;lt;code&amp;gt;getOffsetAbsolute([x], [y], [height])&amp;lt;/code&amp;gt;&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;创建：&amp;lt;code&amp;gt;createMarker(x, y, [height], [teamId], [dir])&amp;lt;/code&amp;gt;&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===标记的用法===&lt;br /&gt;
想直接获取当前位置等信息可以使用&amp;lt;code&amp;gt;getAsMarker&amp;lt;/code&amp;gt;。&lt;br /&gt;
铁锈战争为偏移提供了两种方案，一种是&#039;&#039;&#039;相对偏移&#039;&#039;&#039;，不止受单位位置、高度，还受朝向影响。通俗易懂就是你坐在一辆车上，你当然可以移动、旋转（&amp;lt;code&amp;gt;dirOffset&amp;lt;/code&amp;gt;），但车移动、旋转你也必须移动、旋转。&lt;br /&gt;
另一种是&#039;&#039;&#039;绝对偏移&#039;&#039;&#039;，只受单位位置、高度影响，比如单位坐标(1000, 1000)，向左偏移5个单位（995, 1000）。&lt;br /&gt;
&#039;&#039;&#039;创建标记&#039;&#039;&#039;是直接在地图上创建一个标记，队伍编号可由自己决定，可以注意的是创建标记的(x, y)必须要填，但铁锈战争允许省略&amp;lt;code&amp;gt;(x=, y=)&amp;lt;/code&amp;gt;。&lt;br /&gt;
&lt;br /&gt;
{{折叠|标记的例子|&amp;lt;pre&amp;gt;&lt;br /&gt;
teleportTo: getOffsetRelative(y= 10, dirOffset= self.customTimer)&lt;br /&gt;
&lt;br /&gt;
fireXTurretAtGround_withTarget: createMarker(activeWaypointTarget.x, activeWaypointTarget.y, teamId= self.teamId).nearestUnit(withinRange= 1500, withTag= &amp;quot;outpost&amp;quot;, relation= &amp;quot;own&amp;quot;)&lt;br /&gt;
&amp;lt;/pre&amp;gt;}}&lt;br /&gt;
&lt;br /&gt;
==局内==&lt;br /&gt;
局内只能在行动内使用，可用&amp;lt;code&amp;gt;alsoTriggerAction&amp;lt;/code&amp;gt;或&amp;lt;code&amp;gt;alsoQueueAction&amp;lt;/code&amp;gt;延长“寿命”，你也可以用内存将其存储。&amp;lt;code&amp;gt;thisActionTarget&amp;lt;/code&amp;gt;在不同情况下所指代的单位不同，与&amp;lt;code&amp;gt;eventSource&amp;lt;/code&amp;gt;不同，后者只与&amp;lt;code&amp;gt;autoTriggerOnEvent&amp;lt;/code&amp;gt;绑定，触发的事件不同所指代的单位也不同。&lt;br /&gt;
===thisActionIndex的用法===&lt;br /&gt;
&amp;lt;code&amp;gt;thisActionIndex&amp;lt;/code&amp;gt;能在遍历过程中同时知道每个元素的位置信息，&amp;lt;code&amp;gt;index&amp;lt;/code&amp;gt;为其缩略形式。受&amp;lt;code&amp;gt;alsoTriggerActionRepeat&amp;lt;/code&amp;gt;与&amp;lt;code&amp;gt;takeResources_triggerActionForEach&amp;lt;/code&amp;gt;影响。&lt;br /&gt;
&lt;br /&gt;
===对应的情况===&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+thisActionTarget用处&lt;br /&gt;
|fireXTurretAtGround&lt;br /&gt;
|指向的位置&lt;br /&gt;
|-&lt;br /&gt;
|alsoTriggerAction&lt;br /&gt;
|与原行动的thisActionTarget相同&lt;br /&gt;
|-&lt;br /&gt;
|onShoot_triggerActions&lt;br /&gt;
|炮塔射击的单位&lt;br /&gt;
|-&lt;br /&gt;
|takeResources_triggerActionIfAnyCollected&lt;br /&gt;
|提取到的单位&lt;br /&gt;
|-&lt;br /&gt;
|takeResources_triggerActionForEach&lt;br /&gt;
|与上同理&lt;br /&gt;
|-&lt;br /&gt;
|addWaypoint_triggerActionIfMatched&lt;br /&gt;
|添加路径的位置（攻击则为被攻击的单位）&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+eventSource用处&lt;br /&gt;
|tookDamage&lt;br /&gt;
|攻击你的单位&lt;br /&gt;
|-&lt;br /&gt;
|killedAnyUnit&lt;br /&gt;
|杀死的单位&lt;br /&gt;
|-&lt;br /&gt;
|transportingNewUnit&lt;br /&gt;
|新装载的单位&lt;br /&gt;
|-&lt;br /&gt;
|transportUnloadedOrRemovedUnit&lt;br /&gt;
|刚卸载的单位&lt;br /&gt;
|-&lt;br /&gt;
|queuedUnitFinished&lt;br /&gt;
|刚生产的单位&lt;br /&gt;
|-&lt;br /&gt;
|touchTargetSuccess&lt;br /&gt;
|碰到的单位（需配合路径点）&lt;br /&gt;
|-&lt;br /&gt;
|newMessage&lt;br /&gt;
|给这个单位发信的单位&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
{{折叠|thisActionTarget与eventSource的例子|&amp;lt;pre&amp;gt;&lt;br /&gt;
[turret_super]&lt;br /&gt;
onShoot_triggerActions: idol&lt;br /&gt;
[hiddenAction_idol]&lt;br /&gt;
showMessageToAllPlayers: %{thisActionTarget}的笑容。&lt;br /&gt;
&lt;br /&gt;
[hiddenAction_tookDmg]&lt;br /&gt;
autoTriggerOnEvent: tookDamge(withTag=&amp;quot;APCR&amp;quot;)&lt;br /&gt;
showMessageToAllPlayers: 来自%{eventSource}的攻击！&lt;br /&gt;
&amp;lt;/pre&amp;gt;}}&lt;br /&gt;
&lt;br /&gt;
==全局==&lt;br /&gt;
铁锈战争提供了一些常见情况可能用到的单位选择器，且所以节都能使用，与&#039;&#039;&#039;局内&#039;&#039;&#039;相对。&lt;br /&gt;
&lt;br /&gt;
===选填参数部分===&lt;br /&gt;
&amp;lt;p&amp;gt;附属：&amp;lt;code&amp;gt;attachment([slot], [withTag])&amp;lt;/code&amp;gt;&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;运输：&amp;lt;code&amp;gt;transporting([slot])&amp;lt;/code&amp;gt;&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;最近单位：&amp;lt;code&amp;gt;nearestUnit([withinRange], [withTag], [relation])&amp;lt;/code&amp;gt;&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;搜索首个单位&amp;lt;code&amp;gt;globalSearchForFirstUnit([withTag], [relation])&amp;lt;/code&amp;gt;&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====参数都为选填，默认情况就很有趣了。====&lt;br /&gt;
*附属&lt;br /&gt;
不填参数则返回行数最高的单位。&lt;br /&gt;
*运输&lt;br /&gt;
不填参数则返回最近运输的单位。&lt;br /&gt;
*最近单位&lt;br /&gt;
不填参数则返回范围约为500内的单位。&lt;br /&gt;
*搜索首个单位&lt;br /&gt;
不填参数则返回该地图最小id的单位。&lt;br /&gt;
&lt;br /&gt;
===无参数部分===&lt;br /&gt;
这些单位引用的特点很明显，都是指向具体的某个单位。&lt;br /&gt;
&amp;lt;code&amp;gt;attacking&amp;lt;/code&amp;gt;为&amp;lt;code&amp;gt;activeWaypointTarget&amp;lt;/code&amp;gt;为攻击时套上单位的快捷引用方式。&amp;lt;code&amp;gt;lastDamagedBy&amp;lt;/code&amp;gt;在事件来源为tookDamage时的快捷引用方式。&amp;lt;code&amp;gt;parent&amp;lt;/code&amp;gt;在单位自身为他人附属时可使用。&lt;br /&gt;
&lt;br /&gt;
{{折叠|全局单位引用的例子|&amp;lt;pre&amp;gt;&lt;br /&gt;
isVisible: if parent.attachment(slot= 5) == self&lt;br /&gt;
&lt;br /&gt;
[hiddenAction_repair]&lt;br /&gt;
autoTriggerOnEvent: newWaypointGivenByPlayer&lt;br /&gt;
requireConditional: if self.hasActiveWaypoint(type= &amp;quot;repair&amp;quot;)&lt;br /&gt;
showMessageToPlayer: 你正在治疗%{activeWaypointTarget}。&lt;br /&gt;
&amp;lt;/pre&amp;gt;}}&lt;br /&gt;
&lt;br /&gt;
==存储==&lt;br /&gt;
与[[自定义内存]]相比，虽然&amp;lt;code&amp;gt;customTarget1&amp;lt;/code&amp;gt;与&amp;lt;code&amp;gt;customTarget2&amp;lt;/code&amp;gt;与&amp;lt;code&amp;gt;@memory x:unit&amp;lt;/code&amp;gt;功能相当，但前者能实时清理使用不了的单位。&lt;br /&gt;
单位生产、产生出来时，它的&#039;&#039;&#039;自定义目标1&#039;&#039;&#039;默认为工厂（把你生成出来的单位），这很有用，工厂不必通过&amp;lt;code&amp;gt;queuedUnitFinished&amp;lt;/code&amp;gt;事件配合&amp;lt;code&amp;gt;sendMessageTo&amp;lt;/code&amp;gt;告诉产物&#039;&#039;把你生产出来的是谁&#039;&#039;。&lt;br /&gt;
&lt;br /&gt;
==其他==&lt;br /&gt;
&amp;lt;code&amp;gt;nullUnit&amp;lt;/code&amp;gt;有另一种写法，也就是&amp;lt;code&amp;gt;null&amp;lt;/code&amp;gt;，但后者更泛用且简略，前者更像是特指，特指&#039;&#039;&#039;空&#039;&#039;&#039;的是单位。&lt;/div&gt;</summary>
		<author><name>GMBOX</name></author>
	</entry>
	<entry>
		<id>https://rustedwarfare.org/index.php?title=%E5%8D%95%E4%BD%8D%E5%BC%95%E7%94%A8&amp;diff=4702</id>
		<title>单位引用</title>
		<link rel="alternate" type="text/html" href="https://rustedwarfare.org/index.php?title=%E5%8D%95%E4%BD%8D%E5%BC%95%E7%94%A8&amp;diff=4702"/>
		<updated>2025-06-29T05:19:43Z</updated>

		<summary type="html">&lt;p&gt;GMBOX：​&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;br /&gt;
&#039;&#039;&#039;单位引用&#039;&#039;&#039;（Unit Reference）是铁锈战争[[1.15]]新加入的单位选择器，可引用符合条件的单位。&lt;br /&gt;
&lt;br /&gt;
==查询==&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+单位引用&lt;br /&gt;
|标记&lt;br /&gt;
|getAsMarker()&lt;br /&gt;
getOffsetRelative()&lt;br /&gt;
getOffsetAbsolute()&lt;br /&gt;
createMarker()&lt;br /&gt;
|-&lt;br /&gt;
|局内&lt;br /&gt;
|thisActionTarget&lt;br /&gt;
eventSource&lt;br /&gt;
|-&lt;br /&gt;
|全局&lt;br /&gt;
|attachment()&lt;br /&gt;
transporting()&lt;br /&gt;
attacking&lt;br /&gt;
lastDamagedBy&lt;br /&gt;
parent&lt;br /&gt;
activeWaypointTarget&lt;br /&gt;
nearestUnit()&lt;br /&gt;
globalSearchForFirstUnit()&lt;br /&gt;
|-&lt;br /&gt;
|存储&lt;br /&gt;
|customTarget1&lt;br /&gt;
customTarget2&lt;br /&gt;
|-&lt;br /&gt;
|其他&lt;br /&gt;
|nullUnit&lt;br /&gt;
|}&lt;br /&gt;
==标记==&lt;br /&gt;
临时、快速地创建一个标记，可用来反映位置、朝向、高度、队伍编号，且不需要用到时会自动移除，不隶属任何单位也不受单位后续行为的影响。&lt;br /&gt;
标记可分为两种，照铁锈战争的说法，一种是&#039;&#039;&#039;获取&#039;&#039;&#039;（get...），另一种是&#039;&#039;&#039;创建&#039;&#039;&#039;(create...)。获取会在以单位的基础创建标记，而&#039;&#039;&#039;创建&#039;&#039;&#039;完全与创建它的单位无关。&lt;br /&gt;
===标记的格式===&lt;br /&gt;
&amp;lt;p&amp;gt;获取：&amp;lt;code&amp;gt;getAsMarker()&amp;lt;/code&amp;gt;&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;相对：&amp;lt;code&amp;gt;getOffsetRelative([x], [y], [height], [offsetDir])&amp;lt;/code&amp;gt;&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;绝对：&amp;lt;code&amp;gt;getOffsetAbsolute([x], [y], [height])&amp;lt;/code&amp;gt;&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;创建：&amp;lt;code&amp;gt;createMarker(x, y, [height], [teamId], [dir])&amp;lt;/code&amp;gt;&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===标记的用法===&lt;br /&gt;
想直接获取当前位置等信息可以使用&amp;lt;code&amp;gt;getAsMarker&amp;lt;/code&amp;gt;。&lt;br /&gt;
铁锈战争为偏移提供了两种方案，一种是&#039;&#039;&#039;相对偏移&#039;&#039;&#039;，不止受单位位置、高度，还受朝向影响。通俗易懂就是你坐在一辆车上，你当然可以移动、旋转（&amp;lt;code&amp;gt;dirOffset&amp;lt;/code&amp;gt;），但车移动、旋转你也必须移动、旋转。&lt;br /&gt;
另一种是&#039;&#039;&#039;绝对偏移&#039;&#039;&#039;，只受单位位置、高度影响，比如单位坐标(1000, 1000)，向左偏移5个单位（995, 1000）。&lt;br /&gt;
&#039;&#039;&#039;创建标记&#039;&#039;&#039;是直接在地图上创建一个标记，队伍编号可由自己决定，可以注意的是创建标记的(x, y)必须要填，但铁锈战争允许省略&amp;lt;code&amp;gt;(x=, y=)&amp;lt;/code&amp;gt;。&lt;br /&gt;
&lt;br /&gt;
{{折叠|标记的例子|&amp;lt;pre&amp;gt;&lt;br /&gt;
teleportTo: getOffsetRelative(y= 10, dirOffset= self.customTimer)&lt;br /&gt;
&lt;br /&gt;
fireXTurretAtGround_withTarget: createMarker(activeWaypointTarget.x, activeWaypointTarget.y, teamId= self.teamId).nearestUnit(withinRange= 1500, withTag= &amp;quot;outpost&amp;quot;, relation= &amp;quot;own&amp;quot;)&lt;br /&gt;
&amp;lt;/pre&amp;gt;}}&lt;br /&gt;
&lt;br /&gt;
==局内==&lt;br /&gt;
局内只能在行动内使用，可用&amp;lt;code&amp;gt;alsoTriggerAction&amp;lt;/code&amp;gt;或&amp;lt;code&amp;gt;alsoQueueAction&amp;lt;/code&amp;gt;延长“寿命”，你也可以用内存将其存储。&amp;lt;code&amp;gt;thisActionTarget&amp;lt;/code&amp;gt;在不同情况下所指代的单位不同，与&amp;lt;code&amp;gt;eventSource&amp;lt;/code&amp;gt;不同，后者只与&amp;lt;code&amp;gt;autoTriggerOnEvent&amp;lt;/code&amp;gt;绑定，触发的事件不同所指代的单位也不同。&lt;br /&gt;
===thisActionIndex的用法===&lt;br /&gt;
&amp;lt;code&amp;gt;thisActionIndex&amp;lt;/code&amp;gt;，&amp;lt;code&amp;gt;index&amp;lt;/code&amp;gt;为其缩略形式。&lt;br /&gt;
...待补充&lt;br /&gt;
&lt;br /&gt;
===对应的情况===&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+thisActionTarget用处&lt;br /&gt;
|fireXTurretAtGround&lt;br /&gt;
|指向的位置&lt;br /&gt;
|-&lt;br /&gt;
|alsoTriggerAction&lt;br /&gt;
|与原行动的thisActionTarget相同&lt;br /&gt;
|-&lt;br /&gt;
|onShoot_triggerActions&lt;br /&gt;
|炮塔射击的单位&lt;br /&gt;
|-&lt;br /&gt;
|takeResources_triggerActionIfAnyCollected&lt;br /&gt;
|提取到的单位&lt;br /&gt;
|-&lt;br /&gt;
|takeResources_triggerActionForEach&lt;br /&gt;
|与上同理&lt;br /&gt;
|-&lt;br /&gt;
|addWaypoint_triggerActionIfMatched&lt;br /&gt;
|添加路径的位置（攻击则为被攻击的单位）&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+eventSource用处&lt;br /&gt;
|tookDamage&lt;br /&gt;
|攻击你的单位&lt;br /&gt;
|-&lt;br /&gt;
|killedAnyUnit&lt;br /&gt;
|杀死的单位&lt;br /&gt;
|-&lt;br /&gt;
|transportingNewUnit&lt;br /&gt;
|新装载的单位&lt;br /&gt;
|-&lt;br /&gt;
|transportUnloadedOrRemovedUnit&lt;br /&gt;
|刚卸载的单位&lt;br /&gt;
|-&lt;br /&gt;
|queuedUnitFinished&lt;br /&gt;
|刚生产的单位&lt;br /&gt;
|-&lt;br /&gt;
|touchTargetSuccess&lt;br /&gt;
|碰到的单位（需配合路径点）&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
{{折叠|thisActionTarget与eventSource的例子|&amp;lt;pre&amp;gt;&lt;br /&gt;
[turret_super]&lt;br /&gt;
onShoot_triggerActions: idol&lt;br /&gt;
[hiddenAction_idol]&lt;br /&gt;
showMessageToAllPlayers: %{thisActionTarget}的笑容。&lt;br /&gt;
&lt;br /&gt;
[hiddenAction_tookDmg]&lt;br /&gt;
autoTriggerOnEvent: tookDamge(withTag=&amp;quot;APCR&amp;quot;)&lt;br /&gt;
showMessageToAllPlayers: 来自%{eventSource}的攻击！&lt;br /&gt;
&amp;lt;/pre&amp;gt;}}&lt;br /&gt;
&lt;br /&gt;
==全局==&lt;br /&gt;
铁锈战争提供了一些常见情况可能用到的单位选择器，且所以节都能使用，与&#039;&#039;&#039;局内&#039;&#039;&#039;相对。&lt;br /&gt;
&lt;br /&gt;
===选填参数部分===&lt;br /&gt;
&amp;lt;p&amp;gt;附属：&amp;lt;code&amp;gt;attachment([slot], [withTag])&amp;lt;/code&amp;gt;&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;运输：&amp;lt;code&amp;gt;transporting([slot])&amp;lt;/code&amp;gt;&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;最近单位：&amp;lt;code&amp;gt;nearestUnit([withinRange], [withTag], [relation])&amp;lt;/code&amp;gt;&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;搜索首个单位&amp;lt;code&amp;gt;globalSearchForFirstUnit([withTag], [relation])&amp;lt;/code&amp;gt;&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====参数都为选填，默认情况就很有趣了。====&lt;br /&gt;
*附属&lt;br /&gt;
不填参数则返回行数最高的单位。&lt;br /&gt;
*运输&lt;br /&gt;
不填参数则返回最近运输的单位。&lt;br /&gt;
*最近单位&lt;br /&gt;
不填参数则返回范围约为500内的单位。&lt;br /&gt;
*搜索首个单位&lt;br /&gt;
不填参数则返回该地图最小id的单位。&lt;br /&gt;
&lt;br /&gt;
===无参数部分===&lt;br /&gt;
这些单位引用的特点很明显，都是指向具体的某个单位。&lt;br /&gt;
&amp;lt;code&amp;gt;attacking&amp;lt;/code&amp;gt;为&amp;lt;code&amp;gt;activeWaypointTarget&amp;lt;/code&amp;gt;为攻击时套上单位的快捷引用方式。&amp;lt;code&amp;gt;lastDamagedBy&amp;lt;/code&amp;gt;在事件来源为tookDamage时的快捷引用方式。&amp;lt;code&amp;gt;parent&amp;lt;/code&amp;gt;在单位自身为他人附属时可使用。&lt;br /&gt;
&lt;br /&gt;
{{折叠|全局单位引用的例子|&amp;lt;pre&amp;gt;&lt;br /&gt;
isVisible: if parent.attachment(slot= 5) == self&lt;br /&gt;
&lt;br /&gt;
[hiddenAction_repair]&lt;br /&gt;
autoTriggerOnEvent: newWaypointGivenByPlayer&lt;br /&gt;
requireConditional: if self.hasActiveWaypoint(type= &amp;quot;repair&amp;quot;)&lt;br /&gt;
showMessageToPlayer: 你正在治疗%{activeWaypointTarget}。&lt;br /&gt;
&amp;lt;/pre&amp;gt;}}&lt;br /&gt;
&lt;br /&gt;
==存储==&lt;br /&gt;
与[[自定义内存]]相比，虽然&amp;lt;code&amp;gt;customTarget1&amp;lt;/code&amp;gt;与&amp;lt;code&amp;gt;customTarget2&amp;lt;/code&amp;gt;与&amp;lt;code&amp;gt;@memory x:unit&amp;lt;/code&amp;gt;功能相当，但前者能实时清理使用不了的单位。&lt;br /&gt;
单位生产、产生出来时，它的&#039;&#039;&#039;自定义目标1&#039;&#039;&#039;默认为工厂（把你生成出来的单位），这很有用，工厂不必通过&amp;lt;code&amp;gt;queuedUnitFinished&amp;lt;/code&amp;gt;事件配合&amp;lt;code&amp;gt;sendMessageTo&amp;lt;/code&amp;gt;告诉产物&#039;&#039;把你生产出来的是谁&#039;&#039;。&lt;br /&gt;
&lt;br /&gt;
==其他==&lt;br /&gt;
&amp;lt;code&amp;gt;nullUnit&amp;lt;/code&amp;gt;有另一种写法，也就是&amp;lt;code&amp;gt;null&amp;lt;/code&amp;gt;，但后者更泛用且简略，前者更像是特指，特指&#039;&#039;&#039;空&#039;&#039;&#039;的是单位。&lt;/div&gt;</summary>
		<author><name>GMBOX</name></author>
	</entry>
	<entry>
		<id>https://rustedwarfare.org/index.php?title=%E5%8D%95%E4%BD%8D%E5%BC%95%E7%94%A8&amp;diff=4701</id>
		<title>单位引用</title>
		<link rel="alternate" type="text/html" href="https://rustedwarfare.org/index.php?title=%E5%8D%95%E4%BD%8D%E5%BC%95%E7%94%A8&amp;diff=4701"/>
		<updated>2025-06-29T05:15:05Z</updated>

		<summary type="html">&lt;p&gt;GMBOX：​/* 其他 */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{欢迎编辑}}&lt;br /&gt;
&#039;&#039;&#039;单位引用&#039;&#039;&#039;（Unit Reference）是铁锈战争[[1.15]]新加入的单位选择器，可引用符合条件的单位。&lt;br /&gt;
&lt;br /&gt;
==查询==&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+单位引用&lt;br /&gt;
|标记&lt;br /&gt;
|getAsMarker()&lt;br /&gt;
getOffsetRelative()&lt;br /&gt;
getOffsetAbsolute()&lt;br /&gt;
createMarker()&lt;br /&gt;
|-&lt;br /&gt;
|局内&lt;br /&gt;
|thisActionTarget&lt;br /&gt;
eventSource&lt;br /&gt;
|-&lt;br /&gt;
|全局&lt;br /&gt;
|attachment()&lt;br /&gt;
transporting()&lt;br /&gt;
attacking&lt;br /&gt;
lastDamagedBy&lt;br /&gt;
parent&lt;br /&gt;
activeWaypointTarget&lt;br /&gt;
nearestUnit()&lt;br /&gt;
globalSearchForFirstUnit()&lt;br /&gt;
|-&lt;br /&gt;
|存储&lt;br /&gt;
|customTarget1&lt;br /&gt;
customTarget2&lt;br /&gt;
|-&lt;br /&gt;
|其他&lt;br /&gt;
|nullUnit&lt;br /&gt;
|}&lt;br /&gt;
==标记==&lt;br /&gt;
临时、快速地创建一个标记，可用来反映位置、朝向、高度、队伍编号，且不需要用到时会自动移除，不隶属任何单位也不受单位后续行为的影响。&lt;br /&gt;
标记可分为两种，照铁锈战争的说法，一种是&#039;&#039;&#039;获取&#039;&#039;&#039;（get...），另一种是&#039;&#039;&#039;创建&#039;&#039;&#039;(create...)。获取会在以单位的基础创建标记，而&#039;&#039;&#039;创建&#039;&#039;&#039;完全与创建它的单位无关。&lt;br /&gt;
===标记的格式===&lt;br /&gt;
&amp;lt;p&amp;gt;获取：&amp;lt;code&amp;gt;getAsMarker()&amp;lt;/code&amp;gt;&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;相对：&amp;lt;code&amp;gt;getOffsetRelative([x], [y], [height], [offsetDir])&amp;lt;/code&amp;gt;&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;绝对：&amp;lt;code&amp;gt;getOffsetAbsolute([x], [y], [height])&amp;lt;/code&amp;gt;&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;创建：&amp;lt;code&amp;gt;createMarker(x, y, [height], [teamId], [dir])&amp;lt;/code&amp;gt;&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===标记的用法===&lt;br /&gt;
想直接获取当前位置等信息可以使用&amp;lt;code&amp;gt;getAsMarker&amp;lt;/code&amp;gt;。&lt;br /&gt;
铁锈战争为偏移提供了两种方案，一种是&#039;&#039;&#039;相对偏移&#039;&#039;&#039;，不止受单位位置、高度，还受朝向影响。通俗易懂就是你坐在一辆车上，你当然可以移动、旋转（&amp;lt;code&amp;gt;dirOffset&amp;lt;/code&amp;gt;），但车移动、旋转你也必须移动、旋转。&lt;br /&gt;
另一种是&#039;&#039;&#039;绝对偏移&#039;&#039;&#039;，只受单位位置、高度影响，比如单位坐标(1000, 1000)，向左偏移5个单位（995, 1000）。&lt;br /&gt;
&#039;&#039;&#039;创建标记&#039;&#039;&#039;是直接在地图上创建一个标记，队伍编号可由自己决定，可以注意的是创建标记的(x, y)必须要填，但铁锈战争允许省略&amp;lt;code&amp;gt;(x=, y=)&amp;lt;/code&amp;gt;。&lt;br /&gt;
&lt;br /&gt;
{{折叠|标记的例子|&amp;lt;pre&amp;gt;&lt;br /&gt;
teleportTo: getOffsetRelative(y= 10, dirOffset= self.customTimer)&lt;br /&gt;
&lt;br /&gt;
fireXTurretAtGround_withTarget: createMarker(activeWaypointTarget.x, activeWaypointTarget.y, teamId= self.teamId).nearestUnit(withinRange= 1500, withTag= &amp;quot;outpost&amp;quot;, relation= &amp;quot;own&amp;quot;)&lt;br /&gt;
&amp;lt;/pre&amp;gt;}}&lt;br /&gt;
&lt;br /&gt;
==局内==&lt;br /&gt;
局内只能在行动内使用，可用&amp;lt;code&amp;gt;alsoTriggerAction&amp;lt;/code&amp;gt;或&amp;lt;code&amp;gt;alsoQueueAction&amp;lt;/code&amp;gt;延长“寿命”，你也可以用内存将其存储。&amp;lt;code&amp;gt;thisActionTarget&amp;lt;/code&amp;gt;在不同情况下所指代的单位不同，与&amp;lt;code&amp;gt;eventSource&amp;lt;/code&amp;gt;不同，后者只与&amp;lt;code&amp;gt;autoTriggerOnEvent&amp;lt;/code&amp;gt;绑定，触发的事件不同所指代的单位也不同。&lt;br /&gt;
===thisActionIndex的用法===&lt;br /&gt;
&amp;lt;code&amp;gt;thisActionIndex&amp;lt;/code&amp;gt;，&amp;lt;code&amp;gt;index&amp;lt;/code&amp;gt;为其缩略形式。&lt;br /&gt;
...待补充&lt;br /&gt;
&lt;br /&gt;
===对应的情况===&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+thisActionTarget用处&lt;br /&gt;
|fireXTurretAtGround&lt;br /&gt;
|指向的位置&lt;br /&gt;
|-&lt;br /&gt;
|alsoTriggerAction&lt;br /&gt;
|与原行动的thisActionTarget相同&lt;br /&gt;
|-&lt;br /&gt;
|onShoot_triggerActions&lt;br /&gt;
|炮塔射击的单位&lt;br /&gt;
|-&lt;br /&gt;
|takeResources_triggerActionIfAnyCollected&lt;br /&gt;
|提取到的单位&lt;br /&gt;
|-&lt;br /&gt;
|takeResources_triggerActionForEach&lt;br /&gt;
|与上同理&lt;br /&gt;
|-&lt;br /&gt;
|addWaypoint_triggerActionIfMatched&lt;br /&gt;
|添加路径的位置（攻击则为被攻击的单位）&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+eventSource用处&lt;br /&gt;
|tookDamage&lt;br /&gt;
|攻击你的单位&lt;br /&gt;
|-&lt;br /&gt;
|killedAnyUnit&lt;br /&gt;
|杀死的单位&lt;br /&gt;
|-&lt;br /&gt;
|transportingNewUnit&lt;br /&gt;
|新装载的单位&lt;br /&gt;
|-&lt;br /&gt;
|transportUnloadedOrRemovedUnit&lt;br /&gt;
|刚卸载的单位&lt;br /&gt;
|-&lt;br /&gt;
|queuedUnitFinished&lt;br /&gt;
|刚生产的单位&lt;br /&gt;
|-&lt;br /&gt;
|touchTargetSuccess&lt;br /&gt;
|碰到的单位（需配合路径点）&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
{{折叠|thisActionTarget与eventSource的例子|&amp;lt;pre&amp;gt;&lt;br /&gt;
[turret_super]&lt;br /&gt;
onShoot_triggerActions: idol&lt;br /&gt;
[hiddenAction_idol]&lt;br /&gt;
showMessageToAllPlayers: %{thisActionTarget}的笑容。&lt;br /&gt;
&lt;br /&gt;
[hiddenAction_tookDmg]&lt;br /&gt;
autoTriggerOnEvent: tookDamge(withTag=&amp;quot;APCR&amp;quot;)&lt;br /&gt;
showMessageToAllPlayers: 来自%{eventSource}的攻击！&lt;br /&gt;
&amp;lt;/pre&amp;gt;}}&lt;br /&gt;
&lt;br /&gt;
==全局==&lt;br /&gt;
铁锈战争提供了一些常见情况可能用到的单位选择器，且所以节都能使用，与&#039;&#039;&#039;局内&#039;&#039;&#039;相对。&lt;br /&gt;
&lt;br /&gt;
===选填参数部分===&lt;br /&gt;
&amp;lt;p&amp;gt;附属：&amp;lt;code&amp;gt;attachment([slot], [withTag])&amp;lt;/code&amp;gt;&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;运输：&amp;lt;code&amp;gt;transporting([slot])&amp;lt;/code&amp;gt;&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;最近单位：&amp;lt;code&amp;gt;nearestUnit([withinRange], [withTag], [relation])&amp;lt;/code&amp;gt;&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;搜索首个单位&amp;lt;code&amp;gt;globalSearchForFirstUnit([withTag], [relation])&amp;lt;/code&amp;gt;&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====参数都为选填，默认情况就很有趣了。====&lt;br /&gt;
*附属&lt;br /&gt;
不填参数则返回行数最高的单位。&lt;br /&gt;
*运输&lt;br /&gt;
不填参数则返回最近运输的单位。&lt;br /&gt;
*最近单位&lt;br /&gt;
不填参数则返回范围约为500内的单位。&lt;br /&gt;
*搜索首个单位&lt;br /&gt;
不填参数则返回该地图最小id的单位。&lt;br /&gt;
&lt;br /&gt;
===无参数部分===&lt;br /&gt;
这些单位引用的特点很明显，都是指向具体的某个单位。&lt;br /&gt;
&amp;lt;code&amp;gt;attacking&amp;lt;/code&amp;gt;为&amp;lt;code&amp;gt;activeWaypointTarget&amp;lt;/code&amp;gt;为攻击时套上单位的快捷引用方式。&amp;lt;code&amp;gt;lastDamagedBy&amp;lt;/code&amp;gt;在事件来源为tookDamage时的快捷引用方式。&amp;lt;code&amp;gt;parent&amp;lt;/code&amp;gt;在单位自身为他人附属时可使用。&lt;br /&gt;
&lt;br /&gt;
{{折叠|全局单位引用的例子|&amp;lt;pre&amp;gt;&lt;br /&gt;
isVisible: if parent.attachment(slot= 5) == self&lt;br /&gt;
&lt;br /&gt;
[hiddenAction_repair]&lt;br /&gt;
autoTriggerOnEvent: newWaypointGivenByPlayer&lt;br /&gt;
requireConditional: if self.hasActiveWaypoint(type= &amp;quot;repair&amp;quot;)&lt;br /&gt;
showMessageToPlayer: 你正在治疗%{activeWaypointTarget}。&lt;br /&gt;
&amp;lt;/pre&amp;gt;}}&lt;br /&gt;
&lt;br /&gt;
==存储==&lt;br /&gt;
与[[自定义内存]]相比，虽然&amp;lt;code&amp;gt;customTarget1&amp;lt;/code&amp;gt;与&amp;lt;code&amp;gt;customTarget2&amp;lt;/code&amp;gt;与&amp;lt;code&amp;gt;@memory x:unit&amp;lt;/code&amp;gt;功能相当，但前者能实时清理使用不了的单位。&lt;br /&gt;
单位生产、产生出来时，它的&#039;&#039;&#039;自定义目标1&#039;&#039;&#039;默认为工厂（把你生成出来的单位），这很有用，工厂不必通过&amp;lt;code&amp;gt;queuedUnitFinished&amp;lt;/code&amp;gt;事件配合&amp;lt;code&amp;gt;sendMessageTo&amp;lt;/code&amp;gt;告诉产物&#039;&#039;把你生产出来的是谁&#039;&#039;。&lt;br /&gt;
&lt;br /&gt;
==其他==&lt;br /&gt;
&amp;lt;code&amp;gt;nullUnit&amp;lt;/code&amp;gt;有另一种写法，也就是&amp;lt;code&amp;gt;null&amp;lt;/code&amp;gt;，但后者更泛用且简略，前者更像是特指，特指&#039;&#039;&#039;空&#039;&#039;&#039;的是单位。&lt;/div&gt;</summary>
		<author><name>GMBOX</name></author>
	</entry>
	<entry>
		<id>https://rustedwarfare.org/index.php?title=%E5%8D%95%E4%BD%8D%E5%BC%95%E7%94%A8&amp;diff=4700</id>
		<title>单位引用</title>
		<link rel="alternate" type="text/html" href="https://rustedwarfare.org/index.php?title=%E5%8D%95%E4%BD%8D%E5%BC%95%E7%94%A8&amp;diff=4700"/>
		<updated>2025-06-29T05:12:32Z</updated>

		<summary type="html">&lt;p&gt;GMBOX：​/* 存储 */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{欢迎编辑}}&lt;br /&gt;
&#039;&#039;&#039;单位引用&#039;&#039;&#039;（Unit Reference）是铁锈战争[[1.15]]新加入的单位选择器，可引用符合条件的单位。&lt;br /&gt;
&lt;br /&gt;
==查询==&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+单位引用&lt;br /&gt;
|标记&lt;br /&gt;
|getAsMarker()&lt;br /&gt;
getOffsetRelative()&lt;br /&gt;
getOffsetAbsolute()&lt;br /&gt;
createMarker()&lt;br /&gt;
|-&lt;br /&gt;
|局内&lt;br /&gt;
|thisActionTarget&lt;br /&gt;
eventSource&lt;br /&gt;
|-&lt;br /&gt;
|全局&lt;br /&gt;
|attachment()&lt;br /&gt;
transporting()&lt;br /&gt;
attacking&lt;br /&gt;
lastDamagedBy&lt;br /&gt;
parent&lt;br /&gt;
activeWaypointTarget&lt;br /&gt;
nearestUnit()&lt;br /&gt;
globalSearchForFirstUnit()&lt;br /&gt;
|-&lt;br /&gt;
|存储&lt;br /&gt;
|customTarget1&lt;br /&gt;
customTarget2&lt;br /&gt;
|-&lt;br /&gt;
|其他&lt;br /&gt;
|nullUnit&lt;br /&gt;
|}&lt;br /&gt;
==标记==&lt;br /&gt;
临时、快速地创建一个标记，可用来反映位置、朝向、高度、队伍编号，且不需要用到时会自动移除，不隶属任何单位也不受单位后续行为的影响。&lt;br /&gt;
标记可分为两种，照铁锈战争的说法，一种是&#039;&#039;&#039;获取&#039;&#039;&#039;（get...），另一种是&#039;&#039;&#039;创建&#039;&#039;&#039;(create...)。获取会在以单位的基础创建标记，而&#039;&#039;&#039;创建&#039;&#039;&#039;完全与创建它的单位无关。&lt;br /&gt;
===标记的格式===&lt;br /&gt;
&amp;lt;p&amp;gt;获取：&amp;lt;code&amp;gt;getAsMarker()&amp;lt;/code&amp;gt;&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;相对：&amp;lt;code&amp;gt;getOffsetRelative([x], [y], [height], [offsetDir])&amp;lt;/code&amp;gt;&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;绝对：&amp;lt;code&amp;gt;getOffsetAbsolute([x], [y], [height])&amp;lt;/code&amp;gt;&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;创建：&amp;lt;code&amp;gt;createMarker(x, y, [height], [teamId], [dir])&amp;lt;/code&amp;gt;&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===标记的用法===&lt;br /&gt;
想直接获取当前位置等信息可以使用&amp;lt;code&amp;gt;getAsMarker&amp;lt;/code&amp;gt;。&lt;br /&gt;
铁锈战争为偏移提供了两种方案，一种是&#039;&#039;&#039;相对偏移&#039;&#039;&#039;，不止受单位位置、高度，还受朝向影响。通俗易懂就是你坐在一辆车上，你当然可以移动、旋转（&amp;lt;code&amp;gt;dirOffset&amp;lt;/code&amp;gt;），但车移动、旋转你也必须移动、旋转。&lt;br /&gt;
另一种是&#039;&#039;&#039;绝对偏移&#039;&#039;&#039;，只受单位位置、高度影响，比如单位坐标(1000, 1000)，向左偏移5个单位（995, 1000）。&lt;br /&gt;
&#039;&#039;&#039;创建标记&#039;&#039;&#039;是直接在地图上创建一个标记，队伍编号可由自己决定，可以注意的是创建标记的(x, y)必须要填，但铁锈战争允许省略&amp;lt;code&amp;gt;(x=, y=)&amp;lt;/code&amp;gt;。&lt;br /&gt;
&lt;br /&gt;
{{折叠|标记的例子|&amp;lt;pre&amp;gt;&lt;br /&gt;
teleportTo: getOffsetRelative(y= 10, dirOffset= self.customTimer)&lt;br /&gt;
&lt;br /&gt;
fireXTurretAtGround_withTarget: createMarker(activeWaypointTarget.x, activeWaypointTarget.y, teamId= self.teamId).nearestUnit(withinRange= 1500, withTag= &amp;quot;outpost&amp;quot;, relation= &amp;quot;own&amp;quot;)&lt;br /&gt;
&amp;lt;/pre&amp;gt;}}&lt;br /&gt;
&lt;br /&gt;
==局内==&lt;br /&gt;
局内只能在行动内使用，可用&amp;lt;code&amp;gt;alsoTriggerAction&amp;lt;/code&amp;gt;或&amp;lt;code&amp;gt;alsoQueueAction&amp;lt;/code&amp;gt;延长“寿命”，你也可以用内存将其存储。&amp;lt;code&amp;gt;thisActionTarget&amp;lt;/code&amp;gt;在不同情况下所指代的单位不同，与&amp;lt;code&amp;gt;eventSource&amp;lt;/code&amp;gt;不同，后者只与&amp;lt;code&amp;gt;autoTriggerOnEvent&amp;lt;/code&amp;gt;绑定，触发的事件不同所指代的单位也不同。&lt;br /&gt;
===thisActionIndex的用法===&lt;br /&gt;
&amp;lt;code&amp;gt;thisActionIndex&amp;lt;/code&amp;gt;，&amp;lt;code&amp;gt;index&amp;lt;/code&amp;gt;为其缩略形式。&lt;br /&gt;
...待补充&lt;br /&gt;
&lt;br /&gt;
===对应的情况===&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+thisActionTarget用处&lt;br /&gt;
|fireXTurretAtGround&lt;br /&gt;
|指向的位置&lt;br /&gt;
|-&lt;br /&gt;
|alsoTriggerAction&lt;br /&gt;
|与原行动的thisActionTarget相同&lt;br /&gt;
|-&lt;br /&gt;
|onShoot_triggerActions&lt;br /&gt;
|炮塔射击的单位&lt;br /&gt;
|-&lt;br /&gt;
|takeResources_triggerActionIfAnyCollected&lt;br /&gt;
|提取到的单位&lt;br /&gt;
|-&lt;br /&gt;
|takeResources_triggerActionForEach&lt;br /&gt;
|与上同理&lt;br /&gt;
|-&lt;br /&gt;
|addWaypoint_triggerActionIfMatched&lt;br /&gt;
|添加路径的位置（攻击则为被攻击的单位）&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+eventSource用处&lt;br /&gt;
|tookDamage&lt;br /&gt;
|攻击你的单位&lt;br /&gt;
|-&lt;br /&gt;
|killedAnyUnit&lt;br /&gt;
|杀死的单位&lt;br /&gt;
|-&lt;br /&gt;
|transportingNewUnit&lt;br /&gt;
|新装载的单位&lt;br /&gt;
|-&lt;br /&gt;
|transportUnloadedOrRemovedUnit&lt;br /&gt;
|刚卸载的单位&lt;br /&gt;
|-&lt;br /&gt;
|queuedUnitFinished&lt;br /&gt;
|刚生产的单位&lt;br /&gt;
|-&lt;br /&gt;
|touchTargetSuccess&lt;br /&gt;
|碰到的单位（需配合路径点）&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
{{折叠|thisActionTarget与eventSource的例子|&amp;lt;pre&amp;gt;&lt;br /&gt;
[turret_super]&lt;br /&gt;
onShoot_triggerActions: idol&lt;br /&gt;
[hiddenAction_idol]&lt;br /&gt;
showMessageToAllPlayers: %{thisActionTarget}的笑容。&lt;br /&gt;
&lt;br /&gt;
[hiddenAction_tookDmg]&lt;br /&gt;
autoTriggerOnEvent: tookDamge(withTag=&amp;quot;APCR&amp;quot;)&lt;br /&gt;
showMessageToAllPlayers: 来自%{eventSource}的攻击！&lt;br /&gt;
&amp;lt;/pre&amp;gt;}}&lt;br /&gt;
&lt;br /&gt;
==全局==&lt;br /&gt;
铁锈战争提供了一些常见情况可能用到的单位选择器，且所以节都能使用，与&#039;&#039;&#039;局内&#039;&#039;&#039;相对。&lt;br /&gt;
&lt;br /&gt;
===选填参数部分===&lt;br /&gt;
&amp;lt;p&amp;gt;附属：&amp;lt;code&amp;gt;attachment([slot], [withTag])&amp;lt;/code&amp;gt;&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;运输：&amp;lt;code&amp;gt;transporting([slot])&amp;lt;/code&amp;gt;&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;最近单位：&amp;lt;code&amp;gt;nearestUnit([withinRange], [withTag], [relation])&amp;lt;/code&amp;gt;&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;搜索首个单位&amp;lt;code&amp;gt;globalSearchForFirstUnit([withTag], [relation])&amp;lt;/code&amp;gt;&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====参数都为选填，默认情况就很有趣了。====&lt;br /&gt;
*附属&lt;br /&gt;
不填参数则返回行数最高的单位。&lt;br /&gt;
*运输&lt;br /&gt;
不填参数则返回最近运输的单位。&lt;br /&gt;
*最近单位&lt;br /&gt;
不填参数则返回范围约为500内的单位。&lt;br /&gt;
*搜索首个单位&lt;br /&gt;
不填参数则返回该地图最小id的单位。&lt;br /&gt;
&lt;br /&gt;
===无参数部分===&lt;br /&gt;
这些单位引用的特点很明显，都是指向具体的某个单位。&lt;br /&gt;
&amp;lt;code&amp;gt;attacking&amp;lt;/code&amp;gt;为&amp;lt;code&amp;gt;activeWaypointTarget&amp;lt;/code&amp;gt;为攻击时套上单位的快捷引用方式。&amp;lt;code&amp;gt;lastDamagedBy&amp;lt;/code&amp;gt;在事件来源为tookDamage时的快捷引用方式。&amp;lt;code&amp;gt;parent&amp;lt;/code&amp;gt;在单位自身为他人附属时可使用。&lt;br /&gt;
&lt;br /&gt;
{{折叠|全局单位引用的例子|&amp;lt;pre&amp;gt;&lt;br /&gt;
isVisible: if parent.attachment(slot= 5) == self&lt;br /&gt;
&lt;br /&gt;
[hiddenAction_repair]&lt;br /&gt;
autoTriggerOnEvent: newWaypointGivenByPlayer&lt;br /&gt;
requireConditional: if self.hasActiveWaypoint(type= &amp;quot;repair&amp;quot;)&lt;br /&gt;
showMessageToPlayer: 你正在治疗%{activeWaypointTarget}。&lt;br /&gt;
&amp;lt;/pre&amp;gt;}}&lt;br /&gt;
&lt;br /&gt;
==存储==&lt;br /&gt;
与[[自定义内存]]相比，虽然&amp;lt;code&amp;gt;customTarget1&amp;lt;/code&amp;gt;与&amp;lt;code&amp;gt;customTarget2&amp;lt;/code&amp;gt;与&amp;lt;code&amp;gt;@memory x:unit&amp;lt;/code&amp;gt;功能相当，但前者能实时清理使用不了的单位。&lt;br /&gt;
单位生产、产生出来时，它的&#039;&#039;&#039;自定义目标1&#039;&#039;&#039;默认为工厂（把你生成出来的单位），这很有用，工厂不必通过&amp;lt;code&amp;gt;queuedUnitFinished&amp;lt;/code&amp;gt;事件配合&amp;lt;code&amp;gt;sendMessageTo&amp;lt;/code&amp;gt;告诉产物&#039;&#039;把你生产出来的是谁&#039;&#039;。&lt;br /&gt;
&lt;br /&gt;
==其他==&lt;/div&gt;</summary>
		<author><name>GMBOX</name></author>
	</entry>
	<entry>
		<id>https://rustedwarfare.org/index.php?title=%E5%8D%95%E4%BD%8D%E5%BC%95%E7%94%A8&amp;diff=4699</id>
		<title>单位引用</title>
		<link rel="alternate" type="text/html" href="https://rustedwarfare.org/index.php?title=%E5%8D%95%E4%BD%8D%E5%BC%95%E7%94%A8&amp;diff=4699"/>
		<updated>2025-06-29T05:00:54Z</updated>

		<summary type="html">&lt;p&gt;GMBOX：​/* 全局 */添加例子。&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{欢迎编辑}}&lt;br /&gt;
&#039;&#039;&#039;单位引用&#039;&#039;&#039;（Unit Reference）是铁锈战争[[1.15]]新加入的单位选择器，可引用符合条件的单位。&lt;br /&gt;
&lt;br /&gt;
==查询==&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+单位引用&lt;br /&gt;
|标记&lt;br /&gt;
|getAsMarker()&lt;br /&gt;
getOffsetRelative()&lt;br /&gt;
getOffsetAbsolute()&lt;br /&gt;
createMarker()&lt;br /&gt;
|-&lt;br /&gt;
|局内&lt;br /&gt;
|thisActionTarget&lt;br /&gt;
eventSource&lt;br /&gt;
|-&lt;br /&gt;
|全局&lt;br /&gt;
|attachment()&lt;br /&gt;
transporting()&lt;br /&gt;
attacking&lt;br /&gt;
lastDamagedBy&lt;br /&gt;
parent&lt;br /&gt;
activeWaypointTarget&lt;br /&gt;
nearestUnit()&lt;br /&gt;
globalSearchForFirstUnit()&lt;br /&gt;
|-&lt;br /&gt;
|存储&lt;br /&gt;
|customTarget1&lt;br /&gt;
customTarget2&lt;br /&gt;
|-&lt;br /&gt;
|其他&lt;br /&gt;
|nullUnit&lt;br /&gt;
|}&lt;br /&gt;
==标记==&lt;br /&gt;
临时、快速地创建一个标记，可用来反映位置、朝向、高度、队伍编号，且不需要用到时会自动移除，不隶属任何单位也不受单位后续行为的影响。&lt;br /&gt;
标记可分为两种，照铁锈战争的说法，一种是&#039;&#039;&#039;获取&#039;&#039;&#039;（get...），另一种是&#039;&#039;&#039;创建&#039;&#039;&#039;(create...)。获取会在以单位的基础创建标记，而&#039;&#039;&#039;创建&#039;&#039;&#039;完全与创建它的单位无关。&lt;br /&gt;
===标记的格式===&lt;br /&gt;
&amp;lt;p&amp;gt;获取：&amp;lt;code&amp;gt;getAsMarker()&amp;lt;/code&amp;gt;&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;相对：&amp;lt;code&amp;gt;getOffsetRelative([x], [y], [height], [offsetDir])&amp;lt;/code&amp;gt;&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;绝对：&amp;lt;code&amp;gt;getOffsetAbsolute([x], [y], [height])&amp;lt;/code&amp;gt;&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;创建：&amp;lt;code&amp;gt;createMarker(x, y, [height], [teamId], [dir])&amp;lt;/code&amp;gt;&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===标记的用法===&lt;br /&gt;
想直接获取当前位置等信息可以使用&amp;lt;code&amp;gt;getAsMarker&amp;lt;/code&amp;gt;。&lt;br /&gt;
铁锈战争为偏移提供了两种方案，一种是&#039;&#039;&#039;相对偏移&#039;&#039;&#039;，不止受单位位置、高度，还受朝向影响。通俗易懂就是你坐在一辆车上，你当然可以移动、旋转（&amp;lt;code&amp;gt;dirOffset&amp;lt;/code&amp;gt;），但车移动、旋转你也必须移动、旋转。&lt;br /&gt;
另一种是&#039;&#039;&#039;绝对偏移&#039;&#039;&#039;，只受单位位置、高度影响，比如单位坐标(1000, 1000)，向左偏移5个单位（995, 1000）。&lt;br /&gt;
&#039;&#039;&#039;创建标记&#039;&#039;&#039;是直接在地图上创建一个标记，队伍编号可由自己决定，可以注意的是创建标记的(x, y)必须要填，但铁锈战争允许省略&amp;lt;code&amp;gt;(x=, y=)&amp;lt;/code&amp;gt;。&lt;br /&gt;
&lt;br /&gt;
{{折叠|标记的例子|&amp;lt;pre&amp;gt;&lt;br /&gt;
teleportTo: getOffsetRelative(y= 10, dirOffset= self.customTimer)&lt;br /&gt;
&lt;br /&gt;
fireXTurretAtGround_withTarget: createMarker(activeWaypointTarget.x, activeWaypointTarget.y, teamId= self.teamId).nearestUnit(withinRange= 1500, withTag= &amp;quot;outpost&amp;quot;, relation= &amp;quot;own&amp;quot;)&lt;br /&gt;
&amp;lt;/pre&amp;gt;}}&lt;br /&gt;
&lt;br /&gt;
==局内==&lt;br /&gt;
局内只能在行动内使用，可用&amp;lt;code&amp;gt;alsoTriggerAction&amp;lt;/code&amp;gt;或&amp;lt;code&amp;gt;alsoQueueAction&amp;lt;/code&amp;gt;延长“寿命”，你也可以用内存将其存储。&amp;lt;code&amp;gt;thisActionTarget&amp;lt;/code&amp;gt;在不同情况下所指代的单位不同，与&amp;lt;code&amp;gt;eventSource&amp;lt;/code&amp;gt;不同，后者只与&amp;lt;code&amp;gt;autoTriggerOnEvent&amp;lt;/code&amp;gt;绑定，触发的事件不同所指代的单位也不同。&lt;br /&gt;
===thisActionIndex的用法===&lt;br /&gt;
&amp;lt;code&amp;gt;thisActionIndex&amp;lt;/code&amp;gt;，&amp;lt;code&amp;gt;index&amp;lt;/code&amp;gt;为其缩略形式。&lt;br /&gt;
...待补充&lt;br /&gt;
&lt;br /&gt;
===对应的情况===&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+thisActionTarget用处&lt;br /&gt;
|fireXTurretAtGround&lt;br /&gt;
|指向的位置&lt;br /&gt;
|-&lt;br /&gt;
|alsoTriggerAction&lt;br /&gt;
|与原行动的thisActionTarget相同&lt;br /&gt;
|-&lt;br /&gt;
|onShoot_triggerActions&lt;br /&gt;
|炮塔射击的单位&lt;br /&gt;
|-&lt;br /&gt;
|takeResources_triggerActionIfAnyCollected&lt;br /&gt;
|提取到的单位&lt;br /&gt;
|-&lt;br /&gt;
|takeResources_triggerActionForEach&lt;br /&gt;
|与上同理&lt;br /&gt;
|-&lt;br /&gt;
|addWaypoint_triggerActionIfMatched&lt;br /&gt;
|添加路径的位置（攻击则为被攻击的单位）&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+eventSource用处&lt;br /&gt;
|tookDamage&lt;br /&gt;
|攻击你的单位&lt;br /&gt;
|-&lt;br /&gt;
|killedAnyUnit&lt;br /&gt;
|杀死的单位&lt;br /&gt;
|-&lt;br /&gt;
|transportingNewUnit&lt;br /&gt;
|新装载的单位&lt;br /&gt;
|-&lt;br /&gt;
|transportUnloadedOrRemovedUnit&lt;br /&gt;
|刚卸载的单位&lt;br /&gt;
|-&lt;br /&gt;
|queuedUnitFinished&lt;br /&gt;
|刚生产的单位&lt;br /&gt;
|-&lt;br /&gt;
|touchTargetSuccess&lt;br /&gt;
|碰到的单位（需配合路径点）&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
{{折叠|thisActionTarget与eventSource的例子|&amp;lt;pre&amp;gt;&lt;br /&gt;
[turret_super]&lt;br /&gt;
onShoot_triggerActions: idol&lt;br /&gt;
[hiddenAction_idol]&lt;br /&gt;
showMessageToAllPlayers: %{thisActionTarget}的笑容。&lt;br /&gt;
&lt;br /&gt;
[hiddenAction_tookDmg]&lt;br /&gt;
autoTriggerOnEvent: tookDamge(withTag=&amp;quot;APCR&amp;quot;)&lt;br /&gt;
showMessageToAllPlayers: 来自%{eventSource}的攻击！&lt;br /&gt;
&amp;lt;/pre&amp;gt;}}&lt;br /&gt;
&lt;br /&gt;
==全局==&lt;br /&gt;
铁锈战争提供了一些常见情况可能用到的单位选择器，且所以节都能使用，与&#039;&#039;&#039;局内&#039;&#039;&#039;相对。&lt;br /&gt;
&lt;br /&gt;
===选填参数部分===&lt;br /&gt;
&amp;lt;p&amp;gt;附属：&amp;lt;code&amp;gt;attachment([slot], [withTag])&amp;lt;/code&amp;gt;&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;运输：&amp;lt;code&amp;gt;transporting([slot])&amp;lt;/code&amp;gt;&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;最近单位：&amp;lt;code&amp;gt;nearestUnit([withinRange], [withTag], [relation])&amp;lt;/code&amp;gt;&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;搜索首个单位&amp;lt;code&amp;gt;globalSearchForFirstUnit([withTag], [relation])&amp;lt;/code&amp;gt;&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====参数都为选填，默认情况就很有趣了。====&lt;br /&gt;
*附属&lt;br /&gt;
不填参数则返回行数最高的单位。&lt;br /&gt;
*运输&lt;br /&gt;
不填参数则返回最近运输的单位。&lt;br /&gt;
*最近单位&lt;br /&gt;
不填参数则返回范围约为500内的单位。&lt;br /&gt;
*搜索首个单位&lt;br /&gt;
不填参数则返回该地图最小id的单位。&lt;br /&gt;
&lt;br /&gt;
===无参数部分===&lt;br /&gt;
这些单位引用的特点很明显，都是指向具体的某个单位。&lt;br /&gt;
&amp;lt;code&amp;gt;attacking&amp;lt;/code&amp;gt;为&amp;lt;code&amp;gt;activeWaypointTarget&amp;lt;/code&amp;gt;为攻击时套上单位的快捷引用方式。&amp;lt;code&amp;gt;lastDamagedBy&amp;lt;/code&amp;gt;在事件来源为tookDamage时的快捷引用方式。&amp;lt;code&amp;gt;parent&amp;lt;/code&amp;gt;在单位自身为他人附属时可使用。&lt;br /&gt;
&lt;br /&gt;
{{折叠|全局单位引用的例子|&amp;lt;pre&amp;gt;&lt;br /&gt;
isVisible: if parent.attachment(slot= 5) == self&lt;br /&gt;
&lt;br /&gt;
[hiddenAction_repair]&lt;br /&gt;
autoTriggerOnEvent: newWaypointGivenByPlayer&lt;br /&gt;
requireConditional: if self.hasActiveWaypoint(type= &amp;quot;repair&amp;quot;)&lt;br /&gt;
showMessageToPlayer: 你正在治疗%{activeWaypointTarget}。&lt;br /&gt;
&amp;lt;/pre&amp;gt;}}&lt;br /&gt;
&lt;br /&gt;
==存储==&lt;br /&gt;
==其他==&lt;/div&gt;</summary>
		<author><name>GMBOX</name></author>
	</entry>
	<entry>
		<id>https://rustedwarfare.org/index.php?title=%E5%8D%95%E4%BD%8D%E5%BC%95%E7%94%A8&amp;diff=4698</id>
		<title>单位引用</title>
		<link rel="alternate" type="text/html" href="https://rustedwarfare.org/index.php?title=%E5%8D%95%E4%BD%8D%E5%BC%95%E7%94%A8&amp;diff=4698"/>
		<updated>2025-06-29T04:55:55Z</updated>

		<summary type="html">&lt;p&gt;GMBOX：​/* 标记 */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{欢迎编辑}}&lt;br /&gt;
&#039;&#039;&#039;单位引用&#039;&#039;&#039;（Unit Reference）是铁锈战争[[1.15]]新加入的单位选择器，可引用符合条件的单位。&lt;br /&gt;
&lt;br /&gt;
==查询==&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+单位引用&lt;br /&gt;
|标记&lt;br /&gt;
|getAsMarker()&lt;br /&gt;
getOffsetRelative()&lt;br /&gt;
getOffsetAbsolute()&lt;br /&gt;
createMarker()&lt;br /&gt;
|-&lt;br /&gt;
|局内&lt;br /&gt;
|thisActionTarget&lt;br /&gt;
eventSource&lt;br /&gt;
|-&lt;br /&gt;
|全局&lt;br /&gt;
|attachment()&lt;br /&gt;
transporting()&lt;br /&gt;
attacking&lt;br /&gt;
lastDamagedBy&lt;br /&gt;
parent&lt;br /&gt;
activeWaypointTarget&lt;br /&gt;
nearestUnit()&lt;br /&gt;
globalSearchForFirstUnit()&lt;br /&gt;
|-&lt;br /&gt;
|存储&lt;br /&gt;
|customTarget1&lt;br /&gt;
customTarget2&lt;br /&gt;
|-&lt;br /&gt;
|其他&lt;br /&gt;
|nullUnit&lt;br /&gt;
|}&lt;br /&gt;
==标记==&lt;br /&gt;
临时、快速地创建一个标记，可用来反映位置、朝向、高度、队伍编号，且不需要用到时会自动移除，不隶属任何单位也不受单位后续行为的影响。&lt;br /&gt;
标记可分为两种，照铁锈战争的说法，一种是&#039;&#039;&#039;获取&#039;&#039;&#039;（get...），另一种是&#039;&#039;&#039;创建&#039;&#039;&#039;(create...)。获取会在以单位的基础创建标记，而&#039;&#039;&#039;创建&#039;&#039;&#039;完全与创建它的单位无关。&lt;br /&gt;
===标记的格式===&lt;br /&gt;
&amp;lt;p&amp;gt;获取：&amp;lt;code&amp;gt;getAsMarker()&amp;lt;/code&amp;gt;&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;相对：&amp;lt;code&amp;gt;getOffsetRelative([x], [y], [height], [offsetDir])&amp;lt;/code&amp;gt;&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;绝对：&amp;lt;code&amp;gt;getOffsetAbsolute([x], [y], [height])&amp;lt;/code&amp;gt;&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;创建：&amp;lt;code&amp;gt;createMarker(x, y, [height], [teamId], [dir])&amp;lt;/code&amp;gt;&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===标记的用法===&lt;br /&gt;
想直接获取当前位置等信息可以使用&amp;lt;code&amp;gt;getAsMarker&amp;lt;/code&amp;gt;。&lt;br /&gt;
铁锈战争为偏移提供了两种方案，一种是&#039;&#039;&#039;相对偏移&#039;&#039;&#039;，不止受单位位置、高度，还受朝向影响。通俗易懂就是你坐在一辆车上，你当然可以移动、旋转（&amp;lt;code&amp;gt;dirOffset&amp;lt;/code&amp;gt;），但车移动、旋转你也必须移动、旋转。&lt;br /&gt;
另一种是&#039;&#039;&#039;绝对偏移&#039;&#039;&#039;，只受单位位置、高度影响，比如单位坐标(1000, 1000)，向左偏移5个单位（995, 1000）。&lt;br /&gt;
&#039;&#039;&#039;创建标记&#039;&#039;&#039;是直接在地图上创建一个标记，队伍编号可由自己决定，可以注意的是创建标记的(x, y)必须要填，但铁锈战争允许省略&amp;lt;code&amp;gt;(x=, y=)&amp;lt;/code&amp;gt;。&lt;br /&gt;
&lt;br /&gt;
{{折叠|标记的例子|&amp;lt;pre&amp;gt;&lt;br /&gt;
teleportTo: getOffsetRelative(y= 10, dirOffset= self.customTimer)&lt;br /&gt;
&lt;br /&gt;
fireXTurretAtGround_withTarget: createMarker(activeWaypointTarget.x, activeWaypointTarget.y, teamId= self.teamId).nearestUnit(withinRange= 1500, withTag= &amp;quot;outpost&amp;quot;, relation= &amp;quot;own&amp;quot;)&lt;br /&gt;
&amp;lt;/pre&amp;gt;}}&lt;br /&gt;
&lt;br /&gt;
==局内==&lt;br /&gt;
局内只能在行动内使用，可用&amp;lt;code&amp;gt;alsoTriggerAction&amp;lt;/code&amp;gt;或&amp;lt;code&amp;gt;alsoQueueAction&amp;lt;/code&amp;gt;延长“寿命”，你也可以用内存将其存储。&amp;lt;code&amp;gt;thisActionTarget&amp;lt;/code&amp;gt;在不同情况下所指代的单位不同，与&amp;lt;code&amp;gt;eventSource&amp;lt;/code&amp;gt;不同，后者只与&amp;lt;code&amp;gt;autoTriggerOnEvent&amp;lt;/code&amp;gt;绑定，触发的事件不同所指代的单位也不同。&lt;br /&gt;
===thisActionIndex的用法===&lt;br /&gt;
&amp;lt;code&amp;gt;thisActionIndex&amp;lt;/code&amp;gt;，&amp;lt;code&amp;gt;index&amp;lt;/code&amp;gt;为其缩略形式。&lt;br /&gt;
...待补充&lt;br /&gt;
&lt;br /&gt;
===对应的情况===&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+thisActionTarget用处&lt;br /&gt;
|fireXTurretAtGround&lt;br /&gt;
|指向的位置&lt;br /&gt;
|-&lt;br /&gt;
|alsoTriggerAction&lt;br /&gt;
|与原行动的thisActionTarget相同&lt;br /&gt;
|-&lt;br /&gt;
|onShoot_triggerActions&lt;br /&gt;
|炮塔射击的单位&lt;br /&gt;
|-&lt;br /&gt;
|takeResources_triggerActionIfAnyCollected&lt;br /&gt;
|提取到的单位&lt;br /&gt;
|-&lt;br /&gt;
|takeResources_triggerActionForEach&lt;br /&gt;
|与上同理&lt;br /&gt;
|-&lt;br /&gt;
|addWaypoint_triggerActionIfMatched&lt;br /&gt;
|添加路径的位置（攻击则为被攻击的单位）&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+eventSource用处&lt;br /&gt;
|tookDamage&lt;br /&gt;
|攻击你的单位&lt;br /&gt;
|-&lt;br /&gt;
|killedAnyUnit&lt;br /&gt;
|杀死的单位&lt;br /&gt;
|-&lt;br /&gt;
|transportingNewUnit&lt;br /&gt;
|新装载的单位&lt;br /&gt;
|-&lt;br /&gt;
|transportUnloadedOrRemovedUnit&lt;br /&gt;
|刚卸载的单位&lt;br /&gt;
|-&lt;br /&gt;
|queuedUnitFinished&lt;br /&gt;
|刚生产的单位&lt;br /&gt;
|-&lt;br /&gt;
|touchTargetSuccess&lt;br /&gt;
|碰到的单位（需配合路径点）&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
{{折叠|thisActionTarget与eventSource的例子|&amp;lt;pre&amp;gt;&lt;br /&gt;
[turret_super]&lt;br /&gt;
onShoot_triggerActions: idol&lt;br /&gt;
[hiddenAction_idol]&lt;br /&gt;
showMessageToAllPlayers: %{thisActionTarget}的笑容。&lt;br /&gt;
&lt;br /&gt;
[hiddenAction_tookDmg]&lt;br /&gt;
autoTriggerOnEvent: tookDamge(withTag=&amp;quot;APCR&amp;quot;)&lt;br /&gt;
showMessageToAllPlayers: 来自%{eventSource}的攻击！&lt;br /&gt;
&amp;lt;/pre&amp;gt;}}&lt;br /&gt;
&lt;br /&gt;
==全局==&lt;br /&gt;
铁锈战争提供了一些常见情况可能用到的单位选择器，且所以节都能使用，与&#039;&#039;&#039;局内&#039;&#039;&#039;相对。&lt;br /&gt;
&lt;br /&gt;
===选填参数部分===&lt;br /&gt;
&amp;lt;p&amp;gt;附属：&amp;lt;code&amp;gt;attachment([slot], [withTag])&amp;lt;/code&amp;gt;&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;运输：&amp;lt;code&amp;gt;transporting([slot])&amp;lt;/code&amp;gt;&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;最近单位：&amp;lt;code&amp;gt;nearestUnit([withinRange], [withTag], [relation])&amp;lt;/code&amp;gt;&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;搜索首个单位&amp;lt;code&amp;gt;globalSearchForFirstUnit([withTag], [relation])&amp;lt;/code&amp;gt;&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====参数都为选填，默认情况就很有趣了。====&lt;br /&gt;
*附属&lt;br /&gt;
不填参数则返回行数最高的单位。&lt;br /&gt;
*运输&lt;br /&gt;
不填参数则返回最近运输的单位。&lt;br /&gt;
*最近单位&lt;br /&gt;
不填参数则返回范围约为500内的单位。&lt;br /&gt;
*搜索首个单位&lt;br /&gt;
不填参数则返回该地图最小id的单位。&lt;br /&gt;
&lt;br /&gt;
===无参数部分===&lt;br /&gt;
这些单位引用的特点很明显，都是指向具体的某个单位。&lt;br /&gt;
&amp;lt;code&amp;gt;attacking&amp;lt;/code&amp;gt;为&amp;lt;code&amp;gt;activeWaypointTarget&amp;lt;/code&amp;gt;为攻击时套上单位的快捷引用方式。&amp;lt;code&amp;gt;lastDamagedBy&amp;lt;/code&amp;gt;在事件来源为tookDamage时的快捷引用方式。&amp;lt;code&amp;gt;parent&amp;lt;/code&amp;gt;在单位自身为他人附属时可使用。&lt;br /&gt;
&lt;br /&gt;
==存储==&lt;br /&gt;
==其他==&lt;/div&gt;</summary>
		<author><name>GMBOX</name></author>
	</entry>
	<entry>
		<id>https://rustedwarfare.org/index.php?title=%E5%8D%95%E4%BD%8D%E5%BC%95%E7%94%A8&amp;diff=4696</id>
		<title>单位引用</title>
		<link rel="alternate" type="text/html" href="https://rustedwarfare.org/index.php?title=%E5%8D%95%E4%BD%8D%E5%BC%95%E7%94%A8&amp;diff=4696"/>
		<updated>2025-06-28T18:08:13Z</updated>

		<summary type="html">&lt;p&gt;GMBOX：​/* 全局 */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{欢迎编辑}}&lt;br /&gt;
&#039;&#039;&#039;单位引用&#039;&#039;&#039;（Unit Reference）是铁锈战争[[1.15]]新加入的单位选择器，可引用符合条件的单位。&lt;br /&gt;
&lt;br /&gt;
==查询==&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+单位引用&lt;br /&gt;
|标记&lt;br /&gt;
|getAsMarker()&lt;br /&gt;
getOffsetRelative()&lt;br /&gt;
getOffsetAbsolute()&lt;br /&gt;
createMarker()&lt;br /&gt;
|-&lt;br /&gt;
|局内&lt;br /&gt;
|thisActionTarget&lt;br /&gt;
eventSource&lt;br /&gt;
|-&lt;br /&gt;
|全局&lt;br /&gt;
|attachment()&lt;br /&gt;
transporting()&lt;br /&gt;
attacking&lt;br /&gt;
lastDamagedBy&lt;br /&gt;
parent&lt;br /&gt;
activeWaypointTarget&lt;br /&gt;
nearestUnit()&lt;br /&gt;
globalSearchForFirstUnit()&lt;br /&gt;
|-&lt;br /&gt;
|存储&lt;br /&gt;
|customTarget1&lt;br /&gt;
customTarget2&lt;br /&gt;
|-&lt;br /&gt;
|其他&lt;br /&gt;
|nullUnit&lt;br /&gt;
|}&lt;br /&gt;
==标记==&lt;br /&gt;
==局内==&lt;br /&gt;
局内只能在行动内使用，可用&amp;lt;code&amp;gt;alsoTriggerAction&amp;lt;/code&amp;gt;或&amp;lt;code&amp;gt;alsoQueueAction&amp;lt;/code&amp;gt;延长“寿命”，你也可以用内存将其存储。&amp;lt;code&amp;gt;thisActionTarget&amp;lt;/code&amp;gt;在不同情况下所指代的单位不同，与&amp;lt;code&amp;gt;eventSource&amp;lt;/code&amp;gt;不同，后者只与&amp;lt;code&amp;gt;autoTriggerOnEvent&amp;lt;/code&amp;gt;绑定，触发的事件不同所指代的单位也不同。&lt;br /&gt;
===thisActionIndex的用法===&lt;br /&gt;
&amp;lt;code&amp;gt;thisActionIndex&amp;lt;/code&amp;gt;，&amp;lt;code&amp;gt;index&amp;lt;/code&amp;gt;为其缩略形式。&lt;br /&gt;
...待补充&lt;br /&gt;
&lt;br /&gt;
===对应的情况===&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+thisActionTarget用处&lt;br /&gt;
|fireXTurretAtGround&lt;br /&gt;
|指向的位置&lt;br /&gt;
|-&lt;br /&gt;
|alsoTriggerAction&lt;br /&gt;
|与原行动的thisActionTarget相同&lt;br /&gt;
|-&lt;br /&gt;
|onShoot_triggerActions&lt;br /&gt;
|炮塔射击的单位&lt;br /&gt;
|-&lt;br /&gt;
|takeResources_triggerActionIfAnyCollected&lt;br /&gt;
|提取到的单位&lt;br /&gt;
|-&lt;br /&gt;
|takeResources_triggerActionForEach&lt;br /&gt;
|与上同理&lt;br /&gt;
|-&lt;br /&gt;
|addWaypoint_triggerActionIfMatched&lt;br /&gt;
|添加路径的位置（攻击则为被攻击的单位）&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+eventSource用处&lt;br /&gt;
|tookDamage&lt;br /&gt;
|攻击你的单位&lt;br /&gt;
|-&lt;br /&gt;
|killedAnyUnit&lt;br /&gt;
|杀死的单位&lt;br /&gt;
|-&lt;br /&gt;
|transportingNewUnit&lt;br /&gt;
|新装载的单位&lt;br /&gt;
|-&lt;br /&gt;
|transportUnloadedOrRemovedUnit&lt;br /&gt;
|刚卸载的单位&lt;br /&gt;
|-&lt;br /&gt;
|queuedUnitFinished&lt;br /&gt;
|刚生产的单位&lt;br /&gt;
|-&lt;br /&gt;
|touchTargetSuccess&lt;br /&gt;
|碰到的单位（需配合路径点）&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
{{折叠|thisActionTarget与eventSource的例子|&amp;lt;pre&amp;gt;&lt;br /&gt;
[turret_super]&lt;br /&gt;
onShoot_triggerActions: idol&lt;br /&gt;
[hiddenAction_idol]&lt;br /&gt;
showMessageToAllPlayers: %{thisActionTarget}的笑容。&lt;br /&gt;
&lt;br /&gt;
[hiddenAction_tookDmg]&lt;br /&gt;
autoTriggerOnEvent: tookDamge(withTag=&amp;quot;APCR&amp;quot;)&lt;br /&gt;
showMessageToAllPlayers: 来自%{eventSource}的攻击！&lt;br /&gt;
&amp;lt;/pre&amp;gt;}}&lt;br /&gt;
&lt;br /&gt;
==全局==&lt;br /&gt;
铁锈战争提供了一些常见情况可能用到的单位选择器，且所以节都能使用，与&#039;&#039;&#039;局内&#039;&#039;&#039;相对。&lt;br /&gt;
&lt;br /&gt;
===选填参数部分===&lt;br /&gt;
&amp;lt;p&amp;gt;附属：&amp;lt;code&amp;gt;attachment([slot], [withTag])&amp;lt;/code&amp;gt;&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;运输：&amp;lt;code&amp;gt;transporting([slot])&amp;lt;/code&amp;gt;&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;最近单位：&amp;lt;code&amp;gt;nearestUnit([withinRange], [withTag], [relation])&amp;lt;/code&amp;gt;&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;搜索首个单位&amp;lt;code&amp;gt;globalSearchForFirstUnit([withTag], [relation])&amp;lt;/code&amp;gt;&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====参数都为选填，默认情况就很有趣了。====&lt;br /&gt;
*附属&lt;br /&gt;
不填参数则返回行数最高的单位。&lt;br /&gt;
*运输&lt;br /&gt;
不填参数则返回最近运输的单位。&lt;br /&gt;
*最近单位&lt;br /&gt;
不填参数则返回范围约为500内的单位。&lt;br /&gt;
*搜索首个单位&lt;br /&gt;
不填参数则返回该地图最小id的单位。&lt;br /&gt;
&lt;br /&gt;
===无参数部分===&lt;br /&gt;
这些单位引用的特点很明显，都是指向具体的某个单位。&lt;br /&gt;
&amp;lt;code&amp;gt;attacking&amp;lt;/code&amp;gt;为&amp;lt;code&amp;gt;activeWaypointTarget&amp;lt;/code&amp;gt;为攻击时套上单位的快捷引用方式。&amp;lt;code&amp;gt;lastDamagedBy&amp;lt;/code&amp;gt;在事件来源为tookDamage时的快捷引用方式。&amp;lt;code&amp;gt;parent&amp;lt;/code&amp;gt;在单位自身为他人附属时可使用。&lt;br /&gt;
&lt;br /&gt;
==存储==&lt;br /&gt;
==其他==&lt;/div&gt;</summary>
		<author><name>GMBOX</name></author>
	</entry>
	<entry>
		<id>https://rustedwarfare.org/index.php?title=%E5%8D%95%E4%BD%8D%E5%BC%95%E7%94%A8&amp;diff=4695</id>
		<title>单位引用</title>
		<link rel="alternate" type="text/html" href="https://rustedwarfare.org/index.php?title=%E5%8D%95%E4%BD%8D%E5%BC%95%E7%94%A8&amp;diff=4695"/>
		<updated>2025-06-28T17:18:56Z</updated>

		<summary type="html">&lt;p&gt;GMBOX：​/* thisActionIndex的用法 */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{欢迎编辑}}&lt;br /&gt;
&#039;&#039;&#039;单位引用&#039;&#039;&#039;（Unit Reference）是铁锈战争[[1.15]]新加入的单位选择器，可引用符合条件的单位。&lt;br /&gt;
&lt;br /&gt;
==查询==&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+单位引用&lt;br /&gt;
|标记&lt;br /&gt;
|getAsMarker()&lt;br /&gt;
getOffsetRelative()&lt;br /&gt;
getOffsetAbsolute()&lt;br /&gt;
createMarker()&lt;br /&gt;
|-&lt;br /&gt;
|局内&lt;br /&gt;
|thisActionTarget&lt;br /&gt;
eventSource&lt;br /&gt;
|-&lt;br /&gt;
|全局&lt;br /&gt;
|attachment()&lt;br /&gt;
transporting()&lt;br /&gt;
attacking&lt;br /&gt;
lastDamagedBy&lt;br /&gt;
parent&lt;br /&gt;
activeWaypointTarget&lt;br /&gt;
nearestUnit()&lt;br /&gt;
globalSearchForFirstUnit()&lt;br /&gt;
|-&lt;br /&gt;
|存储&lt;br /&gt;
|customTarget1&lt;br /&gt;
customTarget2&lt;br /&gt;
|-&lt;br /&gt;
|其他&lt;br /&gt;
|nullUnit&lt;br /&gt;
|}&lt;br /&gt;
==标记==&lt;br /&gt;
==局内==&lt;br /&gt;
局内只能在行动内使用，可用&amp;lt;code&amp;gt;alsoTriggerAction&amp;lt;/code&amp;gt;或&amp;lt;code&amp;gt;alsoQueueAction&amp;lt;/code&amp;gt;延长“寿命”，你也可以用内存将其存储。&amp;lt;code&amp;gt;thisActionTarget&amp;lt;/code&amp;gt;在不同情况下所指代的单位不同，与&amp;lt;code&amp;gt;eventSource&amp;lt;/code&amp;gt;不同，后者只与&amp;lt;code&amp;gt;autoTriggerOnEvent&amp;lt;/code&amp;gt;绑定，触发的事件不同所指代的单位也不同。&lt;br /&gt;
===thisActionIndex的用法===&lt;br /&gt;
&amp;lt;code&amp;gt;thisActionIndex&amp;lt;/code&amp;gt;，&amp;lt;code&amp;gt;index&amp;lt;/code&amp;gt;为其缩略形式。&lt;br /&gt;
...待补充&lt;br /&gt;
&lt;br /&gt;
===对应的情况===&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+thisActionTarget用处&lt;br /&gt;
|fireXTurretAtGround&lt;br /&gt;
|指向的位置&lt;br /&gt;
|-&lt;br /&gt;
|alsoTriggerAction&lt;br /&gt;
|与原行动的thisActionTarget相同&lt;br /&gt;
|-&lt;br /&gt;
|onShoot_triggerActions&lt;br /&gt;
|炮塔射击的单位&lt;br /&gt;
|-&lt;br /&gt;
|takeResources_triggerActionIfAnyCollected&lt;br /&gt;
|提取到的单位&lt;br /&gt;
|-&lt;br /&gt;
|takeResources_triggerActionForEach&lt;br /&gt;
|与上同理&lt;br /&gt;
|-&lt;br /&gt;
|addWaypoint_triggerActionIfMatched&lt;br /&gt;
|添加路径的位置（攻击则为被攻击的单位）&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+eventSource用处&lt;br /&gt;
|tookDamage&lt;br /&gt;
|攻击你的单位&lt;br /&gt;
|-&lt;br /&gt;
|killedAnyUnit&lt;br /&gt;
|杀死的单位&lt;br /&gt;
|-&lt;br /&gt;
|transportingNewUnit&lt;br /&gt;
|新装载的单位&lt;br /&gt;
|-&lt;br /&gt;
|transportUnloadedOrRemovedUnit&lt;br /&gt;
|刚卸载的单位&lt;br /&gt;
|-&lt;br /&gt;
|queuedUnitFinished&lt;br /&gt;
|刚生产的单位&lt;br /&gt;
|-&lt;br /&gt;
|touchTargetSuccess&lt;br /&gt;
|碰到的单位（需配合路径点）&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
{{折叠|thisActionTarget与eventSource的例子|&amp;lt;pre&amp;gt;&lt;br /&gt;
[turret_super]&lt;br /&gt;
onShoot_triggerActions: idol&lt;br /&gt;
[hiddenAction_idol]&lt;br /&gt;
showMessageToAllPlayers: %{thisActionTarget}的笑容。&lt;br /&gt;
&lt;br /&gt;
[hiddenAction_tookDmg]&lt;br /&gt;
autoTriggerOnEvent: tookDamge(withTag=&amp;quot;APCR&amp;quot;)&lt;br /&gt;
showMessageToAllPlayers: 来自%{eventSource}的攻击！&lt;br /&gt;
&amp;lt;/pre&amp;gt;}}&lt;br /&gt;
&lt;br /&gt;
==全局==&lt;br /&gt;
铁锈战争提供了一些常见情况可能用到的单位选择器，且所以节都能使用，与[[局内]]相对。&lt;br /&gt;
==存储==&lt;br /&gt;
==其他==&lt;/div&gt;</summary>
		<author><name>GMBOX</name></author>
	</entry>
	<entry>
		<id>https://rustedwarfare.org/index.php?title=%E5%8D%95%E4%BD%8D%E5%BC%95%E7%94%A8&amp;diff=4694</id>
		<title>单位引用</title>
		<link rel="alternate" type="text/html" href="https://rustedwarfare.org/index.php?title=%E5%8D%95%E4%BD%8D%E5%BC%95%E7%94%A8&amp;diff=4694"/>
		<updated>2025-06-28T17:04:40Z</updated>

		<summary type="html">&lt;p&gt;GMBOX：​这个页面本来写好了结果忘保存没掉了，有时间补充。&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{欢迎编辑}}&lt;br /&gt;
&#039;&#039;&#039;单位引用&#039;&#039;&#039;（Unit Reference）是铁锈战争[[1.15]]新加入的单位选择器，可引用符合条件的单位。&lt;br /&gt;
&lt;br /&gt;
==查询==&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+单位引用&lt;br /&gt;
|标记&lt;br /&gt;
|getAsMarker()&lt;br /&gt;
getOffsetRelative()&lt;br /&gt;
getOffsetAbsolute()&lt;br /&gt;
createMarker()&lt;br /&gt;
|-&lt;br /&gt;
|局内&lt;br /&gt;
|thisActionTarget&lt;br /&gt;
eventSource&lt;br /&gt;
|-&lt;br /&gt;
|全局&lt;br /&gt;
|attachment()&lt;br /&gt;
transporting()&lt;br /&gt;
attacking&lt;br /&gt;
lastDamagedBy&lt;br /&gt;
parent&lt;br /&gt;
activeWaypointTarget&lt;br /&gt;
nearestUnit()&lt;br /&gt;
globalSearchForFirstUnit()&lt;br /&gt;
|-&lt;br /&gt;
|存储&lt;br /&gt;
|customTarget1&lt;br /&gt;
customTarget2&lt;br /&gt;
|-&lt;br /&gt;
|其他&lt;br /&gt;
|nullUnit&lt;br /&gt;
|}&lt;br /&gt;
==标记==&lt;br /&gt;
==局内==&lt;br /&gt;
局内只能在行动内使用，可用&amp;lt;code&amp;gt;alsoTriggerAction&amp;lt;/code&amp;gt;或&amp;lt;code&amp;gt;alsoQueueAction&amp;lt;/code&amp;gt;延长“寿命”，你也可以用内存将其存储。&amp;lt;code&amp;gt;thisActionTarget&amp;lt;/code&amp;gt;在不同情况下所指代的单位不同，与&amp;lt;code&amp;gt;eventSource&amp;lt;/code&amp;gt;不同，后者只与&amp;lt;code&amp;gt;autoTriggerOnEvent&amp;lt;/code&amp;gt;绑定，触发的事件不同所指代的单位也不同。&lt;br /&gt;
===thisActionIndex的用法===&lt;br /&gt;
&amp;lt;code&amp;gt;thisActionIndex&amp;lt;/code&amp;gt;，&amp;lt;code&amp;gt;index&amp;lt;/code&amp;gt;为其缩略形式。&lt;br /&gt;
...待补充&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+thisActionTarget用处&lt;br /&gt;
|fireXTurretAtGround&lt;br /&gt;
|指向的位置&lt;br /&gt;
|-&lt;br /&gt;
|alsoTriggerAction&lt;br /&gt;
|与原行动的thisActionTarget相同&lt;br /&gt;
|-&lt;br /&gt;
|onShoot_triggerActions&lt;br /&gt;
|炮塔射击的单位&lt;br /&gt;
|-&lt;br /&gt;
|takeResources_triggerActionIfAnyCollected&lt;br /&gt;
|提取到的单位&lt;br /&gt;
|-&lt;br /&gt;
|takeResources_triggerActionForEach&lt;br /&gt;
|与上同理&lt;br /&gt;
|-&lt;br /&gt;
|addWaypoint_triggerActionIfMatched&lt;br /&gt;
|添加路径的位置（攻击则为被攻击的单位）&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+eventSource用处&lt;br /&gt;
|tookDamage&lt;br /&gt;
|攻击你的单位&lt;br /&gt;
|-&lt;br /&gt;
|killedAnyUnit&lt;br /&gt;
|杀死的单位&lt;br /&gt;
|-&lt;br /&gt;
|transportingNewUnit&lt;br /&gt;
|新装载的单位&lt;br /&gt;
|-&lt;br /&gt;
|transportUnloadedOrRemovedUnit&lt;br /&gt;
|刚卸载的单位&lt;br /&gt;
|-&lt;br /&gt;
|queuedUnitFinished&lt;br /&gt;
|刚生产的单位&lt;br /&gt;
|-&lt;br /&gt;
|touchTargetSuccess&lt;br /&gt;
|碰到的单位（需配合路径点）&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
{{折叠|thisActionTarget与eventSource的例子|&amp;lt;pre&amp;gt;&lt;br /&gt;
[turret_super]&lt;br /&gt;
onShoot_triggerActions: idol&lt;br /&gt;
[hiddenAction_idol]&lt;br /&gt;
showMessageToAllPlayers: %{thisActionTarget}的笑容。&lt;br /&gt;
&lt;br /&gt;
[hiddenAction_tookDmg]&lt;br /&gt;
autoTriggerOnEvent: tookDamge(withTag=&amp;quot;APCR&amp;quot;)&lt;br /&gt;
setUnitMemory: 来自%{eventSource}的攻击！&lt;br /&gt;
&amp;lt;/pre&amp;gt;}}&lt;br /&gt;
&lt;br /&gt;
==全局==&lt;br /&gt;
铁锈战争提供了一些常见情况可能用到的单位选择器，且所以节都能使用，与[[局内]]相对。&lt;br /&gt;
==存储==&lt;br /&gt;
==其他==&lt;/div&gt;</summary>
		<author><name>GMBOX</name></author>
	</entry>
	<entry>
		<id>https://rustedwarfare.org/index.php?title=%E5%8D%95%E4%BD%8D%E5%BC%95%E7%94%A8&amp;diff=4693</id>
		<title>单位引用</title>
		<link rel="alternate" type="text/html" href="https://rustedwarfare.org/index.php?title=%E5%8D%95%E4%BD%8D%E5%BC%95%E7%94%A8&amp;diff=4693"/>
		<updated>2025-06-28T16:59:52Z</updated>

		<summary type="html">&lt;p&gt;GMBOX：​/* 局内 */补充局内&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&#039;&#039;&#039;单位引用&#039;&#039;&#039;（Unit Reference）是铁锈战争[[1.15]]新加入的单位选择器，可引用符合条件的单位。&lt;br /&gt;
&lt;br /&gt;
==查询==&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+单位引用&lt;br /&gt;
|标记&lt;br /&gt;
|getAsMarker()&lt;br /&gt;
getOffsetRelative()&lt;br /&gt;
getOffsetAbsolute()&lt;br /&gt;
createMarker()&lt;br /&gt;
|-&lt;br /&gt;
|局内&lt;br /&gt;
|thisActionTarget&lt;br /&gt;
eventSource&lt;br /&gt;
|-&lt;br /&gt;
|全局&lt;br /&gt;
|attachment()&lt;br /&gt;
transporting()&lt;br /&gt;
attacking&lt;br /&gt;
lastDamagedBy&lt;br /&gt;
parent&lt;br /&gt;
activeWaypointTarget&lt;br /&gt;
nearestUnit()&lt;br /&gt;
globalSearchForFirstUnit()&lt;br /&gt;
|-&lt;br /&gt;
|存储&lt;br /&gt;
|customTarget1&lt;br /&gt;
customTarget2&lt;br /&gt;
|-&lt;br /&gt;
|其他&lt;br /&gt;
|nullUnit&lt;br /&gt;
|}&lt;br /&gt;
==标记==&lt;br /&gt;
==局内==&lt;br /&gt;
局内只能在行动内使用，可用&amp;lt;code&amp;gt;alsoTriggerAction&amp;lt;/code&amp;gt;或&amp;lt;code&amp;gt;alsoQueueAction&amp;lt;/code&amp;gt;延长“寿命”，你也可以用内存将其存储。&amp;lt;code&amp;gt;thisActionTarget&amp;lt;/code&amp;gt;在不同情况下所指代的单位不同，与&amp;lt;code&amp;gt;eventSource&amp;lt;/code&amp;gt;不同，后者只与&amp;lt;code&amp;gt;autoTriggerOnEvent&amp;lt;/code&amp;gt;绑定，触发的事件不同所指代的单位也不同。&lt;br /&gt;
===thisActionIndex的用法===&lt;br /&gt;
&amp;lt;code&amp;gt;thisActionIndex&amp;lt;/code&amp;gt;，&amp;lt;code&amp;gt;index&amp;lt;/code&amp;gt;为其缩略形式。&lt;br /&gt;
...待补充&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+thisActionTarget用处&lt;br /&gt;
|fireXTurretAtGround&lt;br /&gt;
|指向的位置&lt;br /&gt;
|-&lt;br /&gt;
|alsoTriggerAction&lt;br /&gt;
|与原行动的thisActionTarget相同&lt;br /&gt;
|-&lt;br /&gt;
|onShoot_triggerActions&lt;br /&gt;
|炮塔射击的单位&lt;br /&gt;
|-&lt;br /&gt;
|takeResources_triggerActionIfAnyCollected&lt;br /&gt;
|提取到的单位&lt;br /&gt;
|-&lt;br /&gt;
|takeResources_triggerActionForEach&lt;br /&gt;
|与上同理&lt;br /&gt;
|-&lt;br /&gt;
|addWaypoint_triggerActionIfMatched&lt;br /&gt;
|添加路径的位置（攻击则为被攻击的单位）&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+eventSource用处&lt;br /&gt;
|tookDamage&lt;br /&gt;
|攻击你的单位&lt;br /&gt;
|-&lt;br /&gt;
|killedAnyUnit&lt;br /&gt;
|杀死的单位&lt;br /&gt;
|-&lt;br /&gt;
|transportingNewUnit&lt;br /&gt;
|新装载的单位&lt;br /&gt;
|-&lt;br /&gt;
|transportUnloadedOrRemovedUnit&lt;br /&gt;
|刚卸载的单位&lt;br /&gt;
|-&lt;br /&gt;
|queuedUnitFinished&lt;br /&gt;
|刚生产的单位&lt;br /&gt;
|-&lt;br /&gt;
|touchTargetSuccess&lt;br /&gt;
|碰到的单位（需配合路径点）&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
{{折叠|thisActionTarget与eventSource的例子|&amp;lt;pre&amp;gt;&lt;br /&gt;
[turret_super]&lt;br /&gt;
onShoot_triggerActions: idol&lt;br /&gt;
[hiddenAction_idol]&lt;br /&gt;
showMessageToAllPlayers: %{thisActionTarget}的笑容。&lt;br /&gt;
&lt;br /&gt;
[hiddenAction_tookDmg]&lt;br /&gt;
autoTriggerOnEvent: tookDamge(withTag=&amp;quot;APCR&amp;quot;)&lt;br /&gt;
setUnitMemory: 来自%{eventSource}的攻击！&lt;br /&gt;
&amp;lt;/pre&amp;gt;}}&lt;br /&gt;
&lt;br /&gt;
==全局==&lt;br /&gt;
铁锈战争提供了一些常见情况可能用到的单位选择器，且所以节都能使用，与[[局内]]相对。&lt;br /&gt;
==存储==&lt;br /&gt;
==其他==&lt;/div&gt;</summary>
		<author><name>GMBOX</name></author>
	</entry>
	<entry>
		<id>https://rustedwarfare.org/index.php?title=%E5%8D%95%E4%BD%8D%E5%BC%95%E7%94%A8&amp;diff=4692</id>
		<title>单位引用</title>
		<link rel="alternate" type="text/html" href="https://rustedwarfare.org/index.php?title=%E5%8D%95%E4%BD%8D%E5%BC%95%E7%94%A8&amp;diff=4692"/>
		<updated>2025-06-28T16:42:22Z</updated>

		<summary type="html">&lt;p&gt;GMBOX：​创建页面，内容为“&amp;#039;&amp;#039;&amp;#039;单位引用&amp;#039;&amp;#039;&amp;#039;（Unit Reference）是铁锈战争1.15新加入的单位选择器，可引用符合条件的单位。  ==查询== {| class=&amp;quot;wikitable&amp;quot; |+单位引用 |标记 |getAsMarker() getOffsetRelative() getOffsetAbsolute() createMarker() |- |局内 |thisActionTarget eventSource |- |全局 |attachment() transporting() attacking lastDamagedBy parent activeWaypointTarget nearestUnit() globalSearchForFirstUnit() |- |存储 |customTarget1 customTarget2…”&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&#039;&#039;&#039;单位引用&#039;&#039;&#039;（Unit Reference）是铁锈战争[[1.15]]新加入的单位选择器，可引用符合条件的单位。&lt;br /&gt;
&lt;br /&gt;
==查询==&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+单位引用&lt;br /&gt;
|标记&lt;br /&gt;
|getAsMarker()&lt;br /&gt;
getOffsetRelative()&lt;br /&gt;
getOffsetAbsolute()&lt;br /&gt;
createMarker()&lt;br /&gt;
|-&lt;br /&gt;
|局内&lt;br /&gt;
|thisActionTarget&lt;br /&gt;
eventSource&lt;br /&gt;
|-&lt;br /&gt;
|全局&lt;br /&gt;
|attachment()&lt;br /&gt;
transporting()&lt;br /&gt;
attacking&lt;br /&gt;
lastDamagedBy&lt;br /&gt;
parent&lt;br /&gt;
activeWaypointTarget&lt;br /&gt;
nearestUnit()&lt;br /&gt;
globalSearchForFirstUnit()&lt;br /&gt;
|-&lt;br /&gt;
|存储&lt;br /&gt;
|customTarget1&lt;br /&gt;
customTarget2&lt;br /&gt;
|-&lt;br /&gt;
|其他&lt;br /&gt;
|nullUnit&lt;br /&gt;
|}&lt;br /&gt;
==标记==&lt;br /&gt;
==局内==&lt;br /&gt;
局内只能在行动内使用，可用&amp;lt;code&amp;gt;alsoTriggerAction&amp;lt;/code&amp;gt;或&amp;lt;code&amp;gt;alsoQueueAction&amp;lt;/code&amp;gt;延长“寿命”，你也可以用内存将其存储。&amp;lt;code&amp;gt;thisActionTarget&amp;lt;/code&amp;gt;在不同情况下所指代的单位不同，与&amp;lt;code&amp;gt;eventSource&amp;lt;/code&amp;gt;不同，只与&amp;lt;code&amp;gt;autoTriggerOnEvent&amp;lt;/code&amp;gt;绑定，触发的事件不同所指代的单位也不同。&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+thisActionTarget用处&lt;br /&gt;
|fireXTurretAtGround&lt;br /&gt;
|指向的位置&lt;br /&gt;
|-&lt;br /&gt;
|alsoTriggerAction&lt;br /&gt;
|与原行动的thisActionTarget相同&lt;br /&gt;
|-&lt;br /&gt;
|onShoot_triggerActions&lt;br /&gt;
|炮塔射击的单位&lt;br /&gt;
|-&lt;br /&gt;
|takeResources_triggerActionIfAnyCollected&lt;br /&gt;
|提取到的单位&lt;br /&gt;
|-&lt;br /&gt;
|takeResources_triggerActionForEach&lt;br /&gt;
|与上同理&lt;br /&gt;
|-&lt;br /&gt;
|addWaypoint_triggerActionIfMatched&lt;br /&gt;
|添加路径的位置（攻击则为被攻击的单位）&lt;br /&gt;
|}&lt;br /&gt;
==全局==&lt;br /&gt;
铁锈战争提供了一些常见情况可能用到的单位选择器，且所以节都能使用，与[[局内]]相对。&lt;br /&gt;
==存储==&lt;br /&gt;
==其他==&lt;/div&gt;</summary>
		<author><name>GMBOX</name></author>
	</entry>
	<entry>
		<id>https://rustedwarfare.org/index.php?title=%E7%94%A8%E6%88%B7:GMBOX&amp;diff=4691</id>
		<title>用户:GMBOX</title>
		<link rel="alternate" type="text/html" href="https://rustedwarfare.org/index.php?title=%E7%94%A8%E6%88%B7:GMBOX&amp;diff=4691"/>
		<updated>2025-06-28T16:14:30Z</updated>

		<summary type="html">&lt;p&gt;GMBOX：​创建页面，内容为“无名小卒，为社区添砖加瓦的一员。 QQ&amp;lt;code&amp;gt;1154534825&amp;lt;/code&amp;gt;”&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;无名小卒，为社区添砖加瓦的一员。&lt;br /&gt;
QQ&amp;lt;code&amp;gt;1154534825&amp;lt;/code&amp;gt;&lt;/div&gt;</summary>
		<author><name>GMBOX</name></author>
	</entry>
	<entry>
		<id>https://rustedwarfare.org/index.php?title=mod%E7%9A%84%E5%9D%91&amp;diff=4690</id>
		<title>mod的坑</title>
		<link rel="alternate" type="text/html" href="https://rustedwarfare.org/index.php?title=mod%E7%9A%84%E5%9D%91&amp;diff=4690"/>
		<updated>2025-06-28T14:00:23Z</updated>

		<summary type="html">&lt;p&gt;GMBOX：​/* 相关链接 */添加内容。&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== 相关链接 ==&lt;br /&gt;
*基础&lt;br /&gt;
# [[变量|宏]]&lt;br /&gt;
# [[自定义内存]]&lt;br /&gt;
# [[数组]]&lt;br /&gt;
# [[注解|注释]]&lt;br /&gt;
# [[复制]]&lt;br /&gt;
# [[特殊值]]&lt;br /&gt;
# [[单位引用]]&lt;br /&gt;
...待补充&lt;br /&gt;
*特殊&lt;br /&gt;
# [[随机数]]&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;
*[https://cra.lanzouj.com/b0agtlmih 四向扩张] 密码：00&lt;br /&gt;
拼装插件&lt;br /&gt;
&lt;br /&gt;
...待补充&lt;br /&gt;
&lt;br /&gt;
==依赖==&lt;br /&gt;
# [https://cra.lanzouj.com/b0agtlmih 网盘] 密码：00&lt;br /&gt;
##rnd&amp;lt;br&amp;gt;随机数生成，用于修正rnd生成相同的问题。&lt;br /&gt;
##clipboard&amp;lt;br&amp;gt;多队伍剪贴板，便捷输入float/unit。&lt;br /&gt;
#学画画的十山月 bilibili&lt;br /&gt;
##RW-Engine&amp;lt;br&amp;gt;rw引擎，文本图像化，碰撞箱等。&lt;br /&gt;
#Muella bilibili&lt;br /&gt;
##PCMOD&amp;lt;br&amp;gt;便捷输入字符串，游戏内聊天等。&lt;br /&gt;
...更多待补充&lt;/div&gt;</summary>
		<author><name>GMBOX</name></author>
	</entry>
	<entry>
		<id>https://rustedwarfare.org/index.php?title=%E5%8F%98%E9%87%8F&amp;diff=3455</id>
		<title>变量</title>
		<link rel="alternate" type="text/html" href="https://rustedwarfare.org/index.php?title=%E5%8F%98%E9%87%8F&amp;diff=3455"/>
		<updated>2024-04-28T12:00:34Z</updated>

		<summary type="html">&lt;p&gt;GMBOX：​/* 数学运算 */错别字&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{InfoBox&lt;br /&gt;
|image=builder.png&lt;br /&gt;
|border= rgb(250,10,10)&lt;br /&gt;
|type=&lt;br /&gt;
|info=&#039;&#039;&#039;该模板需要改进，请勿模仿此页面创立新页面&#039;&#039;&#039;}}&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;变量&#039;&#039;&#039;是铁锈中一种数据存储方式，于[[1.14]]被加入。&lt;br /&gt;
&lt;br /&gt;
不同于[[自定义内存|内存]]，变量的值是固定的，在ini中定义后无法修改。&lt;br /&gt;
&lt;br /&gt;
== 定义 ==&lt;br /&gt;
在非注释节，使用&amp;lt;code&amp;gt;@global 名称:值&amp;lt;/code&amp;gt;可以定义&#039;&#039;&#039;全局变量&#039;&#039;&#039;，不过请注意它在复制时会出现bug，除一些特定节，因此请按照规范将它放在core节上。&amp;lt;br&amp;gt;&amp;lt;code&amp;gt;@define 名称:值&amp;lt;/code&amp;gt;定义&#039;&#039;&#039;局部变量&#039;&#039;&#039;。&lt;br /&gt;
{{折叠|变量定义例子|&amp;lt;pre&amp;gt;&lt;br /&gt;
[core]&lt;br /&gt;
@global a:100&lt;br /&gt;
@global b:qwerty&lt;br /&gt;
[action_x]&lt;br /&gt;
@global c:10.0&lt;br /&gt;
&amp;lt;/pre&amp;gt;}}&lt;br /&gt;
&lt;br /&gt;
== 类型 ==&lt;br /&gt;
铁锈中，变量包含&#039;&#039;&#039;全局变量&#039;&#039;&#039;和&#039;&#039;&#039;局部变量&#039;&#039;&#039;两种，其作用域不同。全局变量在整个ini中都能进行引用，而局部变量只能在定义该变量的节引用。同一个单位中不同的节可以定义名称相同的局部变量，而互不影响。当全局变量和局部变量重名时，局部变量优先级更高，能够在该局部变量所处的节覆盖全局变量。&#039;&#039;&#039;变量本身并不存在“数据结构类型”，本质上变量只是一个替换工具，在加载时引用的变量被替换为定义的值。&#039;&#039;&#039;&lt;br /&gt;
{{折叠|局部变量和全局变量例子|&amp;lt;pre&amp;gt;&lt;br /&gt;
[core]&lt;br /&gt;
@global a:10&lt;br /&gt;
@global b:20&lt;br /&gt;
[action_a]&lt;br /&gt;
@define a:15&lt;br /&gt;
#此时 ${a} 为 15&lt;br /&gt;
[action_b]&lt;br /&gt;
#此时 ${a} 为 10&lt;br /&gt;
#此时 ${b} 为20&lt;br /&gt;
&amp;lt;/pre&amp;gt;}}&lt;br /&gt;
&lt;br /&gt;
== 引用 ==&lt;br /&gt;
通过&amp;lt;code&amp;gt;${变量名}&amp;lt;/code&amp;gt;可以引用变量。任何代码的值中都可以进行变量引用，但是必须保证该代码值的类型在引用后不会错误。&amp;lt;code&amp;gt;%{}&amp;lt;/code&amp;gt;中也可以嵌套变量引用。&lt;br /&gt;
&lt;br /&gt;
通过${core.price}，可以引用core节的price键，若节为section则只向自己，并不是所有的键都可以引用，如：@开头的无法引用。&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;引用支持多个值进行替换，不过值必须满足匹配式[aA-zZ_][aA0-zZ9_.]*，且不能为运算函数。&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;请注意${\s*(.*)\s*}是它的有效范围，不要在外圈填充空格。{{折叠|变量引用例子|&amp;lt;pre&amp;gt;&lt;br /&gt;
[core]&lt;br /&gt;
price:6&lt;br /&gt;
[action_a]&lt;br /&gt;
pos:1&lt;br /&gt;
@define str1:测&lt;br /&gt;
@define str2:试&lt;br /&gt;
#${core.price}==6&lt;br /&gt;
#${section.pos}==1&lt;br /&gt;
text:${str1}${str2}&lt;br /&gt;
#此时text的值为“测试”&lt;br /&gt;
#${str1 str2}==“测 试”&lt;br /&gt;
&amp;lt;/pre&amp;gt;}}&lt;br /&gt;
&lt;br /&gt;
==数学运算==&lt;br /&gt;
${}支持使用double进行以下数学运算，不过它存在运算优先级问题，建议运算式加上()。&lt;br /&gt;
#+-*/^&lt;br /&gt;
#sqrt()&lt;br /&gt;
#int()&lt;br /&gt;
*rad/弧度&lt;br /&gt;
#sin()&lt;br /&gt;
#cos()&lt;br /&gt;
*例子&lt;br /&gt;
#${1+(2*2)}==5&lt;br /&gt;
#${sqrt(4)}==2&lt;br /&gt;
#a=1,b=2 ${a+b}==3&lt;br /&gt;
请注意如果你不想进行数学运算，那么替换式不要包含“+-*/^()”其中的任何一个。&lt;br /&gt;
[[分类:模组制作]]&lt;br /&gt;
[[分类:急需改进的页面]]&lt;/div&gt;</summary>
		<author><name>GMBOX</name></author>
	</entry>
	<entry>
		<id>https://rustedwarfare.org/index.php?title=%E5%8F%98%E9%87%8F&amp;diff=3454</id>
		<title>变量</title>
		<link rel="alternate" type="text/html" href="https://rustedwarfare.org/index.php?title=%E5%8F%98%E9%87%8F&amp;diff=3454"/>
		<updated>2024-04-28T11:59:59Z</updated>

		<summary type="html">&lt;p&gt;GMBOX：​/* 数学运算 */错别字&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{InfoBox&lt;br /&gt;
|image=builder.png&lt;br /&gt;
|border= rgb(250,10,10)&lt;br /&gt;
|type=&lt;br /&gt;
|info=&#039;&#039;&#039;该模板需要改进，请勿模仿此页面创立新页面&#039;&#039;&#039;}}&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;变量&#039;&#039;&#039;是铁锈中一种数据存储方式，于[[1.14]]被加入。&lt;br /&gt;
&lt;br /&gt;
不同于[[自定义内存|内存]]，变量的值是固定的，在ini中定义后无法修改。&lt;br /&gt;
&lt;br /&gt;
== 定义 ==&lt;br /&gt;
在非注释节，使用&amp;lt;code&amp;gt;@global 名称:值&amp;lt;/code&amp;gt;可以定义&#039;&#039;&#039;全局变量&#039;&#039;&#039;，不过请注意它在复制时会出现bug，除一些特定节，因此请按照规范将它放在core节上。&amp;lt;br&amp;gt;&amp;lt;code&amp;gt;@define 名称:值&amp;lt;/code&amp;gt;定义&#039;&#039;&#039;局部变量&#039;&#039;&#039;。&lt;br /&gt;
{{折叠|变量定义例子|&amp;lt;pre&amp;gt;&lt;br /&gt;
[core]&lt;br /&gt;
@global a:100&lt;br /&gt;
@global b:qwerty&lt;br /&gt;
[action_x]&lt;br /&gt;
@global c:10.0&lt;br /&gt;
&amp;lt;/pre&amp;gt;}}&lt;br /&gt;
&lt;br /&gt;
== 类型 ==&lt;br /&gt;
铁锈中，变量包含&#039;&#039;&#039;全局变量&#039;&#039;&#039;和&#039;&#039;&#039;局部变量&#039;&#039;&#039;两种，其作用域不同。全局变量在整个ini中都能进行引用，而局部变量只能在定义该变量的节引用。同一个单位中不同的节可以定义名称相同的局部变量，而互不影响。当全局变量和局部变量重名时，局部变量优先级更高，能够在该局部变量所处的节覆盖全局变量。&#039;&#039;&#039;变量本身并不存在“数据结构类型”，本质上变量只是一个替换工具，在加载时引用的变量被替换为定义的值。&#039;&#039;&#039;&lt;br /&gt;
{{折叠|局部变量和全局变量例子|&amp;lt;pre&amp;gt;&lt;br /&gt;
[core]&lt;br /&gt;
@global a:10&lt;br /&gt;
@global b:20&lt;br /&gt;
[action_a]&lt;br /&gt;
@define a:15&lt;br /&gt;
#此时 ${a} 为 15&lt;br /&gt;
[action_b]&lt;br /&gt;
#此时 ${a} 为 10&lt;br /&gt;
#此时 ${b} 为20&lt;br /&gt;
&amp;lt;/pre&amp;gt;}}&lt;br /&gt;
&lt;br /&gt;
== 引用 ==&lt;br /&gt;
通过&amp;lt;code&amp;gt;${变量名}&amp;lt;/code&amp;gt;可以引用变量。任何代码的值中都可以进行变量引用，但是必须保证该代码值的类型在引用后不会错误。&amp;lt;code&amp;gt;%{}&amp;lt;/code&amp;gt;中也可以嵌套变量引用。&lt;br /&gt;
&lt;br /&gt;
通过${core.price}，可以引用core节的price键，若节为section则只向自己，并不是所有的键都可以引用，如：@开头的无法引用。&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;引用支持多个值进行替换，不过值必须满足匹配式[aA-zZ_][aA0-zZ9_.]*，且不能为运算函数。&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;请注意${\s*(.*)\s*}是它的有效范围，不要在外圈填充空格。{{折叠|变量引用例子|&amp;lt;pre&amp;gt;&lt;br /&gt;
[core]&lt;br /&gt;
price:6&lt;br /&gt;
[action_a]&lt;br /&gt;
pos:1&lt;br /&gt;
@define str1:测&lt;br /&gt;
@define str2:试&lt;br /&gt;
#${core.price}==6&lt;br /&gt;
#${section.pos}==1&lt;br /&gt;
text:${str1}${str2}&lt;br /&gt;
#此时text的值为“测试”&lt;br /&gt;
#${str1 str2}==“测 试”&lt;br /&gt;
&amp;lt;/pre&amp;gt;}}&lt;br /&gt;
&lt;br /&gt;
==数学运算==&lt;br /&gt;
${}支持使用double进行以下数学运算，不过它存在运算优先级问题，建议运算式加上()。&lt;br /&gt;
#+-*/^&lt;br /&gt;
#sqrt()&lt;br /&gt;
#int()&lt;br /&gt;
*rad/弧度&lt;br /&gt;
#sin()&lt;br /&gt;
#cos()&lt;br /&gt;
*例子&lt;br /&gt;
#${1+(2*2)}==5&lt;br /&gt;
#${sprt(4)}==2&lt;br /&gt;
#a=1,b=2 ${a+b}==3&lt;br /&gt;
请注意如果你不想进行数学运算，那么替换式不要包含“+-*/^()”其中的任何一个。&lt;br /&gt;
[[分类:模组制作]]&lt;br /&gt;
[[分类:急需改进的页面]]&lt;/div&gt;</summary>
		<author><name>GMBOX</name></author>
	</entry>
	<entry>
		<id>https://rustedwarfare.org/index.php?title=%E5%8F%98%E9%87%8F&amp;diff=3453</id>
		<title>变量</title>
		<link rel="alternate" type="text/html" href="https://rustedwarfare.org/index.php?title=%E5%8F%98%E9%87%8F&amp;diff=3453"/>
		<updated>2024-04-28T11:28:06Z</updated>

		<summary type="html">&lt;p&gt;GMBOX：​/* 引用 */错别字&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{InfoBox&lt;br /&gt;
|image=builder.png&lt;br /&gt;
|border= rgb(250,10,10)&lt;br /&gt;
|type=&lt;br /&gt;
|info=&#039;&#039;&#039;该模板需要改进，请勿模仿此页面创立新页面&#039;&#039;&#039;}}&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;变量&#039;&#039;&#039;是铁锈中一种数据存储方式，于[[1.14]]被加入。&lt;br /&gt;
&lt;br /&gt;
不同于[[自定义内存|内存]]，变量的值是固定的，在ini中定义后无法修改。&lt;br /&gt;
&lt;br /&gt;
== 定义 ==&lt;br /&gt;
在非注释节，使用&amp;lt;code&amp;gt;@global 名称:值&amp;lt;/code&amp;gt;可以定义&#039;&#039;&#039;全局变量&#039;&#039;&#039;，不过请注意它在复制时会出现bug，除一些特定节，因此请按照规范将它放在core节上。&amp;lt;br&amp;gt;&amp;lt;code&amp;gt;@define 名称:值&amp;lt;/code&amp;gt;定义&#039;&#039;&#039;局部变量&#039;&#039;&#039;。&lt;br /&gt;
{{折叠|变量定义例子|&amp;lt;pre&amp;gt;&lt;br /&gt;
[core]&lt;br /&gt;
@global a:100&lt;br /&gt;
@global b:qwerty&lt;br /&gt;
[action_x]&lt;br /&gt;
@global c:10.0&lt;br /&gt;
&amp;lt;/pre&amp;gt;}}&lt;br /&gt;
&lt;br /&gt;
== 类型 ==&lt;br /&gt;
铁锈中，变量包含&#039;&#039;&#039;全局变量&#039;&#039;&#039;和&#039;&#039;&#039;局部变量&#039;&#039;&#039;两种，其作用域不同。全局变量在整个ini中都能进行引用，而局部变量只能在定义该变量的节引用。同一个单位中不同的节可以定义名称相同的局部变量，而互不影响。当全局变量和局部变量重名时，局部变量优先级更高，能够在该局部变量所处的节覆盖全局变量。&#039;&#039;&#039;变量本身并不存在“数据结构类型”，本质上变量只是一个替换工具，在加载时引用的变量被替换为定义的值。&#039;&#039;&#039;&lt;br /&gt;
{{折叠|局部变量和全局变量例子|&amp;lt;pre&amp;gt;&lt;br /&gt;
[core]&lt;br /&gt;
@global a:10&lt;br /&gt;
@global b:20&lt;br /&gt;
[action_a]&lt;br /&gt;
@define a:15&lt;br /&gt;
#此时 ${a} 为 15&lt;br /&gt;
[action_b]&lt;br /&gt;
#此时 ${a} 为 10&lt;br /&gt;
#此时 ${b} 为20&lt;br /&gt;
&amp;lt;/pre&amp;gt;}}&lt;br /&gt;
&lt;br /&gt;
== 引用 ==&lt;br /&gt;
通过&amp;lt;code&amp;gt;${变量名}&amp;lt;/code&amp;gt;可以引用变量。任何代码的值中都可以进行变量引用，但是必须保证该代码值的类型在引用后不会错误。&amp;lt;code&amp;gt;%{}&amp;lt;/code&amp;gt;中也可以嵌套变量引用。&lt;br /&gt;
&lt;br /&gt;
通过${core.price}，可以引用core节的price键，若节为section则只向自己，并不是所有的键都可以引用，如：@开头的无法引用。&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;引用支持多个值进行替换，不过值必须满足匹配式[aA-zZ_][aA0-zZ9_.]*，且不能为运算函数。&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;请注意${\s*(.*)\s*}是它的有效范围，不要在外圈填充空格。{{折叠|变量引用例子|&amp;lt;pre&amp;gt;&lt;br /&gt;
[core]&lt;br /&gt;
price:6&lt;br /&gt;
[action_a]&lt;br /&gt;
pos:1&lt;br /&gt;
@define str1:测&lt;br /&gt;
@define str2:试&lt;br /&gt;
#${core.price}==6&lt;br /&gt;
#${section.pos}==1&lt;br /&gt;
text:${str1}${str2}&lt;br /&gt;
#此时text的值为“测试”&lt;br /&gt;
#${str1 str2}==“测 试”&lt;br /&gt;
&amp;lt;/pre&amp;gt;}}&lt;br /&gt;
&lt;br /&gt;
==数学运算==&lt;br /&gt;
${}支持使用double进行以下数学运算，不过它存在运算优先级问题，建议运算式加上()。&lt;br /&gt;
#+-*/^&lt;br /&gt;
#sprt()&lt;br /&gt;
#int()&lt;br /&gt;
*rad/弧度&lt;br /&gt;
#sin()&lt;br /&gt;
#cos()&lt;br /&gt;
*例子&lt;br /&gt;
#${1+(2*2)}==5&lt;br /&gt;
#${sprt(4)}==2&lt;br /&gt;
#a=1,b=2 ${a+b}==3&lt;br /&gt;
请注意如果你不想进行数学运算，那么替换式不要包含“+-*/^()”其中的任何一个。&lt;br /&gt;
[[分类:模组制作]]&lt;br /&gt;
[[分类:急需改进的页面]]&lt;/div&gt;</summary>
		<author><name>GMBOX</name></author>
	</entry>
	<entry>
		<id>https://rustedwarfare.org/index.php?title=%E5%8F%98%E9%87%8F&amp;diff=3452</id>
		<title>变量</title>
		<link rel="alternate" type="text/html" href="https://rustedwarfare.org/index.php?title=%E5%8F%98%E9%87%8F&amp;diff=3452"/>
		<updated>2024-04-28T11:26:35Z</updated>

		<summary type="html">&lt;p&gt;GMBOX：​/* 引用 */错别字&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{InfoBox&lt;br /&gt;
|image=builder.png&lt;br /&gt;
|border= rgb(250,10,10)&lt;br /&gt;
|type=&lt;br /&gt;
|info=&#039;&#039;&#039;该模板需要改进，请勿模仿此页面创立新页面&#039;&#039;&#039;}}&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;变量&#039;&#039;&#039;是铁锈中一种数据存储方式，于[[1.14]]被加入。&lt;br /&gt;
&lt;br /&gt;
不同于[[自定义内存|内存]]，变量的值是固定的，在ini中定义后无法修改。&lt;br /&gt;
&lt;br /&gt;
== 定义 ==&lt;br /&gt;
在非注释节，使用&amp;lt;code&amp;gt;@global 名称:值&amp;lt;/code&amp;gt;可以定义&#039;&#039;&#039;全局变量&#039;&#039;&#039;，不过请注意它在复制时会出现bug，除一些特定节，因此请按照规范将它放在core节上。&amp;lt;br&amp;gt;&amp;lt;code&amp;gt;@define 名称:值&amp;lt;/code&amp;gt;定义&#039;&#039;&#039;局部变量&#039;&#039;&#039;。&lt;br /&gt;
{{折叠|变量定义例子|&amp;lt;pre&amp;gt;&lt;br /&gt;
[core]&lt;br /&gt;
@global a:100&lt;br /&gt;
@global b:qwerty&lt;br /&gt;
[action_x]&lt;br /&gt;
@global c:10.0&lt;br /&gt;
&amp;lt;/pre&amp;gt;}}&lt;br /&gt;
&lt;br /&gt;
== 类型 ==&lt;br /&gt;
铁锈中，变量包含&#039;&#039;&#039;全局变量&#039;&#039;&#039;和&#039;&#039;&#039;局部变量&#039;&#039;&#039;两种，其作用域不同。全局变量在整个ini中都能进行引用，而局部变量只能在定义该变量的节引用。同一个单位中不同的节可以定义名称相同的局部变量，而互不影响。当全局变量和局部变量重名时，局部变量优先级更高，能够在该局部变量所处的节覆盖全局变量。&#039;&#039;&#039;变量本身并不存在“数据结构类型”，本质上变量只是一个替换工具，在加载时引用的变量被替换为定义的值。&#039;&#039;&#039;&lt;br /&gt;
{{折叠|局部变量和全局变量例子|&amp;lt;pre&amp;gt;&lt;br /&gt;
[core]&lt;br /&gt;
@global a:10&lt;br /&gt;
@global b:20&lt;br /&gt;
[action_a]&lt;br /&gt;
@define a:15&lt;br /&gt;
#此时 ${a} 为 15&lt;br /&gt;
[action_b]&lt;br /&gt;
#此时 ${a} 为 10&lt;br /&gt;
#此时 ${b} 为20&lt;br /&gt;
&amp;lt;/pre&amp;gt;}}&lt;br /&gt;
&lt;br /&gt;
== 引用 ==&lt;br /&gt;
通过&amp;lt;code&amp;gt;${变量名}&amp;lt;/code&amp;gt;可以引用变量。任何代码的值中都可以进行变量引用，但是必须保证该代码值的类型在引用后不会错误。&amp;lt;code&amp;gt;%{}&amp;lt;/code&amp;gt;中也可以嵌套变量引用。&lt;br /&gt;
&lt;br /&gt;
通过${core.price}，可以引用core节的price键，诺节为section则只向自己，并不是所有的键都可以引用，如：@开头的无法引用。&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;引用支持多个值进行替换，不过值必须满足匹配式[aA-zZ_][aA0-zZ9_.]*，且不能为运算函数。&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;请注意${\s*(.*)\s*}是它的有效范围，不要在外圈填充空格。{{折叠|变量引用例子|&amp;lt;pre&amp;gt;&lt;br /&gt;
[core]&lt;br /&gt;
price:6&lt;br /&gt;
[action_a]&lt;br /&gt;
pos:1&lt;br /&gt;
@define str1:测&lt;br /&gt;
@define str2:试&lt;br /&gt;
#${core.price}==6&lt;br /&gt;
#${section.pos}==1&lt;br /&gt;
text:${str1}${str2}&lt;br /&gt;
#此时text的值为“测试”&lt;br /&gt;
#${str1 str2}==“测 试”&lt;br /&gt;
&amp;lt;/pre&amp;gt;}}&lt;br /&gt;
&lt;br /&gt;
==数学运算==&lt;br /&gt;
${}支持使用double进行以下数学运算，不过它存在运算优先级问题，建议运算式加上()。&lt;br /&gt;
#+-*/^&lt;br /&gt;
#sprt()&lt;br /&gt;
#int()&lt;br /&gt;
*rad/弧度&lt;br /&gt;
#sin()&lt;br /&gt;
#cos()&lt;br /&gt;
*例子&lt;br /&gt;
#${1+(2*2)}==5&lt;br /&gt;
#${sprt(4)}==2&lt;br /&gt;
#a=1,b=2 ${a+b}==3&lt;br /&gt;
请注意如果你不想进行数学运算，那么替换式不要包含“+-*/^()”其中的任何一个。&lt;br /&gt;
[[分类:模组制作]]&lt;br /&gt;
[[分类:急需改进的页面]]&lt;/div&gt;</summary>
		<author><name>GMBOX</name></author>
	</entry>
	<entry>
		<id>https://rustedwarfare.org/index.php?title=%E8%AF%9D%E9%A2%98:Y1ihuysw4hixakjl&amp;topic_postId=y1iigtibbouxaqv5&amp;topic_revId=y1iigtibbouxaqv5&amp;action=single-view</id>
		<title>话题:Y1ihuysw4hixakjl</title>
		<link rel="alternate" type="text/html" href="https://rustedwarfare.org/index.php?title=%E8%AF%9D%E9%A2%98:Y1ihuysw4hixakjl&amp;topic_postId=y1iigtibbouxaqv5&amp;topic_revId=y1iigtibbouxaqv5&amp;action=single-view"/>
		<updated>2024-03-23T05:26:18Z</updated>

		<summary type="html">&lt;span class=&quot;plainlinks&quot;&gt;&lt;a href=&quot;/wiki/%E7%94%A8%E6%88%B7:GMBOX&quot; class=&quot;mw-userlink&quot; title=&quot;用户:GMBOX&quot;&gt;&lt;bdi&gt;GMBOX&lt;/bdi&gt;&lt;/a&gt;&lt;span class=&quot;mw-usertoollinks&quot;&gt;（&lt;a href=&quot;/index.php?title=%E7%94%A8%E6%88%B7%E8%AE%A8%E8%AE%BA:GMBOX&amp;amp;action=edit&amp;amp;redlink=1&quot; class=&quot;new mw-usertoollinks-talk&quot; title=&quot;用户讨论:GMBOX（页面不存在）&quot;&gt;留言&lt;/a&gt; | &lt;a href=&quot;/wiki/%E7%89%B9%E6%AE%8A:%E7%94%A8%E6%88%B7%E8%B4%A1%E7%8C%AE/GMBOX&quot; class=&quot;mw-usertoollinks-contribs&quot; title=&quot;特殊:用户贡献/GMBOX&quot;&gt;贡献&lt;/a&gt;）&lt;/span&gt;&lt;a target=&quot;_blank&quot; rel=&quot;nofollow noreferrer noopener&quot; class=&quot;external text&quot; href=&quot;https://rustedwarfare.org/index.php?title=%E8%AF%9D%E9%A2%98:Y1ihuysw4hixakjl&amp;amp;topic_showPostId=y1iigtibbouxaqv5#flow-post-y1iigtibbouxaqv5&quot;&gt;已评论&lt;/a&gt;&quot;copyFrom的优先级更大，还是全单位模板&quot;的话题(&lt;em&gt;我怀疑了词条里面的优先级问题，全单位模板优先级高在这里却不成立，难不成有别的前提？&lt;/em&gt;)&lt;/span&gt;</summary>
		<author><name>GMBOX</name></author>
	</entry>
	<entry>
		<id>https://rustedwarfare.org/index.php?title=%E8%AF%9D%E9%A2%98:Y1ihuysw4hixakjl&amp;topic_postId=y1ihuysw4lgzioht&amp;topic_revId=y1ii0ihid7kdqyrl&amp;action=single-view</id>
		<title>话题:Y1ihuysw4hixakjl</title>
		<link rel="alternate" type="text/html" href="https://rustedwarfare.org/index.php?title=%E8%AF%9D%E9%A2%98:Y1ihuysw4hixakjl&amp;topic_postId=y1ihuysw4lgzioht&amp;topic_revId=y1ii0ihid7kdqyrl&amp;action=single-view"/>
		<updated>2024-03-23T05:18:10Z</updated>

		<summary type="html">&lt;span class=&quot;plainlinks&quot;&gt;&lt;a href=&quot;/wiki/%E7%94%A8%E6%88%B7:GMBOX&quot; class=&quot;mw-userlink&quot; title=&quot;用户:GMBOX&quot;&gt;&lt;bdi&gt;GMBOX&lt;/bdi&gt;&lt;/a&gt;&lt;span class=&quot;mw-usertoollinks&quot;&gt;（&lt;a href=&quot;/index.php?title=%E7%94%A8%E6%88%B7%E8%AE%A8%E8%AE%BA:GMBOX&amp;amp;action=edit&amp;amp;redlink=1&quot; class=&quot;new mw-usertoollinks-talk&quot; title=&quot;用户讨论:GMBOX（页面不存在）&quot;&gt;留言&lt;/a&gt; | &lt;a href=&quot;/wiki/%E7%89%B9%E6%AE%8A:%E7%94%A8%E6%88%B7%E8%B4%A1%E7%8C%AE/GMBOX&quot; class=&quot;mw-usertoollinks-contribs&quot; title=&quot;特殊:用户贡献/GMBOX&quot;&gt;贡献&lt;/a&gt;）&lt;/span&gt;已编辑于“copyFrom的优先级更大，还是全单位模板”的&lt;a target=&quot;_blank&quot; rel=&quot;nofollow noreferrer noopener&quot; class=&quot;external text&quot; href=&quot;https://rustedwarfare.org/index.php?title=%E8%AF%9D%E9%A2%98:Y1ihuysw4hixakjl&amp;amp;topic_showPostId=y1ihuysw4lgzioht#flow-post-y1ihuysw4lgzioht&quot;&gt;帖子&lt;/a&gt;&lt;/span&gt;</summary>
		<author><name>GMBOX</name></author>
	</entry>
	<entry>
		<id>https://rustedwarfare.org/index.php?title=%E8%AF%9D%E9%A2%98:Y1ihuysw4hixakjl&amp;topic_postId=y1ihuysw4lgzioht&amp;topic_revId=y1ihy3vjzuzcmv7l&amp;action=single-view</id>
		<title>话题:Y1ihuysw4hixakjl</title>
		<link rel="alternate" type="text/html" href="https://rustedwarfare.org/index.php?title=%E8%AF%9D%E9%A2%98:Y1ihuysw4hixakjl&amp;topic_postId=y1ihuysw4lgzioht&amp;topic_revId=y1ihy3vjzuzcmv7l&amp;action=single-view"/>
		<updated>2024-03-23T05:16:58Z</updated>

		<summary type="html">&lt;span class=&quot;plainlinks&quot;&gt;&lt;a href=&quot;/wiki/%E7%94%A8%E6%88%B7:GMBOX&quot; class=&quot;mw-userlink&quot; title=&quot;用户:GMBOX&quot;&gt;&lt;bdi&gt;GMBOX&lt;/bdi&gt;&lt;/a&gt;&lt;span class=&quot;mw-usertoollinks&quot;&gt;（&lt;a href=&quot;/index.php?title=%E7%94%A8%E6%88%B7%E8%AE%A8%E8%AE%BA:GMBOX&amp;amp;action=edit&amp;amp;redlink=1&quot; class=&quot;new mw-usertoollinks-talk&quot; title=&quot;用户讨论:GMBOX（页面不存在）&quot;&gt;留言&lt;/a&gt; | &lt;a href=&quot;/wiki/%E7%89%B9%E6%AE%8A:%E7%94%A8%E6%88%B7%E8%B4%A1%E7%8C%AE/GMBOX&quot; class=&quot;mw-usertoollinks-contribs&quot; title=&quot;特殊:用户贡献/GMBOX&quot;&gt;贡献&lt;/a&gt;）&lt;/span&gt;已编辑于“copyFrom的优先级更大，还是全单位模板”的&lt;a target=&quot;_blank&quot; rel=&quot;nofollow noreferrer noopener&quot; class=&quot;external text&quot; href=&quot;https://rustedwarfare.org/index.php?title=%E8%AF%9D%E9%A2%98:Y1ihuysw4hixakjl&amp;amp;topic_showPostId=y1ihuysw4lgzioht#flow-post-y1ihuysw4lgzioht&quot;&gt;帖子&lt;/a&gt;&lt;/span&gt;</summary>
		<author><name>GMBOX</name></author>
	</entry>
	<entry>
		<id>https://rustedwarfare.org/index.php?title=%E8%AF%9D%E9%A2%98:Y1ihuysw4hixakjl&amp;topic_postId=y1ihuysw4lgzioht&amp;topic_revId=y1ihuysw4lgzioht&amp;action=single-view</id>
		<title>话题:Y1ihuysw4hixakjl</title>
		<link rel="alternate" type="text/html" href="https://rustedwarfare.org/index.php?title=%E8%AF%9D%E9%A2%98:Y1ihuysw4hixakjl&amp;topic_postId=y1ihuysw4lgzioht&amp;topic_revId=y1ihuysw4lgzioht&amp;action=single-view"/>
		<updated>2024-03-23T05:15:24Z</updated>

		<summary type="html">&lt;span class=&quot;plainlinks&quot;&gt;&lt;a href=&quot;/wiki/%E7%94%A8%E6%88%B7:GMBOX&quot; class=&quot;mw-userlink&quot; title=&quot;用户:GMBOX&quot;&gt;&lt;bdi&gt;GMBOX&lt;/bdi&gt;&lt;/a&gt;&lt;span class=&quot;mw-usertoollinks&quot;&gt;（&lt;a href=&quot;/index.php?title=%E7%94%A8%E6%88%B7%E8%AE%A8%E8%AE%BA:GMBOX&amp;amp;action=edit&amp;amp;redlink=1&quot; class=&quot;new mw-usertoollinks-talk&quot; title=&quot;用户讨论:GMBOX（页面不存在）&quot;&gt;留言&lt;/a&gt; | &lt;a href=&quot;/wiki/%E7%89%B9%E6%AE%8A:%E7%94%A8%E6%88%B7%E8%B4%A1%E7%8C%AE/GMBOX&quot; class=&quot;mw-usertoollinks-contribs&quot; title=&quot;特殊:用户贡献/GMBOX&quot;&gt;贡献&lt;/a&gt;）&lt;/span&gt;&lt;a target=&quot;_blank&quot; rel=&quot;nofollow noreferrer noopener&quot; class=&quot;external text&quot; href=&quot;https://rustedwarfare.org/index.php?title=%E8%AF%9D%E9%A2%98:Y1ihuysw4hixakjl&amp;amp;topic_showPostId=y1ihuysw4lgzioht#flow-post-y1ihuysw4lgzioht&quot;&gt;已评论&lt;/a&gt;&quot;copyFrom的优先级更大，还是全单位模板&quot;的话题(&lt;em&gt;a.ini [core] copyFrom: ROOT:all-units.template, CORE:scout/scout.ini @global num:0 本目录的全单位模板。 copyFrom: ROOT:all-units.template name: pawn_…&lt;/em&gt;)&lt;/span&gt;</summary>
		<author><name>GMBOX</name></author>
	</entry>
	<entry>
		<id>https://rustedwarfare.org/index.php?title=%E8%87%AA%E5%AE%9A%E4%B9%89%E5%86%85%E5%AD%98&amp;diff=3279</id>
		<title>自定义内存</title>
		<link rel="alternate" type="text/html" href="https://rustedwarfare.org/index.php?title=%E8%87%AA%E5%AE%9A%E4%B9%89%E5%86%85%E5%AD%98&amp;diff=3279"/>
		<updated>2024-03-22T11:01:03Z</updated>

		<summary type="html">&lt;p&gt;GMBOX：​/* 修改 */添加注意事项。&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&#039;&#039;&#039;自定义内存&#039;&#039;&#039;（memory）是铁锈[[1.15]]加入的一种数据存储方式。&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;提示:这个页面专指自定义内存，而不包含[[数组|自定义内存数组]]([[1.15|1.15p11]]更新)的内容。&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
==类型==&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+memory的类型&lt;br /&gt;
|boolean&lt;br /&gt;
|布尔值&lt;br /&gt;
|-&lt;br /&gt;
|float&lt;br /&gt;
|浮点数&lt;br /&gt;
|-&lt;br /&gt;
|number&lt;br /&gt;
|整数(float)&lt;br /&gt;
|-&lt;br /&gt;
|unit&lt;br /&gt;
|单位&lt;br /&gt;
|-&lt;br /&gt;
|string&lt;br /&gt;
|字符串&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==定义==&lt;br /&gt;
在[core]节中，可以使用&amp;lt;code&amp;gt;defineUnitMemory&amp;lt;/code&amp;gt;和&amp;lt;code&amp;gt;@memory&amp;lt;/code&amp;gt;来定义内存，内存名字可以是中文，但请注意，应避免使用特殊符号命名。&lt;br /&gt;
&lt;br /&gt;
=== 通过defineUnitMemory定义 ===&lt;br /&gt;
在[core]节中添加: &amp;lt;code&amp;gt;defineUnitMemory:类型 名称,类型 名称......&amp;lt;/code&amp;gt;&lt;br /&gt;
{{折叠|defineUnitMemory例子|&amp;lt;pre&amp;gt;&lt;br /&gt;
defineUnitMemory:boolean is_alive,float xp,unit c_target,unit father,string customText&lt;br /&gt;
或者&lt;br /&gt;
defineUnitMemory:&amp;quot;&amp;quot;&amp;quot;&lt;br /&gt;
boolean is_alive,&lt;br /&gt;
float xp,&lt;br /&gt;
unit c_target,&lt;br /&gt;
unit father,&lt;br /&gt;
string customText&lt;br /&gt;
&amp;quot;&amp;quot;&amp;quot;&lt;br /&gt;
&amp;lt;/pre&amp;gt;}}&lt;br /&gt;
&lt;br /&gt;
=== 通过@memory定义 ===&lt;br /&gt;
@memory是defineUnitMemory的快捷方式，通常由多行多个@memory组成。更推荐用于模板，defineUnitMemory可以被覆盖，致使定义的内容无法生效，@memory可以避免此种情况。&lt;br /&gt;
&lt;br /&gt;
单个@memory的格式为: &amp;lt;code&amp;gt;@memory 名称:类型&amp;lt;/code&amp;gt;&lt;br /&gt;
{{折叠|@memory的例子|&amp;lt;pre&amp;gt;&lt;br /&gt;
@memory dir:float&lt;br /&gt;
@memory amo:number&lt;br /&gt;
@memory armor_f:unit&lt;br /&gt;
&amp;lt;/pre&amp;gt;}}&lt;br /&gt;
&lt;br /&gt;
== 引用 ==&lt;br /&gt;
要引用单位内部的自定义内存，可以直接使用 &amp;lt;code&amp;gt;memory.名称&amp;lt;/code&amp;gt; 。&lt;br /&gt;
&lt;br /&gt;
要引用其他单位的内存，可以使用&amp;lt;code&amp;gt;readUnitMemory&amp;lt;/code&amp;gt; ，格式为&amp;lt;code&amp;gt;单位引用.readUnitMemory(&#039;名称&#039;,type=&#039;类型&#039;)&amp;lt;/code&amp;gt; 。&lt;br /&gt;
{{折叠|readUnitMemory例子|&amp;lt;pre&amp;gt;&lt;br /&gt;
self.customTarget1.readUnitMemory(&#039;a&#039;,type=&#039;number&#039;)&lt;br /&gt;
&amp;lt;/pre&amp;gt;}}&lt;br /&gt;
&lt;br /&gt;
== 修改 ==&lt;br /&gt;
在[action]中，可以通过&amp;lt;code&amp;gt;setUnitMemory&amp;lt;/code&amp;gt;来直接修改内存的值，格式为&amp;lt;code&amp;gt;setUnitMemory:名称=值,名称=值...&amp;lt;/code&amp;gt; 。&lt;br /&gt;
{{折叠|setUnitMemory例子|&amp;lt;pre&amp;gt;&lt;br /&gt;
# [action] 中&lt;br /&gt;
setUnitMemory:a=1,b=memory.b+1&lt;br /&gt;
&amp;lt;/pre&amp;gt;}}&lt;br /&gt;
在[[1.15|1.15p10]]更新后，也可以通过&amp;lt;code&amp;gt;[core]updateUnitMemory&amp;lt;/code&amp;gt;来维持内存更新，即每到达设定时间就进行一次内存更新，格式与&amp;lt;code&amp;gt;setUnitMemory&amp;lt;/code&amp;gt;相同，但需要添加到[core]节。通过&amp;lt;code&amp;gt;[core]updateUnitMemoryRate&amp;lt;/code&amp;gt;可以设置更新频率（单位为帧，填写0为不停的更新），但请不要填写NaN或NaNs，这使得&amp;lt;code&amp;gt;[core]updateUnitMemoryRate&amp;lt;/code&amp;gt;不再更新。&lt;br /&gt;
[[分类:模组制作]]&lt;/div&gt;</summary>
		<author><name>GMBOX</name></author>
	</entry>
	<entry>
		<id>https://rustedwarfare.org/index.php?title=%E8%87%AA%E5%AE%9A%E4%B9%89%E5%86%85%E5%AD%98&amp;diff=3278</id>
		<title>自定义内存</title>
		<link rel="alternate" type="text/html" href="https://rustedwarfare.org/index.php?title=%E8%87%AA%E5%AE%9A%E4%B9%89%E5%86%85%E5%AD%98&amp;diff=3278"/>
		<updated>2024-03-22T10:58:25Z</updated>

		<summary type="html">&lt;p&gt;GMBOX：​/* 通过@memory定义 */推荐使用方法。&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&#039;&#039;&#039;自定义内存&#039;&#039;&#039;（memory）是铁锈[[1.15]]加入的一种数据存储方式。&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;提示:这个页面专指自定义内存，而不包含[[数组|自定义内存数组]]([[1.15|1.15p11]]更新)的内容。&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
==类型==&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+memory的类型&lt;br /&gt;
|boolean&lt;br /&gt;
|布尔值&lt;br /&gt;
|-&lt;br /&gt;
|float&lt;br /&gt;
|浮点数&lt;br /&gt;
|-&lt;br /&gt;
|number&lt;br /&gt;
|整数(float)&lt;br /&gt;
|-&lt;br /&gt;
|unit&lt;br /&gt;
|单位&lt;br /&gt;
|-&lt;br /&gt;
|string&lt;br /&gt;
|字符串&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==定义==&lt;br /&gt;
在[core]节中，可以使用&amp;lt;code&amp;gt;defineUnitMemory&amp;lt;/code&amp;gt;和&amp;lt;code&amp;gt;@memory&amp;lt;/code&amp;gt;来定义内存，内存名字可以是中文，但请注意，应避免使用特殊符号命名。&lt;br /&gt;
&lt;br /&gt;
=== 通过defineUnitMemory定义 ===&lt;br /&gt;
在[core]节中添加: &amp;lt;code&amp;gt;defineUnitMemory:类型 名称,类型 名称......&amp;lt;/code&amp;gt;&lt;br /&gt;
{{折叠|defineUnitMemory例子|&amp;lt;pre&amp;gt;&lt;br /&gt;
defineUnitMemory:boolean is_alive,float xp,unit c_target,unit father,string customText&lt;br /&gt;
或者&lt;br /&gt;
defineUnitMemory:&amp;quot;&amp;quot;&amp;quot;&lt;br /&gt;
boolean is_alive,&lt;br /&gt;
float xp,&lt;br /&gt;
unit c_target,&lt;br /&gt;
unit father,&lt;br /&gt;
string customText&lt;br /&gt;
&amp;quot;&amp;quot;&amp;quot;&lt;br /&gt;
&amp;lt;/pre&amp;gt;}}&lt;br /&gt;
&lt;br /&gt;
=== 通过@memory定义 ===&lt;br /&gt;
@memory是defineUnitMemory的快捷方式，通常由多行多个@memory组成。更推荐用于模板，defineUnitMemory可以被覆盖，致使定义的内容无法生效，@memory可以避免此种情况。&lt;br /&gt;
&lt;br /&gt;
单个@memory的格式为: &amp;lt;code&amp;gt;@memory 名称:类型&amp;lt;/code&amp;gt;&lt;br /&gt;
{{折叠|@memory的例子|&amp;lt;pre&amp;gt;&lt;br /&gt;
@memory dir:float&lt;br /&gt;
@memory amo:number&lt;br /&gt;
@memory armor_f:unit&lt;br /&gt;
&amp;lt;/pre&amp;gt;}}&lt;br /&gt;
&lt;br /&gt;
== 引用 ==&lt;br /&gt;
要引用单位内部的自定义内存，可以直接使用 &amp;lt;code&amp;gt;memory.名称&amp;lt;/code&amp;gt; 。&lt;br /&gt;
&lt;br /&gt;
要引用其他单位的内存，可以使用&amp;lt;code&amp;gt;readUnitMemory&amp;lt;/code&amp;gt; ，格式为&amp;lt;code&amp;gt;单位引用.readUnitMemory(&#039;名称&#039;,type=&#039;类型&#039;)&amp;lt;/code&amp;gt; 。&lt;br /&gt;
{{折叠|readUnitMemory例子|&amp;lt;pre&amp;gt;&lt;br /&gt;
self.customTarget1.readUnitMemory(&#039;a&#039;,type=&#039;number&#039;)&lt;br /&gt;
&amp;lt;/pre&amp;gt;}}&lt;br /&gt;
&lt;br /&gt;
== 修改 ==&lt;br /&gt;
在[action]中，可以通过&amp;lt;code&amp;gt;setUnitMemory&amp;lt;/code&amp;gt;来直接修改内存的值，格式为&amp;lt;code&amp;gt;setUnitMemory:名称=值,名称=值...&amp;lt;/code&amp;gt; 。&lt;br /&gt;
{{折叠|setUnitMemory例子|&amp;lt;pre&amp;gt;&lt;br /&gt;
# [action] 中&lt;br /&gt;
setUnitMemory:a=1,b=memory.b+1&lt;br /&gt;
&amp;lt;/pre&amp;gt;}}&lt;br /&gt;
在[[1.15|1.15p10]]更新后，也可以通过&amp;lt;code&amp;gt;[core]updateUnitMemory&amp;lt;/code&amp;gt;来维持内存更新，即每到达设定时间就进行一次内存更新，格式与&amp;lt;code&amp;gt;setUnitMemory&amp;lt;/code&amp;gt;相同，但需要添加到[core]节。通过&amp;lt;code&amp;gt;[core]updateUnitMemoryRate&amp;lt;/code&amp;gt;可以设置更新频率（单位为帧，填写0为不停的更新）。&lt;br /&gt;
[[分类:模组制作]]&lt;/div&gt;</summary>
		<author><name>GMBOX</name></author>
	</entry>
	<entry>
		<id>https://rustedwarfare.org/index.php?title=%E8%87%AA%E5%AE%9A%E4%B9%89%E5%86%85%E5%AD%98&amp;diff=3277</id>
		<title>自定义内存</title>
		<link rel="alternate" type="text/html" href="https://rustedwarfare.org/index.php?title=%E8%87%AA%E5%AE%9A%E4%B9%89%E5%86%85%E5%AD%98&amp;diff=3277"/>
		<updated>2024-03-22T10:54:48Z</updated>

		<summary type="html">&lt;p&gt;GMBOX：​/* 定义 */添加注意事项。&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&#039;&#039;&#039;自定义内存&#039;&#039;&#039;（memory）是铁锈[[1.15]]加入的一种数据存储方式。&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;提示:这个页面专指自定义内存，而不包含[[数组|自定义内存数组]]([[1.15|1.15p11]]更新)的内容。&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
==类型==&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+memory的类型&lt;br /&gt;
|boolean&lt;br /&gt;
|布尔值&lt;br /&gt;
|-&lt;br /&gt;
|float&lt;br /&gt;
|浮点数&lt;br /&gt;
|-&lt;br /&gt;
|number&lt;br /&gt;
|整数(float)&lt;br /&gt;
|-&lt;br /&gt;
|unit&lt;br /&gt;
|单位&lt;br /&gt;
|-&lt;br /&gt;
|string&lt;br /&gt;
|字符串&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==定义==&lt;br /&gt;
在[core]节中，可以使用&amp;lt;code&amp;gt;defineUnitMemory&amp;lt;/code&amp;gt;和&amp;lt;code&amp;gt;@memory&amp;lt;/code&amp;gt;来定义内存，内存名字可以是中文，但请注意，应避免使用特殊符号命名。&lt;br /&gt;
&lt;br /&gt;
=== 通过defineUnitMemory定义 ===&lt;br /&gt;
在[core]节中添加: &amp;lt;code&amp;gt;defineUnitMemory:类型 名称,类型 名称......&amp;lt;/code&amp;gt;&lt;br /&gt;
{{折叠|defineUnitMemory例子|&amp;lt;pre&amp;gt;&lt;br /&gt;
defineUnitMemory:boolean is_alive,float xp,unit c_target,unit father,string customText&lt;br /&gt;
或者&lt;br /&gt;
defineUnitMemory:&amp;quot;&amp;quot;&amp;quot;&lt;br /&gt;
boolean is_alive,&lt;br /&gt;
float xp,&lt;br /&gt;
unit c_target,&lt;br /&gt;
unit father,&lt;br /&gt;
string customText&lt;br /&gt;
&amp;quot;&amp;quot;&amp;quot;&lt;br /&gt;
&amp;lt;/pre&amp;gt;}}&lt;br /&gt;
&lt;br /&gt;
=== 通过@memory定义 ===&lt;br /&gt;
@memory是defineUnitMemory的快捷方式，通常由多行多个@memory组成。&lt;br /&gt;
&lt;br /&gt;
单个@memory的格式为: &amp;lt;code&amp;gt;@memory 名称:类型&amp;lt;/code&amp;gt;&lt;br /&gt;
{{折叠|@memory的例子|&amp;lt;pre&amp;gt;&lt;br /&gt;
@memory dir:float&lt;br /&gt;
@memory amo:number&lt;br /&gt;
@memory armor_f:unit&lt;br /&gt;
&amp;lt;/pre&amp;gt;}}&lt;br /&gt;
&lt;br /&gt;
== 引用 ==&lt;br /&gt;
要引用单位内部的自定义内存，可以直接使用 &amp;lt;code&amp;gt;memory.名称&amp;lt;/code&amp;gt; 。&lt;br /&gt;
&lt;br /&gt;
要引用其他单位的内存，可以使用&amp;lt;code&amp;gt;readUnitMemory&amp;lt;/code&amp;gt; ，格式为&amp;lt;code&amp;gt;单位引用.readUnitMemory(&#039;名称&#039;,type=&#039;类型&#039;)&amp;lt;/code&amp;gt; 。&lt;br /&gt;
{{折叠|readUnitMemory例子|&amp;lt;pre&amp;gt;&lt;br /&gt;
self.customTarget1.readUnitMemory(&#039;a&#039;,type=&#039;number&#039;)&lt;br /&gt;
&amp;lt;/pre&amp;gt;}}&lt;br /&gt;
&lt;br /&gt;
== 修改 ==&lt;br /&gt;
在[action]中，可以通过&amp;lt;code&amp;gt;setUnitMemory&amp;lt;/code&amp;gt;来直接修改内存的值，格式为&amp;lt;code&amp;gt;setUnitMemory:名称=值,名称=值...&amp;lt;/code&amp;gt; 。&lt;br /&gt;
{{折叠|setUnitMemory例子|&amp;lt;pre&amp;gt;&lt;br /&gt;
# [action] 中&lt;br /&gt;
setUnitMemory:a=1,b=memory.b+1&lt;br /&gt;
&amp;lt;/pre&amp;gt;}}&lt;br /&gt;
在[[1.15|1.15p10]]更新后，也可以通过&amp;lt;code&amp;gt;[core]updateUnitMemory&amp;lt;/code&amp;gt;来维持内存更新，即每到达设定时间就进行一次内存更新，格式与&amp;lt;code&amp;gt;setUnitMemory&amp;lt;/code&amp;gt;相同，但需要添加到[core]节。通过&amp;lt;code&amp;gt;[core]updateUnitMemoryRate&amp;lt;/code&amp;gt;可以设置更新频率（单位为帧，填写0为不停的更新）。&lt;br /&gt;
[[分类:模组制作]]&lt;/div&gt;</summary>
		<author><name>GMBOX</name></author>
	</entry>
</feed>