Tutorial -> Criando um novo NPC
#1

Este й sem duvida um tema muito comentado, entгo vamos passar um tutorial de como criar NPCs, os famosos bots.

Gravando um arquivo de reproduзгo
Primeiro de tudo, precisamos gravar um arquivo de reproduзгo para o nosso NPC usar. Inicie um servidor, de qualquer modo de jogo e entгo logue-se na RCON. (Use "/rcon login sua_senha" ) e carregue o filterscript npc_record (use "/rcon loadfs npc_record" )
Agora, existem 3 comandos principais para gravaзгo de seu NPC no filterscript npc_record ...

* /vrecord <nome_do_arquivo> - Inicia a gravaзгo de um caminho de veнculo para o nome do arquivo especificado.
* /ofrecord <nome_do_arquivo> - Inicia a gravaзгo apй para o arquivo especificado.
* /stoprecord - Pбra a gravaзгo do veнculo e em trajetos apй.


Neste tutorial, vamos estar fazendo um trajeto do veнculo, assim que entrar em um veнculo, digite /vrecord meunpc (Nota: vocк deve estar logado na rcon) para iniciar a gravaзгo.
Faзa sua trajetoria e quando tiver terminado use /stoprecord.
Feche o jogo,vб para seu diretуrio scriptfiles, deve haver um arquivo chamado meunpc.rec. Mova o arquivo para <Seu servidor SA-MP> /npcmodes/recordings/
Feito? Ok, уtimo! Vocк jб gravou um caminho para o NPC, e mudou-o para o diretуrio necessбrio.

Controlando o NPC
Vocк pode ter notado um monte de scripts de peгo no diretуrio npcmodes, estes sгo autфnomos "mini" scripts que controlam o comportamento do seu NPC.
Entгo, vamos criar um caminho para o seu recйm-gravado!
Iniciar um novo arquivo em PAWNO, e substituir seu conteъdo com ...
pawn Code:
#define RECORDING "meunpc" //Este й o nome do seu arquivo de gravaзгo, sem a extenзгo(.rec).
#define RECORDING_TYPE 1 //1 para gravaзхes em veнculo e 2 para gravaзхes apй.

#include <a_npc>
main(){}
public OnRecordingPlaybackEnd() StartRecordingPlayback(RECORDING_TYPE, RECORDING);

#if RECORDING_TYPE == 1
  public OnNPCEnterVehicle(vehicleid, seatid) StartRecordingPlayback(RECORDING_TYPE, RECORDING);
  public OnNPCExitVehicle() StopRecordingPlayback();
#else
  public OnNPCSpawn() StartRecordingPlayback(RECORDING_TYPE, RECORDING);
#endif
Isso pode parecer confuso, por isso agora explicarei isso linha por linha.

pawn Code:
#define RECORDING "meunpc" //Este й o nome do seu arquivo de gravaзгo, sem a extenзгo(.rec).
Como diz o comentбrio, este й o nome do caminho que vocк gravou sem a extensгo. Nossa reproduзгo de gravaзгo foi nomeado meunpc, e seu arquivo foi meunpc.rec assim que entramos no "meunpc".

pawn Code:
#define RECORDING_TYPE 1 //1 para gravaзхes em veнculo e 2 para gravaзхes apй.
Como diz o comentбrio de novo, este й o tipo de gravaзгo. Se o seu NPC estб apй, esta definiзгo seria definida como 2, se estava em um veнculo seria definida como 1.

pawn Code:
#include <a_npc>
Incluindo as funзхes de SA-MP NPC.

pawn Code:
public OnRecordingPlaybackEnd() StartRecordingPlayback(RECORDING_TYPE, RECORDING);
OnRecordingPlaybackEnd й uma callback incluida na biblioteca NPC, como mostrado a linha acima. Esta linha de cуdigo faz com que o ciclo de gravaзгo, como quando a reproduзгo da gravaзгo terminou, ele inicia a gravaзгo. Ou seja, nunca parando.

pawn Code:
public OnNPCEnterVehicle(vehicleid, seatid) StartRecordingPlayback(RECORDING_TYPE, RECORDING);
Esta й uma outra callback incluida na livraria NPC. Isto irб iniciar a reproduзгo quando o NPC for colocado em um veнculo.

pawn Code:
public OnNPCExitVehicle() StopRecordingPlayback();
Contudo uma outra callback incluida na livaria NPC, isto irб parar a reproduзгo da gravaзгo, se por qualquer razгo, o NPC sai do veнculo.

pawn Code:
public OnNPCSpawn() StartRecordingPlayback(RECORDING_TYPE, RECORDING);
Contudo uma outra callback incluida na livaria NPC, isso irб iniciar a reproduзгo quando o NPC spawnar.

