Was ist Double-O-Users?
Double-O-Users ist ein Accountsystem, welches alle Benutzerdaten automatisch speichert.
Der Scripter, der dies verwendet muss lediglich einen Login- und Registercommand scripten und die gegebene Loginfunktion anwenden und dann kann er ganz normal PVars benutzen mit einem kleinen Unterschied:
PVar muss mit UVar ersetzt werden.
Das heisst, man kann UVars FAST GENAU gleich wie PVars anwenden, jedoch werden diese AUTOMATISCH gespeichert!
Funktionen
native RegisterUser(playerid, password[]);
native CheckUserLogin(playerid, password[]);
native LoginUser(playerid);
native StoreUserData(playerid);
native IsUserRegistered(playerid);
native IsUserLoggedIn(playerid);
native SetUserPassword(playerid, password[]);
native SetAutoLogin(playerid, bool:autologin);
native SetUVarInt(playerid, uvar[], value);
native UpdateUVarInt(playerid, uvar[], value);
native GetUVarInt(playerid, uvar[]);
native SetUVarFloat(playerid, uvar[], Float:value);
native UpdateUVarFloat(playerid, uvar[], Float:value);
native Float:GetUVarFloat(playerid, uvar[]);
native SetUVarString(playerid, uvar[], string[]);
native GetUVarString(playerid, uvar[], string[], len = sizeof string);
native DeleteUVar(playerid, uvar[]);
Die Funktionsnamen sollten selbsterklärend sein.
Und wie gesagt, kann man UVars genauso wie PVars anwenden, wobei diese NICHT einfach so untereinander kompatibel sind.
Beispiel:
#include <a_samp>
#include <zcmd>
#define USER_ACCOUNT_PATH "%s.ini" // Anpassen bitte, für Benutzerdatei.
#include <Double-O-Users>
COMMAND:register(playerid, params[])
{
if (IsUserRegistered(playerid))
{
SendClientMessage(playerid, 0xFF0000FF, "Du bist schon registriert!");
return 1;
}
if (RegisterUser(playerid, params))
SendClientMessage(playerid, 0x00AA00FF, "Du hast Dich erfolgreich registriert!");
else
SendClientMessage(playerid, 0xFF0000FF, "Registrierung fehlgeschlagen!");
return 1;
}
COMMAND:login(playerid, params[])
{
if (!IsUserRegistered(playerid))
{
SendClientMessage(playerid, 0xFF0000FF, "Bitte registriere Dich zuerst mit /register <Passwort>!");
return 1;
}
if (!CheckUserLogin(playerid, params))
SendClientMessage(playerid, 0xFF0000FF, "Falsches Passwort!");
else
{
LoginUser(playerid);
SendClientMessage(playerid, 0x00AA00FF, "Willkommen zurück!");
}
return 1;
}
public OnPlayerRequestSpawn(playerid)
{
// Zwinge Spieler, sich erst einzuloggen!
if (IsUserRegistered(playerid) && !IsUserLoggedIn(playerid))
{
SendClientMessage(playerid, 0xFF0000FF, "Bitte logge Dich ein mit /login <Passwort>!");
return 0;
}
return 0;
}
public OnPlayerDeath(playerid, killerid, reason)
{
UpdateUVarInt(playerid, "Deaths", 1); // + 1
if (killerid != INVALID_PLAYER_ID)
UpdateUvarInt(playerid, "Kills", 1); // + 1
return 1;
}
Das obige Script ist grundsätzlich schon fertig. Jetzt kann man einfach noch weitere UVars hinzufügen.
Download
Double-O-Users (Pastebin)
Double-O-Files 2, notwendig (Pastebin)