Jump to content

Banditul

Moderator
  • Posts

    1,134
  • Joined

  • Last visited

  • Days Won

    96

Everything posted by Banditul

  1. Posteaza serverlog . Erori/warninguri la compilare?
  2. Banditul

    Help

    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
  3. // 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
  4. Dap cum am zis, sterge acel "/" de la cmd
  5. Ar fi ajutat daca dadeai si eroarea.Anyway, singura problema pe care o vad e la CMD , sterge acel "/".
  6. 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
  7. 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.
  8. Banditul

    Epic Fail

    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?
  9. 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(...);
  10. 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
  11. 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)
  12. 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
  13. Cred ca afacera pica sau ceva? Sau nu-s indentice?
  14. 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
  15. if(gPlayerLogged[playerid] = 0) cu if(gPlayerLogged[playerid] == 0)
  16. Nu exista nici un CreateVehicle in functia ta
  17. 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
  18. 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; }
  19. 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)
  20. Banditul

    pica..

    Sa faci escape la stringurile pe care le trimiti la serveru de MySQL? Zic si eu......
  21. Sa scoti ce mai exact? Tot mysql din gm sau ce?
  22. In primul rand, ai nevoie de web host pe langa samp host , asta desigur daca nu ai vreun VPS sau dedicat....
  23. 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.
  24. LimitPlayerMarkerRadius(100.0); Sterge asta(pentru markere globale) sau punei 600.0 (daca vrei la 600m)
×
×
  • Create New...

Important Information

We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue. For more details you can also review our Terms of Use and Privacy Policy.