GTA Közösség - A magyar GTA fórum

San Andreas Multiplayer (SA-MP) => SA-MP: Szerverfejlesztés => Segítségkérés => A témát indította: scripter - 2015. március 24. - 19:40:03

Cím: IsValidAccount(name[]) (MySQL)
Írta: scripter - 2015. március 24. - 19:40:03
üdv.
már majdnem kész a mysql-os klán rendszerem, de a(z) IsValidAccount(name[]) függvényem vacakol.
a rendszerben használtam a y_inline -t.
az a baj, hogy amikor elküldöm a query-t, akkor az megy, de a(z) \'inline\' funkció később tér vissza.
és alapba \'0\' a visszatérés, de akkor is, ha nem regiszrált.
ha most kiveszem akkor a pawno-nak nem tetszik: mert nincs visszatérési értéke.
szóval lefut az inline, de későn, és addigra az alap code 0-t ad vissza.
gondoltam arra, h változóval csinálom meg.
pl alapba 2: new stat=2;
és ha regisztált akkor 1 lesz az értéke.
ha meg nem akkor 0.
és majd csak egy return-al iratom mi a végén.
de ez is mindig csak 2-t adna vissza.
a jelenlegi code:
 

stock IsValidAccount(name[])
{
mysql_format(mysql,query,sizeof(query),\"SELECT * FROM Users WHERE Name=\'%e\'\",name);
inline User_CheckValid()
{
if(cache_num_rows()) return 1;
else return 0;
}
mysql_tquery_inline(mysql,query,using inline User_CheckValid,\"\");
return 0;
}

 
várom a válaszokat.
előre is kösz.
üdv.
Pawn code javítva, legközelebb figyelj oda!

Dupla hozzászólás automatikusan összefûzve. ( [time]2015. Március 24. 19:46:49[/time] )

Azért a klán rendszerhez kapcsolódik, mert a játékos mentő rendszert még nem írtam át mysql-ra. (az lesz az utolsó a rendszerek közül)
Cím: IsValidAccount(name[]) (MySQL)
Írta: KovaNovik - 2015. március 24. - 20:19:33
(nem teszteltem, mert fent sincs a samp a gépemen)
 
stock IsValidAccount(name[]) {
new qry[64], rst, Cache:cch;
mysql_format(mysql, qry, sizeof(qry), \"SELECT * FROM Users WHERE Name=\'%e\'\", name);
cch = mysql_query(mysql, qry);
rst = cache_num_rows();
cache_delete(cch);
return (rst) ? (1) : (0);
}
Cím: IsValidAccount(name[]) (MySQL)
Írta: scripter - 2015. március 25. - 14:47:29
hát maga a logika alapján megy.
de most akkor végülis mindenhol így megcsinálhatnám, DE akkor meg a sima query miatt nem lenne néha-néha egy lag?
mert a tquery egyből lefut; ide kell a(z) y_inline
de ugyanezzel az eljárással meg lehetne oldani tquery-vel is?
mivel eddig nem használtam mysql-t, azért a mode nagy része még nem mysql-os.
én már egyből az r39-2-t tanultam meg.
na de ugyanigy akkor át kell írni a GetMembersInClan(clanid) (ami csak a tagom számát adja vissza), meg ugyanezt csak meghívottakkal?
nincs vmilyen megoldás, ami lényegében ugyanez, csak tquery?
mert a tquery egyből a callback-be adja a cache-t, VAGY NEM?
bocs ha nem lehet megérteni, csak siettem.
Cím: IsValidAccount(name[]) (MySQL)
Írta: scripter - 2015. március 28. - 12:32:34
akkor nem lehet tquery-vel?  :question:  :confused:
Cím: IsValidAccount(name[]) (MySQL)
Írta: ZyZu. - 2015. március 30. - 02:39:03
Idézetet írta: scripter date=1427542354\" data-ipsquote-contentapp=\"forums\" data-ipsquote-contenttype=\"forums\" data-ipsquote-contentid=\"53448\" data-ipsquote-contentclass=\"forums_Topic
akkor nem lehet tquery-vel?  :question:  :confused:
 
de lehet.. csak akkor létre kell hozni egy külön publicot ahová beírod a kódokat, szerintem minél jobban fogod bonyolítani az egészet. :confused:
 

mysql_format( dbHandle, query, sizeof( query ), \"SELECT * FROM `accounts` WHERE `username` = \'%s\'\", name );
mysql_query( dbHandle, query );
cache_get_data( rows, fields );
if( rows ) { SendClientMessage( playerid, -1, \"{FF0000}Rendszer: {FFFFFF}Ez a felhasználónév már létezik az adatbázisunkban!\" ); }
else if( !rows ) { SendClientMessage( playerid, -1, \"{FF0000}Rendszer: {FFFFFF}Ez a felhasználónév még nem létezik az adatbázisunban!\" ); }

 
nem vagyok biztos, hogy mit szeretnél de én így oldanám meg a név ellenőrzést.
Cím: IsValidAccount(name[]) (MySQL)
Írta: scripter - 2015. április 04. - 16:51:06
Igen, tudom, hogy még kell tquerynél egy callback, de ha ugy megcsinálom akkor vissza megyünk a legelejére.
Épp a callback kihagyása miatt használtam a y_inline-t.
De a y_inline meg lassan fut le, és addig lefut a code végén lévő kötelező return.
:(
A te megoldásodban nem látok tqueryt, és a mysql_query előtt nincs cache mentés, majd a végén törlés.
Ez a kovanovik megoldása. Akkor tqueryvel neme lehet? Mármint lehet de ugy h ne kelljen callback.
 :unsure:
Cím: IsValidAccount(name[]) (MySQL)
Írta: KovaNovik - 2015. április 04. - 17:00:47
Esetleg egy publikus valtozoval megoldhato lenne. Szerk: ja nem, mert ha csak egy kicsit is kesik a tquery, egybol nem jo.
Eddig mindenhol igy csinaltam, ahogy mar leirtam.
A y_inline-t en is nezegettem regebben, most meg is tanulom. :)
Ha jol emlekszem, volt az a_mysql.inc fajlban valamifele makro (vagy mi), ami a mysql_tquery_inline volt. Azzal esetleg?
Szerk:
igen, ez lesz az
[hs width=300 height=300]
 
    \"yMYgKA4.png?1\"
[/hs]
Cím: IsValidAccount(name[]) (MySQL)
Írta: scripter - 2015. április 04. - 18:14:49
az alap code amit kiraktam az mysql_tquery_inline :)
ne tévesszen meg a neve, az a függvény magába nem elég, azért kell a y_inline.
 :)
Mellesleg:
Ha használom a y_inline-t, akkor az amx mérete 186 kB-ról felugrik 4300+-ra. :(
Cím: IsValidAccount(name[]) (MySQL)
Írta: KovaNovik - 2015. április 04. - 18:17:02
Jaaaa. Akkor nem nagyon van tobb tippem. Csak a szokasos: biztosan jol hasznalod? (gondolom igen)
Cím: IsValidAccount(name[]) (MySQL)
Írta: scripter - 2015. április 04. - 18:18:12
Igen :)
Le is teszteltem print-el.
Minden lefut, nem az code-al van baj. Csak az a baj h késik az inline :(

Dupla hozzászólás automatikusan összefûzve. ( 2015. április 04. - 18:23:16 )

Na de akkor mind1, :)
Legfeljebb lesz a mode-ba egy két sima query. :)
Am meg köszönöm a segítséget (az általad kirakott code-ot).  :smokin:
Akkor mivel aki tudná a megoldást, gondolom leírta volna, ezért zárom a témát.
Ha mégis van még egy-két ötlet, akkor irjatok pm-be :D