Como vocк pode ver, й tudo muito simples. Agora salve o seu NPC "mini" script como "meunpc.pwn" no diretorio de seu servidor de SA-MP. <Seu diretуrio>/npcmodes/, e compile.
Se for compilado, vocк pode continuar para a ъltima etapa deste tutorial, se nгo conseguir compilar, certifique-se de que vocк atualizou seu SA-MP que inclui as ъltimas versхes da 0.3, e certifique-se de nгo ter perdido qualquer parкnteses ou semi -e-vнrgula. Ainda nгo compilou? Poste aqui mesmo pedindo ajuda.

Conectando seu NPC

Entгo, nуs temos o caminho do arquivo, temos o "mini" peгo script para controlar o NPC diretamente, agora precisamos carregar o NPC em um GameMode ou filterscript!
Feche a mini script "peгo", e carregar o seu modo de jogo ou uma filterscript em PAWNO, Й hora de ser introduzida para a funзгo ConnectNPC, e como o prуprio nome sugere, й utilizado para conectar um NPC ao seu servidor.
Vamos explorar estes parвmetros de funзхes, e ver o que eles significam ...

pawn Code:
ConnectNPC("Sucre","meunpc");
  • "Sucre" - O primeiro parвmetro й o nome do NPC's. Com isso vocк pode detectar diferentes personagens, e executar aзхes diferentes a eles.
  • "meunpc" - Este й o nome do arquivo (sem extensгo), da "mini" script que criamos acima.
Com seus novos conhecimentos da funзгo ConnectNPC, vamos tentar fazer nosso NPC ligar quando seu GameMode ou filterscript carregar.

pawn Code:
public OnGameModeInit()
{
  print("meu gamemode");
  ConnectNPC("MeuPrimeiroNPC","meunpc");
  return 1;
}
Ou, se vocк estб adicionando o NPC em um filterscript ...

pawn Code:
public OnFilterScriptInit()
{
  print("meu filterscript");
  ConnectNPC("MeuPrimeiroNPC","meunpc");
  return 1;
}
Agora, como nуs criamos um caminho em um veнculo, temos de criar um veнculo para o NPC a unidade em torno de pol
OnGameModeInit se parece com isso, agora eu criei um veнculo para o NPC de usar ...
NOTA: Se o NPC nгo estб em um veнculo que vocк pode pular esta etapa.

pawn Code:
new MeuPrimeiroNPCVehicle; //Variavel global
public OnGameModeInit()
{
  print("meu gamemode");
  ConnectNPC("MeuPrimeiroNPC","meunpc");
  MeuPrimeiroNPCVehicle = CreateVehicle(400, 0.0, 0.0, 5.0, 0.0, 3, 3, 5000);
  return 1;
}
Ou, se vocк estб adicionando o NPC em um filterscript ...

pawn Code:
new MeuPrimeiroNPCVehicle; //Variavel global
public OnFilterScriptInit()
{
  print("meu filterscript");
  ConnectNPC("MeuPrimeiroNPC","meunpc");
  MeuPrimeiroNPCVehicle = CreateVehicle(400, 0.0, 0.0, 5.0, 0.0, 3, 3, 5000);
  return 1;
}
Note que a localizaзгo real do veнculo nгo importa, jб que serб teleportado para onde o caminho comeзa a NPC's, quando o caminho comeзa a reproduзгo.

Sу mais uma coisa antes que vocк pode ir no jogo e testar seu primeiro NPC, й preciso colocar o NPC dentro do veнculo que criamos para isso.
Eu fiz isso usando OnPlayerSpawn ...
NOTA: Se o NPC nгo estб em um veнculo vocк pode pular esta etapa.

pawn Code:
public OnPlayerSpawn(playerid)
{
  if(IsPlayerNPC(playerid)) //Verifica se o jogador й um NPC.
  {
    new npcname[MAX_PLAYER_NAME];
    GetPlayerName(playerid, npcname, sizeof(npcname)); //Obtendo o nome do(s) NPC(s).
    if(!strcmp(npcname, "MeuPrimeiroNPC", true)) //Checando se o nome do NPC й MeuPrimeiroNPC
    {
      PutPlayerInVehicle(playerid, MeuPrimeiroNPCVehicle, 0); //Colocar o NPC dentro do veнculo que criamos para isso.
    }
    return 1;
  }
  //Outras coisas para os jogadores normais vai aqui!
  return 1;
}
Se vocк quiser adicionar outro NPC, esta estrutura OnPlayerSpawn й fбcil de modificar, aqui estб um exemplo para 2 NPCs ...

