Como crear tu NPC [Por kc, Traducido por mi] -
[Nikk] - 17.01.2012
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 Код:
#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 Код:
#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 Код:
#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.
Este es el include que tiene las funciones de los NPC!
Importantisimo.
pawn Код:
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 Код:
public OnNPCEnterVehicle(vehicleid, seatid) StartRecordingPlayback(RECORDING_TYPE, RECORDING);
pawn Код:
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 Код:
public OnNPCExitVehicle() StopRecordingPlayback();
Con esta callback el NPC parara cuando baja de un vehiculo.
pawn Код:
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 Код:
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 Код:
public OnGameModeInit()
{
//print("my gamemode"); // No es nesesario.
ConnectNPC("MiPrimerNPC","minpc");
return 1;
}
O... Si queres ponerlo en un FS usa:
pawn Код:
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 Код:
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 Код:
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 Код:
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 Код:
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 Код:
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.
Re: Como crear tu NPC [Por kc, Traducido por mi] -
OziiL - 17.01.2012
Exelente post. Muy bueno el aporte. Muy bien explicado e detallado parte por parte.
Saludos.
________________
Respuesta: Como crear tu NPC [Por kc, Traducido por mi] -
[Nikk] - 17.01.2012
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.
Respuesta: Como crear tu NPC [Por kc, Traducido por mi] -
Adoniiz - 17.01.2012
Buena traducciуn y tutorial.
Aunque te falto traducir esto:
pawn Код:
if(!strcmp(npcname, "MyFirstNPC", true)) //Checking if the NPC's name is MyFirstNPC
Respuesta: Como crear tu NPC [Por kc, Traducido por mi] -
[Nikk] - 17.01.2012
Listo, arreglado.
Respuesta: Como crear tu NPC [Por kc, Traducido por mi] -
Jovanny - 17.01.2012
Tambiйn tienes que decir que cuando es solamente un npc en el server no hace falta
pawn Код:
if(!strcmp(npcname, "MiPrimerNPC", true)) //Chequea si el Nombre del NPC es el correcto
Con el IsPlayerNPC basta
Respuesta: Como crear tu NPC [Por kc, Traducido por mi] -
[Nikk] - 17.01.2012
Yo puse lo que decia el post, no queria cambiar nada por que no entiendo mucho del tema y tego miedo en equivocarme.
Respuesta: Como crear tu NPC [Por kc, Traducido por mi] -
Daniel_Ruiz - 29.03.2012
El mio se Conecta pero se sale Que sera?
Respuesta: Como crear tu NPC [Por kc, Traducido por mi] -
santi.arg - 29.03.2012
Quote:
Originally Posted by Daniel_Ruiz
El mio se Conecta pero se sale Que sera?
|
Por las dudas agregб en OnPlayerConnect arriba de todo
PHP код:
if (IsPlayerNPC(playerid))
return 1;
Respuesta: Como crear tu NPC [Por kc, Traducido por mi] -
Daniel_Ruiz - 29.03.2012
Quote:
Originally Posted by santi.arg
Por las dudas agregб en OnPlayerConnect arriba de todo
PHP код:
if (IsPlayerNPC(playerid))
return 1;
|
Gracias me Sirvio
Pero como hago para que en Ves De estar en Aut se Quede Quieto y Haga una animacion?