Sziasztok!
1.)
Lenne egy kisebb problémám, mostanság elkezdett érdekelni a mysql. Mert már egy ideje dini-n éltem és gondoltam, jobb lenne ezt is kipróbálni szóval próbálkozok.
A módomat elkezdtem mysql alapúra írni, hibátlanul megvan a mód.
De! Amikor regisztrálok, akkor kéri, hogy lépjen be a játékos és már itt problémák adódnak, mert a jelszó nem tetszik, neki.
((próbáltam úgyis, hogy ne kelljen a belépés hanem egybõl a regisztrációs kérdések jöjjenek, de akkor meg nem akarta rendesen lespawnolni a játékost. Persze ezt egy SpawnPlayer-rel megoldottam. Csak ott meg nem regisztrálta a felhasználót. Szóval a lényeg ugyan az ))
Kiválogattam a lényeges elemeket a módból. Remélem valaki tud segíteni.
public OnPlayerRequestClass(playerid, classid)
{
new query[128];
format(query,sizeof query,\"SELECT Username FROM Karakter WHERE Username = \'%s\'\",GetName(playerid));
mysql_query(buf);
mysql_store_result();
if(mysql_num_rows() != 1) ShowPlayerDialog(playerid, REGISZTRACIO, DIALOG_STYLE_INPUT,SZERVERNEV,\"{0080FF}Írj be egy tetszõleges jelszót\",\"Regisztrál\",\"Kilép\");
else ShowPlayerDialog(playerid, BELEPES, DIALOG_STYLE_PASSWORD,SZERVERNEV,\"{0080FF}Írd be a jelszavadat a belépéshez\",\"Belépés\",\"Kilép\");
mysql_free_result();
SetPlayerPos(playerid,1173.3711,-1250.3394,15.1870); SetPlayerVirtualWorld(playerid,playerid);
return 0;
}
stock AdatokMentese(playerid)
{
if(IsPlayerConnected(playerid))
{
new save[1000];
format(save, sizeof(save), \"UPDATE Karakter SET Szint = %d,Admin = %d,Regisztralt = %d WHERE Username = \'%s\'\",
jatekos[playerid][pSzint],
jatekos[playerid][pAdmin],
jatekos[playerid][pReg],
GetName(playerid));
mysql_query(save);
}
return 1;
}
//DIALOG
switch(dialogid)
{
case BELEPES:
{
if(response)
{
new query[129];
new query2[256];
WP_Hash(query,129,inputtext);
format(query2,sizeof query2,\"SELECT Username FROM Karakter WHERE Username = \'%s\' AND Password = \'%s\'\",GetName(playerid),query);
mysql_query(query2);
mysql_store_result();
if(mysql_num_rows() == 1) return mysql_free_result(),JatekosBelepSQL(playerid);
mysql_free_result();
}
}
}
forward JatekosBelepSQL(playerid);
public JatekosBelepSQL(playerid)
{
new query[450];
//A módban több lementeni való adat van, csak kitöröltem a nagyját az átláthatóság kedvéért.
//Éés azért van itt több részre szedve, hogy megmutassam mivel több adat van, így egysorban nem fér ki és így oldottam meg.
format(query, sizeof(query), \"SELECT Szint,Admin,Regisztralt FROM Karakter WHERE Username = \'%s\'\",GetName(playerid));
mysql_query(query);
format(query, sizeof(query), \"SELECT Regisztralt FROM Karakter WHERE Username = \'%s\'\",GetName(playerid));
mysql_query(query);
mysql_store_result();
mysql_fetch_row_format(query);
sscanf(query,\"p<|>ddd\",
jatekos[playerid][pSzint],
jatekos[playerid][pAdmin],
jatekos[playerid][pReg]);
mysql_free_result();
SendClientMessage(playerid, NARANCS,\"*Sikeresen beléptél\");
SetSpawnInfo(playerid, 1, jatekos[playerid][pSkin], jatekos[playerid][pPos][0], jatekos[playerid][pPos][1], jatekos[playerid][pPos][2], 1.0, -1, -1, -1, -1, -1, -1);
SpawnPlayer(playerid); SetCameraBehindPlayer(playerid);
SetPlayerScore(playerid,jatekos[playerid][pSzint]);
return 1;
}
//Regisztráció
//JatekosBelepSQL(playerid); itt ugye bespawnol és ha a pReg == 0- val akkor, az OnPlayerSpawn alatt, beindítja a regisztrációt, és felteszii a krédéseket
//majd a regisztráció végén, mikor spawnolna
forward JatekosRegisztralSQL(playerid);
public JatekosRegisztralSQL(playerid)
{
if(IsPlayerConnected(playerid))
{
new query[256];
GetPVarString(playerid,\"tmp_pw\",query,sizeof query);
format(query,sizeof query,\"INSERT INTO Karakter(Username,Password) VALUES(\'%s\',\'%s\')\",
GetName(playerid),
query);
mysql_query(query);
}
return 1;
}
2.)
Amikor mysql-nél restartolom a módot az egy kicsit sok idõt vesz igénybe, hogy restartoljon.
Ez alap a mysql-nél? Ne aggódjak miatta?
3.)
Ha elmentõdik a karakter akkor a webhoston belül hol fogom látni? A Karakter táblán belül?
4.) Nézelõdtem itt az oldalon egy mysql leírástért, de nem találtam. Valaki tudna mutatni egy elfogadhatót?