Merge pull request #38 from tobby3600/main

逻辑节格式修复1
This commit is contained in:
tobby3600 2023-08-21 18:31:11 +08:00 committed by GitHub
commit e161fac3df
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23

View File

@ -8,12 +8,15 @@ outline: deep
由于这个组的特殊性,格式不标准,请勿参考这个组的写法。 由于这个组的特殊性,格式不标准,请勿参考这个组的写法。
::: :::
### 前置知识 ## 前置知识
::: tip
以下的内容为`逻辑组前置知识`,是学习逻辑必备的前置内容。
:::
#### 布尔值 ### 布尔值
<font color=orange>布尔值</font>表达“真(true)”或“假(false)”的一个状态。在铁锈中,布尔值(`boolean`)被运用于逻辑判断。 <font color=orange>布尔值</font>表达“真(true)”或“假(false)”的一个状态。在铁锈中,布尔值(`boolean`)被运用于逻辑判断。
#### 数据类型 ### 数据类型
数据类型指数据的种类,在铁锈中,不同的数据有不同的类型,不同的数据类型之间通常不能直接进行运算。 数据类型指数据的种类,在铁锈中,不同的数据有不同的类型,不同的数据类型之间通常不能直接进行运算。
|常见数据类型英文 |存储的值类型 | |常见数据类型英文 |存储的值类型 |
@ -27,97 +30,153 @@ outline: deep
数据类型之间的转换函数包括:`int`、`str`。 数据类型之间的转换函数包括:`int`、`str`。
#### 算数优先级 ### 算数优先级
与数学中计算符一样,铁锈中算数运算符有优先级区别。`%`和`*`和`/`的优先级大于`+`和`-`。 与数学中计算符一样,铁锈中算数运算符有优先级区别。`%`和`*`和`/`的优先级大于`+`和`-`。
### 比较运算符 ## 比较运算符
::: tip
以下的内容为逻辑中用于`比较`的运算符。
:::
#### 如果 ### if
代码:if 中文释义:如果 #### if-代码简介
代码:if 中文释义:如果 类型:逻辑函数
#### if-要点指示
`if`是大部分逻辑运算的开头(select等不需要if),用于在支持逻辑的键引入逻辑判断。 `if`是大部分逻辑运算的开头(select等不需要if),用于在支持逻辑的键引入逻辑判断。
#### if-演示例子
<!-- 若要连续嵌套请直接使用Html原生代码 -->
<div class="alert callout tip">
<p>演示例子:</p>
</div>
```ini ```ini
[action] [action]
autoTrigger:if self.maxHp() > memory.emx_hp autoTrigger:if self.maxHp() > memory.emx_hp
``` ```
#### 小于 <hr>
代码:< 中文释义:小于<br>
### <
#### <-代码简介
代码:< 中文释义:小于 类型:比较运算符
#### <-要点指示
小于用于在逻辑布尔值中比较两个数的大小,格式为`数据a < 数据b``a<b`则整个式子的值为`true`否则为`false` 小于用于在逻辑布尔值中比较两个数的大小,格式为`数据a < 数据b``a<b`则整个式子的值为`true`否则为`false`
#### <-演示例子
<!-- 自定义的提示框请使用原生Html进行套入 -->
<div class="alert callout note">
<p class="title">
<span class="icon icon-note"></span>要点指示:</p>
</div>
```ini ```ini
[action] [action]
autoTrigger:if memory.a < memory.b autoTrigger:if memory.a < memory.b
``` ```
#### 大于 <hr>
代码:> 中文释义:大于<br>
同上,格式为`数据a > 数据b`,若`a>b`则整个式子的值为`true`,否则为`false`。
#### 小于等于 ### >
代码:<= 中文释义:小于等于<br> #### >-代码简介
同上,若`a<=b`则整个式子的值为`true`,否则为`false`。 代码:> 中文释义:大于 类型:比较运算符
#### >-要点指示
大于用于在逻辑布尔值中比较两个数的大小,格式为`数据a > 数据b`,若`a>b`则整个式子的值为`true`,否则为`false`。
#### >-演示例子
```ini
[action]
autoTrigger:if memory.a > memory.b
```
#### 大于等于 <hr>
代码:>= 中文释义:大于等于<br>
同上,若`a>=b`则整个式子的值为`true`,否则为`false`。
#### 等于 ### <=
代码:== 中文释义:等于<br> #### <=-代码简介
代码:<= 中文释义:小于等于 类型:比较运算符
#### <=-要点指示
小于等于用于在逻辑布尔值中比较两个数的大小,格式为`数据a <= 数据b`,若`a<=b`则整个式子的值为`true`,否则为`false`。
#### <=-演示例子
```ini
[action]
autoTrigger:if memory.a <= memory.b
```
<hr>
### >=
#### >=-代码简介
代码:>= 中文释义:大于等于 类型:比较运算符
#### >=-要点指示
大于等于用于在逻辑布尔值中比较两个数的大小,格式为`数据a >= 数据b`,若`a>=b`则整个式子的值为`true`,否则为`false`。
#### >=-演示例子
```ini
[action]
autoTrigger:if memory.a >= memory.b
```
<hr>
### ==
#### ==-代码简介
代码:== 中文释义:等于 类型:比较运算符
#### ==-要点指示
等于用于在逻辑布尔值中比较值是否相同,格式为`数据a = 数据b`,若`a=b`则整个式子的值为`true`,否则为`false`。
::: tip ::: tip
请注意,铁锈中等于的符号为<font color=orange>==</font><font color=orange>=</font>在铁锈中用于赋值或参数。 请注意,铁锈中等于的符号为<font color=orange>==</font><font color=orange>=</font>在铁锈中用于赋值或参数。
::: :::
#### ==-演示例子
```ini
[action]
autoTrigger:if memory.a == memory.b
```
<hr>
同上,若`a=b`则整个式子的值为`true`,否则为`false`。 ### !=
#### !=-代码简介
代码:!= 中文释义:不等于 类型:比较运算符
#### !=-要点指示
不等于用于在逻辑布尔值中比较值是否相同,格式为`数据a = 数据b`,若`a!=b`则整个式子的值为`true`,否则为`false`。
#### !=-演示例子
```ini
[action]
autoTrigger:if memory.a != memory.b
```
#### 不等于 <hr>
代码:!= 中文释义:不等于<br>
同上,若`a!=b`则整个式子的值为`true`,否则为`false`。
### 逻辑运算符 ## 逻辑运算符
::: tip
以下的内容为逻辑中用于`进行逻辑运算`的运算符,它们的结果都是`boolean`类型。
:::
#### 且 ### and
代码:and 中文释义:且<br> #### and-代码简介
代码:and 中文释义:且 类型:逻辑运算符
#### and-要点指示
::: tip ::: tip
<font color=orange>and</font>用于连接两个逻辑判断,只有在这两个逻辑判断的值都为<font color=orange>true</font>时,<font color=orange>and</font>的值才为true。 <font color=orange>and</font>用于连接两个逻辑判断,只有在这两个逻辑判断的值都为<font color=orange>true</font>时,<font color=orange>and</font>的值才为true。
<br> <br>
::: :::
<!-- 自定义的提示框请使用原生Html进行套入 --> #### and-演示例子
<div class="alert callout note">
<p class="title">
<span class="icon icon-note"></span>要点指示:</p>
</div>
<!-- 并保证首尾留有一行换行以便Markdown正确解析 -->
```ini ```ini
[action] [action]
autoTrigger:if memory.a < memory.b and memory.a > memory.c autoTrigger:if memory.a < memory.b and memory.a > memory.c
# 在这个例子中只有a小于b且a大于c时自动触发才会被触发 # 在这个例子中只有a小于b且a大于c时自动触发才会被触发
``` ```
#### 或 <hr>
代码:or 中文释义:或<br>
### or
#### or-代码简介
代码:or 中文释义:或 类型:逻辑运算符
#### or-要点指示
::: tip ::: tip
<font color=orange>or</font>用于连接两个逻辑判断,只要这两个逻辑判断的值有一个为<font color=orange>true</font>时,<font color=orange>or</font>的值就为true。 <font color=orange>or</font>用于连接两个逻辑判断,只要这两个逻辑判断的值有一个为<font color=orange>true</font>时,<font color=orange>or</font>的值就为true。
<br>
::: :::
#### 非 #### or-演示例子
代码:not 中文释义:非<br> ```ini
[action]
autoTrigger:if memory.a < memory.b or memory.a > memory.c
# 在这个例子中只要a小于b或a大于c自动触发就会被触发
```
<hr>
### not
#### not-代码简介
代码:not 中文释义:非 类型:逻辑运算符
#### not-要点指示
::: tip ::: tip
<font color=orange>not</font>用于将某个逻辑判断的值取反,即`true`变`false``false`变`true`。 <font color=orange>not</font>用于将某个逻辑判断的值取反,即`true`变`false``false`变`true`。
::: :::
@ -127,6 +186,9 @@ autoTrigger:if memory.a < memory.b and memory.a > memory.c
<br>推荐<font color=orange>在不确定优先级时打括号</font> <br>推荐<font color=orange>在不确定优先级时打括号</font>
::: :::
#### not-演示例子
:::
<div class="alert callout tip"> <div class="alert callout tip">
<p>演示例子:</p> <p>演示例子:</p>
</div> </div>
@ -141,60 +203,102 @@ autoTrigger:if (memory.a < memory.b or memory.a > memory.c) and not memory.a < m
考考你,在上述这个例子中,满足什么条件才会触发? 考考你,在上述这个例子中,满足什么条件才会触发?
``` ```
```bash [显示答案] ```bash [显示答案]
答案a必须满足小于b和大于c中的一个且a必须小于d自动触发才会被触发。 答案a必须满足小于b和大于c中的一个且a必须小于d自动触发才会被触发。
``` ```
::: :::
<hr>
### 算数运算符
#### 加
代码:+ 中文释义:加<br>
加用于将两个逻辑值相加,得到结果,格式为`数据a + 数据b`。
## 算数运算符
::: tip
以下的内容为逻辑中用于`进行算数运算`的运算符,它们的结果类型为`参与运算的值的`类型。
:::
::: info ::: info
不同数据类型通常<font color=orange>不能直接进行算数运算</font>,但在部分情况下,<font color=orange>number</font><font color=orange>float</font>类型可以混用(建议<font color=orange>所有数值全部使用float</font>来避免混淆)。 不同数据类型通常<font color=orange>不能直接进行算数运算</font>,但在部分情况下,<font color=orange>number</font><font color=orange>float</font>类型可以混用(建议<font color=orange>所有数值全部使用float</font>来避免混淆)。
::: :::
<div class="alert callout tip"> ### +
<p>演示例子:</p> #### +-代码简介
</div> 代码:+ 中文释义:加 类型:算数运算符
#### +-要点指示
加用于将两个逻辑值相加,得到结果,格式为`数据a + 数据b`。
#### +-演示例子
```ini ```ini
[action] [action]
autoTrigger:if (memory.a + memory.c) < memory.b autoTrigger:if (memory.a + memory.c) < memory.b
#内存a和c的值之和需要小于b
``` ```
#### 减 <hr>
代码:- 中文释义:减<br>
### -
#### --代码简介
代码:- 中文释义:减 类型:算数运算符
#### --要点指示
减用于将两个逻辑值相减,得到结果,格式为`数据a - 数据b`。 减用于将两个逻辑值相减,得到结果,格式为`数据a - 数据b`。
::: info ::: info
对于<font color=orange>不满足交换律的运算符</font>,需要注意<font color=orange>运算优先级</font>是否正确。由于铁锈本身bug<font color=orange>在数学上正确的优先级不一定在铁锈中正确</font>,因此可能出现减法顺序混乱等问题。 对于<font color=orange>不满足交换律的运算符</font>,需要注意<font color=orange>运算优先级</font>是否正确。由于铁锈本身bug<font color=orange>在数学上正确的优先级不一定在铁锈中正确</font>,因此可能出现减法顺序混乱等问题。
<br>为了避免可能的问题,请尽量在任何<font color=orange>不满足交换律的运算符</font>两边打上括号。 <br>为了避免可能的问题,请尽量在任何<font color=orange>不满足交换律的运算符</font>两边打上括号。
::: :::
#### 乘 #### --演示例子
代码:* 中文释义:乘<br> ```ini
[action]
autoTrigger:if (memory.a - memory.c) < memory.b
#内存a与c的值之差需要小于b
```
<hr>
### *
#### *-代码简介
代码:* 中文释义:乘 类型:算数运算符
#### *-要点指示
乘用于将两个逻辑值相乘,得到结果,格式为`数据a * 数据b`。 乘用于将两个逻辑值相乘,得到结果,格式为`数据a * 数据b`。
#### *-演示例子
```ini
[action]
autoTrigger:if (memory.a * memory.c) == memory.b
#内存a和c的乘积需要等于b
```
#### 除 <hr>
代码:/ 中文释义:除<br>
### /
#### /-代码简介
代码:/ 中文释义:除 类型:算数运算符
#### /-要点指示
除用于将两个逻辑值相除,得到结果,格式为`数据a / 数据b`。 除用于将两个逻辑值相除,得到结果,格式为`数据a / 数据b`。
#### /-演示例子
```ini
[action]
autoTrigger:if (memory.a / memory.c) == memory.b
#内存a除以c的积需要等于b
```
#### 求余 <hr>
代码:% 中文释义:求余(取模)<br>
求余用于获取两个逻辑值中,第一个除第二个的余数,格式为`数据a % 数据b`。 ### %
例如`7%3=1(7除3余1)` #### %-代码简介
代码:% 中文释义:求余(取模) 类型:算数运算符
#### %-要点指示
求余用于获取两个逻辑值中,第一个除第二个的余数,格式为`数据a % 数据b`,例如`7%3=1(7除3余1)`。
#### %-演示例子
```ini
[action]
autoTrigger:if (memory.a % memory.c) == memory.b
#内存a除以c的余数需要等于b
```
### 单位统计 <hr>
#### 通用统计关键字 ## 单位统计
::: tip
以下的内容为逻辑中用于`单位数值获取`的函数,它们的类型与单位此项数值对应。
:::
### 通用统计关键字
单位统计中部分通用的关键字: 单位统计中部分通用的关键字:
1. `greaterThan` 大于 1. `greaterThan` 大于
2. `lessThan` 小于 2. `lessThan` 小于
@ -202,7 +306,7 @@ autoTrigger:if (memory.a + memory.c) < memory.b
4. `full` 4. `full`
5. `equalTo` 等于 5. `equalTo` 等于
#### 内置参数 ### 内置参数-单一或无传参
单位统计中部分内置参数返回代码(由于过于简单不单独列出): 单位统计中部分内置参数返回代码(由于过于简单不单独列出):
1. `self.hp()` 生命值 1. `self.hp()` 生命值
2. `self.maxHp()` 最大生命值 2. `self.maxHp()` 最大生命值
@ -242,6 +346,10 @@ autoTrigger:if (memory.a + memory.c) < memory.b
36. `game.mapHeight()` 地图高度 36. `game.mapHeight()` 地图高度
37. `game.nukesEnabled()` 是否启用核武器 37. `game.nukesEnabled()` 是否启用核武器
### 内置参数-需要传参
<!-- 这一部分因为###被占用,无法按照传统格式 -->
self.hasResources() self.hasResources()
代码:self.hasResources() 中文释义:有资源 返回类型:boolean<br> 代码:self.hasResources() 中文释义:有资源 返回类型:boolean<br>
@ -283,7 +391,7 @@ self.numberOfQueuedWaypoints()
`self.numberOfQueuedWaypoints()`用于返回队列中路径点的数量。格式为`self.numberOfQueuedWaypoints(type="路径点类型")`。 `self.numberOfQueuedWaypoints()`用于返回队列中路径点的数量。格式为`self.numberOfQueuedWaypoints(type="路径点类型")`。
#### 单位运动与定位 ### 单位运动与定位
这部分代码的返回值全部为`boolean`类型,用于检测单位的运动和位置情况 这部分代码的返回值全部为`boolean`类型,用于检测单位的运动和位置情况
1. `self.underwater/self.isUnderwater()` 单位在水下 1. `self.underwater/self.isUnderwater()` 单位在水下
2. `self.gound/self.ground/self.isAtGroundHeight()` 单位位于地面高度 2. `self.gound/self.ground/self.isAtGroundHeight()` 单位位于地面高度
@ -314,7 +422,7 @@ self.numberOfQueuedWaypoints()
### 单位计时 ## 单位计时
self.hasTakenDemage() self.hasTakenDemage()
代码:self.hasTakenDemage() 中文释义:受到伤害 返回类型:bool<br> 代码:self.hasTakenDemage() 中文释义:受到伤害 返回类型:bool<br>
@ -351,7 +459,7 @@ resetCustomTimer:true
showMessageToPlayers:10秒过去了 showMessageToPlayers:10秒过去了
``` ```
### 杂项 ## 杂项
thisActionIndex/index() thisActionIndex/index()
代码:thisActionIndex/index() 中文释义:索引 返回类型:float(number)<br> 代码:thisActionIndex/index() 中文释义:索引 返回类型:float(number)<br>
@ -494,9 +602,9 @@ if parent.readUnitMemory("boostTarget", type="unit") == self
#如果 父单位内存boostTarget的值等于自己 #如果 父单位内存boostTarget的值等于自己
``` ```
### 单位参照 ## 单位参照
#### 当前动作目标 ### 当前动作目标
::: info ::: info
`thisActionTarget`是一条用于获取当前行动目标的代码,不同的行动中,`thisActionTarget`也不同(或没有)。 `thisActionTarget`是一条用于获取当前行动目标的代码,不同的行动中,`thisActionTarget`也不同(或没有)。
以下是不同情况下的`thisActionTarget`。 以下是不同情况下的`thisActionTarget`。
@ -537,7 +645,7 @@ autoTriggerOnEvent: touchTargetSuccess <br>
<!-- 这一段内容是这样的不知道怎么优化格式好一点ling帮帮 :D --> <!-- 这一段内容是这样的不知道怎么优化格式好一点ling帮帮 :D -->
#### 杂项 ### 杂项
attachment attachment
代码:self.attachment() 中文释义:附属物 返回类型:unit/marker<br> 代码:self.attachment() 中文释义:附属物 返回类型:unit/marker<br>
@ -614,7 +722,7 @@ nullUnit
代码:nullUnit 中文释义:空单位 返回类型:unit/marker<br> 代码:nullUnit 中文释义:空单位 返回类型:unit/marker<br>
`nullUnit`是铁锈的空单位,用于比较/判断。 `nullUnit`是铁锈的空单位,用于比较/判断。
#### 标记 ### 标记
getAsMarker getAsMarker
代码:self.getAsMarker() 中文释义:获取标记 返回类型:unit/marker<br> 代码:self.getAsMarker() 中文释义:获取标记 返回类型:unit/marker<br>
@ -637,7 +745,7 @@ eventSource
代码:eventSource 中文释义:事件源 返回类型:event<br> 代码:eventSource 中文释义:事件源 返回类型:event<br>
`eventSource`用于获取`autoTriggerOnEvent`当前触发器,没有则返回`null`,可以看作对于事件的`autoTriggerOnEvent`。 `eventSource`用于获取`autoTriggerOnEvent`当前触发器,没有则返回`null`,可以看作对于事件的`autoTriggerOnEvent`。
#### 全局函数 ### 全局函数
readUnitMemory readUnitMemory
代码:self.readUnitMemory() 中文释义:读取单位内存 返回类型:跟随内存类型<br> 代码:self.readUnitMemory() 中文释义:读取单位内存 返回类型:跟随内存类型<br>
@ -753,11 +861,11 @@ rnd
::: :::
lowercase lowercase
代码:lowercase() 中文释义:转小写 返回类型:float<br> 代码:lowercase() 中文释义:转小写 返回类型:string<br>
`lowercase`用于将一个字符串中的大写字符全部转换成小写,格式为`lowercase(string)`。<br> `lowercase`用于将一个字符串中的大写字符全部转换成小写,格式为`lowercase(string)`。<br>
uppercase uppercase
代码:uppercase() 中文释义:转大写 返回类型:float<br> 代码:uppercase() 中文释义:转大写 返回类型:string<br>
`uppercase`用于将一个字符串中的小写字符全部转换成大写,格式为`uppercase(string)`。<br> `uppercase`用于将一个字符串中的小写字符全部转换成大写,格式为`uppercase(string)`。<br>
direction direction