Okay habe auch mal wieder ein Problem, dass sich nicht lösen lassen will.
Ich habe einen Wartungsmodus, der über einen Dialog(ShowServerSettings) de-/aktiviert werden kann.
Lustigerweise hat der Dialog sich auch immer richtig angepasst, wenn die Variable (auf 0-wartung aus oder 1wartung-an) gesetzt wurde.
Seit ich jetzt jedoch eine Funktion eingebaut habe, die im Endeffekt nur 1-2 Funktionen mehr ausführt und trotzdem die Variable ändert, bleibt der Text beim deaktivieren einfach auf ("Wartungdsmodus aktiviert")
if(dialogid == DIALOG_SETTINGS_SERVER)
{
if(!response) return 1;
if(//////) //Sicherheitssystem, zu 100% erfüllt sonst hätte sich der Dialog nach dem Klick nicht wd geöffnet
{
if(listitem == 3) { sInfo[sWartung] = (sInfo[sWartung] == 1) ? (changeWartung()) : (changeWartung()); }
if(response && (listitem != 1)) ShowServerSettings(playerid);
} else if(//////) //andere Sicherheitsabfrage
{
//Hier kommt im normalfall eine weiter Abfrage, nicht zu den betroffenen Funktionen
} else
return 1; //damit sich der Dialog schließt
}
Alles anzeigen
stock changeWartung()
{
new wartung[24];
if(!sInfo[sWartung])
{
SendRconCommand("password passwort"); //Passwort ist ja egal ^^
sInfo[sWartung] = 1;
SendClientMessageToAll(COL_GREEN, "Wartungsmodus aktiviert");
kickAllTimer = SetTimer("KickAllTimed", 10*1000, true);
format(wartung, sizeof(wartung), "%d", sInfo[sWartung]);
SendClientMessageToAll(COL_PURPLE, wartung); //gibt 1 aus - richtig - außerdem ist das pw drin und die Spieler sicher gekickt
} else
if(sInfo[sWartung])
{
sInfo[sWartung] = 0;
SendRconCommand("password 0");
SendClientMessageToAll(COL_GREEN, "Wartungsmodus deaktiviert");
format(wartung, sizeof(wartung), "%d", sInfo[sWartung]);
SendClientMessageToAll(COL_PURPLE, wartung); //gibt 0 aus - richtig - password ist wieder rausgenommen und chatnachricht kommt nur bleibt der Text im Dialog gleich
}
return 1;
}
Alles anzeigen
Ich hab auch mal geschaut ob die Variable sonst noch irgendwo geändert wird, aber nein. Nur durch das changeWartung im OnDialogResponse.
Allerdings hat ein Testcommand ergeben, dass die Variable direkt nach dem print in changeWartung nochmal irgendwo auf 1 gesetzt wird.
Ich weiß ist n bissl viel Code für so eine Frage, ich sitze da heute nur schon den 2. Tag ohne Lösung vor.