*3.8.10 - Update, Tutorial komplett neu geschrieben und um "Bots zu Fuß" erweitert
Inhalt:
- Was sind Bots?
- Was wird für die Erstellung von Bots benötigt?
- 1. Bots in Fahrzeugen
- 2. Bots zu Fuß
Was Sind Bots?
Bots (auch NPC oder KI genannt) sind "Spieler", die Aktionen ausführen, die zuvor aufgenommen wurden.
Nicht-Spieler-Charakter (Wikipedia)
Bot (Wikipedia)
Was wird für die Erstellung von Bots benötigt?
- SAMP 0.3 Client
- SAMP Server (egal ob Windows oder Linux)
- Mindestens Basiswissen (!!)
Bots in Fahrzeugen
(Der Fahrzeugbot wird hier BulletLS genannt, ersetzt BulletLS einfach überall gegen euren Botnamen zB Taxi)
- Starte den Homeserver
- Logge dich als Rcon Admin ein (/rcon login PASSWORT)
- Lade den Filterscript für das Aufnehmen von Bots (/rcon loadfs npc_record)
- Setzte dich in ein Fahrzeug (Ich empfehle das Fahrzeug das Später von den Bot gefahren wird!)
- Beginne die Aufnahme (/vrecord BulletLS) BulletLS steht hier für den Aufnahmenamen.
- Fahre bzw fliege die Strecke die der Bot dann zurücklegen soll
- Aufnahme beenden (/stoprecord)
- Gta schließen oder minimieren
- Sampserver schließen
- BulletLS aus den Scriptfiles ordner ausschneiden und in den Ordner npcmodes/recordings einfügen
- Nun öffnet ihr Pawno und klickt oben auf "File-->new"
- In dieser neuen Datei wird nun dieser Code für den Bot benötigt:
#include "a_npc"//Baut die Include "a_npc" ein
#define RECORDING "BulletLS"// BulletLS gegen euren Aufnahmenamen ersetzen!main()
{
}public OnRecordingPlaybackEnd()
{
StartRecordingPlayback(1, RECORDING);//1 = Aufnahmetyp - Fahrzeug, Recording = Der oben definierte Aufnahmename
}public OnNPCEnterVehicle(vehicleid, seatid)
{
StartRecordingPlayback(1, RECORDING);//1 = Aufnahmetyp - Fahrzeug, Recording = Der oben definierte Aufnahmename
}
public OnNPCExitVehicle()
{
StopRecordingPlayback();
} - Datei im Ordner "npcmodes" unter den gleichen Name speichern wie die Aufnahme hat. (Hier: BulletLS)
- Datei Kompilieren (Wichtig! Erst NACH dem Speichern Kompilieren!)
- Nun öffnet ihr den Gamemode in den der Bot eingebaut sein soll
- Hier wird der Bot auf den Server verbunden, sobald der Server gestartet wird, das heißt, wir müssen den Bot unter OnGameModeInit verbinden lassen dazu wird folgendes gemacht:
ConnectNPC("BulletLS","BulletLS");//Das erste BulletLS steht für den Namen hier im Script, das 2te für den Namen der .rec Datei
car_BulletLS = CreateVehicle(541, 1000.0,1000.0, 1000.0, 0.0, 10, 1, -1);//car_BulletLS ist der Name des Autos mit dem der Bot fahrt, Die Positionen von CreateVehicle sind egal,
- Nun müssen wir noch den Autonamen erstellen (oben im Script zu den anderen new's hinzufügen): new car_BulletLS;
- Jetzt muss der Bot die Rechte bekommen, das er verbinden darf:
public OnPlayerConnect(playerid)
{
//Hier Aufpassen! Der Bot wird hier eingeloggt
//In jeden Login&Register Script wird entweder in OnPlayerconnect oder erst später überprüft ob bereits ein Account mit diesen Namen besteht oder nicht,
//deswegen unbedingt die Bedingungen bei diesen Scripts anpassen!
if(IsPlayerNPC(playerid))
{
new botname[MAX_PLAYER_NAME];
GetPlayerName(playerid, botname, sizeof(botname));
if(!strcmp(botname, "BulletLS", true))
{
gPlayerLogged=1;//Der Bot ist gleich eingeloggt (Anpassen!)
}
}
......
- So, jetzt muss der Bot noch spawnen:
public OnPlayerSpawn(playerid)
{
if(IsPlayerNPC(playerid))
{
new botname[MAX_PLAYER_NAME];
GetPlayerName(playerid, botname, sizeof(botname));
if(!strcmp(botname, "BulletLS", true))
{
pCarLic[playerid]=1;//Hier muss der Führerschein gegeben werden! (Anpassen!)
PutPlayerInVehicle(playerid, car_BulletLS, 0);//car_BulletLS = das Fahrzeug was wir oben erstellt haben, 0 = der Fahrersitz
}
}
......
- Nicht vergessen - Login & Register System anpassen!!
- Kompilieren
- in der server.cfg die anzahl der bots (maxnpc) anpassen
- Das war es auch schon....
Bots zu Fuß erstellen
(Dieser Bot wird hier "Zivi" genannt)
- Starte den Homeserver
- Logge dich als Rcon Admin ein (/rcon login PASSWORT)
- Lade den Filterscript für das Aufnehmen von Bots (/rcon loadfs npc_record)
- Starte jetzt die Aufnahme (/ofrecord Zivi) - Zivi steht für den Botnamen
- Führe nun die Aktionen aus die der Bot machen soll (gehen, ......)
- Sobald du fertig bist, beende die Aufnahme (/stoprecord)
- Gta schließen oder minimieren
- Sampserver schließen
- "Zivi" aus den Scriptfiles ordner ausschneiden und in den Ordner npcmodes/recordings einfügen
- Nun öffnet ihr Pawno und klickt oben auf "File-->new"
- In dieser neuen Datei wird nun dieser Code für den Bot benötigt:
#include <a_npc>
#define RECORDING "Zivi"// Zivi gegen euren Aufnahmenamen ersetzen!main()
{
}public OnRecordingPlaybackEnd()
{
StartRecordingPlayback(2, RECORDING);//2 = Aufnahmetyp - Zu fuß, Recording = Der oben definierte Aufnahmename
}public OnNPCExitVehicle()
{
StartRecordingPlayback(2, RECORDING);//2 = Aufnahmetyp - Zu fuß, Recording = Der oben definierte Aufnahmename
}public OnNPCSpawn()
{
StartRecordingPlayback(2, RECORDING);//2 = Aufnahmetyp - Zu fuß, Recording = Der oben definierte Aufnahmename
} - Datei im Ordner "npcmodes" unter den gleichen Name speichern wie die Aufnahme hat. (Hier: Zivi)
- Datei Kompilieren (Wichtig! Erst NACH dem Speichern Kompilieren!)
- Nun öffnet ihr den Gamemode in den der Bot eingebaut sein soll
- Hier
wird der Bot auf den Server verbunden, sobald der Server gestartet
wird, das heißt, wir müssen den Bot unter OnGameModeInit verbinden
lassen dazu wird folgendes gemacht:
ConnectNPC("Zivi","Zivi");//Das erste "Zivi" steht für den Namen hier im Script, das 2te für den Namen der .rec Datei
- Jetzt muss der Bot die Rechte bekommen, das er verbinden darf:
public OnPlayerConnect(playerid)
{
//Hier Aufpassen! Der Bot wird hier eingeloggt//In jeden Login&Register Script wird entweder in
OnPlayerconnect oder erst später überprüft ob bereits ein Account mit
diesen Namen besteht oder nicht,
//deswegen unbedingt die Bedingungen bei diesen Scripts anpassen!
if(IsPlayerNPC(playerid))
{
new botname[MAX_PLAYER_NAME];
GetPlayerName(playerid, botname, sizeof(botname));
if(!strcmp(botname, "Zivi", true))
{
gPlayerLogged=1;//Der Bot ist gleich eingeloggt (Anpassen!)
}
}
...... - So, jetzt muss der Bot noch spawnen:
public OnPlayerSpawn(playerid)
{
if(IsPlayerNPC(playerid))
{
new botname[MAX_PLAYER_NAME];
GetPlayerName(playerid, botname, sizeof(botname));
if(!strcmp(botname, "Zivi", true))
{
//Hier den Bot sachen geben, wie Waffen oder Ähnliches
}
}
......
- Nicht vergessen - Login & Register System anpassen
- Kompilieren
- in der server.cfg die anzahl der bots (maxnpc) anpassen
- Fertig
Leider sind beim einfügen die Klammern verrutscht, bitte selbst wieder richtig einrücken