Pular para o conteúdo principal

NPC Constants

Esta página lista todas as constantes específicas para funções NPC em open.mp.

Limites

ValorConstanteDescrição
1000MAX_NPCSNúmero máximo de NPCs
64NPC_MAX_NODESNúmero máximo de nós

Constantes inválidas

ValorConstanteDescrição
-1INVALID_NPC_IDNPC ID inválido
-1INVALID_PATH_IDCaminho inválido ID
-1INVALID_NODE_IDNó inválido ID
-1INVALID_RECORD_IDGravação inválida ID

Tipos de movimento

Usado por funções como NPC_Move, NPC_MoveByPath, NPC_EnterVehicle e NPC_PlayNode.

ValorConstanteDescrição
-1UNKNOWN_NPC_MOVE_TYPETipo de movimento desconhecido
0NPC_MOVE_TYPE_NONENenhum movimento
1NPC_MOVE_TYPE_WALKNPC caminha até o destino
2NPC_MOVE_TYPE_JOGNPC avança para o destino (padrão para a maioria das funções)
3NPC_MOVE_TYPE_SPRINTNPC corre para o destino
4NPC_MOVE_TYPE_DRIVENPC dirige até o destino (movimento do veículo)
5NPC_MOVE_TYPE_AUTOTipo de movimento automático

Velocidade de Movimento

Usado por funções de movimento para controlar a velocidade NPC.

ValorConstanteDescrição
-1.0NPC_MOVE_SPEED_AUTOVelocidade automática baseada no tipo de movimento
0.1552086NPC_MOVE_SPEED_WALKVelocidade de caminhada
// Use uma velocidade de corrida específica
0.926784NPC_MOVE_SPEED_SPRINTVelocidade de corrida

Sinalizadores de verificação de entidade

Usado por NPC_AimAt, NPC_AimAtPlayer e NPC_Shoot para detecção de colisão.

ValorConstanteDescrição
0NPC_ENTITY_CHECK_NONESem verificação de colisão
1NPC_ENTITY_CHECK_PLAYERVerifique colisões com jogadores
2NPC_ENTITY_CHECK_NPCVerifique colisões com NPCs
4NPC_ENTITY_CHECK_ACTORVerifique colisões com atores
8NPC_ENTITY_CHECK_VEHICLEVerifique colisões com veículos
16NPC_ENTITY_CHECK_OBJECTVerifique colisões com objetos
32NPC_ENTITY_CHECK_POBJECT_ORIGVerifique colisões com objetos do jogador (original)
64NPC_ENTITY_CHECK_POBJECT_TARGVerifique colisões com objetos do jogador (alvo)
128NPC_ENTITY_CHECK_MAPVerifique as colisões com o mapa
255NPC_ENTITY_CHECK_ALLVerifique colisões com todas as entidades

Tipos de acertos de bala

Usado por NPC_Shoot para especificar que tipo de alvo está sendo atingido.

ConstantDescrição
BULLET_HIT_TYPE_NONENenhum alvo específico
BULLET_HIT_TYPE_PLAYERAlvo do jogador

Exemplos

Tipos de movimento

// Faça o NPC andar devagar
NPC_Move(npcid, x, y, z, NPC_MOVE_TYPE_WALK);

// Faça o NPC trotar (velocidade padrão)
NPC_Move(npcid, x, y, z, NPC_MOVE_TYPE_JOG);

// Faça o NPC correr rapidamente
NPC_Move(npcid, x, y, z, NPC_MOVE_TYPE_SPRINT);

// Faça o NPC dirigir até o local
NPC_Move(npcid, x, y, z, NPC_MOVE_TYPE_DRIVE);

// Use o tipo de movimento automático
NPC_Move(npcid, x, y, z, NPC_MOVE_TYPE_AUTO);

Velocidade de Movimento

// Use a velocidade automática
NPC_Move(npcid, x, y, z, NPC_MOVE_TYPE_WALK, NPC_MOVE_SPEED_AUTO);

// Use uma velocidade de caminhada específica
NPC_Move(npcid, x, y, z, NPC_MOVE_TYPE_WALK, NPC_MOVE_SPEED_WALK);

// Use uma velocidade de trote específica
NPC_Move(npcid, x, y, z, NPC_MOVE_TYPE_JOG, NPC_MOVE_SPEED_JOG);

// Use uma velocidade de corrida específica
NPC_Move(npcid, x, y, z, NPC_MOVE_TYPE_SPRINT, NPC_MOVE_SPEED_SPRINT);

Sinalizadores de verificação de entidade

// Mire sem verificação de colisão
NPC_AimAt(npcid, x, y, z, true, 1000, true, 0.0, 0.0, 0.6, NPC_ENTITY_CHECK_NONE);

// Mire com verificação completa de colisão
NPC_AimAt(npcid, x, y, z, true, 1000, true, 0.0, 0.0, 0.6, NPC_ENTITY_CHECK_ALL);

// Verifique apenas colisões com jogadores
NPC_AimAt(npcid, x, y, z, true, 1000, true, 0.0, 0.0, 0.6, NPC_ENTITY_CHECK_PLAYER);

// Verifique colisões com jogadores e veículos
NPC_AimAt(npcid, x, y, z, true, 1000, true, 0.0, 0.0, 0.6,
NPC_ENTITY_CHECK_PLAYER | NPC_ENTITY_CHECK_VEHICLE);

// Verifique colisões apenas com objetos
NPC_AimAt(npcid, x, y, z, true, 1000, true, 0.0, 0.0, 0.6, NPC_ENTITY_CHECK_OBJECT);

Tipos de acertos de bala

// Atire em um local específico (sem alvo)
NPC_Shoot(npcid, INVALID_PLAYER_ID, BULLET_HIT_TYPE_NONE, WEAPON_SNIPER,
x, y, z, 0.0, 0.0, 0.0, false);

// Atire em um jogador
NPC_Shoot(npcid, playerid, BULLET_HIT_TYPE_PLAYER, WEAPON_M4,
x, y, z, 0.0, 0.0, 0.0, true);

Constantes inválidas

// Verifique se o ID do NPC é válido
new npcid = NPC_Create("Bot");
if (npcid != INVALID_NPC_ID)
{
// NPC foi criado com sucesso
NPC_Spawn(npcid);
}

// Verifique se o ID do caminho é válido
new pathid = NPC_CreatePath();
if (pathid != INVALID_PATH_ID)
{
// O caminho foi criado com sucesso
NPC_AddPointToPath(pathid, 0.0, 0.0, 3.0, 0.2);
}

// Verifique o jogador inválido em NPC_Kill
NPC_Kill(npcid, INVALID_PLAYER_ID, REASON_SUICIDE);

Limites

// Faça um loop por todos os NPCs possíveis
for (new i = 0; i < MAX_NPCS; i++)
{
if (NPC_IsValid(i))
{
// Processar NPC válido
}
}

// Exemplo usando NPC_MAX_NODES
for (new i = 0; i < NPC_MAX_NODES; i++)
{
if (NPC_IsNodeOpen(i))
{
// Processar nó aberto
NPC_CloseNode(i);
}
}

Páginas relacionadas