Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- // Inside admin system (the functions are bellow):
- hook OnPlayerLoad(playerid)
- {
- new string[40];
- mysql_format(db, string, sizeof(string), "SELECT admin FROM admins WHERE id=%i", GetPlayerId(playerid));
- SendPlayerQuery(playerid, string, "_adm_Palyer_load"); //Send a query and increment an internal counter
- return 1;
- }
- forward _adm_Palyer_load(playerid, checker);
- public _adm_Palyer_load(playerid, checker)
- {
- if(checker != DataLoadChecker(playerid)) return 1; //check for race condition & decrement the counter
- if(!IsAnyData()) return 1;
- //finally load the data
- cache_get_value_name_int(0, "admin", AdminLevel[playerid]);
- if(AdminLevel[playerid] > 0)
- Iter_Add(admins, playerid);
- return 1;
- }
- // This are the functions used
- #define IsAnyData() (cache_is_any_active() && cache_num_rows())
- SendPlayerQuery(playerid, str[], func[])
- {
- DataToLoad[playerid]++; //DataToLoad is used to cound how many queries were sent
- mysql_pquery(db, str, func, "ii", playerid, PlayerChecker[playerid]); //PlayerChecker is used for race condition
- return 1;
- }
- DataLoadChecker(playerid)
- {
- if(--DataToLoad[playerid] < 1) //If this was the last query, we can spawn the player
- {
- SetTimerEx("OnPlayerFirstSpawn", 50, false, "i", playerid);
- SpawnPlayer(playerid);
- }
- return PlayerChecker[playerid];
- }
- //Another example:
- hook OnPlayerLoad(playerid)
- {
- new string[40];
- mysql_format(db, string, sizeof(string), "SELECT * FROM users WHERE id=%i LIMIT 1", GetPlayerId(playerid));
- SendPlayerQuery(playerid, string, "OnAccountLoad");
- return 1;
- }
- hook OnAccountLoad(playerid, checker) //On top of my gamemode (used only to check for race condition)
- {
- if(DataLoadChecker(playerid) != checker) return stop(1); //stop further execution and return 1
- if(!IsAnyData()) return stop(1);
- return 1;
- }
- hook OnAccountLoad(playerid) //In any other file
- {
- new string[41];
- cache_get_value_name(0, "gpci", string); //Load something..
- return 1;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement