Huhu
Ich möchte eigentlich keinen Stein anstoßen der hier großartig ins Rollen kommt daher mach ichs kurz.
Ich wurde schon mehrfach nun drauf angesprochen das die Fahrschule n klatsch weg hat, daher hab ich mal eben einen kleinen HotFix parat.
Betroffen seid ihr nur wenn-> Beim Abbruch der Theorie der Spieler im Wasser Spawnt, beim ausloggen eines Spielers die Fahrschule nicht mehr verwendet werden kann.
ACHTUNG solltet ihr bereits etwas verändert haben wäre es fatal hier alles zu kopieren und einzufügen! Dafür werde ich keinen Support leisten!
Serverseitig:
\Functions\Systems\fn_Pruefung.sqf;
Spoiler anzeigen
case "Theorie":
{
diag_log format ["Theoretische Fahrpruefung wurde von %1 mit der UID %2 gestartet.", _name, _uid];
[[_ok],"life_fnc_Theoriepruefung",_uid,false] spawn life_fnc_MP;
};
// vorgefundener Code
Alles anzeigen
Diesen Code ändern wir nun wie folgt ab:
case "Theorie":
{
diag_log format ["Theoretische Fahrpruefung wurde von %1 mit der UID %2 gestartet.", _name, _uid];
[[_ok],"life_fnc_Theoriepruefung",_uid,false] spawn life_fnc_MP;
[] spawn {
_c = 0;
while{true} do {
if !(PKW_FahrschuleT) exitwith {};
_c=_c+1;
if (_c>400) exitwith {PKW_FahrschuleT = false; publicVariable "PKW_FahrschuleT";};
sleep 1;
};
};
};
Alles anzeigen
Dies ist nur eine kleine Schleife die alle Sekunde nachfragt ob die Fahrschule noch benutzt wird. Falls nicht bricht sie ab. Ich geh davon aus, das niemand länger als 400 Sekunden in der Prüfung ist.
Sollte unerwarteter weise die Prüfung nach 400 Sekunden noch nicht beendet sein, kann man davon ausgehen das der Spieler sich ausgeloggt hat oder ähnliches. Demnach wird die Prüfung zurückgesetzt.
Da ich grade nur die Standard NN Mission habe sehe ich keine weitere relevante Prüfung die im Server gefixt werden muss.
Kommen wir nun zur Mission selber:
Spoiler anzeigen
File: core\Fahrschule\fn_Theoretische_Abfrage.sqf;
folgendes sehen wir:
private["_uid","_name"];
_uid = getplayerUID player;
_name = name player;
if(life_cash < 500) exitWith {hint "Du hast nich genug Geld dabei um die Theoriepruefung zu absolvieren! Du benoetigst 500$";};
if(license_civ_driver) exitWith {hint "Du hast den Fuehrerschein bereits?!";};
if(license_civ_Theorie) exitWith {hint "Du hast die Theoriepruefung bereits bestanden. Besuche nun die Praktische Fahrschule.";};
if(Theoriestrafe) exitWith { hint "Da du den letzten Test vermasselt hast, hast du eine Strafzeit von 10 Minuten bekommen. Bitte komme spater wieder!";};
if(!license_civ_ausweis) exitWith {hint "Du bist noch kein Staatsbuerger"};
life_cash = life_cash - 500;
diag_log format ["////////////////////////////////////////////////////Theoretische Fahrpruefung von %2 mit UID %1 wird angefragt\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\",_uid, _name];
[["Theorie",_uid,_name],"TON_fnc_Pruefung",false,false] spawn life_fnc_MP;
Alles anzeigen
Hier ist der Clue
if(!license_civ_ausweis) exitWith {hint "Du bist noch kein Staatsbuerger"};
if(PKW_FahrschuleT) exitWith { hint "Gerade absolviert jemand die Fahrschule. Bitte komme zu einem spaeteren Zeitpunkt wieder!";};
PKW_FahrschuleT = true;
publicVariable "PKW_FahrschuleT";
_marker createMarker ["LastPos",position player];
life_cash = life_cash - 500;
Diese 4 Zeilen müssen zwischen den beiden anderen angelegt werden. Damit fragt er noch einmal ab ob jemand in der Prüfung ist.
Damit sollte der Fehler mit dem Fehlgeschlagenem Teleport behoben sein + Absolute Abfrage ob jemand in der Theorie drin ist.