17.10.2013, 19:01
(
Последний раз редактировалось adri1; 23.10.2013 в 17:32.
)
En este tutorial vamos a aprender a como realizar NPCs (bots) que parezcan que tenga vida propia.
Crear bot
їQuй necesitaremos para grabarlo?
їComo grabar?
/vrecord [nombre]
/ofrecord [nombre]
/stoprecord [nombre]
Explicaciуn: para crear un bot, necesitaremos grabarlo, lo que haremos serб ejecutar uno de esos 2 comandos (depende de lo que queramos), y entonces estaremos grabando, desde el momento que ejecutamos el comando, hasta el momento que paralizamos la grabaciуn (/stoprecord), el recorrido, animaciones, etc serбn grabados en un archivo .rec para despuйs ser reproducido como si fuera un jugador normal.
Como ponerlo en el servidor...
Una vez ya grabado, saldremos del servidor e iremos a la carpeta 'scriptfiles' del servidor en el que hemos grabado.
Allн encontraremos un archivo con el nombre que introducimos anteriormente, con la extensiуn .rec
Copiamos ese archivo a la carpeta... npcmodes/recordings/
Una vez allн abrimos pawno.exe (.../pawno/pawno.exe), y daremos crearemos un nuevo archivo.
Borramos todo, y empezamos a crearlo...
Bien, ahora guardamos este .pwn en .../npcmodes con cualquier nombre (despuйs serб usado).
Bien, una vez compilado y guardado, abrimos el FS/GM donde haremos que el NPC comienze.
Ahora, conectaremos el NPC al servidor:
Una vez que tengamos esto, nuestro NPC, ya se conectarб, pero aъn no aparecerб... para evitar registros, diбlogos etc, haremos los siguiente: en todas las siguientes callbacks pondremos arriba:
Ese cуdigo harб que si el jugador es un NPC, no se cumpla las funciones de OnPlayerConnect, para asн evitar registros etc.
Ahora nos dirigiremos a OnPlayerSpawn
Compilamos, y ya deberнa de empezar nuestro NPC.
Funciones y callbacks para NPCs
Las siguientes funciones y callbacks solo funcionarбn si las introducimos en el .pwn del NPC (.../npcmodes/name.pwn)
Funciones:
ConnectNPC(name[], script[])
Otro
Como forzar a un NPC reproducir una animaciуn.
Tambiйn editar 'maxnpc' en server.cfg al nъmero mбximo de NPCs que quieran conectar, ya que si no el NPC no podrб conectar. (Gracias a EnzoMetlc por recordarmelo)
Saludos y espero que os haya servido!
- Crear bot
- Como ponerlo en el servidor
- Funciones y callbacks para NPCs
Crear bot
їQuй necesitaremos para grabarlo?
- npc_record
їComo grabar?
- Cargamos el filterscript:
Aсadimos 'npc_record' a la lнnea 'filterscripts' de nuestro server.cfg y guardamos... - Abrimos nuestro servidor, entramos....
Una vez dentro, deberemos de logearnos como administrador RCON (contraseсa en server.cfg) con el siguiente comando: /rcon login contraseсa - Una vez ya logeados como admin RCON... podremos ejecutar los cmds siguientes:
/vrecord [nombre]
- [nombre] se refiere al nombre del archivo que tendremos posteriormente (.rec)
- /vrecord servirб para grabar en vehнculo, es decir, que si queremos crear un NPC/bot que controle un vehнculo, deberemos subirnos a uno, y empezar a grabar desde el vehнculo con este comando.
/ofrecord [nombre]
- [nombre] se refiere al nombre del archivo que tendremos posteriormente (.rec)
- /ofrecord servirб para grabar a pie, es decir para correr, saltar, andar, hacer animaciones, todo lo que hagamos serб reproducido despuйs.
/stoprecord [nombre]
- Cuando hayamos terminado de grabar, usaremos este comando, para paralizar la grabaciуn y obtener asн el archivo .rec.
Explicaciуn: para crear un bot, necesitaremos grabarlo, lo que haremos serб ejecutar uno de esos 2 comandos (depende de lo que queramos), y entonces estaremos grabando, desde el momento que ejecutamos el comando, hasta el momento que paralizamos la grabaciуn (/stoprecord), el recorrido, animaciones, etc serбn grabados en un archivo .rec para despuйs ser reproducido como si fuera un jugador normal.
Como ponerlo en el servidor...
Una vez ya grabado, saldremos del servidor e iremos a la carpeta 'scriptfiles' del servidor en el que hemos grabado.
Allн encontraremos un archivo con el nombre que introducimos anteriormente, con la extensiуn .rec
Copiamos ese archivo a la carpeta... npcmodes/recordings/
Una vez allн abrimos pawno.exe (.../pawno/pawno.exe), y daremos crearemos un nuevo archivo.
Borramos todo, y empezamos a crearlo...
pawn Код:
#include <a_npc>
main(){}
#define REC_NAME "test" // Aquн deberбn de poner el nombre del archivo .rec
#define NPC_TYPE 0 // 0 serб a pie, cambiamos a 1 si grabemos en vehнculo.
public OnRecordingPlaybackEnd() //Cuando la reproducciуn del bot ha terminado..
{
StartRecordingPlayback(NPC_TYPE, REC_NAME); //Volvemos a empezarla...
return 1;
}
#if NPC_TYPE == 0
public OnNPCSpawn() //Cuando el bot spawnea
{
StartRecordingPlayback(NPC_TYPE, REC_NAME); //Comenzamos la reproducciуn del bot.
return 1;
}
#else
public OnNPCEnterVehicle(vehicleid, seatid) //Cuando el bot entra a un vehнculo
{
StartRecordingPlayback(NPC_TYPE, REC_NAME);
return 1;
}
public OnNPCExitVehicle() //Cuando el bot sale de un vehнculo
{
StopRecordingPlayback();
return 1;
}
#endif
Bien, una vez compilado y guardado, abrimos el FS/GM donde haremos que el NPC comienze.
Ahora, conectaremos el NPC al servidor:
pawn Код:
new NPC_Veh; //Solo si nuestro NPC fue grabado en un vehнculo.
public OnGameModeInit()
{
ConnectNPC("nombre", "script"); //en nombre se pone el nombre del NPC, y en script el nombre del .amx/.pwn que creemos anteriormente
NPC_Veh = CreateVehicle(400, 0.0, 0.0, 0.0, 0.0, -1, -1, 5000); //Si el NPC va en vehнculo, crearemos el vehнculo del NPC...
return 1;
}
pawn Код:
if(IsPlayerNPC(playerid)) return 1;
- OnPlayerConnect
- OnPlayerDisconnect
- OnPlayerRequestClass
- OnPlayerRequestSpawn
pawn Код:
public OnPlayerConnect(playerid)
{
if(IsPlayerNPC(playerid)) return 1;
//siempre poner arriba del todo, antes de las demбs funciones
return 1;
}
Ahora nos dirigiremos a OnPlayerSpawn
pawn Код:
public OnPlayerSpawn(playerid)
{
if(IsPlayerNPC(playerid))
{
new npcname[24];
GetPlayerName(playerid, npcname, 24);
if(!strcmp(npcname, "nombre", true)) //En nombre el name del NPC
{
//Aquн podremos darle demбs funciones, como SetPlayerSkin, etc.
PutPlayerInVehicle(playerid, NPC_Veh, 0); // Si grabemos el NPC dentro de un vehнculo, lo introducimos a el.
}
return 1;
}
//Lo otro para players normales va aquн!
return 1;
}
Funciones y callbacks para NPCs
Las siguientes funciones y callbacks solo funcionarбn si las introducimos en el .pwn del NPC (.../npcmodes/name.pwn)
Funciones:
ConnectNPC(name[], script[])
- Conecta un NPC.
- name[] : Nombre del NPC
- script[] : Nombre del archivo .amx en /npcmodes
- Obtiene la distancia que hay entre el NPC y un punto determinado.
- Float:x : Coordenada X
- Float:y : Coordenada Y
- Float:z : Coordenada Z
- Float:Distance : Donde el valor serб devuelto
- Obtiene el бngulo del NPC.
- Float:Angle : Donde el valor serб devuelto
- Obtiene la posiciуn del NPC.
- Float:x : Donde el valor X serб devuelto
- Float:y : Donde el valor Y serб devuelto
- Float:z : Donde el valor Z serб devuelto
- Sirve para pausar la reproducciуn del NPC.
- Esta funciуn no tiene parбmetros
- Sirve para reanudar la reproducciуn del NPC, si antes habнa sido pausada.
- Esta funciуn no tiene parбmetros
- Envнa un mensaje como si el NPC lo hubiera escrito.
- msg[] : El mensaje.
- Esta funciуn hace que el NPC ejecute un comando.
- commandtext[] : El comando.
- Esta funciуn cambia el бngulo del NPC.
- Float:ang : El бngulo nuevo.
- Cambia las coordenadas al NPC.
- Float:x : Coordenada X
- Float:y : Coordenada Y
- Float:z : Coordenada Z
- Comienza a reproducirse el NPC.
- playbacktype : el tipo de grabaciуn
- recordname[] : Nombre del archivo .rec
- Paraliza por completo el NPC.
- Esta funciуn no tiene parбmetros.
Otro
Como forzar a un NPC reproducir una animaciуn.
Tambiйn editar 'maxnpc' en server.cfg al nъmero mбximo de NPCs que quieran conectar, ya que si no el NPC no podrб conectar. (Gracias a EnzoMetlc por recordarmelo)
Saludos y espero que os haya servido!