Molang
intermediate
简介
几乎所有表达式都会计算为一个数值;如果某个表达式无法直接得出数值,你可以使用operator(运算符)将其转换为数值。你可以简单地将Molang视为一个大型数学方程式。
当返回除0以外的任何数字时,方程式会被判定为true(真)。当提到returning(返回)时,我指的是方程式的输出结果。虽然也存在return语句,但我通常不会使用它,因此本文不会讨论相关内容。
访问数值
在Molang中,主要有三种访问和使用数值的方式(查询、变量和临时变量):
查询是游戏返回的只读数值。你无法设置这些值,只能读取它们。(格式:
query.example_query|q.example_query)变量是可读写的数值,你可以对其进行操作。这些变量可以通过Molang进行设置和读取。(格式:
variable.example_variable|v.example_variable)- 此外还存在硬编码变量,它们的功能与查询几乎相同,但只能在特定情况下使用。
临时变量的功能与变量几乎相同,但它们仅存在于当前作用域中。(格式:
temp.example_temp|t.example_temp)- "作用域"可以指当前的
for_each或loop循环,也可以仅指当前表达式(如果未在上述循环中使用)。
- "作用域"可以指当前的
处理数值
逻辑运算符可用于将非数值转换为1或0。这些运算符包括:
==、!=、<、>、<=、>=。示例:
q.property('wiki:size') == 'small'—— 当实体的wiki:size属性设置为small时,该表达式将计算为1/true。还有另一组逻辑运算符可用于将数值组合成
and(与)/or(或)语句,通常用于需要多个条件同时为真或只需其中一个为真的情况。&&表示and语句,||表示or语句。- 示例:
q.is_sneaking && q.is_using_item—— 当潜行且使用物品时,该表达式将计算为1/true。 - 示例:
q.is_sneaking || q.is_jumping—— 当跳跃或潜行时,该表达式将计算为1/true。
- 示例:
括号
( )在组合数值或执行数学运算时也非常有用。- 示例:
q.is_angry && (q.property('wiki:size') == 'medium' || q.property('wiki:size') == 'large')—— 当愤怒且wiki:size为medium或large时,该表达式将计算为1/true。
- 示例:
条件运算符可以充当
if/else语句。- 二元条件运算符仅使用
?。当使用该运算符时,它会根据输入值是否为true来输出你的值或0。- 示例:
q.is_sneaking ? 5—— 当潜行时输出5,否则返回0。
- 示例:
- 三元条件运算符使用
?和:。当使用该运算符时,它会根据输入值是否为true来输出两个给定值中的一个。- 示例:
q.is_sneaking ? 10 : 3—— 当潜行时输出10,否则返回3。
- 示例:
- 二元条件运算符仅使用






