meta data for this page
  •  

📚 差别

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

到此差别页面的链接

两侧同时换到之前的修订记录前一修订版
后一修订版
前一修订版
scripting:world:character [2024/12/29 23:11] bibiboxsscripting:world:character [2025/08/27 15:08] (当前版本) bibiboxs
行 4: 行 4:
 ## Event ## Event
  
-### OnCharacterSpawn( character )+### OnCharacterSpawn( character, isCreate )
  
 > 当角色**被生成、被调用`Respawn()`**时触发。 > 当角色**被生成、被调用`Respawn()`**时触发。
 +
 +> **注意:如果此时调用`character.Owner`将始终返回`null`,因为玩家绑定角色不可能在`OnCharacterSpawn`前绑定。**
  
  
行 39: 行 41:
 function OnCharacterPropChange( character: Character, oldProp: Prop, newProp: Prop ) function OnCharacterPropChange( character: Character, oldProp: Prop, newProp: Prop )
 ``` ```
- 
- 
- 
-### OnCharacterPropCountChange( character, oldCount, newCount ) 
- 
-> 当角色背包池总数(`character.PropCount`)发生变化时调用。 
-> 
  
  
行 69: 行 64:
 [note2] [note2]
  
-补充:如果`character.CanAction == false`,此事件将会在角色尝试发起攻击后立即触发(仅单次触发,即使是连续攻击道具),但不会发起攻击。+补充:如果`character.CanAction == false`,此事件将会在角色尝试发起攻击后**立即触发**(仅单次触发,即使是连续攻击道具),但不会发起攻击。
  
 [/note] [/note]
行 88: 行 83:
  
 > 当角色**回到\接触地面**时触发,可用`character.FlyTime`获取持续离地时间。 > 当角色**回到\接触地面**时触发,可用`character.FlyTime`获取持续离地时间。
 +
 +
 +
 +### OnCharacterDamageRequest( character, damage, from, type, isImmunity, localHitPos )
 +
 +> 当角色**即将被造成伤害**时调用,此方法允许拦截修改伤害。
 +
 +> 注意:此方法仅用于**修改伤害数值**,但仍然会触发`OnCharacterDamage()`及后续事件。
 +
 +```javascript
 +function OnCharacterDamageRequest( character: Character, damage: int, from: Entity, type: int, isImmunity: bool ): int
 +```
 +
 +- `return`返回新的伤害值,默认为`-1`(不参与修改),否则将修改实际伤害,如果伤害为`0`则不会造成伤害。
  
  
行 93: 行 102:
 ### OnCharacterDamage( character, damage, from, type, isImmunity, localHitPos ) ### OnCharacterDamage( character, damage, from, type, isImmunity, localHitPos )
  
-> 当角色**被尝试造成任何伤害**时调用,如果造成伤害,会在`OnCharacterHealthChange()`之后调用。+> 当角色**被造成伤害**时调用,通常会在`OnCharacterHealthChange()`之后调用。
 > >
 > **有关伤害类型Type,请参考[《世界资源实例汇总——伤害触发类型》](reference/instances)。** > **有关伤害类型Type,请参考[《世界资源实例汇总——伤害触发类型》](reference/instances)。**
行 164: 行 173:
 ### ==Vehicle交互事件== ### ==Vehicle交互事件==
  
