Ich geb dir am besten mal alle Dateien:
Zusammenfassung (Laden eines einzelnden System-Bereiches, hier die Spielerdatenspeicherung)
//==================================================================================================
// Pointer
forward OnPlayerAccountCheck(playerid);
//==================================================================================================
// Variables
#include <..\..\gamemodes\Scripts\System\UserData\Variables\SavingLoadingVariables.pwn>
//==================================================================================================
// Account Functions
#include <..\..\gamemodes\Scripts\System\UserData\Functions\CheckPlayerAccount.pwn>
#include <..\..\gamemodes\Scripts\System\UserData\Functions\LoadPlayerAccount.pwn>
Datei mit den Variablen:
//==================================================================================================
// Konstanten
#define PUBTYPE_INT (0)
#define PUBTYPE_BOOL (1)
#define PUBTYPE_FLOAT (2)
//==================================================================================================
// UserData Storage
enum _pUserData {
// Statische Daten
pID,
pName[MAX_PLAYER_NAME],
pPassword[129],
pPasswordHash[17],
//Variable Daten
pAdminLevel,
}
new pUserData[MAX_PLAYERS][_pUserData];
//==================================================================================================
// UserData Saving System
enum _pUserDB {
pubFieldName[56],
bool:pubSaved,
pUserData:pubSavedVariable,
pubFieldType
}
new pUserDB[1][_pUserDB] = {
// Allgemeines
{"AdminLevel", true, pAdminLevel, PUBTYPE_INT}
};
Und der "Callback" für den Account-Check:
public OnPlayerAccountCheck(playerid)
{
new rows, fields;
cache_get_data(rows, fields, mysql);
if(rows) {
GetPlayerName(playerid, pUserData[playerid][pName], MAX_PLAYER_NAME),
cache_get_field_content(0, "Password", pUserData[playerid][pPassword], mysql, 129),
cache_get_field_content(0, "PasswordHash", pUserData[playerid][pPasswordHash], mysql, 17),
pUserData[playerid][playerid][pID] = cache_get_field_content_int(0, "pID"),
ShowPlayerLoginDialog(playerid);
}
else {
ShowPlayerRegisterDialog(playerid);
}
return 1;
}
Das ganze wird wie oben zu sehen in folgender Reihenfolge Inkludiert:
Variablen & Funktionen finden sich zum vereinfachten Inkludieren in einer Datei.
Der Callback wird als letztes Inkludiert.
Hier auch noch mal dazu eine Veranschaulichung:
//=====================================================================================================================
// Inkludieren aller Systeme
#include <..\..\gamemodes\Scripts\System\Usefull\loadSystem.pwn>
#include <..\..\gamemodes\Scripts\System\UserData\loadSystem.pwn>
#include <..\..\gamemodes\Scripts\System\AntiCheat\loadSystem.pwn>
//=====================================================================================================================
// Inkludieren aller Events
#include <..\..\gamemodes\Scripts\Events_Game\loadGameEvents.pwn>
#include <..\..\gamemodes\Scripts\Events_Costum\loadCostumEvents.pwn>
//=====================================================================================================================