-
Posts
1,134 -
Joined
-
Last visited
-
Days Won
96
Content Type
Profiles
Forums
News
Documentation
Everything posted by Banditul
-
Posteaza serverlog . Erori/warninguri la compilare?
-
Din cate am vazut au acceptat un server de sa-mp. Din cate am auzit ca sa primeasca un server trebuie platit hostu pe 1 an sau sa fie playeri constanti pe server (cred ca vreo 20-25+) , asta pentru a asigura faptul ca nu se inchide serveru de sa-mp peste cateva zile. Din comunitatiile care imi vin in minte sunt e-gaming, pro-gaming, bluegaming, gamelife.(astea imi vin amu in cap) Nu zic ca daca faci cerere de afiliere te vor accepta,dar daca chiar vrei , poti incerca sa vorbesti cu ei , cel mai probabil uni iti vor impune unele conditii . Merita incercat
-
// 16 random characters from 33 to 126 (in ASCII) for the salt for (new i = 0; i < 16; i++) PlayerInfo[playerid][pSalt][i] = random(94) + 33; SHA256_PassHash(password, PlayerInfo[playerid][pSalt], PlayerInfo[playerid][pKey], 65); new Str[200]; mysql_format(SQL,Str,sizeof(Str),"INSERT INTO `users` (`name`,`password`,`salt`) VALUES ('%e','%e','%e')",playername3,PlayerInfo[playerid][pKey],PlayerInfo[playerid][pSalt]); mysql_tquery(SQL,Str,"SqlInsertSID","i",playerid); Eu unu am facut asa la OnPlayerRegister, apropo, la Register nu trebuie sa selectezi , trebuie sa inserezi new hashed_pass[65]; SHA256_PassHash(password, PlayerInfo[playerid][pSalt], hashed_pass, 65); mysql_format(SQL,qstr,sizeof(qstr),"SELECT * FROM users WHERE `name`='%e' AND `password`='%e'",playername2,hashed_pass); result = mysql_query(SQL,qstr,true); rows = cache_get_row_count(SQL); if(rows > 0) { //Aici incarci datele } new Cache:csalt,squery[128]; mysql_format(SQL, squery, sizeof(squery), "SELECT `salt` FROM `users` WHERE `name` = '%e'", GetNameEx(playerid)); csalt = mysql_query(SQL, squery,true); if(cache_num_rows() > 0) { cache_get_field_content(0, "salt", PlayerInfo[playerid][pSalt], SQL,17); } cache_delete(csalt, SQL); Iar asta la OnPlayerConnect , pe la inceput ar fi ok , ca sa incarci salt-ul playerului pentru al folosi la Login Ideea de a folosi un salt static nu e cea mai ok , fiecare jucator ar trebui sa aibe salt unic precum vezi la OnPlayerRegister-ul meu opinia mea
-
Dap cum am zis, sterge acel "/" de la cmd
-
Ar fi ajutat daca dadeai si eroarea.Anyway, singura problema pe care o vad e la CMD , sterge acel "/".
-
Nu se salveaza data inregistrarii corect in MySQL
Banditul replied to HeRR0's question in Arhivă probleme
Se salveaza, dar tu cand incarci datele nu le incarci bine, RegisterDate e un string nu int folosesti functia de cache gresita cache_get_value_name in loc de cache_get_value_name_name Dar raspunsul de mai sus este mai bun -
Inafara de a proteja serveru de sql injection , chesti ascunse , altceva nu prea ai ce face . De flood ar trebui sa se ocupe firma de host. Altceva ar mai fi , un anticheat bun care sa includa si gen anti-chat flood sau mai situ eu ce. Astea singurele lucruri care in vin in minte.
-
Ce versiune de MySQL? Ce arhitectura x32(x86) sau x64? Daca e x64 , ai instalat fiecare distributie de v c++(x64 si x86) nu? Nici o eroare nimic?
-
Cum a specificat bunicu , ce ti-a dat este un model , tu trebuie sa faci cmd adaptata la gm-ul tau eventual sa o dezvolti pentru nevoile tale , normal ca priemesti erori daca tu ai alt MySQL handler cHandle il inlocuiesti cu ce ai tu la mysql_connect (Exemplu: cHandle = mysql_connect(...);
-
public LoadTurfs() { new index = 0,Cache:result,rows; result = mysql_query(SQL,"SELECT * FROM `turfs` ORDER BY `turfs`.`ID` ASC"); rows = cache_get_row_count(SQL); if(rows > 0) { for(new row; row < rows; row++) { index++; new i = index; TurfInfo[i][zID] = cache_get_field_content_int(row, "ID", SQL); TurfInfo[i][zOwned] = cache_get_field_content_int(row, "Owned", SQL); TurfInfo[i][zTime] = cache_get_field_content_int(row, "Time", SQL); TurfInfo[i][zMinX] = cache_get_field_content_float(row, "MinX", SQL); TurfInfo[i][zMinY] = cache_get_field_content_float(row, "MinY", SQL); TurfInfo[i][zMaxX] = cache_get_field_content_float(row, "MaxX", SQL); TurfInfo[i][zMaxY] = cache_get_field_content_float(row, "MaxY", SQL); } } cache_delete(result, SQL); printf("Turf: %d", index); return 1; } Eu am asta, si se incarca din baza de date
-
Dute unde ai definit new TurfInfo si ai acolo intr-o paranteza patrata 48(posibil) si punei 50 sau mai mare(depinde cate turfuri ai in baza de daye)
-
Nu te supara , dar din cate stiu eu un tutorial presupune si ceva explicatii nu doar codu asa mura in gura , adica mno un tutorial e menit sa invete pe cineva ceva prin explicatii , exemple etc
-
Cred ca afacera pica sau ceva? Sau nu-s indentice?
-
17:06:32] I couldn't load any gamemode scripts. Please verify your server.cfg[17:06:32] It needs a gamemode0 line at the very least. E destul de evident , iti lipseste linia gamemode din server.cfg sau este goala Arata server.cfg
-
if(gPlayerLogged[playerid] = 0) cu if(gPlayerLogged[playerid] == 0)
-
Problema nu se incarca masinile pe server.
Banditul replied to Mariusik's question in Arhivă probleme
Nu exista nici un CreateVehicle in functia ta -
Nu gasesti ? Faci singur. Cum faci ? 1.Inveti sa faci comenzi 2.Te gandesti ce ar trebui sa faca comanda, si cum ar trebui faca 3.Incepi sa o scrii , linie cu linie.Gresesti, vezi unde e greseala , o repari si repeti pana iti iese.Greselile iti depasesc cunostiintele tale ? Nu-i nici o problema, aici nimeni nu e atotstiutor , ai o problema , lumea te ajuta(daca stii si cum sa ceri ajutor). Nu e sfarsitul lumi daca pui intrebi pentru a invata. Asta e ce ar trebui sa faca multi, de ce? Programarea (scriptingu daca vrei) se invata exersand.Cum exersezi? Faci chestii, gresesti , repari greseala(repeti astea doua pana iti merge bine) , nimeni nu bate din palme si gata totu. Edit: CMD:givepp(playerid,params[]) { if(!IsPlayerAdmin(playerid)) return SendClientMessage(playerid,-1,"Nu esti admin!");//Aici schimbi tu cu variabila ta de a verifica adminul unui jucator(eu am pus direct pentru rcon) new id,pp;//Variabilele pe care le foloseste comanda if(sscanf(params,"ui",id,pp)) return SendClientMessage(playerid,-1,"Use: /givepp <ID/Name> <PP>")://Mesajul este afisat daca nu ai introdus nimic(ai scris numa /givepp) sau ai gresit un parametru if(!IsPlayerConnected(OtherPlayer) && OtherPlayer == INVALID_PLAYER_ID) return SendClientMessage(playerid,-1,"Jucatorul nu este online!");//Verificam daca jcuatorul nu este online, pentru a nu creea anumite probleme PlayerData[id][PP] = pp;//Aici se adauga pp la datele jucatorului return 1; } CMD:giveallpp(playerid,params[]) { if(!IsPlayerAdmin(playerid)) return SendClientMessage(playerid,-1,"Nu esti admin!");//La fel , se verifica daca jucatorulnu este admin(rcon in cazudefata) new pp;//Variabila pe care o foloseste comanda if(sscanf(params,"i",pp)) return SendClientMessage(playerid,-1,"Use: /giveallpp <PP>")://Mesajul este afisat daca nu ai introdus nimic(ai scris numa /givepp) sau ai gresit un parametru for(new i=0,j=GetPlayerPoolSize(); i<=j;i++)//Acesta este o iteratie (loop) care "strabate" toti jucatori conectati { if(!IsPlayerConnected(i)) continue;//Daca jucatorul nu este conectat(e posibil ca i sa ia un id de jcuator care nu este conectat, asa ca verficam sa nu ia si continuam iteratia) PlayerData[i][PP] = pp;//Aici se adauga pp la datele jucatorului } return 1; } Asta e cel mai simplu mod de a face comenzile, le refaci tu pentru gm-u tau , eu le-am facut la modul general PS: Adaugi tu modul de salvare in baza de date
-
Intrebare, esti sigur ca merge? Cel putin antijetpackul, pentru ca nu vad unde e chemata functia, iar playerid-u va fi mereu 0 pentru ca mereu va fi initializat 0 , trebuie sa ii pasezi id-u jucatorului, eventual sa o chemi intr-un timer. De preferabil SetTimerEx la spawnarea jucatorului (ii atribui desigur un id ca sa distrugi timerul la deconectarea jucatorului). Asta doar o mica observatie. Edit:Ceva de genul Asta sa fie global: new TimerJetpack[MAX_PLAYERS]; OnPlayerSpawn(playerid) { TimerJetpack[playerid] = SetTimerEx("AntiJetpack", 1000, true, "i",playerid); return 1; } forward AntiJetpack(playerid); public AntiJetpack(playerid) { if (GetPlayerSpecialAction(playerid) == 2) { new string[128],name[MAX_PLAYER_NAME]; GetPlayerName(playerid,name,sizeof(name)); format(string,sizeof(string),"{FF0000}[SERVER]: {FFCC33}%s {15FF00}a primit kick de la {FF0000}AdmBot ! {FFFFFF}|| {FFFF00}Motiv: {15FF00}Jetpack",name); SendClientMessageToAll(-1,string); Kick(playerid); } } OnPlayerDisconnect(playerid) { KillTimer(TimerJetpack[playerid]); return 1; }
-
String de tip float? Wut? Ori e string ori e float, nu amesteca tipurile de data totusi. Una e stringul care stocheaza sir de caractere, si una e float care stocheaza nunerele reale (0.000)
-
Sa faci escape la stringurile pe care le trimiti la serveru de MySQL? Zic si eu......
-
Ajutor vreau sa scot baza de date de la Gm RedZMax
Banditul replied to BaD_bOy_MD's question in Arhivă probleme
Sa scoti ce mai exact? Tot mysql din gm sau ce? -
In primul rand, ai nevoie de web host pe langa samp host , asta desigur daca nu ai vreun VPS sau dedicat....
-
LowPing - Servicii hosting de calitate MAXIMA.
Banditul replied to valentin2000's topic in Ofer servicii
Preluare Armand.kLs (acelasi gen de topic pe alt ofrum) : daca dai in cmd ping lowping.ml iti va da acest ip "188.212.103.243" daca bagi ip asta si dau enter iti va da ceva cu lux-host.biz, ok pana aici e bn, e clara treaba nu ? Inca ceva nou: daca da-ti infobyip.com si bagati ip-ul de mai sus adica "188.212.103.243" iti va da "Domain: s3-243.gazduirejocuri.ro" si mai interesant. Esti tare frate, nu am ce sa zic. UP : si mai tare este ca daca dai pe Gazduire si dupaia rezervare domeniu si dai exemplu "Sujeobn.tk" te costa 1 e / an , interesant nu? Instalare IPB este 2.50 euro / Nulled Bun , cred ca v-am lamurit . Cred ca ai si tu un root ceva, si esti mare hoster. -
LimitPlayerMarkerRadius(100.0); Sterge asta(pentru markere globale) sau punei 600.0 (daca vrei la 600m)