Hallöchen Breadfish-User,
heute wollte ich mal ein kleineres Tutorial machen, über das setzen und getten von Properties in SAMP.
Ich habe mich nicht wirklich lange damit befasst, also könnte es sein, dass es ein wenig schlecht erklärt
ist, da ich ja generell nicht erklären kann .. Und falls etwas falsch ist, bitte ich darum, dass ihr mir das
sagt, damit ich es verbessern kann.
Also erstmal: Wofür kann man Properties nutzen?
Damit kann man eigentlich so ziemlich das selbe machen, wie das eher bekannte GVar Plugin, und arbeitet
übrigens auch ähnlich wie dieses Plugin. Aber sogesehen könnten die Properties besser sein, da man dazu
nicht extra ein Plugin braucht. Zu der Frage, wozu man Properties nutzen kann:
Man kann damit Integer und Strings auf der Virtuellen Maschine des Servers abspeichern, die man dann von
jedem Script aus wieder abrufen kann, wodurch man z.B. Daten aus einem Filterscript zum Gamemode, oder
vom Gamemode zum Filterscript schicken kann, wodurch man eine bessere Zusammenarbeit der Scripts
schaffen kann.
Die Parameter sind übrigens alle optionale, was evtl. beim ersten Blick für Verwirrung sorgen kann (zumindest
war es bei mir so xD), aber davon sollte man nicht abgeschreckt werden.
Funktionen:
#========================================================================#
#========================================================================#
setproperty (Um eine Property zu setzen)
Mit setproperty kann man einen Integer oder einen String auf der Virtuellen Maschine des Servers abspeichern.
Die Parameter lauten wie folgt:
(id=0, const name[]="", value=cellmin, const string[]="")
Parameter-Erklärung:
[table='2']
[*]Parameter[*]Beschreibung
[*]id[*]Die Virtuelle Maschine, welche zum Speichern verwendet werden soll (Sollte man immer auf 0 lassen).
[*]const name[][*]Wird eigentlich nur gebraucht, wenn man Integer (Zahlen) abspeichern will, ansonsten am besten leer lassen.
[*]value[*]Hier konnt der Integer rein, der gespeichert werden soll, oder die Property-ID, wenn ein String gespeichert wird.
[*]const string[][*]Der String, der gespeichert werden soll. Wenn ein Integer gespeichert wird, diesen Parameter bitte weglassen.
[/table]
Code-Beispiel:
// String speichern
setproperty(0, "", 0, "Test"); // Der String "test" wird mit der Property-ID 0 gespeichert. Die Property-ID brauche wir, damit wir es später wieder "getten" können.
// Integer abspeichern
setproperty(0, "TestZahl", 45); // Der Integer 45 wird unter dem Namen "TestZahl" abgespeichert.
#========================================================================#
#========================================================================#
getproperty (Um eine Property zu getten)
Mit dieser Funktion können wir die Strings / Integer abfragen, die wir in der Virtuellen Maschine gespeichert haben.
Jedoch ist der String anders formatiert und muss "encodet" werden. Dafür nutzen wir die Funktion Strunpack.
Die Parameter sind:
(id=0, const name[]="", value=cellmin, string[]="")
Parameter-Erklärung:
[table='2']
[*]Parameter[*]Beschreibung
[*]id[*]Die Virtuelle Maschine, welche zum Speichern verwendet werden soll (Sollte man immer auf 0 lassen).
[*]const name[][*]Der Property-Name, unter der ihr ggf. einen Integer abgespeichert habt.
[*]value[*]Die Property-ID, unter der ihr ggf. einen String abgespeichert habt.
[*]&string[][*]Der String der mit dem Inhalt 'überschrieben' wird.
[/table]
Code-Beispiel:
new output[10], var;
// String abfragen
getproperty(0, "", 0, output); // Der String aus der Property-ID 0 wird in den "output" (Erstellter String) geschrieben.
// Integer Abfragen
var = getproperty(0, "TestZahl"); // Der Integer aus der Property "TestZahl" wird in in die Variable 'var' (Erstellter Integer) gesetzt.
// Nun wird der String in den richtigen Format gebracht
strunpack(output, output); // Wenn es nicht auf den richtigen Format gebracht wird, dann wird kein String ausgegeben.
#========================================================================#
#========================================================================#
deleteproperty (Zur Löschung einer Property)
Mit deleteproperty kann man eine Property löschen, die man zuvor erstellt hat.
Parameter:
(id=0, const name[]="", value=cellmin)
[table='2']
[*]Parameter[*]Beschreibung
[*]id[*]Die Virtuelle Maschine, welche zum Speichern verwendet werden soll (Sollte man immer auf 0 lassen).
[*]const name[][*]Der Property-Name, unter der ihr ggf. einen Integer abgespeichert habt.
[*]value[*]Die Property-ID, unter der ihr ggf. einen String abgespeichert habt.
[/table]
Code-Beispiel:
// String löschen
deleteproperty(0, "", 0); // Löscht den oben gespeicherten String
// Integer löschen
deleteproperty(0, "TestZahl"); // Löscht den oben gespeicherten Integer
#========================================================================#
#========================================================================#
existproperty (Checkt, ob eine Property bereits besteht)
Mit existproperty kann man abfragen, ob eine Property bereits besteht, oder nicht. Ausgegeben wird
dabei entweder true (wenn es existiert) oder false (wenn es nicht existiert).
Parameter:
(id=0, const name[]="", value=cellmin)
[table='2']
[*]Parameter[*]Beschreibung
[*]id[*]Die Virtuelle Maschine, welche zum Speichern verwendet werden soll (Sollte man immer auf 0 lassen).
[*]const name[][*]Der Property-Name, unter der ihr ggf. einen Integer abgespeichert habt.
[*]value[*]Die Property-ID, unter der ihr ggf. einen String abgespeichert habt.
[/table]
Code-Beispiel:
new bool:check = existproperty(0, "", 0);
if(check == true){
SendClientMessage(playerid,-1,"Die Property existiert bereits.");
}
else if(check == false){
SendClientMessage(playerid,-1,"Die Property existiert nicht.");
}
// Zum Checken des Integers wäre es dann: existproperty(0, "TestZahl);
#========================================================================#
#========================================================================#
So, das wars dann mit den Property-Funktionen. Nun noch ein Hinweis:
Da diese Funktion nur optionale Parameter enthält, muss man nicht alle Angabe angeben, sondern
kann diese alle einzeln angeben, indem man ein Punkt (".") verwendet und dann den zu setzenden
Parameter dahinter angibt.
Beispiel:
// Setzen eines Integers
setproperty(.name = "TestZahl", .value = 45);
// Getten der Zahl
new val = getproperty(.name = "TestZahl");
// Löschen der Zahl
deleteproperty(.name = "TestZahl");
Ich hoffe, es ist jedem klar was damit gemeint ist. Wenn man nur diese einzelnen Parameter angeben kann,
ist es sicher auch nicht umbedingt so verwirren, ist jedoch ansichstsache.
Mit Strings geht es natürlich genauso:
setproperty(.value = 0, .string = "Test");
Damit ist das Tutorial nun zuende. Ich hoffe, es war nicht allzu sch* erklärt. Wenn ihr fragen habt, könnt ihr mich fragen.
Ich hoffe ich habe auch nichts falsch erklärt oder so, und hoffe dass alle (incl. @BlackAce: ) es verstanden haben.
Mit freundlichen Grüßen,
Sharpadox aka Sh13