Skip to content

[LogicBoolean] 逻辑序列组

DANGER

由于这个组的特殊性,格式不标准,请勿参考这个组的写法。

前置知识

TIP

以下的内容为逻辑组前置知识,是学习逻辑必备的前置内容。

布尔值

表达“真(true)”或“假(false)”的一个状态。在铁锈中,布尔值(boolean)被运用于逻辑判断。

数据类型

数据类型指数据的种类,在铁锈中,不同的数据有不同的类型,不同的数据类型之间通常不能直接进行运算。

常见数据类型英文存储的值类型
string字符串
number整数
float浮点数(小数)
boolean布尔值
unit单位

数据类型之间的转换函数包括:intstr

算数优先级

与数学中计算符一样,铁锈中算数运算符有优先级区别。%*/的优先级大于+-

比较运算符

TIP

以下的内容为逻辑中用于比较的运算符。

if

if-代码简介

代码:if 中文释义:如果 类型:逻辑函数

if-要点指示

if是大部分逻辑运算的开头(select等不需要if),用于在支持逻辑的键引入逻辑判断。

if-演示例子

ini
[action]
autoTrigger:if self.maxHp() > memory.emx_hp

<

<-代码简介

代码:< 中文释义:小于 类型:比较运算符

<-要点指示

小于用于在逻辑布尔值中比较两个数的大小,格式为数据a < 数据b,若a<b则整个式子的值为true,否则为false

<-演示例子

ini
[action]
autoTrigger:if memory.a < memory.b

>

>-代码简介

代码:> 中文释义:大于 类型:比较运算符

>-要点指示

大于用于在逻辑布尔值中比较两个数的大小,格式为数据a > 数据b,若a>b则整个式子的值为true,否则为false

>-演示例子

ini
[action]
autoTrigger:if memory.a > memory.b

<=

<=-代码简介

代码:<= 中文释义:小于等于 类型:比较运算符

<=-要点指示

小于等于用于在逻辑布尔值中比较两个数的大小,格式为数据a <= 数据b,若a<=b则整个式子的值为true,否则为false

<=-演示例子

ini
[action]
autoTrigger:if memory.a <= memory.b

>=

>=-代码简介

代码:>= 中文释义:大于等于 类型:比较运算符

>=-要点指示

大于等于用于在逻辑布尔值中比较两个数的大小,格式为数据a >= 数据b,若a>=b则整个式子的值为true,否则为false

>=-演示例子

ini
[action]
autoTrigger:if memory.a >= memory.b

==

==-代码简介

代码:== 中文释义:等于 类型:比较运算符

==-要点指示

等于用于在逻辑布尔值中比较值是否相同,格式为数据a = 数据b,若a=b则整个式子的值为true,否则为false

TIP

请注意,铁锈中等于的符号为在铁锈中用于赋值或参数。

==-演示例子

ini
[action]
autoTrigger:if memory.a == memory.b

!=

!=-代码简介

代码:!= 中文释义:不等于 类型:比较运算符

!=-要点指示

不等于用于在逻辑布尔值中比较值是否相同,格式为数据a = 数据b,若a!=b则整个式子的值为true,否则为false

!=-演示例子

ini
[action]
autoTrigger:if memory.a != memory.b

逻辑运算符

TIP

以下的内容为逻辑中用于进行逻辑运算的运算符,它们的结果都是boolean类型。

and

and-代码简介

代码:and 中文释义:且 类型:逻辑运算符

and-要点指示

TIP

用于连接两个逻辑判断,只有在这两个逻辑判断的值都为时,的值才为true。

and-演示例子

ini
[action]
autoTrigger:if memory.a < memory.b and memory.a > memory.c
# 在这个例子中,只有a小于b且a大于c时,自动触发才会被触发

or

or-代码简介

代码:or 中文释义:或 类型:逻辑运算符

or-要点指示

TIP

用于连接两个逻辑判断,只要这两个逻辑判断的值有一个为时,的值就为true。

or-演示例子

ini
[action]
autoTrigger:if memory.a < memory.b or memory.a > memory.c
# 在这个例子中,只要a小于b或a大于c,自动触发就会被触发

not

not-代码简介

代码:not 中文释义:非 类型:逻辑运算符

not-要点指示

TIP

用于将某个逻辑判断的值取反,即truefalsefalsetrue

