SA-MP Forums

Go Back   SA-MP Forums > Non-English > Languages > Español/Spanish > Lanzamientos/Releases

 
 
Thread Tools Display Modes
Old 17/01/2012, 01:02 AM   #1
[Nikk]
High-roller
 
[Nikk]'s Avatar
 
Join Date: Jun 2011
Location: Argentina.
Posts: 1,491
Reputation: 63
Thumbs up Como crear tu NPC [Por kc, Traducido por mi]

Bueno gente, este tutorial esta en la parte inglesa, capas muchos no entienden un buen ingles y quieren saber como crearlo, yo hoy tradusco este tutorial para ustedes.


Grabar el NPC a un archivo.

Lo primero de todo sera grabar el movimiento del NPC a un archivo. Arranca un servidor (LVDM recomendado, pero puedes usar cualquiera.). Pon el FS npc_record.amx (que viene con SA:MP) y Loguate como administrador RCON en tu server y pone /Rcon loadfs npc_record...

Ahora tendremos 3 simples comandos:

/vrecord <Nombre de archivo> - Con esto empezaremos a grabar el NPC en un vehiculo.
/ofrecord <Nombre de Archivo> - Con esto empezaremos a grabar el NPC a Pie
/stoprecord . Con esto paramos de grabar un NPC

En este tutorial vamos a grabar un NPC desde un vehiculo. Bueno, entonses te metes a un vehiculo y empiezas a grabar con /vrecord TuNPC, (Nota: Tienes que estar loguado Rcon)

Maneja por donde quieres que valla tu NPC y cuando termines usa /Stoprecord

Cierra el juego o minimiza y ve al scriptfiles de tu server (TuServer/scriptfiles) y encontraras TuNPC.rec.
Movelo a TuServer/npcmodes/recordings/.
Listo? Entonses ya tienes tu NPC Grabado correctamente y hiciste el paso 1 bien!


Paso 2:

Controlando al NPC

Seguramente te diste cuenta que hay muchos .pwn en la carpeta npcmodes. Estos son "mini" scripts que controlan al npc.
Ahora vamos a crear el nuestro!
Empezamos un archivo nuevo en pawno, y lo del blank script lo remplazamos por esto:


pawn Code:
#define RECORDING "TuNPC" //Este es el nombre del archivo que grabaron in game
#define RECORDING_TYPE 1 //1 = en vehiculo 2= caminando

#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

Eso parece confuso para muchos... vamos a explicar linea por linea.

pawn Code:
#define RECORDING "TuNPC" //este TuNPC va a ser el nombre del la grabacion que le diste a tu NPC

Como dice el comentario, tienes que poner el nombre del NPC que grabaste in-game y recuerda que tiene que estar en Tu_Server/npcmodes/records


pawn Code:
#define RECORDING_TYPE 1 //Si esta en 1 quiere decir que el NPC esta en un auto, de lo contrario estaria en 2 y significaria que este a pie.

pawn Code:
#include <a_npc>

Este es el include que tiene las funciones de los NPC! Importantisimo.

pawn Code:
public OnRecordingPlaybackEnd() StartRecordingPlayback(RECORDING_TYPE, RECORDING);

OnRecordingPlaybackEnd es la callback que incluye el .inc de los npc. Este codigo de la linea hace grabando un loop, haciendo que cuando termine la grabacion del NPC, empieze de nuevo.


pawn Code:
public OnNPCEnterVehicle(vehicleid, seatid) StartRecordingPlayback(RECORDING_TYPE, RECORDING);

pawn Code:
public OnNPCEnterVehicle(vehicleid, seatid) StartRecordingPlayback(RECORDING_TYPE, RECORDING);
Esta callback tambien esta incluida en la library del NPC. Quiere decir que empezara a NPC cuando este en un vehiculo.

pawn Code:
public OnNPCExitVehicle() StopRecordingPlayback();
Con esta callback el NPC parara cuando baja de un vehiculo.

pawn Code:
public OnNPCSpawn() StartRecordingPlayback(RECORDING_TYPE, RECORDING);
Esto quiere decir empezara cuando Spawnee.


Ahora, savea este archivo en TuServer/npcmodes con el nombre que quieras ( En este tutorial lo voy a llamar "minpc", para que no se pierdan) , en este caso les hare el ejemplo de "minpc" y compila. Si hiciste todo bien tendria que compilar perfecto sin ningun error.
Terminamos el segundo paso!


Paso 3


Conectar tu NPC



Listo, tenemos la grabacion del NPC, y las funciones del NPC, ahora lo que falta es meterlo al gamemode o FS!

