Hallo liebe User,
Ich möchte euch hier ein Einfaches Farmer System (Tutorial) zeigen, so könnt ihr in Einfachen schritten mit ein wenig eigender leistung ein Farmer job adden.
Ihr benötigt für dieses Tutorial etwas Grundwissen da ihr hier auch selber hand anlegen müsst und es nicht nur nach Copy&Paste es benuzt.
Schritt 1:
//Header
//Einstellungen
#define FarmerCheckpoints 10 //Wie viel farmer CP´s ihr addet
#define farmergehalt 500// Der Lohn den der Farmer bei erfolgreicher ernte bekommt.
#define EndFarmerCP 10 // Der letzte CP den ihr addet.
#define FFahrzeuge 10 // Wie viele Farmer Fahrzeuge ihr addet
//================================FARMER-FAHRZEUGE==============================
new FarmFahrzeug[FFahrzeuge];
forward FarmerFahrzeug(carid);
//================================FARMER-CP-STUFF================================
#define INVALID_FARMER_CP -1
new AktuellerCP[MAX_PLAYERS]; // Diese Function liest später euren Aktuellen CP aus bzw. prüft.
new Float:FarmerCPS[FarmerCheckpoints][3]={
{X,Y,Z}, // X,Y,Z Mit euren 1 Checkpoint Coords ersetzen.
{X,Y,Z}, // Hier das selber nur den 2 CP.
// .... usw. bis ihr alle eure drinne habt, beachtet bitte solltet ihr jetz mehr als 10 haben müsst ihr oben die FarmerCheckpoints erhöhen.
// bei den letzten dann kein , hinten machen.
};
Schritt 2:
//OnGameModeInit
FarmFahrzeug[0] = CreateVehicle(modelid,x,y,z,a,farbe1,farbe2,-1); // Hier fügt ihr dann eure Farmer fahrzeuge ein jeweils mit FarmFahrzeug[1,2,3,4 ...usw] fortlaufend ein.
Schritt 3:
//OnPlayerConnect
AktuellerCP[playerid] = INVALID_FARMER_CP;
Schritt 4:
// Irgendwo in euren GM
public FarmerFahrzeug(carid)
{
for(new i = 0; i < sizeof(FarmFahrzeug); i++)
{
if(carid == FarmFahrzeug[i])
{
return 1;
}
}
return 0;
}
Schritt 5:
//OnplayerCommand
cmd = strtok(cmdtext, idx);
if(strcmp(cmd, "/ernten", true) == 0)
{
new fahrzeug= GetPlayerVehicleID(playerid);
if(AktuellerCP[playerid] != INVALID_FARMER_CP)return SendClientMessage(playerid,0xFF0000FF, "Error: Sie sind bereits in Ihren Job aktiv."); // Hiermit Prüfen sie ob die Person nicht bereits am Ernten ist.
if(!FarmerFahrzeug(fahrzeug))return SendClientMessage(playerid,0xFF0000FF, "Error: Sie befinden sich nicht auf den richtigen Fahrzeug."); //Hier Prüfen sie ob der Spieler auch auf ein Farmer Fahrzeug sitzt
AktuellerCP[playerid] = ++;
SetPlayerCheckpoint(playerid,FarmerCPS[AktuellerCP[playerid]][0],FarmerCPS[AktuellerCP[playerid]][1],FarmerCPS[AktuellerCP[playerid]][2], 8.0); // Hier wird automatisch der CP den sie oben als 1 definiert haben gesetzt.
SendClientMessage(playerid,0x00CC00FF, "Fahren sie nun die Checkpoints ab um das Feld abzuernten.");
return 1;
}
Schritt 6:
// Unter OnPlayerCheckpoint
new fahrzeug= GetPlayerVehicleID(playerid);
if(AktuellerCP[playerid] != INVALID_FARMER_CP && FarmerFahrzeug(fahrzeug))
{
if(AktuellerCP[playerid] == EndFarmerCP)
{
DisablePlayerCheckpoint(playerid);
AktuellerCP[playerid] = INVALID_FARMER_CP;
GivePlayerMoney(playerid,farmergehalt);
SendClientMessage(playerid,0x00CC00FF, "Ernte Vorgang erfolgreich");
SetVehicleToRespawn(fahrzeug);
}
else{AktuellerCP[playerid]++;SetPlayerCheckpoint(playerid,FarmerCPS[AktuellerCP[playerid]][0],FarmerCPS[AktuellerCP[playerid]][1],FarmerCPS[AktuellerCP[playerid]][2], 8.0);}
}
Sonstiges :
Für Personen die kein Strtok verwenden :
//Iwo in GM einfügen, am besten ganz unten.
strtok(const string[], &index)
{
new length = strlen(string);
while ((index < length) && (string[index] <= ' '))
{
index++;
}
new offset = index;
new result[20];
while ((index < length) && (string[index] > ' ') && ((index - offset) < (sizeof(result) - 1)))
{
result[index - offset] = string[index];
index++;
}
result[index - offset] = EOS;
return result;
}
Fertig.. solltet ihr es verstanden haben, seit ihr in der Lage ein Farmer Job oder sogar andere wie Müllabfuhr oder eine Fahrschule zb.s zu adden.
Edit : Schritt 6 Fehler ausgebessert
Edit² : Tutorial etwas ausgebessert. Danke Goldkiller