Skripta koju koristim: Moj mod od 0
Detaljan opis problema: Pa ako neko pogreÅ¡i password da ga kickuje sa servera ali pre toga ispiÅ¡e poruku. Sada trenutno ako nema poklapanja sa unesenim imenom i passwordom onda ne uradi server niÅ¡ta nego samo skloni dialog i to je to, a kada izaÄ'em svi statsi se restartuju jer Äuva podatke 0 jer nisu ubaÄeni iz baze podaci pravi jer nije unio taÄan password i to mi stvara problem.
Dio skripte:
case DIALOG_LOGIN:
{
if (!response)
{
Kick (playerid);
}
if( response )
{
mysql_format(connectionHandle, Query, "SELECT * FROM `users` WHERE `Ime i prezime` = '%e' AND Password = '%e'", GetName(playerid), inputtext);
mysql_function_query(connectionHandle, Query, false, "LoginPlayer", "ds", playerid, inputtext);
//kako ovde da stavim da provjeri ako nema podudaranja na liniji gde formiram query, ne ova iznad, već dve iznad ove, else nece.
{
SendClientMessage(playerid, -1, "{039EFF}MG:RP || {FFFFFF}Password koji ste unijeli nije tacan, kickovani ste!");
Kick(playerid);
}
}
}
Neke slike/video za lakse dobivanje pomoci(neobavezno): //
Ako može samo što prije, hitno je.
Izvinjavam se za double post:
Stavio sam sada ovako, ali sada i kada ukucam i taÄan i netaÄan igraÄ može da uÄ'e na server, statistika se oÄita i sve:
case DIALOG_LOGIN:
{
if (!response)
{
Kick (playerid);
}
if( response )
{
mysql_format(connectionHandle, Query, "SELECT * FROM `users` WHERE `Ime i prezime` = '%e' AND Password = '%e'", GetName(playerid), inputtext);
new result = mysql_function_query(connectionHandle, Query, false, "LoginPlayer", "ds", playerid, inputtext);
if(result == 0)
{
SendClientMessage(playerid, -1, "{039EFF}MG:RP || {FFFFFF}Password koji ste unijeli nije tacan, kickovani ste!");
Kick(playerid);
}
}
}
Koju verziju mySQL plugina koristiš?
Hmm, gde da proverim, davno sam ga skinuo pa se ne sjećam ?
Server log.
mySQL R7 od BlueG, al' to sam skinuo kad je 0.3d bio jedino ako treba opet možda neki koji je za SAMP 0.3e prilagoÄ'en ?
edit: skinuo sam sad trenutni nije do toga.
Već neko vrijeme nisam radio u mySQL, al' ako se ne varam da bi ovo trebalo radit.
case DIALOG_LOGIN:
{
if (!response)
{
Kick (playerid);
}
if( response )
{
mysql_format(connectionHandle, Query, "SELECT * FROM `users` WHERE `Ime i prezime` = '%e' AND Password = '%e'", GetName(playerid), inputtext);
mysql_function_query(connectionHandle, Query, false, "LoginPlayer", "ds", playerid, inputtext);
}
}
forward LoginPlayer(playerID, password[]);
public LoginPlayer(playerID, password[])
{
mysql_store_result();
if (mysql_num_rows() == 0)
{
SendClientMessage(playerid, -1, "{039EFF}MG:RP || {FFFFFF}Password koji ste unijeli nije tacan, kickovani ste!");
Kick(playerid);
}
mysql_free_result();
return 1;
}
Hvala Joey, tako sam bio uradio kad sam ovo vidio meÄ'utim opet se bila restatovala statistika igraÄa, to jest sve varijable u bazi za toga igraÄa jer ustvari oÄitavanje i stavljanje u Enume je bilo kad se igraÄ uloguje ako je taÄan password, a onda saÄuva te Enume, a poÅ¡to ih nije mogao uÄitati jer nije ulogovan sve su ostale nule prilikom saÄuvavanja pa sam uÄitavanje premestio odmah prilikom pojavljivanja dialoga i sada to radi, no pojavila su se dva nova sitna problema ( sva sreća sitna ). To su da neće da ispiÅ¡e onu poruku ako se Å¡ifra pogreÅ¡i kao Kikovani ste jer ste pogreÅ¡li password... nego samo piÅ¡e Server closed to connection ono, a poruku ne ispiÅ¡e.
Dalje, kad se registrujem pojavilo se ono dole <<, >>, Spawn dugmad pa ne znam sad kako to da uklonim ...
Za poruku poslije kicka: to je novo uvedeno u 0.3x verziji SA:MP-a i svaka poruka poslana neposredno prije Kick() funkcije neće bit poslana. Zato moraÅ¡ napraviti jedan timer koji će se izvrÅ¡iti recimo za 1 sekundu i u njoj kickat igraÄa, a u liniji prije pokretanja timera staviÅ¡ da poÅ¡alje poruku igraÄu vezano uz kick.
Å to se tiÄe spawn gumba i ostalog oko toga, moraÅ¡ koristit TogglePlayerSpectating() u OnPlayerConnect callbacku, a da igraÄa odmah spawnaÅ¡ koristi odmah poslije logina SpawnPlayer() funkciju.
Da radim sa SetTimer ili kako, jer ako radmi sa SetTimer onda će mi tražiti dole u funkciji ono playerid, a ne znam kako u funkciju da ga proslijedim ?
A to TogglePlayerSpectating() to ako pozovem u OnPlayerConnect callbacku i ako imam viÅ¡e dijaloga on će i nakon toga ostati ono bez te dugmadi ili ? A SpawnPlayer anravno to je već nameÅ¡teno tako da u LoginPlayer() bude spawnan ako upiÅ¡e taÄan passwor Å¡to sada radi.
Rešio sam ovo za dugmad, a za poruku ne, ovaj timer kako onda treba biti ?
SetTimer("kickujigraca(playerid)" ... ili SetTimer("kickujigraca[MAX_PLAYERS] .. ?
Kao sto ti je Joey_ reko odradi da posalje poruku,pa onda timer da pozoves koji ce kick igraca za 1 sec.
Primer:
SetTimerEx("KickIgraca",1000,false,"i",playerid);
forward KickIgraca(playerid);
public KickIgraca(playerid)
{
Kick(playerid);
return 1;
}
http://wiki.sa-mp.com/wiki/SetTimerEx
Zahvaljujem, sve sam sredio :)
Možete mi samo reći kako da povećam onu distance da mi ono zgrade i svi objekti budu vidljivi sa veće udaljenosti ? :)
Otvori streamer.inc i naÄ'i liniju:
native CreateDynamicObject(modelid, Float:x, Float:y, Float:z, Float:rx, Float:ry, Float:rz, worldid = -1, interiorid = -1, playerid = -1, Float:streamdistance = 200.0);
I promijeni ovo 200.0 na kraju na udaljenost koju ti želiš i to je to. Ili kod svake linije gdje koristiš CreateDynamicObject() funkciju, na kraju nje staviš: .streamdistance = 200.0
S time da ovo 200.0 promijeniš na svoju udaljenost.
LakÅ¡e mi je ovako na jednu liniju da promjenim nego na svaku pojedinaÄno, nego ovo će koÄiti server neÅ¡to, usporavati ili nema nikakvih posljedica ako povećam ? :)
Ako povećaš onda će se na većem prostoru streamat više objekata. Slobodno povećaj, al' imaj na umu da streamer može stvorit samo do 1000 objekata na jednom mjestu.
Stavio sam sad da je 1000.00 ali opet se loše vidi, do kolikomogu maksimum ići, da stavim maksimum pa ako bude uzrokovalo probleme ja ću snižavati.
300.0 je Äist oke udaljenost. Postaj kod da vidim kako si stavio.
native CreateDynamicObject(modelid, Float:x, Float:y, Float:z, Float:rx, Float:ry, Float:rz, worldid = -1, interiorid = -1, playerid = -1, Float:streamdistance = 1000.0);
I npr. sad promenio sam sve zgrade oko trga i tek kad doÄ'em kod ulaza na policijski parking vidim onu zgradu koja je ispred mene, ona Å¡to je pored autoputa, koja je nasuprot opÅ¡tine.