Hallo,
ich habe soeben eine Anfrage bekommen.
Ein User wollte wissen wie man Nebenjob´s hinzufügt.
Daraufhin dachte ich mir das ich mal ein Tutorial für ein Job System bastel.
Dies kann man auch als Nebenjob System nutzen.
Als aller erstes definieren wir die Jobs dazu setzen wir erstmal eine Enum Struktur:
enum JobI
{
jName[32],
Float: jX,
Float: jY,
Float: jZ,
}
Ich erstelle zum Beispiel mal den Job Drogen Dealer:
#define Jobs_On_This_Server 1 //Hier einträgen wieviele Jobs auf euren Server geben soll diese müssen allerdings alle definiert werden
new Jobs[Jobs_On_This_Server][JobI]={
{"Drogen Dealer", 0.0, 0.0, 0.0}
// %1 %2 %3 %4
};
Beschreibung:
%1: Der name des Berufes
%2,%2,%3: Die X, Y, Z Koordinaten wo der Spieler seinen Beruf nachgehen kann.
Als nächstes erkläre ich euch wie die Leute einen Job annehmen können.
Die Jobs werden aller untereinander im Dialog aufgelistet.
Hier der Befehl um einen Job anzunehmen.
Wir definieren für unser JobSystem ein Dialog. (Off Topic: Hier zeige ich euch das man auch eine ID für mehrere Dialoge verwenden kann)
#define DiaJob 1
if(strcmp(cmd, "/jobs", true) == 0)
{
if(GetPVarInt(playerid, "pJob") != 0)return true; // Der Spieler hat schon einen Job
new str[256];
for(new i=0; i < Jobs_On_This_Server; i++)format(str, sizeof(str), "%s\n%s", str, Jobs[i][jName]);
ShowPlayerDialog(playerid, DiaJob, DIALOG_SLYLE_LIST, "Jobs", str, "Auswählen", "Abbrechen");
SetPVarInt(playerid, "DiaAction", 1); //Brauchen wir damit wir nur eine Dialogid benötigen.
return true;
}
if(strcmp(cmd, "/kündigen", true) == 0)
{
if(GetPVarInt(playerid, "pJob") == 0)return true; // Der Spieler hat keinen Job
ShowPlayerDialog(playerid, DiaJob, DIALOG_STYLE_MSGBOX, "Kündigung", "Bist du dir sicher das du deinen Job kündigen willst?", "Ja", "Abbrechen");
SetPVarInt(playerid, "DiaAction", 2); //Brauchen wir damit wir nur eine Dialogid benötigen.
return true;
}
Jetzt folg der wichtigste Teil zu diesen Job System.
Dieser folgende Code gehört unter OnDialogResponse)
if(dialogid==DiaJob)
{
switch(GetPVarInt(playerid, "DiaAction"))
{
case 1:
{
if(respone)
{
SetPVarInt(playerid, "SelectedJob", listitem+1);
SetPVarInt(playerid, "DiaAction", 3);
new str[128];
format(str, 128, "Bist du dir sicher das du den Job %s\nMachen möchtest ?", Jobs[listitem+1][jName]);
ShowPlayerDialog(playerid, DiaJob, DIALOG_STYLE_MSGBOX, "Bestätigen", str, "JA", "Zurück");
}
else return true;
}
case 2:
{
if(response)
{
SetPVarInt(playerid, "DiaAction", 0);
ShowPlayerDialog(playerid, DiaJob, DIALOG_STYLE_INPUT, "Kündigung", "Du hast deinen Beruf erfolgreich gekündigt.", "OK", "");
SetPVarInt(playerid, "pJob", 0);
}
else return true;
}
case 3:
{
if(response)
{
SetPVarInt(playerid, "pJob", GetPVarInt(playerid, "SelectedJob"));
new str[128];
format(str, 128, "Info: Du hast den Job %s\nNun angenommen.", Jobs[GetPVarInt(playerid, "pJob")][jName]);
ShowPlayerDialog(playerid, DiaJob, DIALOG_STYLE_MSGBOX, "Info", str,"OK", "");
SetPVarInt(playerid, "DiaAction", 0);
return true;
}
else
{
for(new i=0; i < Jobs_On_This_Server; i++)format(str, sizeof(str), "%s\n%s", str, Jobs[i][jName]);
ShowPlayerDialog(playerid, DiaJob, DIALOG_SLYLE_LIST, "Jobs", str, "Auswählen", "Abbrechen");
SetPVarInt(playerid, "DiaAction", 1); //Brauchen wir damit wir nur eine Dialogid benötigen.
return true;
}
}
}
}
Ob der Spieler ein einem Beruf ist könnt ihr so abfragen
BSP:
if(GetPVarInt(playerid, "pJob") ==1)//Wäre in unseren Fall der Drogen Dealer
Ich hoffe ich konnte es soweit verständlich erklären.
Dieses Script ist nicht auf Fehler getestet da ich es hier im Forum geschrieben habe.
//Edit[1]: Fehlerbehebung 1
//Edit[2]: Fehlerbehebung 2
LG RFT