Skip to content

Commit fb981d2

Browse files
committed
update npc docs
1 parent 9765467 commit fb981d2

31 files changed

+306
-509
lines changed

frontend/i18n/zh-Hans/docusaurus-plugin-content-docs/current/scripting/functions/NPC_GetEnteringVehicle.md

Lines changed: 43 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -17,7 +17,7 @@ tags: ["npc", "车辆"]
1717

1818
## 返回值
1919

20-
返回 NPC 正在进入的车辆 ID,若未进入任何车辆则返回 INVALID_VEHICLE_ID。
20+
返回 NPC 正在进入的车辆,若未进入任何车辆则返回 `INVALID_VEHICLE_ID`
2121

2222
## 示例
2323

@@ -33,25 +33,58 @@ public OnPlayerCommandText(playerid, cmdtext[])
3333
if (!NPC_IsValid(npcid))
3434
return SendClientMessage(playerid, 0xFF0000FF, "无效的NPC。");
3535

36-
if (!NPC_IsEnteringVehicle(npcid))
37-
return SendClientMessage(playerid, 0xFFFF00FF, "NPC %d 没有进入车辆。", npcid);
36+
// 如果尚未运行,则开始监视
37+
if (PlayerEnterVehicleMonitor[playerid] == INVALID_TIMER_ID)
38+
{
39+
PlayerEnterVehicleMonitor[playerid] = SetTimerEx("CheckNPCEnteringVehicle", 200, true, "i", playerid);
40+
PlayerWasEnteringVehicle[playerid] = false;
41+
SendClientMessage(playerid, 0x00FF00FF, "开始监控 NPC %d 的车辆进入状态。", npcid);
42+
}
43+
else
44+
{
45+
SendClientMessage(playerid, 0xFFFF00FF, "已在监控 NPC %d 的车辆进入状态。", npcid);
46+
}
47+
return 1;
48+
}
49+
return 0;
50+
}
3851

