meta data for this page
📚 差别
这里会显示出您选择的修订版和当前版本之间的差别。
| 两侧同时换到之前的修订记录前一修订版后一修订版 | 前一修订版 | ||
| scripting:world:character [2024/12/29 23:11] – bibiboxs | scripting: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/ | > **有关伤害类型Type,请参考[《世界资源实例汇总——伤害触发类型》](reference/ | ||
| 行 164: | 行 173: | ||
| ### ==Vehicle交互事件== | ### ==Vehicle交互事件== | ||
| - | > 有关角色与拾取物的交互行为,具体内容请访问[Vehicle文档](scripting/ | + | > 有关角色与载具的交互行为,具体内容请访问[Vehicle文档](scripting/ |
| 行 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/ | ||
| + | |||
| + | ```javascript | ||
| + | character.BaseState: | ||
| ``` | ``` | ||
| 行 436: | 行 447: | ||
| ### character.AITarget | ### character.AITarget | ||
| - | > 为当前角色设置一个AI目标**对象**,详情参考[《CharacterAI》文档](scripting/ | + | > 为当前角色设置一个AI目标**对象**,详情参考[《CharacterAI》文档](developer/ |
| > | > | ||
| > **注意:当前属性被设置成为`null`的值后,属性`AITargetPos`将被设置为`default`,==两种Target属性只能同时存在一个==。** | > **注意:当前属性被设置成为`null`的值后,属性`AITargetPos`将被设置为`default`,==两种Target属性只能同时存在一个==。** | ||
| 行 448: | 行 459: | ||
| ### character.AITargetPos | ### character.AITargetPos | ||
| - | > 为当前角色设置一个AI目标**坐标**,详情参考[《CharacterAI》文档](scripting/ | + | > 为当前角色设置一个AI目标**坐标**,详情参考[《CharacterAI》文档](developer/ |
| > | > | ||
| > **注意:当前属性被设置成为`null`的值后,属性`AITargetPos`将被设置为`VECTOR_NULL`(常量,表示无意义\空坐标),==两种Target属性只能同时存在一个==。** | > **注意:当前属性被设置成为`null`的值后,属性`AITargetPos`将被设置为`VECTOR_NULL`(常量,表示无意义\空坐标),==两种Target属性只能同时存在一个==。** | ||
| 行 460: | 行 471: | ||
| ### character.AIState | ### character.AIState | ||
| - | > 为当前角色设置一个AI状态(行为\性格),详情参考[《CharacterAI》文档](scripting/ | + | > 为当前角色设置一个AI状态(行为\性格),详情参考[《CharacterAI》文档](developer/ |
| ```javascript | ```javascript | ||
| 行 470: | 行 481: | ||
| ### character.AIMoveState | ### character.AIMoveState | ||
| - | > 为当前角色设置一个AI移动行为状态(自动\行走\奔跑),详情参考[《CharacterAI》文档](scripting/ | + | > 为当前角色设置一个AI移动行为状态(自动\行走\奔跑),详情参考[《CharacterAI》文档](developer/ |
| ```javascript | ```javascript | ||
| 行 480: | 行 491: | ||
| ### character.AIDistance | ### character.AIDistance | ||
| - | > 为当前角色设置一个AI距离属性(不同AI状态有不同的意义),详情参考[《CharacterAI》文档](scripting/ | + | > 为当前角色设置一个AI距离属性(不同AI状态有不同的意义),详情参考[《CharacterAI》文档](developer/ |
| ```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; | character.ActionContinue; | ||
| + | ``` | ||
| + | |||
| + | |||
| + | |||
| + | ### character.IsAI | ||
| + | |||
| + | > 获取角色是否为NPC(AI)。 | ||
| + | |||
| + | ```javascript | ||
| + | character.IsAI: | ||
| + | ``` | ||
| + | |||
| + | |||
| + | |||
| + | ### character.IsPlayer | ||
| + | |||
| + | > 获取角色是否为玩家控制的角色。 | ||
| + | |||
| + | ```javascript | ||
| + | character.IsPlayer: | ||
| ``` | ``` | ||
| 行 854: | 行 915: | ||
| ### character.FlyMode | ### character.FlyMode | ||
| - | > 设置角色飞行模式(不是一种手机模式),角色将可以进行飞天移动。 | + | > 设置角色**飞行模式**(不是一种手机模式),角色将可以进行飞天移动。 |
| > | > | ||
| > **注意:当角色死亡、乘坐或离开载具,将自动取消飞行模式,同时无法激活。** | > **注意:当角色死亡、乘坐或离开载具,将自动取消飞行模式,同时无法激活。** | ||
| 行 878: | 行 939: | ||
| ```javascript | ```javascript | ||
| character.FlyTime: | character.FlyTime: | ||
| + | ``` | ||
| + | |||
| + | |||
| + | |||
| + | ### 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 |
| - | > | + | |
| - | > 也可以使用`character.Vehicle | + | |
| ```javascript | ```javascript | ||
| 行 1202: | 行 1281: | ||
| ### character.SetVehicle() | ### character.SetVehicle() | ||
| - | > 使角色进入一辆载具的某个驾驶\乘客位置,`Slot=0`为驾驶位。 | + | > 使角色进入一辆载具的某个**驾驶\乘客**位置,`Slot=0`为驾驶位。 |
| > | > | ||
| - | > 此方法和`Vehicle.SetOccupant`作用相同。 | + | > 此方法与`vehicle.SetOccupant()`作用相同。 |
| > | > | ||
| 行 1374: | 行 1453: | ||
| | 0 | 头部(支持动物角色) | | 0 | 头部(支持动物角色) | ||
| | 1 | 身体(支持动物角色) | | 1 | 身体(支持动物角色) | ||
| - | | 2 | 手持物品(关键)、右手位置 | + | | 3 | 手持物品位置(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(): | ||
| + | ``` | ||
| + | |||
| + | |||
| + | |||
| + | |||
| + | |||
| + | |||
| + | |||
| + | |||
| + | |||
| + | |||
| + | |||
| + | |||
| + | |||
| + | |||
| + | |||
| + | |||
| + | |||