Hallo Community,
da in ICQ dessöfteren immer wieder angefragt wird, wie man denn mit SetPVarInt und GetPVarInt arbeitet, habe ich mich dazu entschlossen, dass kurz zu erklären. Im Prinzip ist diese Funktion so einfach wie SendClientMessage.
SetPVarInt ist die ressourcenschonendere Variante, ausserdem finde ich sie besser.
Das Include ,,a_players´´ wird benötigt.
Parameter und Erklärung:
SetPVarInt(playerid, varname, int_value); // playerid ist die SpielerID, für welche der Wert gesetzt werden soll. varname ist einfach nur der Name der anzulegenden Variable. int_value ist der Wert der Variable, sie darf in diesem Falle nur aus Zahlen bestehen, weder Komma noch irgendetwas anderes.
GetPVarInt(playerid, varname); // Wie immer ist "playerid" die SpielerID, von dem das Ganze geholt werden soll. varname wieder einmal der Variablenname der auch bei SetPVarInt gesetzt wurde, ein Beispiel für GetPVarInt unter den Beispielen. GetPVarInt gibt einfach den entsprechenden Wert zurück, wo ihr in einlest ist eure Sache.
Filterscripts und GameModes:
Diese neue Art von Variable kann von jedem Script abgerufen, geändert und gelöscht werden, welche auf dem Server aktiv sind, desshalb solltet ihr aufpassen, dass ihr nicht in einem Filterscript, welches ihr auf eurem Server verwendet, nicht den selben Namen wie in dem GameMode nehmen.
Beispiele:
if(strcmp(cmdtext, "/aktiv", true) == 0) { SendClientMessage(playerid, FARBE, "Der Status ,,Aktiv´´ wurde auf 1 gesetzt."); SetPVarInt(playerid, "Aktiv", 1); return 1; }
if(strcmp(cmdtext, "/inaktiv", true) == 0) { SendClientMessage(playerid, FARBE, "Der Status ,,Aktiv´´ wurde auf 0 gesetzt."); SetPVarInt(playerid, "Aktiv", 0); return 1; }
if(strcmp(cmdtext, "/status", true) == 0)
{
if(GetPVarInt(playerid, "Aktiv") == 1) { return SendClientMessage(playerid, FARBE, "Der Status ,,Aktiv´´ ist 1."); }
if(GetPVarInt(playerid, "Aktiv") == 0) { return SendClientMessage(playerid, FARBE, "Der Status ,,Aktiv´´ ist 0."); }
return 1;
}
new VAR;
VAR = GetPVarInt(playerid, "Aktiv"); // In die Variable Var wird jetzt also mit Hilfe der Funktion GetPVarInt der Wert, welcher mit SetPVarInt gesetzt wurde, in die Variable eingelesen. Sinnlos aber egal.
Es gibt also GetPVarInt und SetPVarInt. Mit Hilfe von GetPVarInt wird der Wert ermittelt, mit SetPVarInt wird der Wert gesetzt. Unter OnPlayerDisConnect bitte noch jeweils folgendes hinzufügen:
DeletePVar(playerid, "Aktiv"); // Löscht die Variable des Spieler wieder, so dass der neue Spieler wieder eine neue hat.
Sollte eine Variable noch nicht gesetzt sein, du sie aber trotzdem abrufen willst, wirst du die Antwort 0 erhalten.
Mit freundlichen Grüßen,
Flip