meta data for this page
  •  

📚 差别

这里会显示出您选择的修订版和当前版本之间的差别。

到此差别页面的链接

两侧同时换到之前的修订记录前一修订版
后一修订版
前一修订版
scripting:world:player [2025/05/27 17:59] bibiboxsscripting:world:player [2025/06/14 04:24] (当前版本) bibiboxs
行 54: 行 54:
 ``` ```
  
 +
 +
 +### OnPlayerNetworkCMD( cmd, arg0, arg1, arg2 )
 +
 +> 当接收到来自玩家客户端发送的**CMD消息**时调用,**这是客户端与服务端传输自定义信息的方式之一**。
 +>
 +> **对于一些特殊情况,可以利用`json to string`进行更详细的内容传输。**
 +
 +[note2]
 +
 +注意:`CMD\RPC`传输支持几个基础类型(`int | float | string | bool`)。
 +
 +[/note]
  
  
行 93: 行 106:
 ```javascript ```javascript
 function OnPlayerVoiceStateChange( player: Player, state: bool ) function OnPlayerVoiceStateChange( player: Player, state: bool )
 +```
 +
 +
 +
 +### OnPlayerFocusEntityChange( player, entity )
 +
 +> 当玩家焦点对象发生改变时调用。
 +
 +```javascript
 +function OnPlayerFocusEntityChange( player: Player, entity: Entity )
 ``` ```
  
行 136: 行 159:
  
 > 当玩家名称发生改变时调用。 > 当玩家名称发生改变时调用。
 +
 +
 +
 +### OnPlayerBackpackPropOperation( player, slot, isMain, isShift )
 +
 +> 当玩家背包请求操作物品时调用。
 +>
 +> 此方法可配合`player.GetBackpackTempProp()`使用。
 +
 +- `isMain`:是否为左键(主要)点击(否则为右键)
 +- `isShift`:是否按住Shift键
 +- `return`:默认返回`true`,决定是否允许后续操作
 +
 +
 +
 +### OnPlayerBackpackPropDiscard( player, prop, isDelete )
 +
 +> 当玩家背包请求扔掉物品时调用。
 +
 +- `isDelete`:是否为请求删除物品(否则视为丢弃)
 +- `return`:默认返回`true`,决定是否允许后续操作
 +
  
  
行 388: 行 433:
 ```javascript ```javascript
 player.FocusPos: Vector player.FocusPos: Vector
 +```
 +
 +
 +
 +### player.FocusEntity
 +
 +> 获取玩家**视角焦点实体**,如果不存在则返回`null`。
 +
 +```javascript
 +player.FocusEntity: Entity
 +```
 +
 +
 +
 +### player.FocusEntityDistance
 +
 +> 获取玩家**视角焦点实体检测距离**,此数值直接影响`FocusEntity`的检测结果,默认距离为`3.0`(`0.0~512.0`)。
 +
 +> **注意:对于远距离视角、鸟瞰视角等情况,应该在合理范围内调高此数值,否则可能距离过短导致无法正确检测。**
 +
 +```javascript
 +player.FocusEntityDistance: float
 ``` ```
  
行 878: 行 945:
 ``` ```
  
 +
 +
 +### player.NetworkRPC()
 +
 +> 为玩家发送一条RPC指令。
 +>
 +> 目标玩家客户端脚本通过`OnServerNetworkRPC()`接收数据。
 +>
 +> **注意:`CMD\RPC`方法仅支持基础类型,并且会自动类型转换。**
 +
 +```javascript
 +function NetworkRPC( rpc: string, arg0: any, arg1: any, arg2: any )
 +```
  
  
行 1300: 行 1380:
 function player.TestVisiblePoint( pos: Vector ): bool function player.TestVisiblePoint( pos: Vector ): bool
 ``` ```
 +
 +
 +
 +### player.SetBackpackOtherTarget()
 +
 +> 设置玩家**额外的观察背包实例**(除本地对象外的另一个背包)。
 +>
 +> 此功能可扩展许多玩法,例如:商店、交易、背包共享等。
 +>
 +> 如果没有设置其他背包实例,玩家背包UI将仅显示自身对象背包。
 +
 +```javascript
 +function player.SetBackpackOtherTarget( otherBackpack: Backpack, observerMode: int = 0 )
 +```
 +
 +- `observerMode`:观察模式,默认为`0`(0=可读写,1=只读)
 +
 +
 +
 +### player.GetBackpackOtherTarget()
 +
 +> 获取玩家**额外的观察背包实例**。
 +
 +```javascript
 +function player.GetBackpackOtherTarget(): Backpack
 +```
 +
 +
 +
 +### player.SetBackpackTempProp()
 +
 +> 设置玩家**临时背包物品**(随鼠标移动的临时选项),可设置为`null`。
 +
 +```javascript
 +function player.SetBackpackTempProp( prop: Prop )
 +```
 +
 +
 +
 +### player.GetBackpackTempProp()
 +
 +> 获取玩家**临时背包物品**(随鼠标移动的临时选项),如不存在则为`prop.IsValid() == false`。
 +
 +```javascript
 +function player.GetBackpackTempProp(): Prop
 +```
 +
 +
 +
 +### player.ReturnBackpackTempProp()
 +
 +> 尝试返回玩家**临时背包物品**(随鼠标移动的临时选项),尝试自动将临时物品添加到背包。
 +>
 +> 此方法与玩家**存在临时物品时关闭背包**效果相同,如果有空位则自动添加到背包并移出临时物品,如果没有空位则触发丢弃事件。
 +>
 +> **注意:有时可能希望处理玩家的背包(例如清空背包),但有可能玩家正在操作临时物品,这样的话`Backpack`常规方式不会处理到临时物品,因此需要留意玩家手中的临时物品。**
 +
 +```javascript
 +function player.ReturnBackpackTempProp(): bool
 +```
 +
 +- `return`:是否正常返回(如果没有临时物品,也会返回`true`)
 +