Differences

This shows you the differences between two versions of the page.

Link to this comparison view

Both sides previous revision Previous revision
Next revision
Previous revision
Last revision Both sides next revision
component:signals:zh [2023/11/29 09:02]
hfsr [屏幕]
component:signals:zh [2023/12/27 04:27]
hfsr [信号]
Line 2: Line 2:
 ==== ====
  
-信号是由某些外部来源发送给电脑的信息,可被用于各种用途。它们需要至少有个名字,然后还可以有任意数量的(简单)参数。注意,电脑也可以向自己的信号队列中添加信号。+信号是由某些外部来源发送给电脑的信息,可被用于各种用途。它们需要至少有个名字,然后还可以有任意数量的(简单)参数。注意,电脑自己也可以向自己的信号队列中添加信号。
  
 信号可以通过调用[[api:​computer:​zh|computer.pullSignal()]]或其简单封装[[api:​event:​zh|event.pull()]]来消耗。 信号可以通过调用[[api:​computer:​zh|computer.pullSignal()]]或其简单封装[[api:​event:​zh|event.pull()]]来消耗。
Line 75: Line 75:
  
 - `key_down(keyboardAddress:​ string, char: number, code: number, playerName: string)`  ​ - `key_down(keyboardAddress:​ string, char: number, code: number, playerName: string)`  ​
-  当用户在屏幕上输入东西时,附着的[[block:​keyboard:​zh|键盘]]会将这个信号添加到信号队列。准确来说,应该是当用户*按下*一个键时。如果用户一直按着这个键,这个事件可能会被重复触发。 +  当用户在屏幕上输入内容时,附着其上的[[block:​keyboard:​zh|键盘]]会将信号添加到队列。准确来说,应该是当用户**按下**一个键时。如果用户一直按着这个键,这个事件可能会被重复触发。  ​ 
-  //重要//这个信号*经过核查*,也就是说,只有当玩家是该电脑的[[:​computer_users:​zh|登记用户]](或该电脑没有登记任何用户)时,信号才会入队。+**注意**此信号**已经过核查**,也就是说,只有当玩家是该电脑的[[:​computer_users:​zh|登记用户]](或该电脑没有登记任何用户)时,信号才会入队。 ​  
 +\\
 - `key_up(keyboardAddress:​ string, char: number, code: number, playerName: string)` ​   ​ - `key_up(keyboardAddress:​ string, char: number, code: number, playerName: string)` ​   ​
-  当用户在屏幕上输入东西时,其连接的[[block:​keyboard:​zh|键盘]]会将这个信号添加到信号队列。准确来说,应该是当用户*松开*一个键时。 +  当用户在屏幕上输入内容时,附着的[[block:​keyboard:​zh|键盘]]会将信号添加到队列。准确来说,应该是当用户**松开**一个键时。 
-  注意,玩家可以不释放按键就将自己“移开”屏幕,这在大多数情况下*应该*会得到处理(我认为),但有时仍会失。这意味着该功能或多或少还处于……观察阶段,如果被证明不可行的话,该功能会在以后的某个时间点被删除。 +  ​注意,玩家可以不松开按键就将自己“移开”屏幕范围,这在大多数情况下**应该**会得到处理(我认为),但有时仍会处理。这意味着该功能或多或少还处于……观察阶段,被证明不可行,该功能会在以后的某个时间点被删除。 
-  //​重要//​这个信号*经过核查*,也就是说,只有当玩家是该电脑的[[:​computer_users:​zh|登记用户]](或该电脑没有登记任何用户)时,信号才会入队。+**注意**此信号**已经过核查**,也就是说,只有当玩家是该电脑的[[:​computer_users:​zh|登记用户]](或该电脑没有登记任何用户)时,信号才会入队。 ​  
 +\\
 - `clipboard(keyboardAddress:​ string, value: string, playerName: string)`  ​ - `clipboard(keyboardAddress:​ string, value: string, playerName: string)`  ​
