WiDuAlK Posted May 29, 2015 Posted May 29, 2015 (edited) 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. Edited January 4, 2019 by WiDuAlK Rezolvare erori. 12 @WiDuAlK Tutorial`s: PAWN pentru SA:MP in Notepad++Tutorial Register-Login MYSQL R39 Tutorial etape de register Cum sa creezi un PayDay (2 METODE)Cum sa creezi o factiune de la 0 PART 1 Cum sa creezi o factiune de la 0 PART 2 Cum sa creezi o factiune de la 0 partea a 3-a (ULTIMA)Functii folositoare din NEW.PWN Tutorial Engine Vehicle Optimizare simplitate si stil Foreach inlocuieste loop-ul SSCANF si ZCMD Cum sa creezi o poarta miscatoare Tutorial cum sa creezi un radio pe server si cum sa iti creezi melodi pentru ascultat pe server Cum sa tii un server din PC folosind HAMACHI Documentatie* Despre hack-uri Servicii: Servicii Scripting & Mapping Produse: Farmer Job Realistic Drugs Dealer System [SA-MP] UNIQUE
WiDuAlK Posted May 30, 2015 Author Posted May 30, 2015 +1Chiar imi place cum explici ;)Pai nu o lua ca o explicatie, ci ca un mod de gandire. Merci ce + +1Totusi...Mai bine raman pe SQLite Why, mysql este mult mai bun ca SQLite 2 @WiDuAlK Tutorial`s: PAWN pentru SA:MP in Notepad++Tutorial Register-Login MYSQL R39 Tutorial etape de register Cum sa creezi un PayDay (2 METODE)Cum sa creezi o factiune de la 0 PART 1 Cum sa creezi o factiune de la 0 PART 2 Cum sa creezi o factiune de la 0 partea a 3-a (ULTIMA)Functii folositoare din NEW.PWN Tutorial Engine Vehicle Optimizare simplitate si stil Foreach inlocuieste loop-ul SSCANF si ZCMD Cum sa creezi o poarta miscatoare Tutorial cum sa creezi un radio pe server si cum sa iti creezi melodi pentru ascultat pe server Cum sa tii un server din PC folosind HAMACHI Documentatie* Despre hack-uri Servicii: Servicii Scripting & Mapping Produse: Farmer Job Realistic Drugs Dealer System [SA-MP] UNIQUE
kwnx Posted May 30, 2015 Posted May 30, 2015 (edited) Why, mysql este mult mai bun ca SQLite.MySQL e mai greu de utilizat, poate nu vrea baiatu sa se complice Edited May 30, 2015 by KnowN
WiDuAlK Posted May 30, 2015 Author Posted May 30, 2015 MySQL e mai greu de utilizat, poate nu vrea baiatu sa se complice 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 2 @WiDuAlK Tutorial`s: PAWN pentru SA:MP in Notepad++Tutorial Register-Login MYSQL R39 Tutorial etape de register Cum sa creezi un PayDay (2 METODE)Cum sa creezi o factiune de la 0 PART 1 Cum sa creezi o factiune de la 0 PART 2 Cum sa creezi o factiune de la 0 partea a 3-a (ULTIMA)Functii folositoare din NEW.PWN Tutorial Engine Vehicle Optimizare simplitate si stil Foreach inlocuieste loop-ul SSCANF si ZCMD Cum sa creezi o poarta miscatoare Tutorial cum sa creezi un radio pe server si cum sa iti creezi melodi pentru ascultat pe server Cum sa tii un server din PC folosind HAMACHI Documentatie* Despre hack-uri Servicii: Servicii Scripting & Mapping Produse: Farmer Job Realistic Drugs Dealer System [SA-MP] UNIQUE
Ping_gooty Posted May 31, 2015 Posted May 31, 2015 Intradevar,mysql e foarte bun.Poti accesa baza de date de exemplu dintr-o aplicatie Android sau IOS.Sqlite-ul are si el partile lui bune De exemplu ,aplicatiile Android folosesc SQLite in majoritatea cazurilor cand vine vorba de jocuri sau aplicatii gen WhatsApp (unde poti vedea mesajele trimise fara conexiune la internet ) deoarece este mult mai sigur decat MySql care este accesat extern,necesitand o conexiune de internet....In legatura cu serverele de SA:MP,este mult mai accesibil.Baza de date este in format .db(o poti face in ScriptFiles) si o poti accesa folosind SQLiteBrowser modificand orice cu usurinta deci nu aveti nevoie neaparat de conexiune la internet.Back-up-ul e mult mai simplu ca la MySql:copiezi fisierul ( .db ) si gata + Nu necesita parola pentru accesarea ei.
Sammich Posted July 4, 2015 Posted July 4, 2015 Poate sa imi dea si mie cineva toata faza cu OnLogin?Ca mie imi da eroare!Va rog,astept raspuns!
WiDuAlK Posted July 11, 2015 Author Posted July 11, 2015 Poate sa imi dea si mie cineva toata faza cu OnLogin?Ca mie imi da eroare!Va rog,astept raspuns! il gasesti la tutorialul register login r39 @WiDuAlK Tutorial`s: PAWN pentru SA:MP in Notepad++Tutorial Register-Login MYSQL R39 Tutorial etape de register Cum sa creezi un PayDay (2 METODE)Cum sa creezi o factiune de la 0 PART 1 Cum sa creezi o factiune de la 0 PART 2 Cum sa creezi o factiune de la 0 partea a 3-a (ULTIMA)Functii folositoare din NEW.PWN Tutorial Engine Vehicle Optimizare simplitate si stil Foreach inlocuieste loop-ul SSCANF si ZCMD Cum sa creezi o poarta miscatoare Tutorial cum sa creezi un radio pe server si cum sa iti creezi melodi pentru ascultat pe server Cum sa tii un server din PC folosind HAMACHI Documentatie* Despre hack-uri Servicii: Servicii Scripting & Mapping Produse: Farmer Job Realistic Drugs Dealer System [SA-MP] UNIQUE
Vendetta5.11 Posted October 18, 2015 Posted October 18, 2015 (edited) Putin ajutor? Am 4 erori si nu inteleg de ce. Daca incerc sa le repar apar altelele si tot asa. Ma poate ajuta cineva?Acesta este GM-ul: http://pastebin.com/CxgJ0g4b Edited October 19, 2015 by Vendetta5.11
david1995 Posted November 1, 2015 Posted November 1, 2015 (edited) C:\Users\Zydrax\Desktop\new\pawno\darois.pwn(371) : error 017: undefined symbol "rows" C:\Users\Zydrax\Desktop\new\pawno\darois.pwn(373) : error 017: undefined symbol "rows" C:\Users\Zydrax\Desktop\new\pawno\darois.pwn(482) : error 017: undefined symbol "rows" C:\Users\Zydrax\Desktop\new\pawno\darois.pwn(485) : error 017: undefined symbol "temporar" C:\Users\Zydrax\Desktop\new\pawno\darois.pwn(490) : error 017: undefined symbol "temporar" C:\Users\Zydrax\Desktop\new\pawno\darois.pwn(491) : error 017: undefined symbol "temporar" Acestea imi da la compliare... Edited November 1, 2015 by david1995
WiDuAlK Posted November 20, 2015 Author Posted November 20, 2015 Pentru erorile aparute, va trebui voi sa le rezolvati. Nu doresc sa dau edit, doar niste indicatii: -Erorile apar din cauza neatentiei mele, am definit de mai multe ori cateva variabile fara sa imi dau seama -Am gresit la array P_Data si am scris P_DATA(cum am la mn in GM). @WiDuAlK Tutorial`s: PAWN pentru SA:MP in Notepad++Tutorial Register-Login MYSQL R39 Tutorial etape de register Cum sa creezi un PayDay (2 METODE)Cum sa creezi o factiune de la 0 PART 1 Cum sa creezi o factiune de la 0 PART 2 Cum sa creezi o factiune de la 0 partea a 3-a (ULTIMA)Functii folositoare din NEW.PWN Tutorial Engine Vehicle Optimizare simplitate si stil Foreach inlocuieste loop-ul SSCANF si ZCMD Cum sa creezi o poarta miscatoare Tutorial cum sa creezi un radio pe server si cum sa iti creezi melodi pentru ascultat pe server Cum sa tii un server din PC folosind HAMACHI Documentatie* Despre hack-uri Servicii: Servicii Scripting & Mapping Produse: Farmer Job Realistic Drugs Dealer System [SA-MP] UNIQUE
WiDuAlK Posted January 20, 2016 Author Posted January 20, 2016 Pentru ca am vazut ca v-ati plans uni dintre voi ca primiti erori... era foarte simplu de rezolvat, dar daca nu ai cu cine.... am rezolvat si modificat. Bucurati-va de tutorial. @WiDuAlK Tutorial`s: PAWN pentru SA:MP in Notepad++Tutorial Register-Login MYSQL R39 Tutorial etape de register Cum sa creezi un PayDay (2 METODE)Cum sa creezi o factiune de la 0 PART 1 Cum sa creezi o factiune de la 0 PART 2 Cum sa creezi o factiune de la 0 partea a 3-a (ULTIMA)Functii folositoare din NEW.PWN Tutorial Engine Vehicle Optimizare simplitate si stil Foreach inlocuieste loop-ul SSCANF si ZCMD Cum sa creezi o poarta miscatoare Tutorial cum sa creezi un radio pe server si cum sa iti creezi melodi pentru ascultat pe server Cum sa tii un server din PC folosind HAMACHI Documentatie* Despre hack-uri Servicii: Servicii Scripting & Mapping Produse: Farmer Job Realistic Drugs Dealer System [SA-MP] UNIQUE
WiDuAlK Posted February 4, 2016 Author Posted February 4, 2016 Acum 53 minute, david1995 a spus: Ultima imagine nu ai pus-o man. am modificat, posibil de la site @WiDuAlK Tutorial`s: PAWN pentru SA:MP in Notepad++Tutorial Register-Login MYSQL R39 Tutorial etape de register Cum sa creezi un PayDay (2 METODE)Cum sa creezi o factiune de la 0 PART 1 Cum sa creezi o factiune de la 0 PART 2 Cum sa creezi o factiune de la 0 partea a 3-a (ULTIMA)Functii folositoare din NEW.PWN Tutorial Engine Vehicle Optimizare simplitate si stil Foreach inlocuieste loop-ul SSCANF si ZCMD Cum sa creezi o poarta miscatoare Tutorial cum sa creezi un radio pe server si cum sa iti creezi melodi pentru ascultat pe server Cum sa tii un server din PC folosind HAMACHI Documentatie* Despre hack-uri Servicii: Servicii Scripting & Mapping Produse: Farmer Job Realistic Drugs Dealer System [SA-MP] UNIQUE
Shadowz Posted March 19, 2016 Posted March 19, 2016 @WiDuAIK In aceasta poza la Email si Refferal ar trebuii in loc de INT sa fie TEXT ca sa le salveze in baza de date nu? Pentru cei care nu stiu: INT = integer = cifre TEXT = litere
WiDuAlK Posted March 21, 2016 Author Posted March 21, 2016 La 19.03.2016la0:50, Shadowz a spus: @WiDuAIK In aceasta poza la Email si Refferal ar trebuii in loc de INT sa fie TEXT ca sa le salveze in baza de date nu? Pentru cei care nu stiu: INT = integer = cifre TEXT = litere M-am grabit, pune VARCHAR la email si refferal 1 @WiDuAlK Tutorial`s: PAWN pentru SA:MP in Notepad++Tutorial Register-Login MYSQL R39 Tutorial etape de register Cum sa creezi un PayDay (2 METODE)Cum sa creezi o factiune de la 0 PART 1 Cum sa creezi o factiune de la 0 PART 2 Cum sa creezi o factiune de la 0 partea a 3-a (ULTIMA)Functii folositoare din NEW.PWN Tutorial Engine Vehicle Optimizare simplitate si stil Foreach inlocuieste loop-ul SSCANF si ZCMD Cum sa creezi o poarta miscatoare Tutorial cum sa creezi un radio pe server si cum sa iti creezi melodi pentru ascultat pe server Cum sa tii un server din PC folosind HAMACHI Documentatie* Despre hack-uri Servicii: Servicii Scripting & Mapping Produse: Farmer Job Realistic Drugs Dealer System [SA-MP] UNIQUE
Recommended Posts
Create an account or sign in to comment
You need to be a member in order to leave a comment
Create an account
Sign up for a new account in our community. It's easy!
Register a new accountSign in
Already have an account? Sign in here.
Sign In Now