Jump to content

WiDuAlK

V.I.P
  • Posts

    1.337
  • Joined

  • Last visited

  • Days Won

    95

Everything posted by WiDuAlK

  1. .... ce ai tu pe acolo uite, inlocuieste asa dialogul de register: case D_Register: { if(!response) return Kick(playerid); if(strlen(inputtext) < 3) return ShowPlayerDialog(playerid, D_Register, DIALOG_STYLE_INPUT, "Register", "Parola trebuie sa contina cel putin 3 caractere.", "Register", "Kick"); new parola[50]; mysql_escape_string(inputtext,parola); mysql_format(mysql, query, sizeof(query), "INSERT INTO `_players`(`Username`, `Password`, `IP`) VALUES ('%e', '%e', '%s')", GetName(playerid), inputtext, IP[playerid]); mysql_query(mysql, query); }si pune acest stock: stock GetName( playerid ) { new name[MAX_PLAYER_NAME+1]; GetPlayerName(playerid,name,sizeof(name)); return name; }
  2. probabil e ceva neinregula cu " Name[playerid] " si din cauza asta ni iti inregistreaza bine.
  3. ms, da is d'al lui Dumnezeu ;)
  4. ​Da, nu prea am ce sa fac...
  5. Salutare lume, am creat bine-inteles si eu un sistem de register-login mai special, si am zis sa v-il arat si voua pentru a-mi da o parere sau sfat. Vreau o parere sincera, iar sfaturile le voi lua in considerare daca e cazul
  6. deci, ne arati si noua dialogul de login? sau nu mai e nevoie si dau topic close?
  7. Arata-mi dialogul de login
  8. ​1) Nu e de la baza de date, fiindca ii da "Parola gresita" 2) Pentru ce ai facut, daca vrei sa te iert indeplineste urmatoarele sarcini: Pupa mana, picioru, adu 2-3 beri si da-mi locuinta ta! D@Rkyy uite-te mai sus ce te-am intrebat
  9. Folosesti un GM de pe net sau unul care ai creat tu?
  10. 1) ce sistem de stocare a datelor folosesti? 2) ce ai incercat mai exact?
  11. ​Mie mi se pare mai usor, sincer, dar na fiecare cu parerea lui. Eu prin tutoriale incerc sa arat modul de gandire mysql, pentru ca odata inteles modul de gandire, iti este mai usor sa il folosesti, si nu ti se pare mai greu. Eu initial vroiam sa invat dini, dar erau toate sistemele de register stricate, asa ca am incercat sa invat mysql si in vro 2 luni am invatat destule despre el, si am zis ca e mult mai ok sa raman la mysql decat la celelalte pentru simplu fapt ca mysql e de viitor in toate domeniile IT
  12. 1) Nu ai respectat modelul. 2)Nu ai incercat nimic 3) Nici nu stim cum ai definite tu job-urile in GM. 4) Nici nu stim cate joburi ai. In mod normal ti-as inchide topicul din motivele enumerate mai sus. Am sa fac o exceptie si nu am sa ti-l inchid, asa ca spune-mi cum ai definite joburile, cate joburi sunt si numarul lor. EXEMPLU: P_DATA[playerid][pJob] = 1 - jobul de trucker(doar un exemplu, nu cred ca asa e si in GM tau)
  13. ​Pai nu o lua ca o explicatie, ci ca un mod de gandire. Merci ce + ​Why, mysql este mult mai bun ca SQLite
  14. ​Iesi acas' ! Nu sunt nebun sa memorez parametri pederost:|
  15. De ce nu ai facut pe mysql. Ini e deja foarte invechit... Cat despre tutorial... 5/10, se putea si mai bine...
  16. new.pwn fara buguri, fara vulnerabilitati 100%. Cel mai misto GM.
  17. Gata omule, special cu dedicatie: http://www.sa-mp.ro/forums/topic/21083-tutorial-etapele-de-register/#comment-117441
  18. Salutare, la cererea lui david1995 am decis să fac un tutorial despre cum să faceţi un register mai dezvoltat, anume punem condiţii de înregistrare. Va anunţ de la început că eu folosesc aceste scripturi pe tutorialul acesta: TUTORIALVom face 4 dialoguri corespunzătoare cu : Vârstă, Sex, Email, Refferal(opţional).Dar vom face şi o verificare de stagiul de register. Acest stagiu va fi folosit pentru a termină registerul dacă ai închis inaine de a termină de completat. Mergem la enum-ul cu dialogurile şi adăugăm: enum { DIALOG_LOGIN, // dialogul de login DIALOG_REGISTER,// dialogul de register DIALOG_VARSTA, DIALOG_SEX, DIALOG_EMAIL, DIALOG_REFFERAL }; acum mergem la enumeraţia pInfo şi adăugăm: enum pInfo { pParola, pID, pVarsta, pSex, pEmail, pRefferal, pRegisterStep// aceasta ne ajuta la verificare. }; Acum că am adăugat acestea, mergem şi la OnDialogResponse şi facem o completare la dialogul de register, adică după ce ai băgat parolă să-ţi dea direct dialogurile de vârstă, sex, email refferal, apoi le creăm. Mergem la OnDialogResponse la DIALOG_REGISTER şi înlocuim în loc de SpawnPlayer(playerid) cu: ShowPlayerDialog(playerid, DIALOG_VARSTA, DIALOG_STYLE_INPUT, "Varsta", "Ce varsta doresti sa aiba caracterul?", "OK", ""); apoi sub case DIALOG_LOGIN punem: case DIALOG_VARSTA: { if(response) { new varsta = strval(inputtext);// strval convertete un string in intenger(numar natural) if(varsta < 6 || varsta > 40)// daca numarul pe care il introduce e mai mare decat 40 de ani sau mai mic decat 6 ii returnam din nou dialogul de varsta: return ShowPlayerDialog(playerid, DIALOG_VARSTA, DIALOG_STYLE_INPUT, "Varsta", "Ce varsta doresti sa aiba caracterul?\n Trebuie sa ai intre 6 si 40 de ani!", "OK", ""); // daca trece peste aceasta verificare se vor intampla urmatoarele: P_Data[playerid][pVarsta] = varsta;// variabila varsta va fi egala cu numarul introdus in casuta mysql_format(handle, query, sizeof(query), "UPDATE `conturi` SET `Varsta`='%d' WHERE `Nume`='%e'", P_Data[playerid][pVarsta], GetName(playerid));// introducem varsta sa fie egala cu cea care am introdus-o in casuta mysql_query(handle, query);// trimitem mesajul catre baza de date P_Data[playerid][pRegisterStep] = 1; mysql_format(handle, query, sizeof(query), "UPDATE `conturi` SET `RegisterStep`='%d' WHERE `Nume`='%e'", P_Data[playerid][pRegisterStep], GetName(playerid));// se updateaza mysql_query(handle, query);// se trimite interogarea ShowPlayerDialog(playerid, DIALOG_SEX, DIALOG_STYLE_MSGBOX, "Sex", "Ce sex doresti sa aiba caracterul?", "Masculin", "Feminin");// il timitem la dialogul de sex } } Am făcut dialogul de vârstă, dar trebuie să apelăm la cel de sex, şi vom face uite aşa: case DIALOG_SEX: { if(response)// daca apasa pe primul buton(masculin) { P_Data[playerid][pSex] = 1;//Seteaza pSex = 1(adica baiat) mysql_format(handle, query, sizeof(query), "UPDATE `conturi` SET `Sex`='%d' WHERE `Nume`='%e'", P_Data[playerid][pSex], GetName(playerid));// se updateaza sex-ul jucatorului mysql_query(handle, query);// se trimite catre baza de date. P_Data[playerid][pRegisterStep] = 2; mysql_format(handle, query, sizeof(query), "UPDATE `conturi` SET `RegisterStep`='%d' WHERE `Nume`='%e'", P_Data[playerid][pRegisterStep], GetName(playerid));// se updateaza mysql_query(handle, query);// se trimite interogarea ShowPlayerDialog(playerid, DIALOG_EMAIL, DIALOG_STYLE_INPUT, "Email", "Ce email ai?", "OK", "");// il timitem la dialogul de email } if(!response) { P_Data[playerid][pSex] = 2;//Seteaza pSex = 1(adica baiat) mysql_format(handle, query, sizeof(query), "UPDATE `conturi` SET `Sex`='%d' WHERE `Nume`='%e'", P_Data[playerid][pSex], GetName(playerid));// se updateaza sex-ul jucatorului mysql_query(handle, query);// se trimite catre baza de date. P_Data[playerid][pRegisterStep] = 2; mysql_format(handle, query, sizeof(query), "UPDATE `conturi` SET `RegisterStep`='%d' WHERE `Nume`='%e'", P_Data[playerid][pRegisterStep], GetName(playerid));// se updateaza mysql_query(handle, query);// se trimite interogarea ShowPlayerDialog(playerid, DIALOG_EMAIL, DIALOG_STYLE_INPUT, "Email", "Ce email ai?", "OK", "");// il timitem la dialogul de email } } Acum adăugăm şi dialogul de email: case DIALOG_EMAIL: { if(response) { if(strlen(inputtext) < 10 || strlen(inputtext) > 100)// strlen obtine lungimea de string. Daca mesajul introdus in caseta(emailul) este mai mic de 10 caractere sau mai mare de 100 caractere return ShowPlayerDialog(playerid, DIALOG_EMAIL, DIALOG_STYLE_INPUT, "Email", "Ce email ai?\nTrebuie sa fie intre 10 si 100 caractere!", "OK", "");// ii returneaza acelasi dialog strmid(P_Data[playerid][pEmail],inputtext, 0, strlen(inputtext), 100);// strmid obtine lungimea unui string. // in acest caz lungimea este introdusa in pEmail, adica P_Data[playerid][pEmail] = inputtext, dar va da eroare, asa ca ne folosim de strmid. mysql_format(handle, query, sizeof(query), "UPDATE `conturi` SET `Email`='%s' WHERE `Nume`='%e'", P_Data[playerid][pEmail], GetName(playerid));// se face update la baza de date a playerului mysql_query(handle, query);// se trimite mesajul catre baza de date. P_Data[playerid][pRegisterStep] = 3; mysql_format(handle, query, sizeof(query), "UPDATE `conturi` SET `RegisterStep`='%d' WHERE `Nume`='%e'", P_Data[playerid][pRegisterStep], GetName(playerid));// se updateaza mysql_query(handle, query);// se trimite interogarea ShowPlayerDialog(playerid, DIALOG_REFFERAL, DIALOG_STYLE_INPUT, "Refferal", "Te-a adus cineva pe server?", "OK", "SKIP");// il timitem la dialogul de refferal } } Iar ultimul dialog, cel de refferal case DIALOG_REFFERAL: { new rows, fields; if(response)// primul buton { mysql_format(handle, query, sizeof(query), "SELECT * FROM `conturi` WHERE `Nume` = '%e'",inputtext);// selecteaza numele din baza de date mysql_query(handle, query);// se trimite interogarea catre baza cache_get_data(rows, fields);// definim randurile si domeniile if(rows)// daca acel player are cont(are randuri in baza de date) { strmid(P_Data[playerid][pRefferal],inputtext,0,strlen(inputtext),25);// i se seteaza refferal-ul mysql_format(handle, query, sizeof(query), "UPDATE `conturi` SET `Refferal`='%e' WHERE `Nume`='%e'", P_Data[playerid][pRefferal], GetName(playerid));// se updateaza refferalul playerului mysql_query(handle, query);// se trimite interogarea P_Data[playerid][pRegisterStep] = 4; mysql_format(handle, query, sizeof(query), "UPDATE `conturi` SET `RegisterStep`='%d' WHERE `Nume`='%e'", P_Data[playerid][pRegisterStep], GetName(playerid));// se updateaza mysql_query(handle, query);// se trimite interogarea } else// daca nu are cont(nu i se gaseste randuri in baza de date) { ShowPlayerDialog(playerid, DIALOG_REFFERAL, DIALOG_STYLE_INPUT, "Refferal", "Cine te-a adus pe server?", "OK", "SKIP");// ii da din nou dialogul cu refferal } } if(!response)// al 2-lea buton { SendClientMessage(playerid,-1,"Bine, deci nimeni nu te-a adus!"); P_Data[playerid][pRegisterStep] = 4; mysql_format(handle, query, sizeof(query), "UPDATE `conturi` SET `RegisterStep`='%d' WHERE `Nume`='%e'", P_Data[playerid][pRegisterStep], GetName(playerid));// se updateaza mysql_query(handle, query);// se trimite interogarea SpawnPlayer(playerid);// ii da spawn } } Acum mergem la OnLogin şi punem următoarele verificări : Acestea vor verifică dacă ai parcurs fiecare etapă a register-ului. if(P_Data[playerid][pRegisterStep] == 0) return ShowPlayerDialog(playerid, DIALOG_VARSTA, DIALOG_STYLE_INPUT, "Varsta", "Ce varsta doresti sa aiba caracterul?", "OK", ""); if(P_Data[playerid][pRegisterStep] == 1) return ShowPlayerDialog(playerid, DIALOG_SEX, DIALOG_STYLE_MSGBOX, "Sex", "Ce sex doresti sa aiba caracterul?", "Masculin", "Feminin"); if(P_Data[playerid][pRegisterStep] == 2) return ShowPlayerDialog(playerid, DIALOG_EMAIL, DIALOG_STYLE_INPUT, "Email", "Ce email ai?", "OK", ""); if(P_Data[playerid][pRegisterStep] == 3) return ShowPlayerDialog(playerid, DIALOG_REFFERAL, DIALOG_STYLE_INPUT, "Refferal", "Cine te-a adus pe server?", "OK", "SKIP"); Mergem tot la OnLogin şi la verificare if(rows) punem: if(rows) { //deci daca are randuri P_Data[playerid][pParola] = cache_get_field_content(0, "Parola",temporar); P_Data[playerid][pID] = cache_get_field_content_int(0, "ID"); //extragem din baza de date urmatoarele: P_Data[playerid][pVarsta] = cache_get_field_content_int(0, "Varsta"); P_Data[playerid][pSex] = cache_get_field_content_int(0, "Sex"); P_Data[playerid][pEmail] = cache_get_field_content(0, "Email",temporar); P_Data[playerid][pRefferal] = cache_get_field_content(0, "Refferal",temporar); P_Data[playerid][pRegisterStep] = cache_get_field_content_int(0, "RegisterStep"); SpawnPlayer(playerid); } Acum trebuie să mergem în localhost/phpmyadmin şi să decurgem următorii paşi: Mulţumesc pentru atenţie! Dacă ţi-a fost de folos nu uită să dai +1 rep la topic.
  19. ​Sti cam cat ar ajunge? vro 8-9 luni de munca si vro 1-2 de teste inafara de alea 9
  20. Ia verifica daca si-au pastrat acelasi id la masini sau s-au schimbat. Mi se pare ca acolo trebuie sa aplici si " return 1; "
  21. Filelist.ro sau https://thepiratebay.am/torrent/11231795/Windows_7_Sp1_Ultimate_16in1_[x86_x64]_OEM_ESD_en-US_Oct_2014_by . Sper sa iti fie de folos.
  22. 1) Nu ai respectat modelul. 2) Nu ai cautat inainte de a posta 3) Adrian_Petre ti-a dat un tutorial care te va ajuta, daca il urmezi deci nu are rost sa continuam.Topic Close!
  23. Cauta la sectiunea tutoriale" cum sa faci o factiune de la 0" partea 3 si citeste cu atentie prima parte, poate te ajuta.
  24. WiDuAlK

    AdmBot

    ​Dupa cum a spus si EquiNox, nu se cer scripturi aici, nu se cer scripturi in general. Nu are rost sa continuam Topic Close!
  25. ​Sterge tot ce tine de baza, si importeaz-o din nou.
×
×
  • 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.