Cerra el pawnn con el nombre de "minpc" (O con el nombre que te guste) que habiamos abierto (Si compilo bien) y abre tu GM o FS con pawno. Es momento de introducir la funcion ConnectNPC, y como es el nombre que se usa para conectar el NPC al server. A continuación se explicaran las funciones:


pawn Code:
ConnectNPC("Dave","TuNPC");

"Dave" - Es el parametro del nombre del NPC, con esto podes diferenciar NPC's de otros y aplicarles difentes funciones a cada uno.

minpc - Este es el nombre del archivo .pwn que pusimos en la carpeta TuServer/npcmodes (Ponganlo sin la extencion .pwn)

Y les quedaria algo así:


pawn Code:
public OnGameModeInit()
{
  //print("my gamemode"); // No es nesesario.
  ConnectNPC("MiPrimerNPC","minpc");
  return 1;
}

O... Si queres ponerlo en un FS usa:

pawn Code:
public OnFilterScriptInit()
{
  // print("my filterscript");//Inesesario
  ConnectNPC("MiPrimerNPC","minpc");
  return 1;
}

Ahora, como creamos el NPC en un auto... tendremos que crear el vehiculo para que ande el NPC.

NOTA: Si tu NPC no esta en un vehiculo, salta este paso.

pawn Code:
new MiPrimerNPCVeh; //Global variable!
public OnGameModeInit()
{
  //print("Mi GM");//Inesesario
  ConnectNPC("MiPrimerNPC","minpc");
  MiPrimerNPCVeh= CreateVehicle(400, 0.0, 0.0, 5.0, 0.0, 3, 3, 5000);
  return 1;
}

O, si lo estas agregando a un FS:

pawn Code:
new MiPrimerNPCVeh; //Global variable!
public OnFilterScriptInit()
{
  print("Mi FS");
  ConnectNPC("MiPrimerNPC","minpc");
  MiPrimerNPCVeh = CreateVehicle(400, 0.0, 0.0, 5.0, 0.0, 3, 3, 5000);
  return 1;
}

Nota: No importa donde pongas el vehiculo, el NPC estara en ese vehiculo.


Listo, ya casi todo esta echo, solo nesesitamos meter al NPC al vehiculo.
Ahora solo tenemos que poner el NPC con este codigo:


pawn Code:
public OnPlayerSpawn(playerid)
{
  if(IsPlayerNPC(playerid)) //Checkea si el jugador es NPC
  {
    new npcname[MAX_PLAYER_NAME];
    GetPlayerName(playerid, npcname, sizeof(npcname)); //Obtiene el nombre del NPC.
    if(!strcmp(npcname, "MiPrimerNPC", true)) //Chequea si el nombre del NPC es Correcto.
    {
      PutPlayerInVehicle(playerid, MiPrimerNPCVeh, 0); //Pone al NPC en su respectivo automovil.
    }
    return 1;
  }
  //Lo otro para players normales va aquí!
  return 1;
}


Y si quieres poner otro NPC es Así:

pawn Code:
pawn Código:
public OnPlayerSpawn(playerid)
{
  if(IsPlayerNPC(playerid)) //Checkea si el jugador spawneo como NPC
  {
    new npcname[MAX_PLAYER_NAME];
    GetPlayerName(playerid, npcname, sizeof(npcname)); //Obtenemos el Nombre del NPC
    if(!strcmp(npcname, "MiPrimerNPC", true)) //Chequea si el Nombre del NPC es el correcto
    {
      PutPlayerInVehicle(playerid, MiPrimerNPCVeh, 0); //Pone al NPC En su auto
      return 1;
    }
    if(!strcmp(npcname, "MiSegundoNPC", true))
    {
      PutPlayerInVehicle(playerid, MiSegundoNPCVeh, 0);
      return 1;
    }
    return 1;
  }
  //Players normales
  return 1;
}

Listo!. Ahora compila tu GM o FS y si hiciste todo bien, no tendras errores.
Ve al juego y pruebalo.


Problemas Comunes/Frecuentes


Mi NPC No entra del Todo al Server

Sencillo, el NPC no puede loguarse, por lo general. Se soluciona poniendo esto en OnPlayerConnect:

pawn Code:
if(IsPlayerNPC(playerid)) return 1;


Mi NPC se queda quieto en el spawn.
Probablemente hiciste algo mas del paso de OnPlayerSpawn. Hazlo denuevo!
o copia lo de onplayerspawn, tambien a onplayerconnect



*Habia otros problemas pero algunos no les veia sentido, si tienen uno por favor decirlo.