-  当用户从剪切板上粘贴文本(Shift+Ins 或鼠标中键)时,[[block:​keyboard:​zh|键盘]]会将这个信号添加到信号队列。注意,可粘贴的文本最大长度是有限制的(可在配置文件中修改)。 +  当用户从剪切板上粘贴文本(shift+ins或鼠标中键)时,[[block:​keyboard:​zh|键盘]]会将信号添加到信号队列。注意,文本可粘贴的最大长度是有限制的(可在配置文件中修改)。 
-  //​重要//​这个信号*经过核查*,也就是说,只有当玩家是该电脑的[[:​computer_users:​zh|登记用户]](或该电脑没有登记任何用户)时,信号才会入队。+**注意**此信号**已经过核查**,也就是说,只有当玩家是该电脑的[[:​computer_users:​zh|登记用户]](或该电脑没有登记任何用户)时,信号才会入队。
  
  
-红石卡与红石 I/O 端口+红石卡与红石I/​O端口
 --------------------- ---------------------
  
 - `redstone_changed(address:​ string, side: number, oldValue: number, newValue: number[, color: number])`  ​ - `redstone_changed(address:​ string, side: number, oldValue: number, newValue: number[, color: number])`  ​
-  当传入的红石信号改变时,[[component:​redstone:​zh|红石组件]]会将这个信号添加到事件队列。`address` 是[[block:​redstone_io:​zh|红石 I/O 端口]]或被安装在检测到红石信号的机器的[[item:​redstone_card:​zh|红石卡]]的地址。`side` 是[[api:​sides:​zh|sides]]的一个常数,表示红石信号在哪一侧发生变化。这方向是相对于组件容器的,因此对于计算机和机器人来说,具体的值取决于它们的朝向。对于红石 I/O 端口来说,方向是绝对的。`color` 参数只有在配合集束线缆使用时才会引入,其值表示发生改变的信号的颜色。+  当传入的红石信号改变时,[[component:​redstone:​zh|红石组件]]会将信号添加到队列。 ​  
 +  ​`address`是[[block:​redstone_io:​zh|红石I/​O端口]]或检测到红石信号的机器安装的[[item:​redstone_card:​zh|红石卡]]的地址。`side`是[[api:​sides:​zh|sides(方向)]]常量其中之一,表示哪一侧的红石信号发生变化。这里的方向是相对于组件容器的相对方向,因此对电脑和机器人而言,具体的值取决于它们的朝向。对于红石I/​O端口来说,方向是绝对的。`color`参数只有在配合集束线缆使用时才会引入,其值表示发生改变的信号的颜色。
  
  
Line 98: Line 101:
  
 - `motion(address:​string,​ relativeX:​number,​ relativeY:​number,​ relativeZ:​number[,​ entityName:​string])`  ​ - `motion(address:​string,​ relativeX:​number,​ relativeY:​number,​ relativeZ:​number[,​ entityName:​string])`  ​
-  当检测范围内的生物实体移超过配置的灵敏度时,这个信号会被[[block:​motion_sensor:​zh|运动传感器]]添加到事件队列。`relativeX`、`relativeY` 和 `relativeZ` 是被检测到的物体相对于运动传感器的位置。+  当检测范围内的活动实体移速超过配置的灵敏度时,这个信号会被[[block:​motion_sensor:​zh|运动传感器]]添加到事件队列。`relativeX`、`relativeY`和`relativeZ`是被检测到的物体相对于运动传感器的位置。
  
 网卡 网卡
Line 104: Line 107:
  
 - `modem_message(receiverAddress:​ string, senderAddress:​ string, port: number, distance: number, ...)`  ​ - `modem_message(receiverAddress:​ string, senderAddress:​ string, port: number, distance: number, ...)`  ​
-  当在开放的端口上收到息时,[[item:​lan_card:​zh|网卡]] (包括无线网卡)会将这个信号添加到事件队列。`receiverAddress` 是收到息的网卡的地址,`senderAddress` 是发送息的网卡的地址。注意,如果消息经过了一个或多个[[block:​switch:​zh|中继器]],那么发送者的地址可能与实际发送息的网卡地址不同。`port` 是收到息的端口。`distance` 只有收到*无线*网络信息时才有效,此时它的值是接收者到发送者之间的距离。对于普通的网卡来说,这个永远零。其他所有参数都是用户定义的,并对应用户在调用 [[component:​modem:​zh|modem.send()]] 或 `modem.broadcast()` 时指定的内容,用作信息载荷。+  当在开放的端口上收到息时,[[item:​network_card:​zh|网卡]](包括无线网卡)会将信号添加到事件队列。 ​  
 +  ​`receiverAddress` 是收到息的网卡的地址,`senderAddress`是发送息的网卡的地址。注意,若信息经过了一个或多个[[block:​switch:​zh|中继器]],那么发送者的地址可能与实际发送息的网卡地址不同。`port`是收到息的端口。`distance`参数只有收到**无线**网络信息时才有效,此时它的值是接收者到发送者之间的距离。对于普通的网卡来说,值永远零。其他所有参数都是用户定义的,并对应用户在调用[[component:​modem:​zh|modem.send()]] 或 `modem.broadcast()`时指定的内容,信息载荷。
  
  
