Codice:
[size=150][color=#FF0000]= Come creare un bot =[/color][/size]
Prima di tutto, dobbiamo registrare il nostro Bot come amx. Startate il vostro server con una gm a vostro piacere, loggatevi con la rcon("/rcon login <password>") e caricate il filescript per registrare il nostro bot("/rcon loadfs npc_record").
I 3 comandi principali per registrare il nostro bot sono:
● /vrecord <nomefile> - Si usa per registrare un percorso con un veicolo.
● /ofrecord <nomefile> - Si usa per registrare un percorso a piedi.
● /stoprecord - Stops recording both vehicle and on foot paths.
In questa guida impareremo come registrare un percorso con un veicolo.
Prendere una macchina che volete e fate /vrecord miobot e registrate un percorso a vostro piacere.
Dopo aver finito di registrare fate /stoprecord. Chiudete il server, andate in server/scriptfiles e spostate il file miobot.rec in server/scriptfiles/npcmodes/recording.
= Controllare il bot =Se controllate nella cartella npcmodes ci sono dei .pwn che servono a controllare il percorso dei bot. Come nome del file mettete miobot.
Quindi create un nuovo documento con pawno e incollate queste seguenti righe:
Codice:
#define RECORDING "miobot" //cambiate il nome con il vostri file.rec
#define RECORDING_TYPE 1 //mettete 1 se avete registrato con un veicolo 2 a piedi.
#include <a_npc> // questo include a samp le funzioni dei bot
main(){}
public OnRecordingPlaybackEnd() StartRecordingPlayback(RECORDING_TYPE, RECORDING); // ripete il movimento dei bot
#if RECORDING_TYPE == 1
public OnNPCEnterVehicle(vehicleid, seatid) StartRecordingPlayback(RECORDING_TYPE, RECORDING); // dopo che il bot viene messo in un veicolo comincia ad eseguire il percorso
public OnNPCExitVehicle() StopRecordingPlayback(); //quando esce si ferma
#else
public OnNPCSpawn() StartRecordingPlayback(RECORDING_TYPE, RECORDING);
#endif
Incollare e non capirci niente non è bello quindi vi dirò il significato di ogni riga.
Codice:
#define RECORDING "mynpc" //
Definisce il nome del file senza l'estensione.Codice:
#define RECORDING_TYPE 1 //
Definisce il tipo della registrazione. 1 se è un bot veicolo, 2 se è un bot a piedi.Codice:
#include <a_npc>
Include le funzioni del bot nel pawno.Codice:
public OnRecordingPlaybackEnd() StartRecordingPlayback(RECORDING_TYPE, RECORDING);
Questa rende il ciclo di registrazione, quando la riproduzione della registrazione è finita, fa ri-inizia il percorso.Codice:
public OnNPCEnterVehicle(vehicleid, seatid) StartRecordingPlayback(RECORDING_TYPE, RECORDING);
Questa riga fa partire la registrazione.Codice:
public OnNPCExitVehicle() StopRecordingPlayback();
Questa riga stoppa la registrazione.Codice:
public OnNPCSpawn() StartRecordingPlayback(RECORDING_TYPE, RECORDING);
Questo script fà partire la registrazione quando il bot è spawnato.= Connettere il vostro Bot =Per connettere il vostro bot, dovete inserire queste righe in OnGameModeInit della vostra gm:
Codice:
ConnectNPC("Fred","miobot");
● "Fred" è il nome del nostro bot. Il nome è necessario perchè se dovete mettere altri bot.
● "miobot" carica il nostro amx. "miobot" è il nome del nostro amx.
Se è una GameMode dovete aggiungere così:
Codice:
public OnGameModeInit()
{
ConnectNPC("Fred","miobot");
return 1;
}
Se è un FilterScript dovete aggiungere così:
Codice:
public OnFilterScriptInit()
{
ConnectNPC("Fred","miobot");
return 1;
}
Ora dopo che abbiamo caricato il nostro bot dobbiamo creare un veicolo dove caricare il nostro percorso.
In cima a tutto:
Codice:
new Fred;
In GameModeInit:
Codice:
public OnGameModeInit()
{
ConnectNPC("Fred","miobot");
Fred = CreateVehicle(400, 0.0, 0.0, 5.0, 0.0, 3, 3, 5000);
return 1;
}
Se è un FilterScript mettete così:
In cima a tutto:
Codice:
new Fred;
Codice:
public OnFilterScriptInit()
{
ConnectNPC("Fred","miobot");
Fred = CreateVehicle(400, 0.0, 0.0, 5.0, 0.0, 3, 3, 5000);
return 1;
}
Ora dobbiamo far spawnare il nostro NPC. Mettete questo script in OnPlayerSpawn:
Codice:
public OnPlayerSpawn(playerid)
{
if(IsPlayerNPC(playerid)) //
{
new npcname[MAX_PLAYER_NAME];
GetPlayerName(playerid, npcname, sizeof(npcname)); //
if(!strcmp(npcname, "Fred", true)) //
{
PutPlayerInVehicle(playerid, Fred, 0); /
}
return 1;
}
// qui mettete le funzioni per i player normali
return 1;
}
Invece se volete caricare piu' bot dovete far così:
Codice:
public OnPlayerSpawn(playerid)
{
if(IsPlayerNPC(playerid))
{
new npcname[MAX_PLAYER_NAME];
GetPlayerName(playerid, npcname, sizeof(npcname));
if(!strcmp(npcname, "Fred", true)) //
{
PutPlayerInVehicle(playerid, MyFirstNPCVehicle, 0); //
return 1;
}
if(!strcmp(npcname, "Carmela", true))
{
PutPlayerInVehicle(playerid, AnotherVehicleID, 0);
return 1;
}
return 1;
}
// qui mettete le funzioni per i player normali
return 1;
}