跳到主要内容

NPC_SetKeys

注意

这个函数是在omp v1.5.8.3079中添加的,在以前的版本中不起作用!

描述

设置 NPC 的按键状态,模拟按键操作。

参数说明
npcidNPC 的 ID
upAndDown上/下键状态
leftAndRight左/右键状态
keys要设置的按键组合

返回值

如果操作成功则返回true,否则返回false

示例

public OnPlayerCommandText(playerid, cmdtext[])
{
if (!strcmp(cmdtext, "/setkeys ", true, 9))
{
new npcid = PlayerNPC[playerid];
if (npcid == INVALID_NPC_ID)
return SendClientMessage(playerid, 0xFF0000FF, "你没有在调试NPC。");

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

new idx = 9;
new keys = 0, updown = 0, leftright = 0;

// 处理按键
while (cmdtext[idx] == ' ') idx++;
if (cmdtext[idx] == '\0')
return SendClientMessage(playerid, 0xFF0000FF, "用法:/setkeys [按键] [上下] [左右]");
keys = strval(cmdtext[idx]);

// 跳到下一个参数
while (cmdtext[idx] != ' ' && cmdtext[idx] != '\0') idx++;
while (cmdtext[idx] == ' ') idx++;

// 如果存在,向上解析
if (cmdtext[idx] != '\0')
{
updown = strval(cmdtext[idx]);
while (cmdtext[idx] != ' ' && cmdtext[idx] != '\0') idx++;
while (cmdtext[idx] == ' ') idx++;

// 如果存在,向右解析
if (cmdtext[idx] != '\0')
{
leftright = strval(cmdtext[idx]);
}
}

NPC_SetKeys(npcid, keys, updown, leftright);
SendClientMessage(playerid, 0x00FF00FF, "NPC %d keys: keys=%d, ud=%d, lr=%d", npcid, keys, updown, leftright);

return 1;
}
return 0;
}

注意事项

  • 按键影响 NPC 在车辆内和步行时的行为
  • 使用 NPC_GetKeys 检查当前按键状态
  • 按键状态会持续到被更改或 NPC 状态重置

相关函数

相关资源

相关回调

此函数不会触发任何特定的回调。