-> 有关角色与拾取物的交互行为,具体内容请访问[Vehicle文档](scripting/world/vehicle)查看。+> 有关角色与载具的交互行为,具体内容请访问[Vehicle文档](scripting/world/vehicle)查看。
  
  
行 287: 行 296:
  
 > 设置角色透明度(0~255),默认值是`255`。 > 设置角色透明度(0~255),默认值是`255`。
 +>
 +> **注意:此方法不会修改手持物品透明度(`character.PropAlpha`)。`**
  
 ```javascript ```javascript
 character.Alpha = 255; //int character.Alpha = 255; //int
-``` 
- 
- 
- 
-### character.AlphaEntire 
- 
-> 设置角色透明度变化是否包含全部子对象(例如:手持道具),默认值是`false`。 
- 
-```javascript 
-character.AlphaEntire = false; 
 ``` ```
  
行 372: 行 373:
 ```javascript ```javascript
 character.Armour = 100; character.Armour = 100;
 +```
 +
 +
 +
 +### character.BaseState
 +
 +> 获取角色[基础状态](reference/instances)。
 +
 +```javascript
 +character.BaseState: int
 ``` ```
  
行 436: 行 447:
 ### character.AITarget ### character.AITarget
  
-> 为当前角色设置一个AI目标**对象**,详情参考[《CharacterAI》文档](scripting/extend/character_ai)。+> 为当前角色设置一个AI目标**对象**,详情参考[《CharacterAI》文档](developer/extend/character_ai)。
 > >
 > **注意:当前属性被设置成为`null`的值后,属性`AITargetPos`将被设置为`default`,==两种Target属性只能同时存在一个==。** > **注意:当前属性被设置成为`null`的值后,属性`AITargetPos`将被设置为`default`,==两种Target属性只能同时存在一个==。**
行 448: 行 459:
 ### character.AITargetPos ### character.AITargetPos
  
-> 为当前角色设置一个AI目标**坐标**,详情参考[《CharacterAI》文档](scripting/extend/character_ai)。+> 为当前角色设置一个AI目标**坐标**,详情参考[《CharacterAI》文档](developer/extend/character_ai)。
 > >
 > **注意:当前属性被设置成为`null`的值后,属性`AITargetPos`将被设置为`VECTOR_NULL`(常量,表示无意义\空坐标),==两种Target属性只能同时存在一个==。** > **注意:当前属性被设置成为`null`的值后,属性`AITargetPos`将被设置为`VECTOR_NULL`(常量,表示无意义\空坐标),==两种Target属性只能同时存在一个==。**
行 460: 行 471:
 ### character.AIState ### character.AIState
  
-> 为当前角色设置一个AI状态(行为\性格),详情参考[《CharacterAI》文档](scripting/extend/character_ai)。+> 为当前角色设置一个AI状态(行为\性格),详情参考[《CharacterAI》文档](developer/extend/character_ai)。
  
 ```javascript ```javascript
行 470: 行 481:
 ### character.AIMoveState ### character.AIMoveState
  
-> 为当前角色设置一个AI移动行为状态(自动\行走\奔跑),详情参考[《CharacterAI》文档](scripting/extend/character_ai)。+> 为当前角色设置一个AI移动行为状态(自动\行走\奔跑),详情参考[《CharacterAI》文档](developer/extend/character_ai)。
  
 ```javascript ```javascript
行 480: 行 491:
 ### character.AIDistance ### character.AIDistance
  
-> 为当前角色设置一个AI距离属性(不同AI状态有不同的意义),详情参考[《CharacterAI》文档](scripting/extend/character_ai)。+> 为当前角色设置一个AI距离属性(不同AI状态有不同的意义),详情参考[《CharacterAI》文档](developer/extend/character_ai)。
  
 ```javascript ```javascript
行 575: 行 586:
 ```javascript ```javascript
 character.AdditionSpeedMultiplier = 1.0; character.AdditionSpeedMultiplier = 1.0;
 +```
 +
 +
 +
 +### character.FloatMultiplier
 +
 +> 设置角色**潜水速度(高度)**倍数,默认为`1.0`。
 +
 +```javascript
 +character.FloatMultiplier = 1.0;
 +```
 +
 +
 +
 +### character.SwimMultiplier
 +
 +> 设置角色**游泳速度**倍数(相对于`character.Speed`),默认为`0.6`。
 +
 +```javascript
 +character.SwimMultiplier = 0.3;
 +```
 +
 +
 +
 +### character.CrouchMultiplier
 +
 +> 设置角色**蹲下速度**倍数(相对于`character.Speed`),默认为`0.8`。
 +
 +```javascript
 +character.CrouchMultiplier = 0.8;
 ``` ```
  
行 595: 行 636:
 ```javascript ```javascript
 character.ActionContinue; //int character.ActionContinue; //int
 +```
 +
 +
 +
 +### character.IsAI
 +
 +> 获取角色是否为NPC(AI)。
 +
 +```javascript
 +character.IsAI: bool
 +```
 +
 +
 +
 +### character.IsPlayer
 +
 +> 获取角色是否为玩家控制的角色。
 +
 +```javascript
 +character.IsPlayer: bool
 ``` ```
  
行 854: 行 915:
 ### character.FlyMode ### character.FlyMode
  
-> 设置角色飞行模式(不是一种手机模式),角色将可以进行飞天移动。+> 设置角色**飞行模式**(不是一种手机模式),角色将可以进行飞天移动。
 > >
 > **注意:当角色死亡、乘坐或离开载具,将自动取消飞行模式,同时无法激活。** > **注意:当角色死亡、乘坐或离开载具,将自动取消飞行模式,同时无法激活。**
行 878: 行 939:
 ```javascript ```javascript
 character.FlyTime: float character.FlyTime: float
 +```
 +
 +
 +
 +### character.GhostMode
 +
 +> 设置角色**幽灵模式**开关,此模式下将可以穿透其他角色和载具对象。
 +
 +```javascript
 +character.GhostMode = false;
 ``` ```
  
行 972: 行 1043:
 ```javascript ```javascript
 character.PropCount = 0; character.PropCount = 0;
 +```
 +
 +
 +
 +### character.PropAlpha
 +
 +> 设置**角色手持物品**透明度,默认值是`255`。
 +
 +```javascript
 +character.PropAlpha = 255;
 ``` ```
  
行 1190: 行 1271:
 ### character.Eject() ### character.Eject()
  
-> 使角色离开当前载具,如没有驾驶\乘坐载具则无效果。 +> 使角色弹出驾驶状态(包括`Vehicle | Mount`等驾驶、乘坐、骑乘状态)
-+
-> 也可以使用`character.Vehicle = null`有相同的效果+
  
 ```javascript ```javascript
行 1202: 行 1281:
 ### character.SetVehicle() ### character.SetVehicle()
  
-> 使角色进入一辆载具的某个驾驶\乘客位置,`Slot=0`为驾驶位。+> 使角色进入一辆载具的某个**驾驶\乘客**位置,`Slot=0`为驾驶位。
 > >
-> 此方法`Vehicle.SetOccupant`作用相同。+> 此方法`vehicle.SetOccupant()`作用相同。
 > >
  
行 1374: 行 1453:
 | 0                | 头部(支持动物角色)                       | | 0                | 头部(支持动物角色)                       |
 | 1                | 身体(支持动物角色)                      | | 1                | 身体(支持动物角色)                      |
-               | 手持物品(关键、右手位置 |+               | 手持物品位置Prop)                   |
 | 4                | 左手位置                   | | 4                | 左手位置                   |
 | 5                | 右手位置                   | | 5                | 右手位置                   |
行 1418: 行 1497:
 - **node:**角色节点位置(索引) - **node:**角色节点位置(索引)
 - **isLocal:**是否获取本地空间结果 - **isLocal:**是否获取本地空间结果
 +
 +
 +
 +### character.SetMount()
 +
 +> 设置角色骑乘对象,如果设置为`null`表示取消骑乘。
 +>
 +> 在**驾驶、死亡、目标死亡**等情况下,会自动取消骑乘。
 +
 +> 此方法与`character.Eject()`方法作用相同。
 +
 +```javascript
 +function character.SetMount( target: Character, localPos: Vector = null )
 +```
 +
 +
 +
 +### character.GetMount()
 +
 +> 获取角色骑乘对象。
 +
 +```javascript
 +function character.GetMount(): Character
 +```
 +
 +
 +
 +
 +
 +
 +
 +
 +
 +
 +
 +
 +
 +
 +
 +
 +