52+
forward CheckNPCEnteringVehicle(playerid);
53+
public CheckNPCEnteringVehicle(playerid)
54+
{
55+
if (!IsPlayerConnected(playerid))
56+
{
57+
StopPlayerEnterVehicleMonitor(playerid);
58+
return 0;
59+
}
60+
61+
new npcid = PlayerNPC[playerid];
62+
if (npcid == INVALID_NPC_ID || !NPC_IsValid(npcid))
63+
{
64+
StopPlayerEnterVehicleMonitor(playerid);
65+
return 0;
66+
}
67+
68+
new bool:isEntering = NPC_IsEnteringVehicle(npcid);
69+
70+
if (isEntering)
71+
{
3972
new vehicleid = NPC_GetEnteringVehicle(npcid);
4073
new seatid = NPC_GetEnteringVehicleSeat(npcid);
4174

42-
if (vehicleid == INVALID_VEHICLE_ID || vehicleid == 0)
43-
return SendClientMessage(playerid, 0xFFFF00FF, "NPC %d 没有待定的目标车辆。", npcid);
44-
45-
SendClientMessage(playerid, 0x00FF00FF, "NPC %d 正在进入车辆 %d (座位 %d)。", npcid, vehicleid, seatid);
46-
return 1;
75+
if (vehicleid != INVALID_VEHICLE_ID && vehicleid != 0)
76+
{
77+
SendClientMessage(playerid, 0xFFFF00FF, "NPC %d 正在进入车辆 %d(座位 %d)", npcid, vehicleid, seatid);
78+
}
4779
}
48-
return 0;
80+
81+
return 1;
4982
}
5083
```
5184
5285
## 注意事项
5386
54-
- 若 NPC 当前未进入车辆,则返回 INVALID_VEHICLE_ID
87+
- 若 NPC 当前未进入车辆,则返回 `INVALID_VEHICLE_ID`
5588
- 此函数与 NPC 已乘坐的车辆不同
5689
- NPC 必须正在进入过程中,此函数才会返回有效 ID
5790

frontend/i18n/zh-Hans/docusaurus-plugin-content-docs/current/scripting/functions/NPC_GetEnteringVehicleID.md

Lines changed: 45 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -24,7 +24,7 @@ tags: ["npc", "车辆"]
2424
```c
2525
public OnPlayerCommandText(playerid, cmdtext[])
2626
{
27-
if (!strcmp(cmdtext, "/checkenteringvehicleid", true))
27+
if (!strcmp(cmdtext, "/checkenterveh", true))
2828
{
2929
new npcid = PlayerNPC[playerid];
3030
if (npcid == INVALID_NPC_ID)
@@ -33,22 +33,59 @@ public OnPlayerCommandText(playerid, cmdtext[])
3333
if (!NPC_IsValid(npcid))
3434
return SendClientMessage(playerid, 0xFF0000FF, "无效的NPC。");
3535

36-
new vehicleid = NPC_GetEnteringVehicleID(npcid);
37-
38-
if (vehicleid == INVALID_VEHICLE_ID)
39-
return SendClientMessage(playerid, 0xFFFF00FF, "NPC %d 没有进入任何车辆。", npcid);
40-
41-
SendClientMessage(playerid, 0x00FF00FF, "NPC %d 正在进入车辆ID: %d", npcid, vehicleid);
36+
// 如果尚未运行,则开始监视
37+
if (PlayerEnterVehicleMonitor[playerid] == INVALID_TIMER_ID)
38+
{
39+
PlayerEnterVehicleMonitor[playerid] = SetTimerEx("CheckNPCEnteringVehicle", 200, true, "i", playerid);
40+
PlayerWasEnteringVehicle[playerid] = false;
41+
SendClientMessage(playerid, 0x00FF00FF, "开始监控 NPC %d 的车辆进入状态。", npcid);
42+
}
43+
else
44+
{
45+
SendClientMessage(playerid, 0xFFFF00FF, "已在监控 NPC %d 的车辆进入状态。", npcid);
46+
}
4247
return 1;
4348
}
4449
return 0;
4550
}
51+
52+
forward CheckNPCEnteringVehicle(playerid);
53+
public CheckNPCEnteringVehicle(playerid)
54+
{
55+
if (!IsPlayerConnected(playerid))
56+
{
57+
StopPlayerEnterVehicleMonitor(playerid);
58+
return 0;
59+
}
60+
61+
new npcid = PlayerNPC[playerid];
62+
if (npcid == INVALID_NPC_ID || !NPC_IsValid(npcid))
63+
{
64+
StopPlayerEnterVehicleMonitor(playerid);
65+
return 0;
66+
}
67+
68+
new bool:isEntering = NPC_IsEnteringVehicle(npcid);
69+
70+
if (isEntering)
71+
{
72+
new vehicleid = NPC_GetEnteringVehicle(npcid);
73+
new seatid = NPC_GetEnteringVehicleSeat(npcid);
74+
75+
if (vehicleid != INVALID_VEHICLE_ID && vehicleid != 0)
76+
{
77+
SendClientMessage(playerid, 0xFFFF00FF, "NPC %d 正在进入车辆 %d(座位 %d)", npcid, vehicleid, seatid);
78+
}
79+
}
80+
81+
return 1;
82+
}
4683
```
4784
4885
## 注意事项
4986
5087
- 此函数与 NPC_GetEnteringVehicle 类似
51-
- 若 NPC 未在进入车辆的过程中,则返回 INVALID_VEHICLE_ID
88+
- 若 NPC 未在进入车辆的过程中,则返回 `INVALID_VEHICLE_ID`
5289
- 一旦 NPC 成功进入车辆,该值变为 0
5390
5491
## 相关函数

frontend/i18n/zh-Hans/docusaurus-plugin-content-docs/current/scripting/functions/NPC_GetEnteringVehicleSeat.md

Lines changed: 43 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -24,7 +24,7 @@ tags: ["npc", "车辆"]
2424
```c
2525
public OnPlayerCommandText(playerid, cmdtext[])
2626
{
27-
if (!strcmp(cmdtext, "/checkentervehseat", true))
27+
if (!strcmp(cmdtext, "/checkenterveh", true))
2828
{
2929
new npcid = PlayerNPC[playerid];
3030
if (npcid == INVALID_NPC_ID)
@@ -33,15 +33,52 @@ public OnPlayerCommandText(playerid, cmdtext[])
3333
if (!NPC_IsValid(npcid))
3434
return SendClientMessage(playerid, 0xFF0000FF, "无效的NPC。");
3535

36-
if (!NPC_IsEnteringVehicle(npcid))
37-
return SendClientMessage(playerid, 0xFFFF00FF, "NPC %d 没有进入任何车辆。", npcid);
36+
// 如果尚未运行,则开始监视
37+
if (PlayerEnterVehicleMonitor[playerid] == INVALID_TIMER_ID)
38+
{
39+
PlayerEnterVehicleMonitor[playerid] = SetTimerEx("CheckNPCEnteringVehicle", 200, true, "i", playerid);
40+
PlayerWasEnteringVehicle[playerid] = false;
41+
SendClientMessage(playerid, 0x00FF00FF, "开始监控 NPC %d 的车辆进入状态。", npcid);
42+
}
43+
else
44+
{
45+
SendClientMessage(playerid, 0xFFFF00FF, "已在监控 NPC %d 的车辆进入状态。", npcid);
46+
}
47+
return 1;
48+
}
49+
return 0;
50+
}
51+
52+
forward CheckNPCEnteringVehicle(playerid);
53+
public CheckNPCEnteringVehicle(playerid)
54+
{
55+
if (!IsPlayerConnected(playerid))
56+
{
57+
StopPlayerEnterVehicleMonitor(playerid);
58+
return 0;
59+
}
3860

61+
new npcid = PlayerNPC[playerid];
62+
if (npcid == INVALID_NPC_ID || !NPC_IsValid(npcid))
63+
{
64+
StopPlayerEnterVehicleMonitor(playerid);
65+
return 0;
66+
}
67+
68+
new bool:isEntering = NPC_IsEnteringVehicle(npcid);
69+
70+
if (isEntering)
71+
{
72+
new vehicleid = NPC_GetEnteringVehicle(npcid);
3973
new seatid = NPC_GetEnteringVehicleSeat(npcid);
4074

41-
SendClientMessage(playerid, 0x00FF00FF, "NPC %d 正在进入车辆ID: %d", npcid, seatid);
42-
return 1;
75+
if (vehicleid != INVALID_VEHICLE_ID && vehicleid != 0)
76+
{
77+
SendClientMessage(playerid, 0xFFFF00FF, "NPC %d 正在进入车辆 %d(座位 %d)", npcid, vehicleid, seatid);
78+
}
4379
}
44-
return 0;
80+
81+
return 1;
4582
}
4683
```
4784

frontend/i18n/zh-Hans/docusaurus-plugin-content-docs/current/scripting/functions/NPC_GetNodePointCount.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -67,7 +67,7 @@ public CheckNodeProgress(npcid, nodeid)
6767
if (NPC_IsPlayingNode(npcid))
6868
{
6969
new totalPoints = NPC_GetNodePointCount(nodeid);
70-
printf("NPC %d正在导航节点%d,共有%d个点",
70+
printf("NPC %d 正在导航节点%d,共有%d个点",
7171
npcid, nodeid, totalPoints);
7272
}
7373
}

frontend/i18n/zh-Hans/docusaurus-plugin-content-docs/current/scripting/functions/NPC_GetSkin.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -28,7 +28,7 @@ public OnPlayerCommandText(playerid, cmdtext[])
2828
{
2929
new npcid = PlayerNPC[playerid];
3030
if (npcid == INVALID_NPC_ID)
31-
return SendClientMessage(playerid, 0xFF0000FF, "您正在调试的NPC无效。");
31+
return SendClientMessage(playerid, 0xFF0000FF, "您没有在调试NPC。");
3232

3333
if (!NPC_IsValid(npcid))
3434
return SendClientMessage(playerid, 0xFF0000FF, "无效的NPC。");

frontend/i18n/zh-Hans/docusaurus-plugin-content-docs/current/scripting/functions/NPC_GetVehicle.md

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -36,7 +36,7 @@ public OnPlayerCommandText(playerid, cmdtext[])
3636
new vehicleid = NPC_GetVehicle(npcid);
3737

3838
if (vehicleid == INVALID_VEHICLE_ID)
39-
SendClientMessage(playerid, 0xFFFF00FF, "NPC %d 没有在任何车辆里面。", npcid);
39+
SendClientMessage(playerid, 0xFFFF00FF, "NPC %d 没有在任何车辆中。", npcid);
4040
else
4141
SendClientMessage(playerid, 0x00FF00FF, "NPC %d 正在车辆里面: %d", npcid, vehicleid);
4242
return 1;
@@ -48,7 +48,6 @@ public OnPlayerCommandText(playerid, cmdtext[])
4848
## 注意事项
4949
5050
- 若 NPC 未在任何车辆中则返回 INVALID_VEHICLE_ID
51-
- 使用此函数检查 NPC 是在驾驶还是作为乘客
5251
5352
## 相关函数
5453

frontend/i18n/zh-Hans/docusaurus-plugin-content-docs/current/scripting/functions/NPC_GetVehicleGearState.md

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -34,9 +34,9 @@ public OnPlayerCommandText(playerid, cmdtext[])
3434
return SendClientMessage(playerid, 0xFF0000FF, "无效的NPC。");
3535

3636
if (NPC_GetVehicle(npcid) == INVALID_VEHICLE_ID)
37-
return SendClientMessage(playerid, 0xFFFF00FF, "NPC %d 没有在任何车辆里面。", npcid);
37+
return SendClientMessage(playerid, 0xFFFF00FF, "NPC %d 没有在任何车辆中。", npcid);
3838

39-
new gearState = NPC_GetVehicleGearState(npcid);
39+
new LANDING_GEAR_STATE:gearState = NPC_GetVehicleGearState(npcid);
4040

4141
if (gearState == LANDING_GEAR_STATE_UP)
4242
SendClientMessage(playerid, 0x00FF00FF, "NPC %d: 起落架已收起", npcid);

frontend/i18n/zh-Hans/docusaurus-plugin-content-docs/current/scripting/functions/NPC_GetVehicleHealth.md

Lines changed: 13 additions & 51 deletions
Original file line numberDiff line numberDiff line change
@@ -22,63 +22,27 @@ tags: ["npc", "车辆"]
2222
## 示例
2323

2424
```c
25-
public OnGameModeInit()
26-
{
27-
new npcid = NPC_Create("Driver");
28-
NPC_Spawn(npcid);
29-
30-
new vehicleid = CreateVehicle(411, 1958.33, 1343.12, 15.36, 0.0, -1, -1, 300);
31-
NPC_PutInVehicle(npcid, vehicleid, 0);
32-
33-
new Float:health = NPC_GetVehicleHealth(npcid);
34-
printf("NPC %d车辆生命值: %.1f", npcid, health);
35-
36-
return 1;
37-
}
38-
3925
public OnPlayerCommandText(playerid, cmdtext[])
4026
{
41-
if (!strcmp(cmdtext, "/checkvehicles", true))
27+
if (!strcmp(cmdtext, "/checkvehiclehealth", true))
4228
{
43-
new npcs[MAX_NPCS];
44-
new count = NPC_GetAll(npcs);
45-
46-
new Float:health = NPC_GetVehicleHealth(0);
47-
48-
new status[16];
49-
if (health >= 800.0)
50-
status = "极佳";
51-
else if (health >= 600.0)
52-
status = "良好";
53-
else if (health >= 400.0)
54-
status = "受损";
55-
else if (health >= 200.0)
56-
status = "严重受损";
57-
else
58-
status = "危急";
59-
60-
new msg[64];
61-
format(msg, sizeof(msg), "NPC 0车辆: %.1f HP - %s", health, status);
62-
SendClientMessage(playerid, 0xFFFFFFFF, msg);
29+
new npcid = PlayerNPC[playerid];
30+
if (npcid == INVALID_NPC_ID)
31+
return SendClientMessage(playerid, 0xFF0000FF, "您没有在调试NPC。");
6332

64-
return 1;
65-
}
66-
return 0;
67-
}
33+
if (!NPC_IsValid(npcid))
34+
return SendClientMessage(playerid, 0xFF0000FF, "无效的NPC。");
6835