INFO

多个逻辑运算符同时使用时,优先级为not>and>or,同时
推荐

not-演示例子

:::

演示例子:

ini
[action]
autoTrigger:if (memory.a < memory.b or memory.a > memory.c) and not memory.a < memory.d
bash
考考你,在上述这个例子中,满足什么条件才会触发?
bash
答案:a必须满足小于b和大于c中的一个,且a必须不小于d,自动触发才会被触发。

算数运算符

TIP

以下的内容为逻辑中用于进行算数运算的运算符,它们的结果类型为参与运算的值的类型。

INFO

不同数据类型通常,但在部分情况下,类型可以混用(建议来避免混淆)。

+

+-代码简介

代码:+ 中文释义:加 类型:算数运算符

+-要点指示

加用于将两个逻辑值相加,得到结果,格式为数据a + 数据b

+-演示例子

ini
[action]
autoTrigger:if (memory.a + memory.c) < memory.b
#内存a和c的值之和需要小于b

-

--代码简介

代码:- 中文释义:减 类型:算数运算符

--要点指示

减用于将两个逻辑值相减,得到结果,格式为数据a - 数据b

INFO

对于,需要注意是否正确。由于铁锈本身bug,,因此可能出现减法顺序混乱等问题。
为了避免可能的问题,请尽量在任何两边打上括号。

--演示例子

ini
[action]
autoTrigger:if (memory.a - memory.c) < memory.b
#内存a与c的值之差需要小于b

*

*-代码简介

代码:* 中文释义:乘 类型:算数运算符

*-要点指示

乘用于将两个逻辑值相乘,得到结果,格式为数据a * 数据b

*-演示例子

ini
[action]
autoTrigger:if (memory.a * memory.c) == memory.b
#内存a和c的乘积需要等于b

/

/-代码简介

代码:/ 中文释义:除 类型:算数运算符

/-要点指示

除用于将两个逻辑值相除,得到结果,格式为数据a / 数据b

/-演示例子

ini
[action]
autoTrigger:if (memory.a / memory.c) == memory.b
#内存a除以c的积需要等于b

%

%-代码简介

代码:% 中文释义:求余(取模) 类型:算数运算符

%-要点指示

求余用于获取两个逻辑值中,第一个除第二个的余数,格式为数据a % 数据b,例如7%3=1(7除3余1)

%-演示例子

ini
[action]
autoTrigger:if (memory.a % memory.c) == memory.b
#内存a除以c的余数需要等于b

单位统计

TIP

以下的内容为逻辑中用于单位数值获取的函数,它们的类型与单位此项数值对应。

通用统计关键字

单位统计中部分通用的关键字:

  1. greaterThan 大于
  2. lessThan 小于
  3. empty
  4. full
  5. equalTo 等于

内置参数-单一或无传参

单位统计中部分内置参数返回代码(由于过于简单不单独列出):

  1. self.hp() 生命值
  2. self.maxHp() 最大生命值
  3. self.energy() 能量
  4. self.shield() 护盾
  5. self.kills() 击杀数
  6. self.maxEnergy() 最大能量
  7. self.maxShield() 最大护盾
  8. self.height()/self.x() 高度
  9. self.ammo() 弹药
  10. self.isAmmoEmpty() 弹药为空(快捷方式:self.ammo(empty=true))
  11. self.ammoIncludingQueued() 包括队列中的弹药
  12. self.energyIncludingQueued() 包括队列中的能量
  13. self.isEnergyFull() 能量满(快捷方式:self.energy(full=true))
  14. self.isEnergyEmpty() 能量空(快捷方式:self.energy(empty=true))
  15. self.isEnergyRecharing() 能量充能中
  16. self.playerName() 玩家名称
  17. self.teamName() 队伍名称
  18. self.x(),self.y() x,y坐标
  19. self.dir() 方向
  20. self.priceCredits() 金钱价格
  21. self.speed() 当前速度
  22. self.maxMoveSpeed() 最大速度
  23. self.id() 单位id(每个单位的序号)
  24. self.builtAmount() 建造数量
  25. self.complate() 自身建造完成
  26. self.teamDefeatedTech() 队伍失败
  27. self.teamWipedOut() 队伍全部死亡
  28. self.teamVictory() 队伍获胜
  29. self.queueSize() 自身队列大小
  30. self.transportingCount() 运输数量
  31. self.isAttacking() 在攻击
  32. self.isOnNeutralTeam() 是中立队伍
  33. self.isControlledByAI() 是AI控制
  34. self.isInMap() 在地图内
  35. game.mapWidth() 地图宽度
  36. game.mapHeight() 地图高度
  37. game.nukesEnabled() 是否启用核武器

