Offline skidanje admin nivoa uz provjeru trenutnog
Naime ovo je naÄin koji i sam koristim u svojoj skripti, i obzirom kada sam prelazio na mysql, previÅ¡e sam se muÄio oko osnova, pa i oko ovoga, ako ima netko ko poÄinje raditi u MySQL Äuvanju, ovo će mu možda pomoći.
Selektovanje igraÄa.
Naime moramo prvo uzeti tog igraÄa, tj. selectovati ga.
mysql_format(Database, DB_Query, sizeof(DB_Query), "SELECT * FROM `PLAYERS` WHERE `USERNAME` = '%e' LIMIT 1", nick);
new Cache:rezultat = mysql_query(Database, DB_Query); //Spremanje cache-aLIMIT 1 - oznaÄava da želimo samo 1 select iz table-a, Username je uglavnom unique dio kad je igraÄ u pitanju, ali ova opcija vam mnogo pomaže kada želite selektovati samo jednog igraÄa koji je povezan sa neÄime Äiju jednakost mogu imati mnogi (recimo viÅ¡e igraÄa može imati okruglo 1.000.000$ na banci)
Broj redova
Ovdje jednostavno uzimamo broj redova, u novu varijablu rows.
new rows;
cache_get_row_count(rows); //Provjera redovaProvjera broja redova
Jednostavno, provjerit ćemo dal se red selektovao, ako je rows veći od 0, jednostavno netko je selektovan, u ovom sluÄaju samo jedan raÄun može biti, ali može se takoÄ‘er selektovati i viÅ¡e njih.
if (rows)Uzimanje vrijednosti
Red je da uzmemo igraÄu trenutni admin i helper level.
if (rows) { //Provjera ukoliko raÄun postoji
new alevel, hlevel;
cache_get_value_int(0, "ADMIN", alevel); //Uzimanje admin nivoa igraÄu
cache_get_value_int(0, "HELPER", hlevel); //Uzimanje helper nivoa igraÄu
}"ADMIN" i "HELPER" su imena koja su u mojoj bazi, ako ste vi svoje nazvali pGameMaster, pHelper, pSupporter, ili sasvim nebitno, unesite tu vrijednost. Napomena: "ADMIN" ne oznaÄava vrijednost iz PlayerInfo enuma, nego iz kolone iz MySQL baze.
Sada, možete tu komandu jednostavno iskoristiti kako hoćete, uz ovako nekakve primjere:
if (rows) { //Provjera ukoliko raÄun postoji
new alevel, hlevel;
cache_get_value_int(0, "ADMIN", alevel); //Uzimanje admin nivoa igraÄu
cache_get_value_int(0, "HELPER", hlevel); //Uzimanje helper nivoa igraÄu
if(alevel > pInfo[ playerid ]) return SendErrorMessage(playerid, "Ne mozes skinuti veci admin nivo."); //Provjera ako je igraÄev nivo manji od offline igraÄevog.
if(alevel == 0 && hlevel == 0) return SendErrorMessage(playerid, "Igrac nema poziciju."); //IgraÄ nije ni helper ni admin
mysql_format(Database, DB_Query, sizeof(DB_Query), "UPDATE `PLAYERS` set `ADMIN` = 0, `HELPER` = 0 WHERE `USERNAME` = '%s'", nick);
mysql_pquery(Database, DB_Query); //Update igraÄa
if(alevel > 0) AdminMessage(playerid, "Igracu %s ste offline oduzeli Admin nivo %d.", nick, alevel);
else if(hlevel > 0) AdminMessage(playerid, "Igracu %s ste offline oduzeli Helper nivo %d.", nick, hlevel);
}Obavezno! Na kraju svega moramo obrisati spremljeni cache, dakle na dnu komande, jednostavno brišemo gore spremljeni cache.
cache_delete(rezultat);Kako to izgleda sve zajedno:
mysql_format(Database, DB_Query, sizeof(DB_Query), "SELECT * FROM `PLAYERS` WHERE `USERNAME` = '%e' LIMIT 1", nick);
new Cache:rezultat = mysql_query(Database, DB_Query); //Spremanje cache-a
new rows;
cache_get_row_count(rows); //Provjera redova
if (rows) { //Provjera ukoliko raÄun postoji
new alevel, hlevel;
cache_get_value_int(0, "ADMIN", alevel); //Uzimanje admin nivoa igraÄu
cache_get_value_int(0, "HELPER", hlevel); //Uzimanje helper nivoa igraÄu
if(alevel > pInfo[ playerid ]) return SendErrorMessage(playerid, "Ne mozes skinuti veci admin nivo."); //Provjera ako je igraÄev nivo manji od offline igraÄevog.
if(alevel == 0 && hlevel == 0) return SendErrorMessage(playerid, "Igrac nema poziciju."); //IgraÄ nije ni helper ni admin
mysql_format(Database, DB_Query, sizeof(DB_Query), "UPDATE `PLAYERS` set `ADMIN` = 0, `HELPER` = 0 WHERE `USERNAME` = '%s'", nick);
mysql_pquery(Database, DB_Query); //Update igraÄa
if(alevel > 0) AdminMessage(playerid, "Igracu %s ste offline oduzeli Admin nivo %d.", nick, alevel);
else if(hlevel > 0) AdminMessage(playerid, "Igracu %s ste offline oduzeli Helper nivo %d.", nick, hlevel);
}
cache_delete(rezultat);Napomena: Moj kod vam copy-paste neće raditi, jer koristi neke moje defineove iz moda poput AdminMessage, SendErrorMessage, DB_Query i sliÄno, ali suÅ¡tina komande hoće, nemojte zaboraviti prilagoditi "ADMIN" i "HELPER" sa vaÅ¡im kolonama, iz vaÅ¡e MySQL baze.
Ako pronađete ikakve greške, pošto sam pisao odvojeno od mog moda radi lakšeg prilagođavanja drugima, samo mi javite da ispravim.
Komanda bi trebala raditi ispravno sa ovim kodom, jer kod mene radi odliÄan posao.
