Skip to content

Commit aa74fb1

Browse files
committed
update npc docs
1 parent 25eb9c6 commit aa74fb1

File tree

12 files changed

+556
-0
lines changed

12 files changed

+556
-0
lines changed
Lines changed: 38 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,38 @@
1+
---
2+
title: OnNPCFinishMovePathPoint
3+
sidebar_label: OnNPCFinishMovePathPoint
4+
description: 当NPC完成路径中特定点的移动时被调用
5+
tags: ["npc", "移动", "路径"]
6+
---
7+
8+
<VersionWarnZH_Hans version='omp v1.1.0.changemelater' />
9+
10+
## 描述
11+
12+
此回调函数在 NPC 完成路径中特定点的移动时被调用。
13+
14+
| 名称 | 描述 |
15+
| ------- | -------------------------- |
16+
| npcid | 完成路径点移动的 NPC 的 ID |
17+
| pathid | 正在遵循的路径的 ID |
18+
| pointid | 已到达的路径点的索引 |
19+
20+
## 示例
21+
22+
## 注意事项
23+
24+
- 此回调函数会为路径中的每个点触发
25+
- 使用 [OnNPCFinishMovePath](OnNPCFinishMovePath) 来检测整个路径何时完成
26+
- NPC 必须使用 [NPC_MoveByPath](../functions/NPC_MoveByPath) 沿路径移动
27+
28+
## 相关函数
29+
30+
- [NPC_MoveByPath](../functions/NPC_MoveByPath): 使 NPC 遵循路径移动
31+
- [NPC_CreatePath](../functions/NPC_CreatePath): 创建新路径
32+
- [NPC_AddPointToPath](../functions/NPC_AddPointToPath): 向路径添加点
33+
- [NPC_GetCurrentPathPointIndex](../functions/NPC_GetCurrentPathPointIndex): 获取当前路径点
34+
35+
## 相关回调函数
36+
37+
- [OnNPCFinishMovePath](OnNPCFinishMovePath): 当 NPC 完成整个路径时被调用
38+
- [OnNPCFinishMove](OnNPCFinishMove): 当 NPC 完成任何移动时被调用
Lines changed: 40 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,40 @@
1+
---
2+
title: NPC_GetPlayerAimingAt
3+
sidebar_label: NPC_GetPlayerAimingAt
4+
description: 获取NPC当前瞄准的玩家ID
5+
tags: ["npc", "玩家", "瞄准", "武器"]
6+
---
7+
8+
<VersionWarnZH_Hans version='omp v1.1.0.changemelater' />
9+
10+
## 描述
11+
12+
获取 NPC 当前瞄准的玩家 ID。
13+
14+
| 名称 | 描述 |
15+
| ----- | --------- |
16+
| npcid | NPC 的 ID |
17+
18+
## 返回值
19+
20+
返回被瞄准的玩家 ID,若未瞄准任何玩家则返回 `INVALID_PLAYER_ID`
21+
22+
## 示例
23+
24+
## 注意事项
25+
26+
- 若 NPC 使用 [NPC_AimAtPlayer](NPC_AimAtPlayer) 瞄准玩家,则返回玩家 ID
27+
- 若 NPC 未瞄准任何玩家,则返回 `INVALID_PLAYER_ID`
28+
- 这与使用 [NPC_AimAt](NPC_AimAt) 瞄准固定位置不同
29+
30+
## 相关函数
31+
32+
- [NPC_AimAtPlayer](NPC_AimAtPlayer): 使 NPC 瞄准玩家
33+
- [NPC_IsAimingAtPlayer](NPC_IsAimingAtPlayer): 检查 NPC 是否瞄准特定玩家
34+
- [NPC_IsAiming](NPC_IsAiming): 检查 NPC 是否正在瞄准
35+
- [NPC_GetPlayerMovingTo](NPC_GetPlayerMovingTo): 获取 NPC 正在移动向的玩家
36+
37+
## 相关回调函数
38+
39+
- [OnNPCWeaponShot](../callbacks/OnNPCWeaponShot): 当 NPC 开火时被调用
40+
- [OnNPCGiveDamage](../callbacks/OnNPCGiveDamage): 当 NPC 对玩家造成伤害时被调用
Lines changed: 39 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,39 @@
1+
---
2+
title: NPC_GetPlayerMovingTo
3+
sidebar_label: NPC_GetPlayerMovingTo
4+
description: 获取NPC当前正移向的玩家ID
5+
tags: ["npc", "玩家", "移动"]
6+
---
7+
8+
<VersionWarn version='omp v1.1.0.changemelater' />
9+
10+
## 描述
11+
12+
获取 NPC 当前正移向的玩家 ID。
13+
14+
| 名称 | 描述 |
15+
| ----- | --------- |
16+
| npcid | NPC 的 ID |
17+
18+
## 返回值
19+
20+
返回正移向的玩家 ID,若未向任何玩家移动则返回 `INVALID_PLAYER_ID`
21+
22+
## 示例
23+
24+
## 注意事项
25+
26+
- 若 NPC 使用 [NPC_MoveToPlayer](NPC_MoveToPlayer) 向玩家移动,则返回玩家 ID
27+
- 若 NPC 未向任何玩家移动,则返回 `INVALID_PLAYER_ID`
28+
- 这与使用 [NPC_Move](NPC_Move) 向固定位置移动不同
29+
30+
## 相关函数
31+
32+
- [NPC_MoveToPlayer](NPC_MoveToPlayer): 使 NPC 向玩家移动
33+
- [NPC_IsMovingToPlayer](NPC_IsMovingToPlayer): 检查 NPC 是否向特定玩家移动
34+
- [NPC_IsMoving](NPC_IsMoving): 检查 NPC 是否正在移动
35+
- [NPC_GetPlayerAimingAt](NPC_GetPlayerAimingAt): 获取 NPC 正在瞄准的玩家
36+
37+
## 相关回调函数
38+
39+
- [OnNPCFinishMove](../callbacks/OnNPCFinishMove): 当 NPC 完成移动时被调用
Lines changed: 58 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,58 @@
1+
---
2+
title: NPC_GetSkin
3+
sidebar_label: NPC_GetSkin
4+
description: 获取NPC的皮肤/模型ID
5+
tags: ["npc", "皮肤", "模型"]
6+
---
7+
8+
<VersionWarnZH_Hans version='omp v1.1.0.changemelater' />
9+
10+
## 描述
11+
12+
获取 NPC 的皮肤/模型 ID。
13+
14+
| 名称 | 描述 |
15+
| ----- | --------- |
16+
| npcid | NPC 的 ID |
17+
18+
## 返回值
19+
20+
返回 NPC 的皮肤/模型 ID,若无效则返回-1。
21+
22+
## 示例
23+
24+
```c
25+
public OnPlayerCommandText(playerid, cmdtext[])
26+
{
27+
if (!strcmp(cmdtext, "/checkskin", true))
28+
{
29+
new npcid = PlayerNPC[playerid];
30+
if (npcid == INVALID_NPC_ID)
31+
return SendClientMessage(playerid, 0xFF0000FF, "您正在调试的NPC无效。");
32+
33+
if (!NPC_IsValid(npcid))
34+
return SendClientMessage(playerid, 0xFF0000FF, "无效的NPC。");
35+
36+
new skinid = NPC_GetSkin(npcid);
37+
38+
SendClientMessage(playerid, 0x00FF00FF, "NPC %d 的皮肤: %d", npcid, skinid);
39+
return 1;
40+
}
41+
return 0;
42+
}
43+
```
44+
45+
## 注意事项
46+
47+
- 返回 NPC 当前使用的皮肤/模型
48+
- 使用 [NPC_SetSkin](NPC_SetSkin) 来更改 NPC 的皮肤
49+
50+
## 相关函数
51+
52+
- [NPC_SetSkin](NPC_SetSkin): 设置 NPC 皮肤/模型
53+
- [NPC_IsValid](NPC_IsValid): 检查 NPC 是否有效
54+
- [NPC_IsSpawned](NPC_IsSpawned): 检查 NPC 是否已生成
55+
56+
## 相关回调函数
57+
58+
- [OnNPCSpawn](../callbacks/OnNPCSpawn): 当 NPC 生成时被调用
Lines changed: 65 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,65 @@
1+
---
2+
title: NPC_GetVelocity
3+
sidebar_label: NPC_GetVelocity
4+
description: 获取NPC的速度
5+
tags: ["npc", "速度", "移动"]
6+
---
7+
8+
<VersionWarnZH_Hans version='omp v1.1.0.changemelater' />
9+
10+
## 描述
11+
12+
获取 NPC 的速度。
13+
14+
| 名称 | 描述 |
15+
| -------- | --------------------------------------- |
16+
| npcid | NPC 的 ID |
17+
| &Float:x | 用于存储 X 速度分量的变量,通过引用传递 |
18+
| &Float:y | 用于存储 Y 速度分量的变量,通过引用传递 |
19+
| &Float:z | 用于存储 Z 速度分量的变量,通过引用传递 |
20+
21+
## 返回值
22+
23+
成功时返回 `true`,失败时返回 `false`
24+
25+
## 示例
26+
27+
```c
28+
public OnPlayerCommandText(playerid, cmdtext[])
29+
{
30+
if (!strcmp(cmdtext, "/checkvelocity", true))
31+
{
32+
new npcid = PlayerNPC[playerid];
33+
if (npcid == INVALID_NPC_ID)
34+
return SendClientMessage(playerid, 0xFF0000FF, "您正在调试的NPC无效。");
35+
36+
if (!NPC_IsValid(npcid))
37+
return SendClientMessage(playerid, 0xFF0000FF, "无效的NPC。");
38+
39+
new Float:velX, Float:velY, Float:velZ;
40+
NPC_GetVelocity(npcid, velX, velY, velZ);
41+
42+
SendClientMessage(playerid, 0x00FF00FF, "NPC %d 的速度: X=%.2f, Y=%.2f, Z=%.2f", npcid, velX, velY, velZ);
43+
return 1;
44+
}
45+
return 0;
46+
}
47+
```
48+
49+
## 注意事项
50+
51+
:::warning
52+
53+
- 所有速度参数都通过引用传递,将被修改
54+
55+
:::
56+
57+
## 相关函数
58+
59+
- [NPC_SetVelocity](NPC_SetVelocity): 设置 NPC 速度
60+
- [NPC_GetPos](NPC_GetPos): 获取 NPC 位置
61+
- [NPC_Move](NPC_Move): 使 NPC 移动到指定位置
62+
63+
## 相关回调函数
64+
65+
- [OnNPCFinishMove](../callbacks/OnNPCFinishMove): 当 NPC 完成移动时被调用
Lines changed: 71 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,71 @@
1+
---
2+
title: NPC_GetWeaponSkillLevel
3+
sidebar_label: NPC_GetWeaponSkillLevel
4+
description: 获取NPC的武器技能等级
5+
tags: ["npc", "武器", "技能"]
6+
---
7+
8+
<VersionWarnZH_Hans version='omp v1.1.0.changemelater' />
9+
10+
## 描述
11+
12+
获取 NPC 的武器技能等级。
13+
14+
| 名称 | 描述 |
15+
| ----- | -------------------------- |
16+
| npcid | NPC 的 ID |
17+
| skill | 武器技能类型 (WEAPONSKILL) |
18+
19+
## 返回值
20+
21+
返回武器技能等级(0-999),失败时返回 `UNKNOWN_WEAPONSKILL`
22+
23+
## 示例
24+
25+
```c
26+
public OnPlayerCommandText(playerid, cmdtext[])
27+
{
28+
if (!strcmp(cmdtext, "/checkweaponskill", true))
29+
{
30+
new npcid = PlayerNPC[playerid];
31+
if (npcid == INVALID_NPC_ID)
32+
return SendClientMessage(playerid, 0xFF0000FF, "您正在调试的NPC无效。");
33+
34+
if (!NPC_IsValid(npcid))
35+
return SendClientMessage(playerid, 0xFF0000FF, "无效的NPC。");
36+
37+
new pistol = NPC_GetWeaponSkillLevel(npcid, WEAPONSKILL_PISTOL);
38+
new silenced = NPC_GetWeaponSkillLevel(npcid, WEAPONSKILL_PISTOL_SILENCED);
39+
new deagle = NPC_GetWeaponSkillLevel(npcid, WEAPONSKILL_DESERT_EAGLE);
40+
new shotgun = NPC_GetWeaponSkillLevel(npcid, WEAPONSKILL_SHOTGUN);
41+
new micro = NPC_GetWeaponSkillLevel(npcid, WEAPONSKILL_MICRO_UZI);
42+
new mp5 = NPC_GetWeaponSkillLevel(npcid, WEAPONSKILL_MP5);
43+
new ak47 = NPC_GetWeaponSkillLevel(npcid, WEAPONSKILL_AK47);
44+
new m4 = NPC_GetWeaponSkillLevel(npcid, WEAPONSKILL_M4);
45+
new sniper = NPC_GetWeaponSkillLevel(npcid, WEAPONSKILL_SNIPERRIFLE);
46+
47+
SendClientMessage(playerid, 0x00FF00FF, "NPC %d 的武器技能:", npcid);
48+
SendClientMessage(playerid, 0xFFFFFFFF, "手枪:%d 消音手枪:%d 沙漠之鹰:%d 霰弹枪:%d", pistol, silenced, deagle, shotgun);
49+
SendClientMessage(playerid, 0xFFFFFFFF, "微型冲锋枪:%d MP5:%d AK47:%d M4:%d 狙击枪:%d", micro, mp5, ak47, m4, sniper);
50+
return 1;
51+
}
52+
return 0;
53+
}
54+
```
55+
56+
## 注意事项
57+
58+
- 武器技能影响准确度和射击行为
59+
- 技能等级范围从 0(差)到 999(杀手级)
60+
- 若 NPC 无效或技能类型无效,则返回 `UNKNOWN_WEAPONSKILL`
61+
62+
## 相关函数
63+
64+
- [NPC_SetWeaponSkillLevel](NPC_SetWeaponSkillLevel): 设置 NPC 武器技能等级
65+
- [NPC_GetWeaponAccuracy](NPC_GetWeaponAccuracy): 获取武器准确度
66+
- [NPC_SetWeaponAccuracy](NPC_SetWeaponAccuracy): 设置武器准确度
67+
- [NPC_GetWeapon](NPC_GetWeapon): 获取 NPC 武器
68+
69+
## 相关回调函数
70+
71+
- [OnNPCWeaponShot](../callbacks/OnNPCWeaponShot): 当 NPC 开火时被调用
Lines changed: 39 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,39 @@
1+
---
2+
title: NPC_IsMovingToPlayer
3+
sidebar_label: NPC_IsMovingToPlayer
4+
description: 检查NPC是否正在向指定玩家移动
5+
tags: ["npc", "玩家", "移动"]
6+
---
7+
8+
<VersionWarn version='omp v1.1.0.changemelater' />
9+
10+
## 描述
11+
12+
检查 NPC 是否正在向指定玩家移动。
13+
14+
| 名称 | 描述 |
15+
| -------- | --------------- |
16+
| npcid | NPC 的 ID |
17+
| playerid | 要检查的玩家 ID |
18+
19+
## 返回值
20+
21+
若 NPC 正在向指定玩家移动则返回 `true`,否则返回 `false`
22+
23+
## 示例
24+
25+
## 注意事项
26+
27+
- 此函数检查 NPC 是否被命令使用 [NPC_MoveToPlayer](NPC_MoveToPlayer) 向指定玩家移动
28+
- 若 NPC 未移动或正在向不同目标移动,则返回 false
29+
30+
## 相关函数
31+
32+
- [NPC_MoveToPlayer](NPC_MoveToPlayer): 使 NPC 向玩家移动
33+
- [NPC_IsMoving](NPC_IsMoving): 检查 NPC 是否正在移动
34+
- [NPC_StopMove](NPC_StopMove): 停止 NPC 移动
35+
- [NPC_GetPlayerMovingTo](NPC_GetPlayerMovingTo): 获取 NPC 正移向的玩家 ID
36+
37+
## 相关回调函数
38+
39+
- [OnNPCFinishMove](../callbacks/OnNPCFinishMove): 当 NPC 完成移动时被调用
Lines changed: 40 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,40 @@
1+
---
2+
title: NPC_IsSpawned
3+
sidebar_label: NPC_IsSpawned
4+
description: 检查NPC是否已在游戏世界中生成
5+
tags: ["npc", "生成"]
6+
---
7+
8+
<VersionWarnZH_Hans version='omp v1.1.0.changemelater' />
9+
10+
## 描述
11+
12+
检查 NPC 是否已在游戏世界中生成。
13+
14+
| 名称 | 描述 |
15+
| ----- | --------- |
16+
| npcid | NPC 的 ID |
17+
18+
## 返回值
19+
20+
若 NPC 已生成则返回 `true`,否则返回 `false`
21+
22+
## 示例
23+
24+
## 注意事项
25+
26+
- NPC 必须先使用 [NPC_Create](NPC_Create) 创建,然后才能生成
27+
- 使用 [NPC_Spawn](NPC_Spawn) 来生成 NPC
28+
- 这与 [NPC_IsValid](NPC_IsValid) 不同,后者检查 NPC 是否存在
29+
30+
## 相关函数
31+
32+
- [NPC_Spawn](NPC_Spawn): 生成 NPC
33+
- [NPC_Respawn](NPC_Respawn): 重新生成 NPC
34+
- [NPC_IsValid](NPC_IsValid): 检查 NPC 是否有效
35+
- [NPC_IsDead](NPC_IsDead): 检查 NPC 是否死亡
36+
37+
## 相关回调函数
38+
39+
- [OnNPCSpawn](../callbacks/OnNPCSpawn): 当 NPC 生成时被调用
40+
- [OnNPCRespawn](../callbacks/OnNPCRespawn): 当 NPC 重新生成时被调用

0 commit comments

Comments
 (0)