内置参数-需要传参

self.hasResources() 代码:self.hasResources() 中文释义:有资源 返回类型:boolean

self.hasResources() 用于检测自身某资源是否大于等于某数值,格式为self.hasResources(资源名=数值)

演示例子:

ini
self.hasResources(hp=10,energy=5)

self.resource() 代码:self.resource() 中文释义:资源 返回类型:float

self.hasResources()不同,self.resource()直接返回某个资源的数值。格式为self.resource(type="资源名")

INFO

引用资源时,请确保,否则会报错。

self.resource.RESOURCE_TYPE 代码:self.resource.RESOURCE_TYPE 中文释义:资源 返回类型:float

self.resource.RESOURCE_TYPEself.resource()的快捷方式。格式为self.resource.资源名称,引用更加方便。

self.isResourceLargerThan() 代码:self.isResourceLargerThan() 中文释义:资源是否大于 返回类型:boolean

WARNING

此代码为老旧解决方案,不推荐使用。

self.isResourceLargerThan()用于比较两种资源的大小。格式为self.isResourceLargerThan(source=资源A,compareTarget=资源B,byMoreThan=大于资源B数量,multiplyTargetBy=资源B倍数)

self.numberOfQueuedWaypoints() 代码:self.numberOfQueuedWaypoints() 中文释义:队列中路径点数量 返回类型:float

self.numberOfQueuedWaypoints()用于返回队列中路径点的数量。格式为self.numberOfQueuedWaypoints(type="路径点类型")

单位运动与定位

这部分代码的返回值全部为boolean类型,用于检测单位的运动和位置情况

  1. self.underwater/self.isUnderwater() 单位在水下
  2. self.gound/self.ground/self.isAtGroundHeight() 单位位于地面高度
  3. self.flying/self.isFlying() 单位在飞行
  4. self.isMoving() 单位正在移动
  5. self.isAtTopSpeed() 单位处于最高速度
  6. self.inwater/self.isInWater() 单位在水中
  7. self.isReversing() 单位在倒车
  8. self.isOverwater() 单位在水上(在水上方或接触水)
  9. self.isOverLiquid() 单位在液体上(岩浆等)
  10. self.isOverClift/self.isOverCliff() 单位在悬崖上
  11. self.isOverOpenLand() 单位在开阔的陆地上
  12. self.isTransportUnloading() 单位正在卸载单位
  13. self.isOverPassableTile() 单位在可通过的地块上(可通过加参数type=地块类型来指定特定类型的地块)

附移动类型:

英文移动类型
NONE
LAND陆地
BUILDING建筑
AIR空中
WATER水中
HOVER两栖
OVER_CLIFF跨悬崖
OVER_CLIFF_WATER跨水和悬崖

单位计时

self.hasTakenDemage() 代码:self.hasTakenDemage() 中文释义:受到伤害 返回类型:bool

INFO

单位计时部分能返回到最小时间精度为

self.hasTakenDemage()用于获取指定时间内是否收到伤害。使用self.hasTakenDemage(withInSecounds=多少秒内,laterThanSecounds=多少秒后)格式时,返回bool类型。

self.timeAlive() 代码:self.timeAlive() 中文释义:存活时间 返回类型:float/bool

self.timeAlive()用于获取单位存活时间。使用self.timeAlive(withInSecounds=多少秒内,laterThanSecounds=多少秒后)格式时,返回bool类型(是否符合此范围);使用self.timeAlive()格式时,返回float类型。(更推荐使用后者)

self.lastConverted() 代码:self.lastConverted() 中文释义:最后转换时间 返回类型:float/bool

self.timeAlive()用于获取单位上次转换后的时间。使用self.lastConverted(withInSecounds=多少秒内,laterThanSecounds=多少秒后)格式时,返回bool类型(是否符合此范围);使用self.lastConverted()格式时,返回float类型。