*Perdon si ven algo de la traduccion mal, es que lo traduci YO, no ****** Translate. Y me parecio que esta bien, si ven algun error de traduccion diganmelo.
__________________



Last edited by [Nikk]; 20/01/2012 at 02:12 AM.
[Nikk] is offline  
Old 17/01/2012, 01:07 AM   #2
OziiL
Big Clucker
 
Join Date: Sep 2011
Location: Cordoba,Argentina
Posts: 92
Reputation: 2
Default Re: Como crear tu NPC [Por kc, Traducido por mi]

Exelente post. Muy bueno el aporte. Muy bien explicado e detallado parte por parte.

Saludos.
________________
OziiL is offline  
Old 17/01/2012, 01:21 AM   #3
[Nikk]
High-roller
 
[Nikk]'s Avatar
 
Join Date: Jun 2011
Location: Argentina.
Posts: 1,491
Reputation: 63
Default Respuesta: Como crear tu NPC [Por kc, Traducido por mi]

Gracias, pero igual los creditos van para KC. yo unicamente lo traduci, capas use otros terminos y lo detalle un poco mas, pero KC hizo todo.
__________________


[Nikk] is offline  
Old 17/01/2012, 01:23 AM   #4
Adoniiz
Gangsta
 
Join Date: Mar 2010
Location: Wormhole
Posts: 832
Reputation: 57
Default Respuesta: Como crear tu NPC [Por kc, Traducido por mi]

Buena traducción y tutorial.

Aunque te falto traducir esto:

pawn Code:
if(!strcmp(npcname, "MyFirstNPC", true)) //Checking if the NPC's name is MyFirstNPC
__________________
Adoniiz is online now  
Old 17/01/2012, 01:25 AM   #5
[Nikk]
High-roller
 
[Nikk]'s Avatar
 
Join Date: Jun 2011
Location: Argentina.
Posts: 1,491
Reputation: 63
Default Respuesta: Como crear tu NPC [Por kc, Traducido por mi]

Listo, arreglado.
__________________


[Nikk] is offline  
Old 17/01/2012, 01:46 AM   #6
Jovanny
Banned
 
Join Date: Oct 2010
Location: Siиαloα
Posts: 1,463
Reputation: 0
Default Respuesta: Como crear tu NPC [Por kc, Traducido por mi]

También tienes que decir que cuando es solamente un npc en el server no hace falta
pawn Code:
if(!strcmp(npcname, "MiPrimerNPC", true)) //Chequea si el Nombre del NPC es el correcto
Con el IsPlayerNPC basta
Jovanny is offline  
Old 17/01/2012, 02:28 AM   #7
[Nikk]
High-roller
 
[Nikk]'s Avatar
 
Join Date: Jun 2011
Location: Argentina.
Posts: 1,491
Reputation: 63
Default Respuesta: Como crear tu NPC [Por kc, Traducido por mi]

Yo puse lo que decia el post, no queria cambiar nada por que no entiendo mucho del tema y tego miedo en equivocarme.
__________________


[Nikk] is offline  
Old 29/03/2012, 04:22 PM   #8
Daniel_Ruiz
Huge Clucker
 
Daniel_Ruiz's Avatar
 
Join Date: Sep 2011
Location: Detras Tuyo O.o
Posts: 480
Reputation: 6
Default Respuesta: Como crear tu NPC [Por kc, Traducido por mi]

El mio se Conecta pero se sale Que sera?
Daniel_Ruiz is offline  
Old 29/03/2012, 04:37 PM   #9
Soi_salva
Big Clucker
 
Soi_salva's Avatar
 
Join Date: Dec 2009
Location: Mexico City
Posts: 151
Reputation: 8
Default Respuesta: Como crear tu NPC [Por kc, Traducido por mi]

Muchas gracias!, he tenido ganas de hacer un NPC, pero sinceramente nunca entendí sobre el tema. Muchas Gracias, lo probare.
Soi_salva is offline  
Old 29/03/2012, 05:33 PM   #10
santi.arg
Big Clucker
 
Join Date: Jul 2010
Posts: 54
Reputation: 0
Default Respuesta: Como crear tu NPC [Por kc, Traducido por mi]

Quote:
Originally Posted by Daniel_Ruiz View Post
El mio se Conecta pero se sale Que sera?
Por las dudas agregá en OnPlayerConnect arriba de todo
PHP Code:
    if (IsPlayerNPC(playerid))
        return 
1
santi.arg is offline  
 

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



All times are GMT. The time now is 12:39 AM.


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