Well.. Nu prea ma pricep la titlu, nu e un titlu bun, dar o sa intelegi voi ce vreau eu sa fac!
Se da urmatoarea comanda:
CMD:growOld(playerid, params[])
{
new string[128];
PlayerInfo[playerid][pAge] = 420;
mysql_format(SQL, string, 128,"UPDATE `users` SET `Age`='%d' WHERE `ID`='%d' LIMIT 1",PlayerInfo[playerid][pAge],PlayerInfo[playerid][pSQLID]);
mysql_pquery(SQL, string, "", "");
return 1;
}
Ce face comanda? Este destul de simplu: seteaza varsta jucatorului atat pe server cat si in baza de date pe 420.
Ce ne facem daca noi avem sute astfel de UPDATE query-uri intr-un gamemode? Cum am putea sa mai scurtam din linii?
Stim ca "pAge" face parte din
enum PInfo
{
pSQLID,
pAge,
}
new PlayerInfo[MAX_PLAYERS][PInfo];
Si este o variabila ce face parte din "multimea" PInfo.
Haideti sa modificam putin comanda de mai sus, sa vedeti cum ar arata daca ar fi prescurtata
CMD:growOld(playerid, params[])
{
setPlayerDataInt(playerid, PInfo:pAge, "Age", 1);
return 1;
}
Mult mai bine, nu?
Dar cum arata setPlayerDataInt?
stock setPlayerDataInt(playerid, PInfo:pVar, dbField[32], value)
{
new string[128];
PlayerInfo[playerid][pVar] = value;
mysql_format(SQL, string, 128,"UPDATE `users` SET `%s`='%d' WHERE `ID`='%d' LIMIT 1",dbField, PlayerInfo[playerid][pVar],PlayerInfo[playerid][pSQLID]);
mysql_pquery(SQL, string, "", "");
}
Comanda setPlayerDataInt primeste prin cei 4 parametrii:
id-ul jucatorului
un camp din pInfo
denumirea coloanei din baza de date, corespunzatoare campului din pinfo (o primeste sub forma de un simplu string)
noua valoare ce trebuie setata
Tot ceea ce am facut a fost sa ma folosesc de propietatea pe care o are initializatorul "enum".
Aveti idei de titlu mai bun?