self.customTimer() 代码:self.customTimer() 中文释义:自定义计时器 返回类型:float/bool

self.timeAlive()用于获取自定义计时器的时间。使用self.customTimer(withInSecounds=多少秒内,laterThanSecounds=多少秒后)格式时,返回bool类型(是否符合此范围);使用self.customTimer()格式时,返回float类型。

演示例子:

ini
[action]
autoTrigger:if self.customTimer() >= 10
resetCustomTimer:true
showMessageToPlayers:10秒过去了

杂项

thisActionIndex/index() 代码:thisActionIndex/index() 中文释义:索引 返回类型:float(number)

thisActionIndex/index()alsoTriggerActionRepeat中当前的索引。例如alsoTriggerActionRepeat:10,那么index在10次循环中分别为1-10。

self.hasFlag() 代码:self.hasFlag() 中文释义:有标志 返回类型:boolean

self.hasFlag()用于获取自身是否有,格式为self.hasFlag(id=数字)

INFO

不同于是内置的一些,无需定义即可直接使用。

标签的添加方法为,且只支持,标签的移除方法与之相反。

self.tags() 代码:self.tags() 中文释义:有标签 返回类型:boolean

self.tags()用于检测自身是否有某个标签,格式为self.tags(includes="标签")

self.globalTeamTags/self.hasGlobalTeamTags() 代码:self.globalTeamTags/self.hasGlobalTeamTags() 中文释义:有全局标签 返回类型:boolean

self.globalTeamTags/self.hasGlobalTeamTags()用于检测队伍内是否有某个全局标签,格式为self.globalTeamTags/self.hasGlobalTeamTags(includes="标签")

self.numberOfConnections() 代码:self.numberOfConnections() 中文释义:连接数 返回类型:float

隐藏代码,用途不明。

self.numberOfAttachedUnits() 代码:self.numberOfAttachedUnits() 中文释义:有附属物 返回类型:int/bool

self.numberOfAttachedUnits()用于获取自身附属物数量,可以通过self.numberOfAttachedUnits(withTag="标签")格式来限制附属物标签。

self.hasActiveWaypoint() 代码:self.hasActiveWaypoint() 中文释义:有活动的路径点 返回类型:bool

self.hasActiveWaypoint()用于获取自身有无活动的路径点,格式为self.hasActiveWaypoint(type="路径点类型")

INFO

路径点类型可以是

self.transportingUnitWithTags() 代码:self.transportingUnitWithTags() 中文释义:运输单位中有此标签 返回类型:bool

self.transportingUnitWithTags()用于检测自身运输的单位中是否有含有特定标签的单位,格式为self.transportingUnitWithTags(includes="标签")

self.hasParent() 代码:self.hasParent() 中文释义:有父单位 返回类型:bool

self.hasParent()用于检测自身是否有父单位,且可以通过self.hasParent(hasTag="标签")来筛选父单位标签。
通常情况下,附属和被运输单位会有父单位。

self.numberOfUnitsInTeam() 代码:self.numberOfUnitsInTeam() 中文释义:队伍中此单位数量 返回类型:float

self.numberOfUnitsInTeam()(可省略self.)用于检测自身队伍符合条件的单位数量,格式为self.numberOfUnitsInTeam(withTag="标签",withinRange=此距离内,incompleteBuildings=包含不完整建筑,factoryQueue=包含工厂队列)

演示例子:

ini
self.numberOfUnitsInTeam(withTag="air",withInRange=500,factoryQueue=true)
#有air标签,500范围内,包含工厂队列中的单位

self.numberOfUnitsInAllyNotOwnTeam() 代码:self.numberOfUnitsInAllyNotOwnTeam() 中文释义:盟友队伍中此单位数量 返回类型:float

self.numberOfUnitsInAllyNotOwnTeam()self.numberOfUnitsInTeam()用法完全相同,区别仅在于前者的查询范围是盟友中。

self.numberOfUnitsInEnemyTeam() 代码:self.numberOfUnitsInEnemyTeam() 中文释义:敌方队伍中此单位数量 返回类型:float

self.numberOfUnitsInEnemyTeam()self.numberOfUnitsInTeam()用法完全相同,区别仅在于前者的查询范围是敌方中。

self.numberOfUnitsInNeutralTeam() 代码:self.numberOfUnitsInNeutralTeam() 中文释义:中立队伍中此单位数量 返回类型:float