pawn Code:
public OnPlayerSpawn(playerid)
{
  if(IsPlayerNPC(playerid)) //Checa se o jogador й um NPC.
  {
    new npcname[MAX_PLAYER_NAME];
    GetPlayerName(playerid, npcname, sizeof(npcname)); //Obtendo o nome do(s) NPC(s).
    if(!strcmp(npcname, "MeuPrimeiroNPC", true)) //Checando se o nome do NPC й MeuPrimeiroNPC
    {
      PutPlayerInVehicle(playerid, MeuPrimeiroNPCVehicle, 0); //Colocar o NPC dentro do veнculo que criamos para isso.
      return 1;
    }
    if(!strcmp(npcname, "MeuSegundoNPC", true))
    {
      PutPlayerInVehicle(playerid, OutroVehicleID, 0);
      return 1;
    }
    return 1;
  }
  //Outras coisas para os jogadores normais vai aqui!
  return 1;
}
Agora, compile o seu GameMode ou filterscript, e vб no jogo!
Com alguma sorte, vocк vai ver a sua conduзгo NPC em torno do caminho que vocк definiu para ele, parabйns! Vocк fez o seu primeiro NPC!
Nгo funcionou? Poste aqui para ver se podemos solucionar o problema.
Mais alguma pergunta? Novamente, poste neste tуpico!

Problemas comuns

Meu NPC sai do meu servidor depois apуs se conectar.
Seu script estб forзando o NPC fazer o login, ou vocк tem um anti-cheat / kicker ping que estб interferindo com o NPC. Vocк pode adicionar ...
pawn Code:
if(IsPlayerNPC(playerid)) return 1;
... como a primeira linha de qualquer callbacks bots que vai usar, por exemplo, OnPlayerRequestClass ou OnPlayerRequestSpawn. Para uma maneira eficiente e simples de exclusгo de NPCs de loops, confira foreach por Y_Less.

Meu NPC nгo entra em meu servidor para todos
Isto й provavelmente causado por seu servidor que estб com senha.

Eu nгo consigo carregar filterscript npc_record para comeзar
Vocк nгo tem o filterscript, ou ele jб estб carregado. Tente continuar de qualquer maneira.

Meu NPC sу fica no ponto de spawn
Volte, e re-leia a parte OnPlayerSpawn do tutorial.

Meus NPCs estavam normais, mas agora atualizei para RC5 eles nгo funcionam
Hб uma variбvel maxnpc novo server.cfg que o padrгo й 0. Adicione ...
pawn Code:
maxnpc numero_de_npcs_aqui
... no seu server.cfg para corrigir esse problema.

_________________________________________________
[font=Comic Sans MS]Tutorial feito originalmente em inglкs por: kc.
Traduzido por: [SFP]$ucr3[CX] «
Reply