69-
forward MonitorVehicleHealth();
70-
public MonitorVehicleHealth()
71-
{
72-
new Float:health = NPC_GetVehicleHealth(0);
36+
if (NPC_GetVehicle(npcid) == INVALID_VEHICLE_ID)
37+
return SendClientMessage(playerid, 0xFFFF00FF, "NPC %d 没有在任何车辆中。", npcid);
7338

74-
if (health < 300.0)
75-
{
76-
printf("警告: NPC 0车辆生命值危急: %.1f", health);
39+
new Float:health;
40+
NPC_GetVehicleHealth(npcid, health);
7741

78-
// 如果过低则自动修复
79-
NPC_SetVehicleHealth(0, 1000.0);
80-
printf("已自动修复NPC 0车辆");
42+
SendClientMessage(playerid, 0x00FF00FF, "NPC %d 车辆生命值: %.2f", npcid, health);
43+
return 1;
8144
}
45+
return 0;
8246
}
8347
```
8448
@@ -87,8 +51,6 @@ public MonitorVehicleHealth()
8751
- 若 NPC 不在车辆中则返回 0.0
8852
- 车辆生命值通常范围在 0.0 到 1000.0 之间
8953
- 生命值低于 250.0 通常意味着车辆会起火
90-
- 仅在 NPC 为车辆驾驶员时有效
91-
- 使用此函数监控车辆状况以进行维护或更换
9254
9355
## 相关函数
9456

0 commit comments

Comments
 (0)