self.numberOfUnitsInNeutralTeam()self.numberOfUnitsInTeam()用法完全相同,区别仅在于前者的查询范围是中立中。

self.numberOfUnitsInAggressiveTeam() 代码:self.numberOfUnitsInAggressiveTeam() 中文释义:敌对中立队伍中此单位数量 返回类型:float

self.numberOfUnitsInAggressiveTeam()self.numberOfUnitsInTeam()用法完全相同,区别仅在于前者的查询范围是敌对中立中。

self.numberOfUnitsInAllyTeam() 代码:self.numberOfUnitsInAllyTeam() 中文释义:所有队伍中此单位数量 返回类型:float

self.numberOfUnitsInAllyTeam()self.numberOfUnitsInTeam()用法完全相同,区别仅在于前者的查询范围是所有中。

self.hasUnitInTeam() 代码:self.hasUnitInTeam() 中文释义:队伍中有单位 返回类型:bool

self.hasUnitInTeam()self.numberOfUnitsInTeam()格式完全相同,区别在于前者仅查询队伍中有无符合条件的单位,并返回boolean类型。

self.noUnitInTeam() 代码:self.noUnitInTeam() 中文释义:队伍中无单位 返回类型:bool

self.noUnitInTeam()self.numberOfUnitsInTeam()格式完全相同,区别在于前者仅查询队伍中是否无符合条件的单位,并返回boolean类型。

self.readUnitMemory() 代码:self.readUnitMemory() 中文释义:读取单位内存 返回类型:跟随memory类型

self.readUnitMemory()用于获取指定单位内存,格式为self.readUnitMemory("内存名",type="类型",index=下标(仅当类型是数组时可选填写))

DANGER

时,如果下标使用了逻辑,无论逻辑值都会返回第零项,

,解决方法可以参考:

https://www.bilibili.com/video/BV17v4y1r7dV (感谢十山月)

ini
[action_copyArry]
text:copyFromUnit
alsoTriggerAction:copyOne
alsoTriggerActionRepeat:memory.target.readUnitMemory("Afloat",type="float[]").size

## 最重要的
alsoTriggerOrQueueActionWithTarget:memory.target

[hiddenAction_copyOne]
setUnitMemory:Afloat[index] = thisActionTarget.readUnitMemory("Afloat",type="float[]")[index]

self.readUnitMemory()基础演示例子:

ini
if parent.readUnitMemory("boostTarget", type="unit") == self
#如果 父单位内存boostTarget的值等于自己

单位参照

当前动作目标

INFO

thisActionTarget是一条用于获取当前行动目标的代码,不同的行动中,thisActionTarget也不同(或没有)。 以下是不同情况下的thisActionTarget

fireTurretXAtGround: mainTurret
此时thisActionTarget是目标地面位置的标记

alsoTriggerAction: x
此时thisActionTarget是原动作的thisActionTarget

[turret]onShoot_triggerActions: x
此时thisActionTarget是被击中的目标

takeResources_triggerActionIfAnyCollected: x
此时thisActionTarget是该资源

addWaypoint_triggerActionIfMatched: x
此时thisActionTarget是搜索到的标记/目标

autoTriggerOnEvent: tookDamage
此时thisActionTarget是造成伤害的单位

autoTriggerOnEvent: killedAnyUnit
此时thisActionTarget是被杀死的单位

autoTriggerOnEvent: transportingNewUnit
此时thisActionTarget是被运输的单位

autoTriggerOnEvent: transportUnloadedOrRemovedUnit
此时thisActionTarget是被卸载打单位

autoTriggerOnEvent: queuedUnitFinished
此时thisActionTarget是创建的新单位

autoTriggerOnEvent: touchTargetSuccess
此时thisActionTarget是接触的目标

杂项

attachment 代码:self.attachment() 中文释义:附属物 返回类型:unit/marker

attachment用于获取单位特定附属物的单位参考,参数有slotwithFlag
slot参数即代码中[attachment_abc]abcwithFlag参数用于获取拥有指定标签的附属物。

ini
self.attachment(withTag="x").lastDamagedBy.getAsMarker()
#这里获取有x标签的附属物,然后获取此附属物上一个攻击者,并创建标记

