Guten Abend Breadfish-Community,
ich habe mich mal an meinem Jobsystem gesetzt und dies auf das Enum System umgeschrieben,
da dies übersichtlicher und einfacher für mich erscheint.
Allerdings habe ich einen kleinen fehler den ich nicht finde und zwar handelt es sich darum, dass man als Straßenreiniger die Route abfährt.
Dann nach dem letzten Checkpoint wird es ausgeladen und das auto respawnt und dann hat man 5 Minuten zeit um was anderes zu machen. (ich nenne es mal "jobsperre").
Nach den 5 Minuten kann man wieder einsteigen in das Fahrzeug, es kommt auch das Dialog fenster zum starten, allerdings wenn man dies startet wird keine Route mehr angezeigt.
Sprich wenn man einmal gejobbt hat kann man nicht mehr machen...
Enum:
enum Strassen_Fahrt1 {
Float: strasse_FX1,
Float: strasse_FY1,
Float: strasse_FZ1,
Float: strasse_Radius1
};
enum e_PlayerStrassentourInfo1 {
bool:strasse_Aktiv1,
strasse_Checkpoint1
}
new Strassen_Strecke1[MAX_PLAYERS][e_PlayerStrassentourInfo1];
new Strasse_Strecke1[][Strassen_Fahrt1] = {
{2084.0808, -1903.7782, 13.0592, 3.0},
{2091.4739, -1766.4874, 13.0649, 3.0},
{2051.6257, -1750.1464, 13.0470, 3.0},
//Weitere Koordinaten
};
Unter Funktion OnPlayerEnterCheckpoint:
if(Strassen_Strecke1[playerid][strasse_Aktiv1])
{
Strassen_Strecke1[playerid][strasse_Checkpoint1] ++;
new playercp = Strassen_Strecke1[playerid][strasse_Checkpoint1];
if(playercp >= sizeof(Strasse_Strecke1))
{
if(GetVehicleModel(GetPlayerVehicleID(playerid)) == 574)
{
if(IsVehicleDrivingBackwards(GetPlayerVehicleID(playerid)))
{
SendClientMessage(playerid, COLOR_WHITE, "Warte einen {ACFF7B}Moment{FFFFFF} bis dein aufgesammelter Müll entleert wird!");
FreezePlayer(playerid);
SetTimerEx("StrassenreinigungEntladen", 20000, false, "i", playerid);
Strassen_Strecke1[playerid][strasse_Aktiv1] = false;
}
else SendClientMessage(playerid, COLOR_WHITE, "{FF8080}Hinweis{FFFFFF}: Hier musst du rückwärts einparken!");
}
}
else
{
DisablePlayerCheckpoint(playerid);
SetPlayerCheckpoint(playerid,Strasse_Strecke1[playercp][strasse_FX1],Strasse_Strecke1[playercp][strasse_FY1],Strasse_Strecke1[playercp][strasse_FZ1],Strasse_Strecke1[playercp][strasse_Radius1]);
SendClientMessage(playerid, COLOR_WHITE, " ");
SendClientMessage(playerid, COLOR_WHITE, " ");
SendClientMessage(playerid, COLOR_WHITE, " ");
SendClientMessage(playerid, COLOR_WHITE, " ");
SendClientMessage(playerid, COLOR_WHITE, " ");
SendClientMessage(playerid, COLOR_WHITE, " ");
SendClientMessage(playerid, COLOR_WHITE, " ");
SendClientMessage(playerid, COLOR_WHITE, " ");
SendClientMessage(playerid, COLOR_WHITE, " ");
SendClientMessage(playerid, COLOR_WHITE, " ");
new mullschritt1[150];
format(mullschritt1, sizeof(mullschritt1),"{FFEA89}Schritt{FFFFFF}: %d/%d",playercp,sizeof(Strasse_Strecke1));
SendClientMessage(playerid, COLOR_WHITE, mullschritt1);
SendClientMessage(playerid, COLOR_WHITE, "Straße ist {B9FF6C}jetzt{FFFFFF} sauber, {FFEA6C}fahre{FFFFFF} nun zum nächsten Checkpoint!");
}
return 1;
}
Timer:
forward StrassenreinigungEntladen(playerid);
public StrassenreinigungEntladen(playerid)
{
SendClientMessage(playerid, COLOR_YELLOW, " ");
SendClientMessage(playerid, COLOR_YELLOW, " ");
SendClientMessage(playerid, COLOR_YELLOW, " ");
SendClientMessage(playerid, COLOR_YELLOW, " ");
SendClientMessage(playerid, COLOR_YELLOW, " ");
SendClientMessage(playerid, COLOR_YELLOW, " ");
SendClientMessage(playerid, COLOR_YELLOW, " ");
SendClientMessage(playerid, COLOR_YELLOW, "");
SendClientMessage(playerid, COLOR_WHITE, "Dein Sweeper wurde {ACFF7B}erfolgreich{FFFFFF} entladen und zurück geparkt!");
SendClientMessage(playerid, COLOR_YELLOW, " ");
SendClientMessage(playerid, COLOR_WHITE, "Nach {FC4949}5 Minuten{FFFFFF} kannst du wieder deinen Job machen.");
new geld2 = 200+random(600);
PlayerInfo[playerid][pJobgeld] += geld2;
new query[56], string[900];
format(query,sizeof(query),"UPDATE accounts SET Jobgeld='%d' Jobzeit='300' WHERE id='%i'",PlayerInfo[playerid][pJobgeld] += geld2, PlayerInfo[playerid][db_id]);
mysql_function_query(dbhandle,query,false,"","");
format(string, sizeof(string), "Du hast {FC4949}%d€{FFFFFF} verdient und bekommst beim nächsten {FC4949}Zahltag{FFFFFF}!",geld2);
SendClientMessage(playerid, COLOR_WHITE, string);
DisablePlayerCheckpoint(playerid);
UnFreezePlayer(playerid);
PlayerInfo[playerid][pJobzeit] = 300;
new cars;
cars = GetPlayerVehicleID(playerid);
SetVehicleToRespawn(cars);
return 1;
}
Wenn man im Auto einsteigt:
> einsteigen:
if(newstate == PLAYER_STATE_DRIVER)
{
new newcar = GetPlayerVehicleID(playerid);
TelePos[playerid][0] = 0.0;
TelePos[playerid][1] = 0.0;
if(IsASweeper(newcar))
{
if(PlayerInfo[playerid][pJob] == 28)
{
if(JobDuty[playerid] == 1)
{
if(Strassenready[playerid] == 0)
{
ShowPlayerDialog(playerid,JobSREINIGER, DIALOG_STYLE_MSGBOX,"Strassenreiniger","Möchtest du jetzt Straßen reinigen? ","JA","NEIN");
FreezePlayer(playerid);
}
else
{
RemovePlayerFromVehicle(playerid);
UnfreezePlayer(playerid);
SendClientMessage(playerid, COLOR_GRAD2,"Du musst noch warten bevor du den Job erneut machen kannst");
}
}
else
{
RemovePlayerFromVehicle(playerid);
UnfreezePlayer(playerid);
SendClientMessage(playerid, COLOR_WHITE, "Du bist {F53C3C}nicht{FFFFFF} im Jobdienst!");
}
}
else
{
RemovePlayerFromVehicle(playerid);
UnfreezePlayer(playerid);
SendClientMessage(playerid, COLOR_WHITE,"Du bist {F53C3C}kein{FFFFFF} Strassenreiniger");
}
}
}
> Dialog:
if(dialogid == JobSREINIGER)
{
new carid = GetPlayerVehicleID(playerid);
if(response == 0)
{
SendClientMessage(playerid, COLOR_WHITE, "{FF4242}Abgebrochen{FFFFFF}.");
UnFreezePlayer(playerid);
RemovePlayerFromVehicle(playerid);
SetVehicleToRespawn(carid);
}
if(response == 1)
{
DisablePlayerCheckpoint(playerid);
if(GetVehicleModel(GetPlayerVehicleID(playerid)) == 574)
{
if(Strassen_Strecke1[playerid][strasse_Aktiv1] == false)
{
new playercp = Strassen_Strecke1[playerid][strasse_Checkpoint1];
SetPlayerCheckpoint(playerid,Strasse_Strecke1[playercp][strasse_FX1],Strasse_Strecke1[playercp][strasse_FY1],Strasse_Strecke1[playercp][strasse_FZ1],Strasse_Strecke1[playercp][strasse_Radius1]);
Strassen_Strecke1[playerid][strasse_Checkpoint1] = 0;
Strassen_Strecke1[playerid][strasse_Aktiv1] = true;
Strassenready[playerid] = 1;
}
}
SendClientMessage(playerid, COLOR_WHITE,"{FFFF5D}Fahre{FFFFFF} nun die Checkpoints ab und reinige die Strassen.");
UnFreezePlayer(playerid);
return 1;
}
}
Die 5 Minuten ist richtig allerdings danach kann ich keine Route mehr starten...
Kann mir einer weiterhelfen?
Lg
J0a9