17.01.2012, 01:02
(
Последний раз редактировалось [Nikk]; 20.01.2012 в 02:12.
)
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:
Eso parece confuso para muchos... vamos a explicar linea por linea.
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
Este es el include que tiene las funciones de los NPC! Importantisimo.
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.
Esta callback tambien esta incluida en la library del NPC. Quiere decir que empezara a NPC cuando este en un vehiculo.
Con esta callback el NPC parara cuando baja de un vehiculo.
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:
"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н:
O... Si queres ponerlo en un FS usa:
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.
O, si lo estas agregando a un FS:
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:
Y si quieres poner otro NPC es Asн:
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:
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.
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
pawn Код:
#define RECORDING "TuNPC" //este TuNPC va a ser el nombre del la grabacion que le diste a tu NPC
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.
pawn Код:
#include <a_npc>
pawn Код:
public OnRecordingPlaybackEnd() StartRecordingPlayback(RECORDING_TYPE, RECORDING);
pawn Код:
public OnNPCEnterVehicle(vehicleid, seatid) StartRecordingPlayback(RECORDING_TYPE, RECORDING);
pawn Код:
public OnNPCEnterVehicle(vehicleid, seatid) StartRecordingPlayback(RECORDING_TYPE, RECORDING);
pawn Код:
public OnNPCExitVehicle() StopRecordingPlayback();
pawn Код:
public OnNPCSpawn() StartRecordingPlayback(RECORDING_TYPE, RECORDING);
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");
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;
}
pawn Код:
public OnFilterScriptInit()
{
// print("my filterscript");//Inesesario
ConnectNPC("MiPrimerNPC","minpc");
return 1;
}
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;
}
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;
}
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;
}
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.