transporting 代码:self.transporting() 中文释义:运载的单位 返回类型:unit/marker

transporting用于获取单位运输队列中特定单位的单位参考,参数有slot
attachment不同,transportingslot参数为数字,即运输队列的第几个。

attacking 代码:self.attacking() 中文释义:攻击目标 返回类型:unit/marker

attacking用于获取单位的攻击目标。

WARNING

attacking不一定是正在攻击的目标,

lastDamagedBy 代码:self.lastDamagedBy() 中文释义:最后伤害源 返回类型:unit/marker
attacking用于获取最后攻击该单位的单位。

parent 代码:self.parent() 中文释义:父单位 返回类型:unit/marker
parent用于获取单位的附属主单位或运输单位。
当单位离开附属/运输时,父单位会为null,因此可以用于检测单位是否被运输/在附属中。

activeWaypointTarget 代码:self.activeWaypointTarget() 中文释义:自身活动的路径点 返回类型:unit/marker
activeWaypointTarget用于获取自身正在进行的路径点,参数有type
type参数用于指定路径点类型。

customTarget1 代码:self.customTarget1() 中文释义:自定义目标1 返回类型:unit/marker
customTarget1是铁锈内置的unit类型内存,

customTarget2 代码:self.customTarget2() 中文释义:自定义目标1 返回类型:unit/marker
customTarget2是铁锈内置的unit类型内存。

nearestUnit 代码:self.nearestUnit() 中文释义:指定最近单位 返回类型:unit/marker
nearestUnit用于获取满足条件的最近单位,参数有withinRangewithTagrelationwithinRange:指定最大搜索范围(最高为1000) withTag:指定需要含有的标签 relation:目标单位与自己的关系(与路径点靠近类型相同)

英文关系类型
any所有
enemy敌对
own己方
ally盟友
allyNotOwn仅盟友
notOwn除己方
neutral中立

globalSearchForFirstUnit 代码:self.globalSearchForFirstUnit() 中文释义:指定最近单位 返回类型:unit/marker
globalSearchForFirstUnit用于在全局范围内搜索第一个满足条件的最近单位,参数有withTagrelation,用法与nearestUnit基本相同。

nullUnit 代码:nullUnit 中文释义:空单位 返回类型:unit/marker
nullUnit是铁锈的空单位,用于比较/判断。

标记

getAsMarker 代码:self.getAsMarker() 中文释义:获取标记 返回类型:unit/marker
getAsMarker用于在指定单位创建标记。标记的创建速度非常快,不再需要时会自动删除。
标记不链接到任何单位并且在单位死亡时仍然存在,在源头移动时保持不变。

getOffsetAbsolute 代码:self.getOffsetAbsolute() 中文释义:获取绝对偏移标记 返回类型:unit/marker
getOffsetAbsolute用于在指定单位创建一个绝对偏移后的标记。可用的参数有xyheight(-y为北,+x为东)。

getOffsetRelative 代码:self.getOffsetRelative() 中文释义:获取相对偏移标记 返回类型:unit/marker
getOffsetRelative用于在指定单位创建一个相对偏移后的标记。可用的参数有xyheight(+y为前,-为左)、dirOffset(角度偏移)。

TIP

相对偏移可以理解为,然后计算在这个坐标系内的便宜,并返回地图中大坐标系的单位参考。

eventSource 代码:eventSource 中文释义:事件源 返回类型:event
eventSource用于获取autoTriggerOnEvent当前触发器,没有则返回null,可以看作对于事件的autoTriggerOnEvent

全局函数

readUnitMemory 代码:self.readUnitMemory() 中文释义:读取单位内存 返回类型:跟随内存类型
readUnitMemory用于读取指定单位上的自定义内存,与读取其他单位的资源不同,内存可以直接读取而不需要在本单位进行定义。
readUnitMemory的格式为单位参考.readUnitMemory("内存名称",type="内存类型"),简写格式为memory.内存名称,但简写格式只能用于读取自己的内存。

self.readUnitMemory()基础演示例子:

ini
if parent.readUnitMemory("a", type="float") == 1
#如果 父单位内存a的值为1

WARNING

readUnitMemory还可以用于读取内存数组,格式为单位参考.readUnitMemory("数组名称",type="数组类型",index=数组下标)
时,如果下标使用了逻辑,无论逻辑值都会返回第零项,

