Jump to content

IstuntmanI

Membru
  • Posts

    3,897
  • Joined

  • Last visited

  • Days Won

    2

Everything posted by IstuntmanI

  1. E mult spus ca inca le am. Serverul, de fapt, l-am inchis acum un an, iar comunitatea o tin doar pentru istoria ei, dar si pentru faptul ca mai am nevoie de un webhost ocazional, iar pentru ca webhost-ul e destul de ieftin... why not? Cat despre activitatea mea... pe acest forum nu am mai intrat, poate doar o data pe an si ma uitam foarte vag pe ici-colo. Cel mai mult frecventam sa-mp.com, dar eram doar lurker in ultimii 3 ani. Lazlow a fost inclusiv moderator pe sa-mp.com la sectiunea in romana. In schimb, l-ati uitat pe Zh3r0, dar mi se pare ca el a fost activ aici o foarte scurta perioada (in care a fost Global Moderator, parca). Pe sa-mp.com cred ca el era mai cunoscut decat cmg4life, mai ales cu 0admin-ul lui. "CuteNews"? Pe sa-mp.ro? Nu mai fumaț. Nici de "Radio Wanted" nu tin minte nimic, dar ok. Eh, cam urata exprimarea... dar te aprob. M-a scos din sarite ani la rand. Cat despre mine... va multumesc pentru ca m-ati amintit. Din punct de vedere profesional... in ultimii ani eu am terminat licenta, apoi am intrat la master si m-am angajat ca programator C++/C#. Anul trecut (2020) am terminat masterul, iar acum inca mai lucrez din cand in cand la disertatie, pentru ca tema mea este un site web in care implementez tot felul de API-uri si framework-uri, dar de care nu prea am chef si energie din cauza ca programez 8-9 ore pe zi, iar apoi teoretic trebuie sa programez si pentru aia. Fara SA-MP nu cred ca as fi ales/"gasit" programarea. Acest mod m-a ajutat sa imbin utilul cu placutul. Totusi, cea mai mare greseala a mea a fost sa raman sa scriptez in Pawn pentru mult prea mult timp (~8 ani), cand acumulasem deja foarte multa experienta. Problema cu Pawn e ca te plafoneaza foarte mult, nu este un limbaj de programare. Nu are nici macar OOP, fara de care nu prea poti ajunge programator (majoritatea limbajelor importante/cautate sunt OOP). Totusi, facultatea m-a ajutat sa vad toate beneficiile OOP-ului, m-a atras si mai mult catre C++, iar cam tot anul 2017 am lucrat la migrarea intregului server catre C++, care mi-a reusit foarte bine, cu toate obstacolele de care am dat. Acest lucru m-a ajutat enorm, deoarece am invatat foarte multe despre acest limbaj prin aceasta practica, iar in 2018 m-am angajat. Sfatul meu pentru cei care inca au servere de SA-MP si inca sunt mici (inca prin liceu sau facultate) si nu stiu ce vor sa devina, dar observa ca au totusi o pasiune pentru scripting: seriozitatea conteaza foarte mult, deci nu faceti asta in bataie de joc (nici pentru bani; daca iti faci server de SA-MP pentru banii din donatii allow me to laugh at you). Daca in SA-MP va descurcati, care ofera o platforma destul de placuta de scripting, puteti păși mai departe, spre o facultate in domeniu si un job, daca va agatati de limbaje cautate (nu, nimeni nu angajeaza in Pawn ). Daca aveti suficienta experienta in Pawn acum, aveti un server si visati la o cariera in programare, pentru dezvoltarea voastra personala va sugerez sa migrati si voi serverele catre C++ sau C#. sampGDK (pentru C/C++) este mai dificil, dar va ajuta sa va dezvoltati intr-un limbaj dificil, dar veti invata multe concepte ale programarii, mai low-level. C# prin SampSharp este mai placut de folosit, dar C# este un limbaj mai high level si nu consider ca va ajuta sa cunoasteti prea bine cum functioneaza lucrurile, deoarece totul se intampla under the hood. Veti da de foarte foarte multe probleme in timpul migrarii, dar pentru viitorul vostru se merita extrem de mult, daca va tineti de treaba. Cat despre SA-MP in general... este intr-o moarte continua de vreo 4-5 ani. Trist este faptul ca inca se mai lansau plugin-uri din ce in ce mai indraznete, iar dezvoltatorii lor inca erau activi si SA-MP inca se mentinea in media numarului de jucatori, dar Kalcor o luase razna complet, banase pana si mentionarea youtube.com, google.com, stersese sectiunea de Video/Poze dupa aceea (pentru ca toate videoclipurile erau pe youtube, si practic toate topicurile erau cenzurate), apoi le-a scos ban-ul, apoi a aparut scandalul cu marii dezvoltatori (Y_Less, Southclaws, etc.), care au fost banati pentru ca aflase despre open-mp (nu stiu daca s-a discutat despre asta si aici ), etc. . In momentul actual, forumul sa-mp.com e mort, dar este bine ca exista comunitati stabile precum sa-mp.ro, care mai ofera un loc de discutii pentru jucatori/developeri. Nici n-am mai amintit de fail-ul cu 0.3.DL si 0.3.8, care a lovit rau in comunitate. Eu probabil voi fi intotdeauna prin zona. Nu voi disparea complet niciodata, pentru ca nu voi uita SA-MP. Probabil voi mai juca din cand in cand. Mult succes tuturor!
  2. Daca voi considerati ca PAWN este mort, sunteti liberi sa va faceti serverul in C++ , aveti la dispozitie mai multe chestii avansate, si are o viteza mai mare de executie. sampGDK va va ajuta, dar aveti multe de portat daca vreti sa le folositi. Nu prea cred ca cineva din Romania va face in C++, dar zic doar sa stiti, daca nu doriti sa invatati PAWN, incepeti direct cu C++ .
  3. Nu mai incurajati folosirea mysql_query ! Este ineficient, si nu are nici o treaba aici. Pasi: 1. Inlocuieste tot acel cod de la raspunsul dialogului cu acesta, l-am optimizat cat se poate si am corectat tot ce trebuia: if( dialogid == DIALOG_SET_EMAIL ) { // te rog sa schimbi marimea "64" cu marimea variabilei PlayerInfo[ playerid ][ EMail ]. if( strlen( inputtext ) > 64 ) // 64 aici return SendClientMessage( playerid, -1, "E-Mailul inserat este mult prea lung !" ); new lsMail[ 64 ]; // 64 aici mysql_real_escape_string( inputtext, lsMail ); PlayerInfo[ playerid ][ EMail ][ 0 ] = EOS; strcat( PlayerInfo[ playerid ][ EMail ], lsMail, 64 ); // 64 aici SendClientMessage( playerid, -1, "Your {FFB400}E-Mail Account{FFFFFF} has been set {FFB400}!" ); format( gsQuery, 256, "UPDATE `Accounts` SET `E-Mail` = '%s' WHERE `Key` = %d", lsMail, PlayerInfo[ playerid ][ AccID ] ); mysql_function_query( g_Handle, gsQuery, false, "", "" ); return 1; }2. Compileaza.3. Verifica iar comanda pe server. 4. Primesti mesajul ca s-a modificat E-Mailul ? - Daca nu, atunci iti recomand sa schimbi ID-ul dialogului DIALOG_SET_EMAIL, este posibil sa mai ai un dialog cu acelasi ID. - Daca da: -- verifica daca variabila PlayerInfo[playerid] este afisata corect, de exemplu afiseaza-i intr-o comanda simpla E-Mailul (acea variabila). -- asigura-te ca nu sunt prezente erori la executarea acelui query de updatare a E-Mailului in cont. (poti vedea prin loguri) -- asigura-te ca nu exista nici un alt loc in care se poate schimba E-Mailul automat.
  4. Vreau sa incep prin a-ti spune ca acel query este FOARTE INEFICIENT: o varianta mult mai buna al acestuia pentru scopul tau este: Acest nou query va avea un singur rand cu o singura coloana (ci nu toate randurile si coloanele din tabel, ca la primul query) care va contine exact numarul de conturi din tabelul respectiv. DAR Iti atrag atentia ca este extrem de prost sa ii atribui ID-ul asa, deoarece un cont poate disparea de acolo prin diferite mijloace (de exemplu scoti tu manual un cont) si va scadea numarul de jucatori inregistrati, deci mai multi jucatori vor putea avea acelasi ID. Poti pur si simplu sa creezi coloana ID ca fiind primară (PRIMARY KEY) si sa foloseasca AUTO INCREMENT. Si in query va trebui doar sa inserezi contul jucatorului asa: mysql_format(mysql, query, sizeof(query), "INSERT INTO `_players`(`ID`, `Username`, `Password`, `IP`) VALUES (0, '%e', '%s', '%s')", PlayerInfo[playerid][pID], Name[playerid], inputtext, IP[playerid]); mysql_query(mysql, query);Deoarece inserezi coloana ID ca fiind 0, MySQL va atribui automat un ID care este mai mare cu 1 fata de cel de la ultima linie introdusa in tabel. Daca ultimul ID este 15 (presupunand ca toate conturile pana acolo sunt la locul lor) si il stergi, un nou player nu va mai avea ID 15, ci direct 16, cum este corect. Pentru a "afla" ce ID i-a atribuit tabelul, poti folosi cache_insert_id, cam in acelasi mod in care ai folosit si tu cache_get_row_count in acel cod, doar ca folosit de la query-ul de inserare a liniei. In acest fel vei putea sa ii setezi variabila cu ID-ul sau imediat dupa ce s-a inserat. Deci prin aceasta a doua metoda, pe care am spus-o eu, vei avea un query mai putin, si o atribuire mai buna a ID-ului. Probabil folosesti versiunea R33 sau mai noua a pluginului MySQL ( http://wiki.sa-mp.com/wiki/MySQL/R33), trebuie sa stii ca trebuie sa si stergi acel query din memorie, prima data trebuie sa stochezi intr-o variabila ID-ul query-ului (egalezi variabila cu acel mysql_query), variabila fiind de forma new Cache:liCacheID;si apoi cand termini de luat tot ce a fost nevoie din acel query, trebuie OBLIGATORIU sa stergi setul rezultatului: cache_delete( liCacheID );Daca nu stergi rezultatul din memorie, o sa ai probleme legate de utilizarea memoriei RAM de catre server, acesta putand sa ajunga sa foloseasca foarte multi MB de RAM, daca nu chiar GB dupa cateva zile de functionare. Este de asemenea foarte recomandat sa folosesti threaded queries (mysql_tquery) sau parallel queries (mysql_pquery) in loc de query-urile clasice, care ofera raspunsul pe loc (mysql_query), deoarece aceastea din urma creeaza lag si nu sterg automat rezultatul, poti vedea diferenta pe pagina de wikipedia pe care ti-am dat-o: In caz ca ai o neclaritate, te rog sa revii in acest topic cu raspunsul. Poti vedea exemple corecte de utilizare ale functiilor pe pagina la care am dat link.
  5. Pentru cei care vor sa vada macar imagini cu toate obiectele noi din 0.3.7, puteti accesa acest site: https://evanabagail.net/objects/?view=normal&show=all(este al unui membru activ al comunitatii oficiale de SA:MP, si este updatat site-ul foarte repede dupa ce apare un nou RC) Si cine vrea sa testeze personal obiectele, puteti descarca Map Editorul lui JernejL (Beta Tester) si le puteti vedea foarte usor, avand posibilitatea de a le roti/adauga in joc. Dar asta abia dupa ce ati instalat ultimul RC, in cazul actual fiind RC4. Noile ID-uri de obiecte sunt urmatoarele: #----------------------------------------------------------------- # Objects Added by Matite in SA:MP 0.3.7 RC4 # ------------------------------------------ # A51 Replacement Land Bit # ------------------------ # This object is designed to replace the land section at the # Area 51 (69) Base (object ID 16203). Use the new filterscript # called a51_base to see an example. 11692, A51LandBit1, a51_ext, 599, 0 #----------------------------------------------------------------- # Hills # ----- 11693, Hills250x250Grass1, beach_sfs, 599, 0 11694, Hill250x250Rocky1, des_sw, 599, 0 11695, Hill250x250Rocky2, des_sw, 599, 0 11696, Hill250x250Rocky3, Hill250x250Rocky3, 599, 0 #----------------------------------------------------------------- # Modular Rope Bridge # ------------------- 11697, RopeBridgePart1, RopeBridge, 299, 0 11698, RopeBridgePart2, RopeBridge, 299, 0 #----------------------------------------------------------------- # More Road Signs # --------------- # The speed limit sign below has a transparent material overlay # (index 3) so you can use it with the SetObjectMaterialText() # or SetPlayerObjectMaterialText() functions 11699, SAMPRoadSign46, SAMPRoadSigns, 50, 132 11700, SAMPRoadSign47, SAMPRoadSigns, 50, 128 #----------------------------------------------------------------- # Ambulance Lights # ---------------- # First object is with lights on and second is with lights off. 11701, AmbulanceLights1, AmbulanceLights1, 150, 0 11702, AmbulanceLights2, AmbulanceLights1, 150, 0 #----------------------------------------------------------------- # Magnetic Crane Object # --------------------- # This object is the same as object ID 1382 except GTASA will not # automatically attach the crane cable and magnet to it. 11703, MagnoCrane_03_2, cranes_dyn2_cj, 150, 4 #----------------------------------------------------------------- # Extracted Items # --------------- 11704, BDupsMask1, bdupsnew, 100, 2097152 11705, BlackTelephone1, cuntcuts, 50, 0 11706, SmallWasteBin1, cuntcuts, 50, 0 11707, TowelRack1, cuntcuts, 50, 0 11708, BrickSingle1, sw_well1, 50, 0 11709, AbattoirSink1, ab_abbatoir01, 50, 0 11710, FireExitSign1, eastbeach8_lae2, 75, 0 11711, ExitSign1, eastbeach8_lae2, 75, 0 11712, Cross1, Cross1, 50, 0 11713, FireExtPanel1, maint1, 50, 0 11714, MaintenanceDoors1, maint1, 50, 0 11715, MetalFork1, gb_dirtycrock01, 50, 0 11716, MetalKnife1, gb_dirtycrock01, 50, 0 11717, WooziesCouch1, ab_wooziec, 50, 0 11718, SweetsSaucepan1, SweetsStuff1, 50, 0 11719, SweetsSaucepan2, SweetsStuff1, 50, 0 11720, SweetsBed1, SweetsStuff1, 50, 0 11721, Radiator1, lahss2_2int2, 50, 0 11722, SauceBottle1, ab_trukstpb, 50, 0 11723, SauceBottle2, ab_trukstpb, 50, 0 11724, FireplaceSurround1, svcunthoose, 50, 0 11725, Fireplace1, svcunthoose, 50, 0 11726, HangingLight1, sfhosemed2, 50, 0 11727, PaperChaseLight1, papaerchaseoffice, 50, 0 11728, PaperChasePhone1, papaerchaseoffice, 50, 0 11729, GymLockerClosed1, intring_gymint3, 50, 0 11730, GymLockerOpen1, intring_gymint3, 50, 0 11731, WHeartBed1, whore_rms, 50, 4 11732, WHeartBath1, whore_rms, 50, 0 11733, WRockingHorse1, whore_rms, 50, 0 11734, WRockingChair1, whore_rms, 50, 0 11735, WBoot1, whore_rms, 50, 0 11736, MedicalSatchel1, paperchase_bits2, 50, 0 11737, RockstarMat1, carter_block_2, 50, 0 11738, MedicCase1, MedicCase1, 50, 0 #----------------------------------------------------------------- # Extracted from Marco's Bistro # ----------------------------- 11739, MCake1, MarcosStuff1, 50, 0 11740, MCake2, MarcosStuff1, 50, 0 11741, MCake3, MarcosStuff1, 50, 0 11742, MCakeSlice1, MarcosStuff1, 50, 0 11743, MCoffeeMachine1, MarcosStuff1, 50, 0 11744, MPlate1, MarcosStuff1, 50, 0 #----------------------------------------------------------------- # Hold All (Carry Bag) Edited # --------------------------- # This object is the same as ID 2919 except it is smaller and # not dynamic. 11745, HoldAllEdited1, kmb_chute, 50, 4 #----------------------------------------------------------------- # Misc # ---- 11746, DoorKey1, DoorKey1, 50, 0 11747, Bandage1, Bandages, 50, 0 11748, BandagePack1, Bandages, 50, 0 #----------------------------------------------------------------- # Cutscene Handcuffs # ------------------ 11749, CSHandcuffs1, CSHandcuffs1, 50, 0 # The handcuffs below are the same as above except they are folded # in half so they can be attached to an officers belt. 11750, CSHandcuffs2, CSHandcuffs1, 50, 0 #----------------------------------------------------------------- # Area Boundaries # --------------- 11751, AreaBoundary50m, EnExMarkers, 599, 2097220 11752, AreaBoundary10m, EnExMarkers, 599, 2097220 11753, AreaBoundary1m, EnExMarkers, 599, 2097220 #----------------------------------------------------------------- #----------------------------------------------------------------- Ce nu inteleg eu: 1. De ce se face un topic nou pentru fiecare Release Candidate ? 2. De ce OP-ul a folosit Google Translate ? (cel putin asa pare) Trebuia pe altcineva sa faca topicul daca el nu stie engleza. 3. De ce s-a facut o greseala ca asta: "SA-MP 0.3z R4" ? (jos in primul post, la descarcari) Nu e foarte greu sa se verifice inainte sa se posteze/editeze.
  6. Pentru prima: trebuie sa verifici daca jucatorul specificat este conectat (IsPlayerConnected), imediat dupa codul in care verifici parametrii. Pentru a doua: asigura-te ca ai fisierul "AntiServerFullFix.so" in "/plugins/" . Sfat: Se pare ca MAX_PLAYERS il ai la 500, cum vine prestabilit in include-urile SA:MP. Iti recomand sa adaugi aceasta bucata de cod: #undef MAX_PLAYERS #define MAX_PLAYERS <numarul tau maxim de sloturi> imediat dupa ce incluzi "a_samp" . * <numarul tau maxim de sloturi> - il inlocuiesti cu cate sloturi ai, de exemplu 100. Aceasta este o metoda care imbunatateste mult performanta serverului.
  7. Desigur, ai dreptate. Toti avem ceva, dar tu esti cel perfect. Pana si tu mi-ai recunoscut ca ai ceva. (cum am specificat intr-un post anterior) Ei (ei foarte putin de fapt, foarte rar, si altii care nici macar nu sunt in staff, si nu i-a pus nimeni. Eu nu fac asta, dar tu o faci) mai ma avertizeaza cand mai pui tu ceva legat de mine, nu i-a pus nimeni sa se uite. Multe posturi ale tale pe acolo sunt legate de cat de "naspa" sunt eu si SG-ul, pentru ca esti un hater care n-are ce sa faca altceva decat sa stea pe capul altora. (te pot compara cu o musca, mustele au o durata de viata de cateva zile, iar cele mai multe stau in casa si enerveaza persoane toata viata lor ... pana sunt omorate ) Tu cam asta o sa faci toata viata ta, o sa stai pe capul altora sa ii enervezi, dar cu mine nu iti merge. Eu unul nici nu stiam de acest topic de pe sa-mp.ro daca nu imi spunea cineva de el. Serios ? Nu inchide nimeni topicul ? Nu vreau sa fiu nevoit sa mai verific acest forum, cu atat mai putin acest topic.
  8. Da. Am vazut. Dar de ce iti pasa si de ce se posteaza pe SG ? Asta nu inteleg. Uita de el, nu vei mai fi primit niciodata acolo, mai ales ca tot ce-ai facut a fost sa-ti agravezi situatia. Stai tot timpul cu ochii pe el, la panda dupa tot ce e nou. Un cuvant te descrie perfect: hater. Hai sa n-o mai lungim te rog, stii bine ca nu-mi pasa de tine. Tot ce nu inteleg e de ce esti atat de hater, de ce stai atat prin jurul SG-ului, mai ales ca majoritatea de acolo te resping. Tu chiar nu te gandesti ca poate e ceva gresit cu tine de sunt atatia contra ta ? Gandeste-te la asta, nu imi place cand cineva persista in greseala, mai ales ca tu ai depasit cam orice limita. Probabil se va inchide topicul ... anul asta.
  9. Desigur ca ai... toti stim ca ai cei mai adevarati prieteni langa tine. Ai avut si tu cativa prieteni mai buni, si te-au lasat pentru ca si-au dat seama cum esti de fapt. E bine ca tu esti optimist si te vezi perfect ! Se vede ca nu m-ai cunoscut. Eu cand ma inteleg bine cu cineva, pot sa ii zic orice, PENTRU CA O ZIC IN GLUMA ( nu stiu daca ai observat, dar si cu HellGirl mai vorbesc asa, si e printre ce mai buni prieteni ai mei ^^, si ea intelege cand fac o gluma si cand nu ). Tu n-ai inteles asta, asa ca te-a apucat nebuneala. Iti trebuie creier sa intelegi niste glume. Cat timp vorbesc cu cineva, inseamna ca ma inteleg bine cu el, iar daca nu ma inteleg, pur si simplu dau ignore/block, ceea ce am facut la tine. Uite inca o dovada cum te roade de tot de SG: (daca SG si eu suntem asa naspa cum spui tu, de ce tot amintesti de el ?) Si inca una: Ce trebuie sa intelegi tu ? - Tu trebuie sa intelegi ca floodul nu il face orice copil imatur, ci il face cineva care detine zeci de dedicate, cu viteze de minim 100mbps fiecare (recomandate ar fi cele de 1gbps). Skilled Gaming este hostat la una dintre cele mai bune firme de hosting din Romania, care are protectie DDoS, si are vechime (deci experienta). Tot ce poti face cu un program de "flood" in calculatorul tau este sa iti blochezi temporar internetul, pentru ca ti-l suprasolicita, iar la noi nu se simte nimic. O protectie DDoS poate inghiti zeci/sute de gbps, iar traficul tau de nici 10mb/s transmis nu afecteaza nimic. Nici macar un DDoS de 1gbps nu afecteaza. Poti sa pui cati prieteni (daca ai vreunul) de-ai tai vrei sa floodeze, sparga, sau altele, Skilled Gamingul, n-ai nici o sansa, este prea bine securizat. Dar cum banuiesc ca fiecare prieten ramas al tau e ca tine, imatur, tot ce puteti face impreuna e un trafic de 100-200mbps maxim, ca toti faceti din calculatoarele personale. Eu credeam ca s-a inchis topicul asta. Se poate sa-l inchida cineva ? Este chiar inutil. Nici macar nu are ce cauta aici. De ce sa i se acorde atentia unei non-valori, MefX ? Asta e tot ce cauta. E doar gura de el, si faza e ca vorbeste mult si prost. Eu il voi ignora in continuare.
  10. EDIT: Sa se vada cat e de frustrat pe viata, si ca n-are nimic de facut decat sa se ia de viata mea (l-am banat, i-am dat ignore, block, peste tot, ca sa nu mai am nici o metoda de contact cu el), a facut un topic si aici, dar si pe o alta comunitate legata de GTA (EDIT: se pare ca nu pot da link, dar cei care stiu, e o comunitate rivala cu aceasta, gta-mp). Imi cer scuze daca se considera reclama. Puteti scoate linkul daca am gresit. Degeaba ai 17 ani, nu dai dovada de ei. Eu te-am lasat in pace acum mult timp... cand te-am banat, si tu te tot tii de viata mea. De ce naiba faci asta ? Crezi ca esti destept sau ceva ? Imi pare rau ca probabil am o viata prea interesanta si te tot bagi in ea. Tu si cu vreo cativa catei de pe "super-comunitatea" ta (de fapt nu e a ta, ci ai primit administrator, si voi cand primiti rank undeva sunteti cei mai recunoscatori catelusi ever). Ieri sau alaltaieri a facut cineva cerere pe Skilled Gaming (comunitatea mea, veche de 4 ani, cu aproape 4k membri) sa se alature cu serverul, iar apoi am observat ca a intrat in "comunitatea" lui xStyle (tot incerci sa furi de la mine, si nu stiu ce vrei de la viata mea ??). Tie ti-a placut de o fata, nu te-a placut, si ai inceput s-o injuri dupa un timp, tu ducandu-te in continuare cu o fiinta (ca om nu e nici aia) care s-a certat si ea cu acea fata pe care o placeai. Eu nu cer bani la unban (dadusem recent unban la toti ... cateva zeci de pagini de banuri). Am cerut bani doar la vreo 2-3 retardati, care tot faceau tampenii si nu mai voiam sa le dau unban, si stiu ca atunci cand vi se aduce vorba de bani nu mai aude nimeni de voi, voi vreti totul, facand numai prostii. ( + nu am cerut doar 1 euro, am cerut mai mult, cu cat e mai mult, cu atat sunt sanse mai mari sa scap de tampenia voastra ) Cica imi sare tandara usor... te referi atunci cand ai dat mass la toata lista ta pe Yahoo! Messenger cu un videoclip de pe facebook cand un indian (sau asa ceva) facea ... *ceva* ... cu o gaina zicand ca sunt eu ? Aia ti se pare tie o gluma buna ? Mie nu. E nevoie sa spun ca atunci cand iti mai ziceam ca ai probleme la cap tu spuneai ca e de la cele nu stiu cate anestezii facute de tine in ultimele luni ? (ai recunoscut ca ai ceva la cap) Maturizeaza-te copilule. Nici nu inteleg de ce ai facut topic aici. Nici nu vedeam topicul daca nu-mi atragea un prieten atentia. Crezi ca-i pasa cuiva de problema ta la cap ? Inainte sa spui ceva de rau, asigura-te ca macar e adevarat (oricum intentia ta e doar sa-mi faci rau, asta tot faci de cand ai luat ban, frustratule). Cei mai vechi de pe aici (daca mai e cineva vechi pe aici, vad ca a fost refacuta comunitatea) probabil ca ma stiu. Am fost Global Moderator aici in urma cu vreo 2-3 ani, apoi am decis sa ma las de aceasta comunitate. ----------- Specific ca nu vreau nici un raspuns de la tine, pentru ca spui numai minciuni, si esti un jeg de om. ----------- Multumesc. As vrea ca un membru al staffului sa blocheze acest topic, si, eventual, sa aplice o sanctiune utilizatorului de mai sus.
  11. Ca sa vezi exact la ce linie da crashul trebuie sa compilezi gamemode-ul in Debug Mode. http://forum.sa-mp.com/showpost.php?p=1253632&postcount=7 Pe scurt: in folderul pawno creezi "pawno.cfg" si in el adaugi -d3. Apoi deschizi gamemode-ul si-l compilezi. Apoi cand va da crash serverul, va zice exact linia la care a dat crash. O mica sugestie: verifica daca exista acele foldere in care scrii. Vad ca zice ca problema este la o linie "fwrite", si fwrite da crash (nu mereu din cauza asta, dar de cele mai multe ori d'asta da) atunci cand nu exista acel folder. Probabil aceasta este cauza.
  12. Acest tutorial se poate aplica si la sistemele de conturi pe fisiere.
  13. Nu ma intereseaza ca nu te intereseaza. :P
  14. Introducere: - De ce am hotarat sa fac acest tutorial ? Toti cred ca avem pe serverele noastre sisteme de conturi, acel lucru care ii lasa pe utilizatori sa se inregistreze pe server si sa se logheze cu acel cont dupa ce a intrat iar pe server, recuperand datele de la ultima sesiune de jucat. Mai jos am sa va explic cum sa le salvati parolele in database-ul vostru, fara ca un hacker sa le poata citi, daca va sparge database-ul. Stiu ca multi vreti sa aflati parolele utilizatorilor vostri, dar eu nu va recomand sa faceti asta, pentru ca va compromiteti profesionalitatea serverului si nu va mai avea nimeni incredere in voi, si vor evita acel server, daca se descopera ca faceti asta. In opinia mea securitatea este mult peste interesul propriu. Eu unul folosesc cea mai grea metoda de salvare a unei parole, care am s-o v-o explic mai jos, nimeni nu poate sparge parolele cu acea metoda. Pentru ca de multe ori am vazut ca folositi primele doua metode proaste de mai jos, iar de multe ori vi se sparge contul de la host, iar database-ul (prin asta ma pot referi si la fisiere, sistemele de conturi pe fisiere folosesc si ele aceste metode, nu uitati) este furat de cineva si postat pe internet, iar utilizatorii care n-au nici o vina vor avea parolele stiute de toti, din cauza incapabilitatii acelui proprietar de server care nu a fost in stare sa faca un sistem de securizare la parole. Un exemplu bine cunoscut este Romania Super Stunt (nu sunt un fan, dar este un server foarte mare, din Romania, pe care toti il cunoasteti si care a patit ce am spus anterior), acest server avea (si inca are, dar vorbesc de momentul in care a fost spart database-ul) mii de utilizatori, ale caror parole le salva in "plain text" (prima metoda). Dar cineva (cred ca stiti cine, nu mai dau nume) le-a spart database-ul si l-a postat pe net, asta insemnand ca parolele la mii de utilizatori au fost facute PUBLICE ! Chiar vreau sa schimb modul in care gestionati parolele utilizatorilor. - De ce am fost inactiv ? Am fost, si inca voi mai fi inactiv (probabil voi mai veni cateodata pe aici in cazuri speciale), din motive pe care le-am spus unora, dar nu vreau sa le spun aici. Am vrut sa va invat sa va securizati parolele. Parolele sunt centrul de atractie pentru hackeri, de aceea trebuie sa acordati un timp important securizarii acestora ! - Nu stiti cine sunt ? Cei mai vechi utilizatori ma vor sti, acum minim un an (nu mai stiu exact cand) am fost Global Moderator aici, si ajutam pe majoritatea la intrebari, care de multe ori se tot repetau si incepusem mai mult sa dau link-uri intre topicuri, lucru care incepuse sa ma deranjeze. Am mai scris cateva tutoriale acum mult timp, acesta fiind cel mai nou (scris azi, 04.12.2013), mai complex si important dintre ele. Daca trebuie sa le salvati parolele utilizatorilor vostri, cele mai proaste metode de a le salva in database sunt: 1. Plain Saving (Salvarea simpla): Prin aceasta metoda, in database veti salva direct parola. Cand se logheaza, comparati direct parola introdusa, cu parola din database, daca sunt la fel, ii permiteti accesul. Un exemplu ar fi: [table] KeyUserParola 0Testexemplu123 1Huser123456 [/table] 2. Encrypt Saving (Salvarea criptata): Prin aceasta metoda, in database veti salva parola criptata, pe care apoi voi o veti putea decripta prin inversarea metodei de criptare. Aceasta metoda este putin mai securizata decat prima, dar tot nu este recomandata. Daca gresesc cu aceasta explicatie, corectati-ma, nu m-am documentat foarte mult despre criptare. Cand se logheaza, comparati criptarea parolei introduse, cu parola din database (care este cea de la inregistrare, dar criptata), daca sunt la fel, ii permiteti accesul. Un exemplu oarecare (metodele de criptare pot diferi, dand diferite rezultate): [table] KeyUserParola 0TestdJKkdf25Ka412 1Huser74g2dG1g69pa [/table] Criptarea unei parole va fi mereu aceeasi, la toti utilizatorii care folosesc acea parola, deci se poate afla usor ce utilizatori folosesc aceeasi parola. 3. Hash Saving (Salvarea hash-ului): Prin aceasta metoda, in database veti salva parola "hash-urata", pe care apoi voi NU o veti putea "dehash-ura", spre deosebire de a doua metoda. Aceasta metoda este mai securizata decat a doua, dar tot nu este recomandata. Cand se logheaza, comparati parola introdusa pe care apoi o "hash-urati", cu parola din database (care este cea de la inregistrare, dar "hash-urata"), daca sunt la fel, ii permiteti accesul. Un exemplu oarecare (metodele de "hash-urare" pot diferi, dand diferite rezultate) folosind metoda de "hash-urare" Whirlpool (una dintre cele mai securizate metode) este (prima este hash de la "exemplu123", iar a doua de la "123456"): [table] KeyUserParola 0TestA4BB726A4CB4547B889FB7F9A18DF65B2783B885742A5696654B9CA9DAF3763421C0ACBE0ED1785D2CE124F7212F584EE381E4283FF838D222309B918A857734 1HuserFD9D94340DBD72C11B37EBB0D2A19B4D05E00FD78E4E2CE8923B9EA3A54E900DF181CFB112A8A73228D1F3551680E2AD9701A4FCFB248FA7FA77B95180628BB2 [/table] "Hash-ul" unei parole va fi mereu acelasi, la toti utilizatorii care folosesc acea parola, deci se poate afla usor ce utilizatori folosesc aceeasi parola. Cea mai buna metoda de salvare a parolelor este urmatoarea: Hashed Password + Salt Saving (Salvarea "hash-urarii" parolei + salt): Prin aceasta metoda, in database veti salva parola "hash-urata" alaturi de un "salt" (un string generat aleatoriu pentru fiecare utilizator, pe care trebuie sa-l salvati "plain" in database, care se contopeste cu parola), pe care apoi voi NU o veti putea "dehash-ura" prin nici o metoda enumerata mai jos (nici nu mai poate fi vorba de citit direct sau decriptate, "dehash-urare", sau orice alt lucru de acest gen). Aceasta metoda este mult mai securizata fata de oricare alta metoda de salvare a parolelor. Cand se logheaza, comparati parola introdusa pe care apoi o "hash-urati" alaturi de acel salt, cu parola din database (care este cea de la inregistrare, dar "hash-urata" alaturi de salt), daca sunt la fel, ii permiteti accesul. Un exemplu oarecare (metodele de "hash-urare" pot diferi, dand diferite rezultate) folosind tot metoda de "hash-urare" Whirlpool este (prima este hash de la "exemplu123" + salt, iar a doua de la "123456" + salt): [table] KeyUserSaltParola 0Testkfaisfk3hj6278CDB5901D6CD159FEE1889879F4AD928D531B1BA9E6A09C20FD321D9F6EB2CC35DC5EFE7D0BD9DD8C40ABCEF2E6781D46261C501733A8BB187AB0C96B536F 1Huserf45d56g63435EEEF19487633CCA36AC4470289624CDAE7C5F7F2D00BF625AFFB423906502B95F0DD43F034E886716679096B48B818127EEB85AD4B031F25B3AF53327FAAAB [/table] Metode de a sparge o parola "hash-urata": 1. Brute Force: Prin aceasta metoda se foloseste un program care verifica "hash-urarea" fiecarei combinatii de caractere posibila, pana cand "hash-urarea" acelei combinatii de caractere corespunde cu "hash-urarea" parolei din database, iar daca ele corespund. 2. Rainbow Table: Prin aceasta metoda, nu trebuie decat sa descarcati un database cu foarte foarte multe parole deja criptate (dar si foarte foarte mare, de cativa gigabytes), iar el nu va face decat sa selecteze "hash-ul" parolei pe care incearca s-o sparga din database, iar in database alaturi de acel hash este si parola normala. In acest "Rainbow Table" se afla fiecare hash al fiecarei combinari de caractere, pe care cineva le-a facut inainte si le-a publicat. Detalierea celei mai bune metode de salvare a parolei: Prin aceasta metoda, metodele de a sparge parola de mai sus nu se pot aplica, deoarece parola este lipita de acel salt, in "hash-ul" final ea devenind alt hash, ci nu hash-ul direct al parolei. Nu se poate scoate salt din acel hash final, pentru ca nu sunt "hash-urate" separat, ci impreuna, ca si cum ar fi o parola unita. Mai multe exemple ale aplicarii celei mai bune metode: Mai jos voi folosi hash la parola ("exemplu123") + salt (aleatoriu, specificat in tabel), in cazul simplei "hash-urari", "hash-ul" final trebuia sa fie la fel la toate, dar aici vom folosi salt, deci "hash-ul" final va fi complet diferit pentru aceeasi parola, din cauza ca "salt-ul" difera (in cazurile extrem de rare in care "salt-ul" este identic, "hash-ul" final va fi si el la fel, dar tot nu se poate descoperi parola initiala pentru ca este contopita cu acel salt): [table] KeyUserSaltParola 0<nume>10degFD8517FAF7C4EA0B0C42D47D6A4A39A674709E4B1352599BEB86D7E3465D1E847194C33BF3C0DCDC61D8365148260E88EFB06AB95AB971AB04D5153960D01609 1<nume>548yM55C918D79FF8C0855B53C3AF1587ECEF78D1BE93E51ABDFC6928D0006FDF293B71D23DA0E6B0EA9577092ECA89CDFA6C09FB786E23E4FD9939E04EB49A47384A 2<nume>4D8I52687B369BF48C20D6BE37FB767E921D1CF1B6AFE5852BD61065D6CD3760C227808FCBE3EE0A37B183ACA3EA17A6265F00BDDD9A2A99134DAE77DF5370DA89AAE 3<nume>4i5kp34112D1F1678AE251676FE5F86CCDE6CDE7EB875AEC69F6664803EAA67F9E4C48C718A72290F2AD0C820264419826C114BA988154092F2A80C7D1B262FA2B56E 4<nume>WayIPD4E21D7BD3C25CC11C95658734A59505E545B711B5CEB6B32C05F18A06E42DA4AC386599B2452DC5B22AD24EC6D7C051652870BC0FF3EE7225C3245C71F96D2A 5<nume>02jZYD4E11E2ED93D4EA33FAE6062E747DDDA69C9E144838DF950207BFA4B8115B10F9AAFE64EA5FCBF470A9B099DC465AC66E60F1CE10C3474C01CC1C26A753EA682 6<nume>d1HeS8A276668B69F51E8B5061BAC7E72414582723D760B95494B707C861AB1EC2C5388DDF129D95E27F7E8325FCB15DE8D6AFBC22BAB68FF2C6BF083DC67DC74034F 7<nume>71ed279E51F0ACCED3FF5A4090D2B000B131E8A7AB98DE5C6AA0298B1259402935A1ABB6CCC4DC590FD8494CF2BCAE0CF2687E095E9CD41B85640B105C913BCEBACF1 8<nume>cFCcU2D44196E14054447FA160D707E7D9E815F9FB7508C088523330B154198A666FE9CE20EDC0FCFAFDC7EB9B05C6F9D242BF68A1E87B97C1EFCB394AC203E903DF1 9<nume>6660x6F02BC0EE9481F6A1713C2B9618D1C5946E92BF666ABD00F6665FF4316D01EE5265AEEE50DE522B0C4DB38FEE1DC3EFFD4C743ED8EF6A5D8661282490EA38C53 10<nume>850tZC53F8782B2658687E942CC0A5505DB813104A90C2ABF5991354ECC945981DBED08BB525CA8F525F8CBC63E8341B7492123842FCDDADEE290A1CB0BB9D7419490 11<nume>05c2128BC6DEE54AA5FC66E70C083BD66C8D9CDC2DC2E6A27996898B518BFD919AA476BC2861975A94A9483ECD1A3E5AA16C104C974CA91AAF343C29B74F1C58AC1A4 12<nume>4K8740325C06B2CDD1F9DDAB8D226C85951D4F51DC4B29D703553DD8469022C97D42DC6CE2B6BBDE0036A962BC4694C29B22C0DA4C14D50B4ACE77F4E8A1414FC9640 13<nume>63y18043873D4A6F4889C69D827F6AF43E44480A27EF296D989F1E8C73B02EBD5744A21462733694D68958439BA9941B9446C6D10915739A37FBEF2CE73EA40D1E740 14<nume>Dq5n30DF76CEC3D9C38453C0C6CF655401A8B62B9BF7C07B2255BE6AA47171F820BA1030B56587FC51A027A21849986431A6414F7F01D45C2FA3B3ACFB2ED2049A9D6 15<nume>32450E947105AC01F9517C0EB49D7D195DE2D88D22D47B333CF799B726FB64226E6038448421E55BF6C6093901C6162D477A7F6D9F4A60344A7BB257BF76F1C88268E 16<nume>2lzfsE03DE626CD5CF9F05DAA6EC29AF7031A38A3103C0D5E164B9B6C94A00ECF186739B24947BB7BC6AE4D2DDA308512EC5095EC3A6457B1F87C89861A100234F072 17<nume>32418722CFD5AFFCD6F5721A9C2B8065E4D65844B23C7BBCC0F7571E84781AF6B63CB61AA306F14B37DC97FCF2F30F47DEFF6C279CED6F50A406D1A197608A3FF3C2F 18<nume>4E4D237629E928DF9F44EB53A21C79810597CDF31A87591FB89A8BCF623B190D1206FD691674F93CEB5B5E7D9A1A642E9CF9A26ADB5EEC6B552AB92C0527D98E20A69 19<nume>eu2Z88B014596CA4B3C9F84BAC4784A3CEE53C4E4A330CD4C836E63F72968BF047C60CF523C1B3327DBFA7954908F766B0616FF8E5C2B6CEF2D9CF76DD8AB07F5D392[/table] Eu am folosit un salt aleatoriu de 5 caractere, dar pentru mai multa securitate se poate opta pentru un salt mai lung (deci sansele ca unele "salt-uri" de la utilizatori sa fie aceleasi vor fi mult mai mici). Aplicarea celei mai bune metode: Voi folosi aici Whirlpool, una dintre cele mai bune metode de "hash-urare". Prin parola contopita cu salt ma refer ca parola sa fie de exemplu "exemplu123", iar "salt-ul" unul aleatoriu, de exemplu "10deg" (primul in tabelul mare de mai sus), iar ele in final vor fi unite "exemplu12310deg" pentru ca ele mai apoi sa fie "hash-urate", dand rezultatul: Acum urmeaza scriptul, pe care il puteti face singuri foarte simplu, prima data trebuie sa obtineti parola pe care o vrea utilizatorul (daca folositi dialog la inregistrare, la OnDialogResponse parola este trimisa scriptului prin parametrul string "inputtext"). Apoi trebuie sa generati un salt intr-un string, care ar fi bine sa fie cat mai lung, dar este ok si unul de, sa zicem, 15 caractere: for( new i = 0; i < 15; i ++ ) // 15 fiind numarul de caractere dorit salt[ i ] = random( 2 ) ? ( '0' + random( 9 ) ) : ( random( 2 ) ? ( 'a' + random( 26 ) ) : ( 'A' + random( 26 ) ) ); Apoi, intr-un alt string, contopiti parola cu "salt-ul": format( gsString, 256, "%s%s", inputtext, salt ); Apoi, ca sa rezulte "hash-ul" final, trebuie sa "hash-urati" parola contopita cu "salt-ul": WP_Hash( gsHash, 130, gsString ); iar apoi la inregistrare introduceti in database "salt-ul" si "hash-ul" final, iar la login trebuie sa contopiti parola introdusa cu "salt-ul" din database, iar apoi sa "hash-urati" si sa comparati cu "hash-ul" final din database. Pentru si mai multa securitate, va sugerez: - un salt de minim 32 caractere - un salt format si din caractere speciale - contopirea sa nu fie facuta direct, ci prin combinatii personale pe care sa nu le stie nimeni. Exemple: format( gsString, 256, "%s.%s", inputtext, salt ); format( gsString, 256, "%s|**#@%s", inputtext, salt ); format( gsString, 256, "%s524%s", salt, inputtext ); format( gsString, 256, "<%s><%s>", inputtext, salt ); - combinati de mai multe ori "salt-ul" si/sau parola in contopire. Exemple: format( gsString, 1024, "%s%s%s%s", inputtext, salt, salt, salt ); format( gsString, 1024, "%s%s%s%s", salt, inputtext, salt, salt ); format( gsString, 1024, "(%s><%s>!%s!%s|", salt, inputtext, salt, salt ); - "hash-urati" inca o data "hash-ul" final - "hash-urati" si parolele de la case, masini, sau orice alt lucru care necesita o parola pe server Inca o data va spun, uitati de propriul interes, nu va mai uitati la parolele utilizatorilor, ci cautati sa le securizati, sa le faceti imposibil de citit de cineva (asta am explicat in acest tutorial), pentru ca niciodata nu poti sti cand cineva iti va sparge serverul, iar utilizatorii fara nici o vina vor avea parolele aflate. In legatura cu parolele voastre pe servere, site-uri, etc., va recomand sa folositi o parola doar pentru un server/site, ci nu peste tot, deci daca un proprietar este incapabil sa faca o metoda de securizare si parolele vor fi postate, voi nu o veti avea la fel si pe alt site. Cel mai bine este sa folositi un generator de parole, care le si retine. Unul dintre aceste generatoare care si retine parolele este "Kaspersky Password Manager". Acest tutorial este scris in totalitate de mine, [sG]stuntman, iar daca il veti posta pe alte site-uri (sa afle toti proprietarii de servere de securizarea parolelor, dar sa nu uitati:) sa dati sursa (link catre acest topic sau topicul de pe site-ul meu) si credite (mie) !
  15. Vezi si tu cum e. ) Eu am scapat de "fratii" mei care ma deranjau pe mess cu scriptingul. >:]
  16. Ma flatati. ) Y_Less xeeZ Dan. - da, este un roman, dar el nu da pe aici, este doar pe sa-mp.com, imi place stilul lui si stie foarte multe. Altii nu prea-mi vin in minte, cei care-mi vin au facut doar pluginuri (AFAIK).
  17. Ar fi buna asta sa fie o comanda /fuck [player], sa ii dea la jucatorul care-l pui, in caz ca e unul enervant. )
  18. Nu ma cunosti, nu vorbi. Multi care m-au vazut pe forum pe sa-mp.ro (acum mult timp) credeau ca-s un tampit, idiot, blablabla, dar apoi cu unii am vorbit pe mess si si-au dat seama ca au gresit. Nu vad rostul acestei insulte, te-a bagat cineva in seama ? Ma crezi idiot sau cum vrei tu sa-mi zici, tine-o pentru tine, nu-mi pasa. Haters = 0.
  19. "Ne casatorim in toamna, dupa o relatie de 4 ani." )
  20. Am parasit sa-mp.ro acum mult timp (adica nu mai sunt activ aproape deloc), dar de atunci si pana acum am avansat foarte mult. De la optimizare cod pana la viteza de lucru, combinare coduri foarte dificile si altele. DarkSone, tu esti gen multi altii, apreciez un om doar daca lanseaza ceva, nu si daca face lucruri in privat (doar pentru el). Din cate am vazut in cele postate de Rock (server n-are, deci altfel nu pot vedea nimic), nu prea se apropie de mine (nu-s modest). Totusi, topicul asta nu e pentru cearta sau altele, ci pentru ca xxSPEEDYxx cauta un colaborator pentru un server RP. xxSPEEDYxx, aici nu prea vei gasi pe nimeni, si prin asta ma refer la de incredere si foarte bun. Ori vei gasi doar de incredere (rar), ori foarte bun (rar). Cel mai bine ar fi sa cauti cativa oameni foarte buni si sa vorbesti cu fiecare in parte. Dar problema este ca cei din Romania nu sunt de incredere, merge ce merge, iar dupa un timp ii apuca nebuneala. Nu stiu ce se intampla cu voi.
  21. Da, cel mai avansat scripting e la voi doi. =)) Are you f*cking kidding me ?
  22. Mapele sunt de diferite natii ? O mapa romaneasca, auzi...
×
×
  • 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.