(25/02/2023 01:49)xbruno1000x Escreveu: GetPlayerTargetDynamicActor(playerid) é a função que detecta se um player está mirando um NPC. Você pode colocar um timer verificando isso.
Para criar um NPC interativo que possa ser alvo de um assalto quando o jogador mira nele com uma arma, você pode seguir os seguintes passos:
1. Crie o NPC: Primeiro, você precisa criar o NPC. Para fazer isso, use a função CreateActor() para criar um ator com as características desejadas. Certifique-se de definir uma posição inicial, uma aparência e um modelo de ator adequado ao seu propósito.
2. Verifique se o jogador está mirando no NPC: Para detectar se um jogador está mirando em um NPC, você pode usar a função GetPlayerTargetDynamicActor(playerid). Isso retornará o ID do ator que o jogador está mirando. Verifique se o ID retornado corresponde ao NPC que você criou.
3. Inicie o assalto: Se o jogador estiver mirando no NPC que você criou, você pode iniciar o assalto. Para isso, você pode usar a função SetPlayerArmour(playerid, 0) para remover a armadura do jogador e SetPlayerHealth(playerid, 0) para definir a vida do jogador como zero.
4. Adicione um timer: Para verificar continuamente se o jogador ainda está mirando no NPC, você pode adicionar um timer usando a função SetTimerEx(). Dentro do callback do timer, verifique novamente se o jogador ainda está mirando no NPC e repita as etapas 3 e 4 conforme necessário.
Aqui está um exemplo de como poderia ser o código para fazer isso:
Código:
new NPC_actorid = INVALID_ACTOR_ID;
// Crie o NPC
NPC_actorid = CreateActor(modelid, x, y, z, rotation);
// Verifique se o jogador está mirando no NPC
public OnPlayerUpdate(playerid)
{
new target_actorid = GetPlayerTargetDynamicActor(playerid);
if (target_actorid == NPC_actorid)
{
// Inicie o assalto
SetPlayerArmour(playerid, 0);
SetPlayerHealth(playerid, 0);
}
}
// Adicione um timer para verificar continuamente se o jogador ainda está mirando no NPC
public OnPlayerConnect(playerid)
{
SetTimerEx("CheckPlayerTargetNPC", 100, true, "i", playerid);
}
public CheckPlayerTargetNPC(playerid)
{
new target_actorid = GetPlayerTargetDynamicActor(playerid);
if (target_actorid != NPC_actorid)
{
// Jogador não está mais mirando no NPC, pare o assalto
SetTimerEx("CheckPlayerTargetNPC", 0, false);
SetPlayerArmour(playerid, 100);
SetPlayerHealth(playerid, 100);
}
}
Lembre-se de ajustar o código para se adequar à sua finalidade específica e de usar nomes de funções e variáveis adequados. Além disso, certifique-se de incluir a biblioteca apropriada para as funções que você está usando.