,解决方法可以参考:

https://www.bilibili.com/video/BV17v4y1r7dV (感谢十山月)

distance 代码:distance() 中文释义:两点距离 返回类型:float
distance用于获取两个坐标之间的距离,格式为distance(x1,y1,x2,y2)

distanceSquared 代码:distanceSquared() 中文释义:两点距离平方 返回类型:float
distanceSquared返回两个点的距离的平方,速度更快,格式与distance一样。

distanceBetween 代码:distanceBetween() 中文释义:单位间的距离 返回类型:float
distanceBetween返回两个单位(标记)之间的距离,格式为distanceBetween(单位1,单位2)

distanceBetweenSquared 代码:distanceBetweenSquared() 中文释义:单位间的距离平方 返回类型:float
distanceBetweenSquared返回两个单位(标记)之间的距离的平方,速度更快,格式与distanceBetween一致。

select 代码:select() 中文释义:三目运算符 返回类型:随结果类型(有说为string)
select用于简化部分需要使用如果进行分别判断的场景,格式为select(bool a,str b,str c),当a成立时,整个select返回b,否则返回c

TIP

select支持套娃。在适当的地方使用,可以

debug 代码:debug() 中文释义:返回调试值 返回类型:string
debug可以针对逻辑布尔值输出一个字符串,解释这个值产生的原因,可以查看嵌套逻辑、比较和运算符。

ini
showMessageToAllPlayers:%{debug(memory.a)}
#假设a为unit类型memory
#这里就会输出a单位的id等信息

substring 代码:substring() 中文释义:取子字符串 返回类型:string
substring用于截取一个字符串的一部分,格式为substring(开始处,结束处),字符串的“下标”从0开始。

length 代码:length() 中文释义:取字符串长度 返回类型:number/float
length用于获取一个字符串的长度,格式为length(string),返回长度数字。

squareRoot 代码:squareRoot() 中文释义:平方根 返回类型:number/float
squareRoot用于获取一个数的平方根,格式为squareRoot(number/float)

min 代码:min() 中文释义:最小值 返回类型:number/float
min用于获取两个数中更小的那个,格式为min(number1,number2)

max 代码:max() 中文释义:最大值 返回类型:number/float
max用于获取两个数中更大的那个,格式为max(number1,number2)

createMarker 代码:createMarker() 中文释义:创建标记 返回类型:marker
createMarker用于创建一个临时的标记,格式为createMarker(x, y, [height], [teamId], [dir])。其中xy为必须的参数
标记的创建速度很快,创建后可以用于填入路径点等unit/marker类型处。

TIP

其实marker也是一个单位,可以通过路径点thisActionTargetdebug发现它。

eventData 代码:eventData() 中文释义:事件数据 返回类型:跟随事件
eventData用于获取自身接收的[action]sendMessageTo中发送的信息,格式为eventData("数据名称",type="数据类型")
eventData只在autoTriggerOnEvent:newMessage事件中使用。

sin 代码:sin() 中文释义:正弦 返回类型:float
sin用于正弦值,格式为sin(角度)

cos 代码:cos() 中文释义:余弦 返回类型:float
cos用于余弦值,格式为cos(角度)

TIP

铁锈三角函数没有tan,但是可以通过tan(a)=sin(a)/cos(a)来求。

rnd 代码:rnd() 中文释义:随机数 返回类型:float
rnd用于生成一个自定义区间内的随机数,格式为rnd(最小,最大)

WARNING

沙盒地图中随机数种子是一样的,且,实际使用可能需要自己增加参数后求余。

lowercase 代码:lowercase() 中文释义:转小写 返回类型:string
lowercase用于将一个字符串中的大写字符全部转换成小写,格式为lowercase(string)

uppercase 代码:uppercase() 中文释义:转大写 返回类型:string
uppercase用于将一个字符串中的小写字符全部转换成大写,格式为uppercase(string)

direction 代码:direction() 中文释义:相对角度 返回类型:float
direction用于获取两个点之间的相对角度,格式为direction(x1,y1,x2,y2)

directionBetween 代码:direction() 中文释义:单位相对角度 返回类型:float
direction用于获取两个单位之间的相对角度,格式为direction(unit1,unit2)
directionBetween

Rosy-Code Ling Web Stuido