Messages In This Thread
Tutorial -> Criando um novo NPC - by Sucre Pleasure - 21.11.2009, 20:33
Re: Tutorial -> Criando um novo NPC - by TheDynho - 21.11.2009, 21:44
Re: Tutorial -> Criando um novo NPC - by Sucre Pleasure - 21.11.2009, 22:07
Re: Tutorial -> Criando um novo NPC - by KingstoN* - 21.11.2009, 22:21
Re: Tutorial -> Criando um novo NPC - by jonybomb - 21.11.2009, 22:34
Re: Tutorial -> Criando um novo NPC - by TheDynho - 21.11.2009, 23:02
Re: Tutorial -> Criando um novo NPC - by Xeretta - 21.11.2009, 23:12
Re: Tutorial -> Criando um novo NPC - by TheDynho - 21.11.2009, 23:17
Re: Tutorial -> Criando um novo NPC - by KingstoN* - 21.11.2009, 23:27
Re: Tutorial -> Criando um novo NPC - by SlashPT - 21.11.2009, 23:28
Re: Tutorial -> Criando um novo NPC - by TheDynho - 21.11.2009, 23:35
Re: Tutorial -> Criando um novo NPC - by KingstoN* - 21.11.2009, 23:43
Re: Tutorial -> Criando um novo NPC - by jonybomb - 22.11.2009, 00:39
Re: Tutorial -> Criando um novo NPC - by Sucre Pleasure - 22.11.2009, 06:11
Re: Tutorial -> Criando um novo NPC - by KingstoN* - 22.11.2009, 15:45
Re: Tutorial -> Criando um novo NPC - by jonybomb - 22.11.2009, 16:31
Re: Tutorial -> Criando um novo NPC - by LeoH - 22.11.2009, 18:03
Re: Tutorial -> Criando um novo NPC - by CyNiC - 22.11.2009, 18:56
Re: Tutorial -> Criando um novo NPC - by Sucre Pleasure - 22.11.2009, 20:23
Re: Tutorial -> Criando um novo NPC - by jonybomb - 23.11.2009, 19:17
Re: Tutorial -> Criando um novo NPC - by John Tylor - 24.11.2009, 12:40
Re: Tutorial -> Criando um novo NPC - by Sucre Pleasure - 24.11.2009, 19:03
Re: Tutorial -> Criando um novo NPC - by CJLeo - 24.11.2009, 21:29
Re: Tutorial -> Criando um novo NPC - by Sim! - 25.12.2009, 00:53
Re: Tutorial -> Criando um novo NPC - by rannyere - 25.12.2009, 16:02
Re: Tutorial -> Criando um novo NPC - by Ems9 - 28.12.2009, 18:10
Re: Tutorial -> Criando um novo NPC - by rannyere - 02.01.2010, 01:26
Re: Tutorial -> Criando um novo NPC - by ipsBruno - 12.06.2010, 18:21
Re: Tutorial -> Criando um novo NPC - by Baddark2131 - 12.06.2010, 18:46
Re: Tutorial -> Criando um novo NPC - by RoamPT - 12.06.2010, 19:40
Re: Tutorial -> Criando um novo NPC - by HigorOliver - 28.09.2010, 21:04
Re: Tutorial -> Criando um novo NPC - by GuikBretas - 22.12.2010, 14:59
Re: Tutorial -> Criando um novo NPC - by rafael666 - 23.12.2010, 14:28
Re: Tutorial -> Criando um novo NPC - by faeldk - 23.12.2010, 14:41
Re: Tutorial -> Criando um novo NPC - by rafael666 - 23.12.2010, 14:52
Re: Tutorial -> Criando um novo NPC - by faeldk - 23.12.2010, 14:54
Respuesta: Tutorial -> Criando um novo NPC - by Tom_Park - 02.01.2011, 17:28
Re: Tutorial -> Criando um novo NPC - by jhemerson - 18.02.2011, 12:03
Re: Tutorial -> Criando um novo NPC - by Welton_Ranger - 20.05.2012, 01:57
Re: Tutorial -> Criando um novo NPC - by Joao Pedro - 28.10.2012, 00:42
Re: Tutorial -> Criando um novo NPC - by [BWL]Chamaleon - 31.10.2012, 16:45
Re: Tutorial -> Criando um novo NPC - by R3S1D3NT1 - 20.06.2013, 16:03
Re: Tutorial -> Criando um novo NPC - by [THs]ShadoW - 20.06.2013, 16:15
Re: Tutorial -> Criando um novo NPC - by AlucardSnow - 20.06.2013, 16:33
Re: Tutorial -> Criando um novo NPC - by R3S1D3NT1 - 20.06.2013, 16:38
Re: Tutorial -> Criando um novo NPC - by R3S1D3NT1 - 20.06.2013, 16:58
Re: Tutorial -> Criando um novo NPC - by [THs]ShadoW - 20.06.2013, 17:11
Respuesta: Tutorial -> Criando um novo NPC - by [BWL]Chamaleon - 25.06.2013, 15:38
Respuesta: Tutorial -> Criando um novo NPC - by Higoroliveira - 21.01.2015, 22:05
Re: Tutorial -> Criando um novo NPC - by DannielCooper - 21.01.2015, 22:06
Re: Respuesta: Tutorial -> Criando um novo NPC - by Petrick™ - 21.01.2015, 22:37
Re: Tutorial -> Criando um novo NPC - by RiqueP - 21.01.2015, 22:44
Re: Tutorial -> Criando um novo NPC - by CLANdok - 21.01.2015, 22:49
Re: Tutorial -> Criando um novo NPC - by ipsLuan - 21.01.2015, 23:07
Re: Tutorial -> Criando um novo NPC - by MtPlayerZ - 24.12.2016, 11:14
Re: Tutorial -> Criando um novo NPC - by RiqueP - 24.12.2016, 11:19
Respuesta: Tutorial -> Criando um novo NPC - by RazorGuigo - 24.12.2016, 12:38
Re: Tutorial -> Criando um novo NPC - by Eiffel - 20.02.2017, 17:00
Re: Tutorial -> Criando um novo NPC - by Eiffel - 20.02.2017, 17:02
Re: Tutorial -> Criando um novo NPC - by Eiffel - 20.02.2017, 17:54
Re: Tutorial -> Criando um novo NPC - by Victor0 - 24.11.2017, 02:12
Re: Tutorial -> Criando um novo NPC - by Mackanor - 23.01.2018, 02:20
Re: Tutorial -> Criando um novo NPC - by Marllun - 23.01.2018, 04:24
Re: Tutorial -> Criando um novo NPC - by HelderPT - 23.01.2018, 20:48
Re: Tutorial -> Criando um novo NPC - by Marllun - 23.01.2018, 21:34
Re: Tutorial -> Criando um novo NPC - by SpikeCompiler - 23.01.2018, 21:34

Forum Jump:


Users browsing this thread: 1 Guest(s)