meta data for this page
  •  

📚 差别

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

到此差别页面的链接

两侧同时换到之前的修订记录前一修订版
后一修订版
前一修订版
scripting:world:character [2024/12/27 02:53] 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
-character.AIDistance = 3.0; //float+character.AIDistance = 32; //float
 ``` ```
  
行 528: 行 539:
 ### character.Skin ### character.Skin
  
-> 设置角色皮肤贴图,内置ID参考[《世界资源实例汇总》](reference/instances),设置为`-1`可请求一个随机皮肤(如存在)。 +> 设置角色皮肤\贴图,内置ID参考[《世界资源实例汇总》](reference/instances),设置为`-1`可请求一个随机皮肤(如存在)。
-+
-> *注意:需自行确保皮肤贴图及ID正确,理论上人类也可以穿上**动物或外部导入皮肤**(如存在),但同时也会导致贴图异常。*+
  
 ```javascript ```javascript
行 577: 行 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;
 ``` ```
  
行 597: 行 636:
 ```javascript ```javascript
 character.ActionContinue; //int character.ActionContinue; //int
 +```
 +
 +
 +
 +### character.IsAI
 +
 +> 获取角色是否为NPC(AI)。
 +
 +```javascript
 +character.IsAI: bool
 +```
 +
 +
 +
 +### character.IsPlayer
 +
 +> 获取角色是否为玩家控制的角色。
 +
 +```javascript
 +character.IsPlayer: bool
 ``` ```
  
行 856: 行 915:
 ### character.FlyMode ### character.FlyMode
  
-> 设置角色飞行模式(不是一种手机模式),角色将可以进行飞天移动。+> 设置角色**飞行模式**(不是一种手机模式),角色将可以进行飞天移动。
 > >
 > **注意:当角色死亡、乘坐或离开载具,将自动取消飞行模式,同时无法激活。** > **注意:当角色死亡、乘坐或离开载具,将自动取消飞行模式,同时无法激活。**
行 880: 行 939:
 ```javascript ```javascript
 character.FlyTime: float character.FlyTime: float
 +```
 +
 +
 +
 +### character.GhostMode
 +
 +> 设置角色**幽灵模式**开关,此模式下将可以穿透其他角色和载具对象。
 +
 +```javascript
 +character.GhostMode = false;
 ``` ```
  
行 974: 行 1043:
 ```javascript ```javascript
 character.PropCount = 0; character.PropCount = 0;
 +```
 +
 +
 +
 +### character.PropAlpha
 +
 +> 设置**角色手持物品**透明度,默认值是`255`。
 +
 +```javascript
 +character.PropAlpha = 255;
 ``` ```
  
行 987: 行 1066:
  
 ```javascript ```javascript
-function Character.Create( type: int, pos: Vector, angle: float = 0 ): Character+function Character.Create( type: int, pos: Vector, angle: float = 0, skin: number ): Character
 ``` ```
  
行 994: 行 1073:
 Character.Create(0, Vector(0, 0, 0), 0); Character.Create(0, Vector(0, 0, 0), 0);
 ``` ```
 +
 +- **`type`:**生物类型
 +- **`pos`:**坐标位置
 +- **`angle`:**角度
 +- **`skin`:**皮肤ID(人形角色更多使用)
 +- **`randomStyle`:**是否随机样式(执行`character.RandomStyle()`)
  
  
行 1057: 行 1142:
 ```javascript ```javascript
 function character.Damage( damage: int, from: Entity = null, reason: int = 0, localHitPos: Vector = Vector(0, 0, 0) ) function character.Damage( damage: int, from: Entity = null, reason: int = 0, localHitPos: Vector = Vector(0, 0, 0) )
 +```
 +
 +
 +
 +### character.RandomStyle()
 +
 +> 随机当前角色样式(配色`character.Color1 | characterColor2`)。
 +>
 +> 此方法主要用于**人形角色**,对于其他类型角色更多是模型随机叠加颜色。
 +
 +```javascript
 +function character.RandomStyle()
 ``` ```
  
行 1174: 行 1271:
 ### character.Eject() ### character.Eject()
  
-> 使角色离开当前载具,如没有驾驶\乘坐载具则无效果。 +> 使角色弹出驾驶状态(包括`Vehicle | Mount`等驾驶、乘坐、骑乘状态)
-+
-> 也可以使用`character.Vehicle = null`有相同的效果+
  
 ```javascript ```javascript
行 1186: 行 1281:
 ### character.SetVehicle() ### character.SetVehicle()
  
-> 使角色进入一辆载具的某个驾驶\乘客位置,`Slot=0`为驾驶位。+> 使角色进入一辆载具的某个**驾驶\乘客**位置,`Slot=0`为驾驶位。
 > >
-> 此方法`Vehicle.SetOccupant`作用相同。+> 此方法`vehicle.SetOccupant()`作用相同。
 > >
  
行 1318: 行 1413:
 ```javascript ```javascript
 function character.GetRemodel(): Model function character.GetRemodel(): Model
-``` 
- 
- 
- 
-### character.SetExtend() 
- 
-> 设置角色扩展属性(例如:人形角色的头部、头发),==**此功能更多只适用于人形角色**==。 
-> 
- 
-```javascript 
-function character.SetExtend( type: index, index: int ) 
-``` 
- 
-- **type:**角色扩展类型(人形角色:0=头部\1=头发) 
-- **index:**角色扩展索引 
- 
- 
- 
-### character.GetExtend() 
- 
-> 获取角色扩展属性。 
- 
-```javascript 
-function character.GetExtend( type: int ): int 
 ``` ```
  
行 1382: 行 1453:
 | 0                | 头部(支持动物角色)                       | | 0                | 头部(支持动物角色)                       |
 | 1                | 身体(支持动物角色)                      | | 1                | 身体(支持动物角色)                      |
-               | 手持物品(关键、右手位置 |+               | 手持物品位置Prop)                   |
 | 4                | 左手位置                   | | 4                | 左手位置                   |
 | 5                | 右手位置                   | | 5                | 右手位置                   |
行 1426: 行 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
 +```
 +
 +
 +
 +
 +
 +
 +
 +
 +
 +
 +
 +
 +
 +
 +
 +
 +
 +
 +
 +
 +