SA-MP Forums

Go Back   SA-MP Forums > Non-English > Languages > Português/Portuguese

Reply
 
Thread Tools Display Modes
Old 21/11/2009, 09:33 PM   #1
Sucre Pleasure
Big Clucker
 
Join Date: Jun 2009
Posts: 118
Reputation: 0
Default Tutorial -> Criando um novo NPC

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] «
Sucre Pleasure is offline   Reply With Quote
Old 21/11/2009, 10:44 PM   #2
TheDynho
Little Clucker
 
Join Date: Nov 2009
Posts: 4
Reputation: 0
Default Re: Tutorial -> Criando um novo NPC

cara ,muito obrigado! salvou minha vida!
TheDynho is offline   Reply With Quote
Old 21/11/2009, 11:07 PM   #3
Sucre Pleasure
Big Clucker
 
Join Date: Jun 2009
Posts: 118
Reputation: 0
Default Re: Tutorial -> Criando um novo NPC

Quote:
Originally Posted by TheDynho
cara ,muito obrigado! salvou minha vida!
Énoizes
Sucre Pleasure is offline   Reply With Quote
Old 21/11/2009, 11:21 PM   #4
KingstoN*
Big Clucker
 
KingstoN*'s Avatar
 
Join Date: Oct 2009
Posts: 143
Reputation: 8
Default Re: Tutorial -> Criando um novo NPC

Muito bom trabalho!

Agora só não faz NPC quem não saber ler.
__________________

Last edited by KingstoN*; 28/10/2010 at 01:37 PM.
KingstoN* is offline   Reply With Quote
Old 21/11/2009, 11:34 PM   #5
jonybomb
Big Clucker
 
jonybomb's Avatar
 
Join Date: May 2008
Posts: 177
Reputation: 0
Default Re: Tutorial -> Criando um novo NPC

No meu servidor, se o ligar aqui no computador consigo por os bots a funcionar bem, eles entram no servidor e andam e isso tudo, mas no server k está mesmo na provedora eles nem sequer entram, alguém sabe porquê? Existe a probablidade de a host estar a bloquear a entrada?
jonybomb is offline   Reply With Quote
Old 22/11/2009, 12:02 AM   #6
TheDynho
Little Clucker
 
Join Date: Nov 2009
Posts: 4
Reputation: 0
Default Re: Tutorial -> Criando um novo NPC

tem como bota npc num gamemode já existente, por exemplo grandlarc?
TheDynho is offline   Reply With Quote
Old 22/11/2009, 12:12 AM   #7
Xeretta
Big Clucker
 
Join Date: Apr 2009
Posts: 98
Reputation: 0
Default Re: Tutorial -> Criando um novo NPC

Não mexi com NPC ainda, mas creio que são só em FS '-'
Xeretta is offline   Reply With Quote
Old 22/11/2009, 12:17 AM   #8
TheDynho
Little Clucker
 
Join Date: Nov 2009
Posts: 4
Reputation: 0
Default Re: Tutorial -> Criando um novo NPC

cara, tem como colocar num filterscript já existente então?, por que estou apanhando em tentar criar um..
TheDynho is offline   Reply With Quote
Old 22/11/2009, 12:27 AM   #9
KingstoN*
Big Clucker
 
KingstoN*'s Avatar
 
Join Date: Oct 2009
Posts: 143
Reputation: 8
Default Re: Tutorial -> Criando um novo NPC

Quote:
Originally Posted by TheDynho
tem como bota npc num gamemode já existente, por exemplo grandlarc?
Sim ! alias, o primeiro Gamemode em que adicionei NPCs foi no grandlarc

Quote:
Originally Posted by jonybomb
No meu servidor, se o ligar aqui no computador consigo por os bots a funcionar bem, eles entram no servidor e andam e isso tudo, mas no server k está mesmo na provedora eles nem sequer entram, alguém sabe porquê? Existe a probablidade de a host estar a bloquear a entrada?
Veja se no server.cfg de seu Host se existe:

maxnpc e ele é maior que 1.

maxnpc = quantidade máxima permitida de npc em seu servidor.

Quote:
Originally Posted by TheDynho
cara, tem como colocar num filterscript já existente então?, por que estou apanhando em tentar criar um..
Sim!

dexo ve se encontro o GrandLarceny e o FS com Npc aqui e coloco no paste bin para vocês terem uma base
__________________
KingstoN* is offline   Reply With Quote
Old 22/11/2009, 12:28 AM   #10
SlashPT
High-roller
 
SlashPT's Avatar
 
Join Date: Sep 2009
Location: Hell
Posts: 2,071
Reputation: 107
Default Re: Tutorial -> Criando um novo NPC

Pessoal tambem podem dar um estudo nisto se nao compreenderem fica aqui link espero que ajude [NPC]Police Force (LS) by Gaglets
__________________

Zh3r0Jansish
SlashPT is offline   Reply With Quote
Reply

Thread Tools
Display Modes

Posting Rules
You may not post new threads
You may not post replies
You may not post attachments
You may not edit your posts

BB code is On
Smilies are On
[IMG] code is On
HTML code is Off


Similar Threads
Thread Thread Starter Forum Replies Last Post
[Tutorial] Criando um carro xolp25 Lançamentos/Releases 25 08/01/2013 07:49 PM
[DUV] Quando morre, escolher skin de novo '-' Xeretta Português/Portuguese 16 19/07/2010 12:45 AM
[DUV] criando /lideres Lipepva Português/Portuguese 2 06/05/2010 10:03 PM
[AJUDA]Novo Game Mode hudsonramos10 Português/Portuguese 4 22/03/2010 02:51 AM
Equipe para Novo RPG nlcrp Português/Portuguese 15 08/01/2010 01:13 PM


All times are GMT. The time now is 06:16 PM.


Powered by vBulletin® Version 3.8.6
Copyright ©2000 - 2014, Jelsoft Enterprises Ltd.