Line 111: Line 115:
  
 - `inventory_changed(slot:​ number)`  ​ - `inventory_changed(slot:​ number)`  ​
-  当机器人的物品栏发生变化时,机器人会将这个信号添加到事件队列。注意只包括储存在槽中的物品种类变化。增加或减少一个物品堆中的物品数量并不会触发这个信号。然而玩家手动将机器人库存中的一物品换成另一件物品(例如玩家鼠标持有木棍,然后点击机器人库存中的火把,玩家鼠标上的物品会变成火把,机器人对应槽中的物品会变成木棍)时实际上会触发*两个*信号:一个是移除火把的信号,一个是与此同时放入木棍的信号。使用 [[api:​robot:​zh|robot.transferTo()]] 交换两个槽中的物品甚至会触发*四个*信号——原因同上,但这次涉及到两个槽间的物品交换。 +  当机器人的物品栏发生变化时,机器人会将信号添加到队列。注意只包括储存在槽中的物品种类变化。增加或减少一个物品堆中的物品数量并不会触发这个信号。 ​  
-  此外,这个信号只针对机器人实际可寻址的物品栏,也就是说,它不会因备(工具、卡槽内的卡、升级槽内的升级组件)的变化而被触发。+  ​玩家手动将机器人库存中的一物品换成另一(例如火把木棍)时实际上会触发**两个**信号:一个是移除火把的信号,一个是与此同时放入木棍的信号。使用[[api:​robot:​zh|robot.transferTo()]]交换两个槽中的物品甚至会触发**四个**信号——原因同上,但这次涉及到两个槽间的物品交换。 ​  
 +  此外,信号只针对机器人物品栏中有地址的部分,也就是说,它不会因备(工具、扩展卡、升级)的变化而被触发。
  
  
-抽象总线+抽象总线
 -------- --------
 +
 +来自[Stargate Tech 2](http://​stargatetech.theender.net/​miscellaneous/​home.html)。
  
 - `bus_message(protocolId:​ number, senderAddress:​ number, targetAddress:​ number, data: table, metadata: table)` ​ - `bus_message(protocolId:​ number, senderAddress:​ number, targetAddress:​ number, data: table, metadata: table)` ​
-  - `protocolId` 是所使用的协议的版本。 +  - `protocolId`是所使用的协议的版本。 
-  - `senderAddress` 是发送息的设备地址。 +  - `senderAddress`是发送息的设备地址。 
-  - `targetAddress` 是所指向的设备地址(网络广播为 -1)。 +  - `targetAddress`是息的目标设备地址(网络广播为 -1)。 
-  - `data`是发送数据的表。 +  - `data`是包含所发送数据的表。 
-  - `metadata` 是发送设备所特有的数据的表。+  - `metadata`是特定于发送设备的数据的表。
  
  
-运输组件+车辆
 -------- --------
  
-**重要**: 这个组件已被移动到附属模组 OpenComponents。+来自[Redstone in motion / remain in motion(红石运动机构)](https://​www.curseforge.com/​minecraft/​mc-mods/​remain-in-motion) 
 + 
 +<del>**注意:**组件的驱动程序已被移动到附属模组OpenComponents中。</​del> ​  
 +OpenComponents模组的内容已合并进主模组
  
 - `carriage_moved(success:​ boolean[, reason:​string[,​ x:number, y: number, z: number]])`  ​ - `carriage_moved(success:​ boolean[, reason:​string[,​ x:number, y: number, z: number]])`  ​
-  ​这个信号会在运输组件发出移动或模拟命令后入队列。`success` 参数指出移动或模拟指令是否执行成功,即运载工具是否移动如果移动失败,`reason` ​包含的就是错误信息。取决于错误信息,(`x`,​ `y`, `z`)会是造成移动失败的方块在世界中的坐标。+  ​信号会在车辆组件成功执行移动或模拟移动命令后入队列。`success`参数指出移动或模拟移动指令是否执行成功,即车辆是否移动。移动失败,`reason`即为错误信息。取决于错误信息,(`x`,​`y`,​`z`)会是造成移动失败的方块在世界中的坐标。
  
 目录 目录
 ----------- -----------
-{{page>api:​contents:​zh&​noheader&​noeditbutton&​nouser&​nofooter}}+{{page>component:​contents:​zh&​noheader&​noeditbutton&​nouser&​nofooter}}