Portal SAMP
[Ajuda] FCNPC Veiculo - Versão de Impressão

+- Portal SAMP (https://portalsamp.com)
+-- Fórum: SA-MP (https://portalsamp.com/forumdisplay.php?fid=5)
+--- Fórum: Área de suporte (https://portalsamp.com/forumdisplay.php?fid=6)
+--- Tópico: [Ajuda] FCNPC Veiculo (/showthread.php?tid=2709)



FCNPC Veiculo - Eduardofi - 23/08/2022

Olá! Gostaria de saber como eu posso fazer um npc(fcnpc) dirigir um veículo até uma posição? Eu tentei fazer, mas o veículo fica andando e teleportando, e não parece estar dirigindo; o outro problema é que tenho que pegar posição de cada parte pra andar, por exemplo, em uma curva eu teria que pegar a posição na hora que irá dar a curva e a posição após dar a curva. Eu queria apenas pegar uma posição inicial e a final

Alguém poderia me ajudar nisso?


RE: FCNPC Veiculo - Dr Editor - 24/08/2022

Não confunda os NPC's do SA:MP com a IA do GTA SA.
NPC's são jogadores reais com ações controladas.
Pra um NPC fazer o que você quer é necessário criar um path de movimento para evitar que o mesmo atravesse paredes andando em linha reta até o objetivo.
Leia isso.


RE: FCNPC Veiculo - Device-Black - 24/08/2022

(23/08/2022 23:01)Eduardofi Escreveu: Olá! Gostaria de saber como eu posso fazer um npc(fcnpc) dirigir um veículo até uma posição? Eu tentei fazer, mas o veículo fica andando e teleportando, e não parece estar dirigindo; o outro problema é que tenho que pegar posição de cada parte pra andar, por exemplo, em uma curva eu teria que pegar a posição na hora que irá dar a curva e a posição após dar a curva. Eu queria apenas pegar uma posição inicial e a final

Alguém poderia me ajudar nisso?
Código:
public OnPlayerStateChange(playerid, newstate, oldstate)
{
 SendClientMessage(playerid, -1, "Gravacao interrompida!");
 StopRecordingPlayerData(playerid);
 return 1;
}

CMD:gravarnpc(id, args[])
{
 static state;
 state = GetPlayerState(id);

 StopRecordingPlayerData(playerid);
 if(state == PLAYER_STATE_DRIVER)
  StartRecordingPlayerData(playerid, PLAYER_RECORDING_TYPE_DRIVER, args);
 else if(state == PLAYER_STATE_ONFOOT)
  StartRecordingPlayerData(playerid, PLAYER_RECORDING_TYPE_ONFOOT, args);
 else
  return SendClientMessage(playerid, -1, "Gravacao apenas ONFOOT e DRIVER!");
    
 SendClientMessage(playerid, -1, "Gravacao iniciada!");
 return 1;
}

como carregar o npc:
Código:
FCNPC_StartPlayingPlayback(npcid, "nome da gravação");



RE: FCNPC Veiculo - Eduardofi - 25/08/2022

(24/08/2022 09:54)Device-Black Escreveu:
(23/08/2022 23:01)Eduardofi Escreveu: Olá! Gostaria de saber como eu posso fazer um npc(fcnpc) dirigir um veículo até uma posição? Eu tentei fazer, mas o veículo fica andando e teleportando, e não parece estar dirigindo; o outro problema é que tenho que pegar posição de cada parte pra andar, por exemplo, em uma curva eu teria que pegar a posição na hora que irá dar a curva e a posição após dar a curva. Eu queria apenas pegar uma posição inicial e a final

Alguém poderia me ajudar nisso?
Código:
public OnPlayerStateChange(playerid, newstate, oldstate)
{
 SendClientMessage(playerid, -1, "Gravacao interrompida!");
 StopRecordingPlayerData(playerid);
 return 1;
}

CMD:gravarnpc(id, args[])
{
 static state;
 state = GetPlayerState(id);

 StopRecordingPlayerData(playerid);
 if(state == PLAYER_STATE_DRIVER)
  StartRecordingPlayerData(playerid, PLAYER_RECORDING_TYPE_DRIVER, args);
 else if(state == PLAYER_STATE_ONFOOT)
  StartRecordingPlayerData(playerid, PLAYER_RECORDING_TYPE_ONFOOT, args);
 else
  return SendClientMessage(playerid, -1, "Gravacao apenas ONFOOT e DRIVER!");
    
 SendClientMessage(playerid, -1, "Gravacao iniciada!");
 return 1;
}

como carregar o npc:
Código:
FCNPC_StartPlayingPlayback(npcid, "nome da gravação");
Bom... funcionou! Mas quando o playback acaba, o nos se desconecta


RE: FCNPC Veiculo - Device-Black - 25/08/2022

(25/08/2022 03:13)Eduardofi Escreveu:
(24/08/2022 09:54)Device-Black Escreveu:
(23/08/2022 23:01)Eduardofi Escreveu: Olá! Gostaria de saber como eu posso fazer um npc(fcnpc) dirigir um veículo até uma posição? Eu tentei fazer, mas o veículo fica andando e teleportando, e não parece estar dirigindo; o outro problema é que tenho que pegar posição de cada parte pra andar, por exemplo, em uma curva eu teria que pegar a posição na hora que irá dar a curva e a posição após dar a curva. Eu queria apenas pegar uma posição inicial e a final

Alguém poderia me ajudar nisso?
Código:
public OnPlayerStateChange(playerid, newstate, oldstate)
{
 SendClientMessage(playerid, -1, "Gravacao interrompida!");
 StopRecordingPlayerData(playerid);
 return 1;
}

CMD:gravarnpc(id, args[])
{
 static state;
 state = GetPlayerState(id);

 StopRecordingPlayerData(playerid);
 if(state == PLAYER_STATE_DRIVER)
  StartRecordingPlayerData(playerid, PLAYER_RECORDING_TYPE_DRIVER, args);
 else if(state == PLAYER_STATE_ONFOOT)
  StartRecordingPlayerData(playerid, PLAYER_RECORDING_TYPE_ONFOOT, args);
 else
  return SendClientMessage(playerid, -1, "Gravacao apenas ONFOOT e DRIVER!");
    
 SendClientMessage(playerid, -1, "Gravacao iniciada!");
 return 1;
}

como carregar o npc:
Código:
FCNPC_StartPlayingPlayback(npcid, "nome da gravação");
Bom... funcionou! Mas quando o playback acaba, o nos se desconecta
Código:
public FCNPC_OnFinishPlayback(npcid)
{
    FCNPC_StartPlayingPlayback(npcid, "nome da gravacao");
    return 1;
}



RE: FCNPC Veiculo - Eduardofi - 25/08/2022

(25/08/2022 03:32)Device-Black Escreveu:
(25/08/2022 03:13)Eduardofi Escreveu:
(24/08/2022 09:54)Device-Black Escreveu:
(23/08/2022 23:01)Eduardofi Escreveu: Olá! Gostaria de saber como eu posso fazer um npc(fcnpc) dirigir um veículo até uma posição? Eu tentei fazer, mas o veículo fica andando e teleportando, e não parece estar dirigindo; o outro problema é que tenho que pegar posição de cada parte pra andar, por exemplo, em uma curva eu teria que pegar a posição na hora que irá dar a curva e a posição após dar a curva. Eu queria apenas pegar uma posição inicial e a final

Alguém poderia me ajudar nisso?
Código:
public OnPlayerStateChange(playerid, newstate, oldstate)
{
 SendClientMessage(playerid, -1, "Gravacao interrompida!");
 StopRecordingPlayerData(playerid);
 return 1;
}

CMD:gravarnpc(id, args[])
{
 static state;
 state = GetPlayerState(id);

 StopRecordingPlayerData(playerid);
 if(state == PLAYER_STATE_DRIVER)
  StartRecordingPlayerData(playerid, PLAYER_RECORDING_TYPE_DRIVER, args);
 else if(state == PLAYER_STATE_ONFOOT)
  StartRecordingPlayerData(playerid, PLAYER_RECORDING_TYPE_ONFOOT, args);
 else
  return SendClientMessage(playerid, -1, "Gravacao apenas ONFOOT e DRIVER!");
    
 SendClientMessage(playerid, -1, "Gravacao iniciada!");
 return 1;
}

como carregar o npc:
Código:
FCNPC_StartPlayingPlayback(npcid, "nome da gravação");
Bom... funcionou! Mas quando o playback acaba, o nos se desconecta
Código:
public FCNPC_OnFinishPlayback(npcid)
{
    FCNPC_StartPlayingPlayback(npcid, "nome da gravacao");
    return 1;
}
Pra por dnv? É pro npc chegar em um local e parar de andar


RE: FCNPC Veiculo - Device-Black - 25/08/2022

Eduardofi Escreveu:Pra por dnv? É pro npc chegar em um local e parar de andar
Então usa FCNPC_ExitVehicle(npcid); ou FCNPC_RemoveFromVehicle(npcid);