eXorcism Posted January 2, 2013 Posted January 2, 2013 Salut astazi am decis sa fac un tutorial pentru creerea unui sistem de inregistrare/logare pe Y_INI al 2 lea cel mai bun sistem de salvare existent!Sa incepemPasul 1:adaugam in capul gamemodului #include < a_samp > #include <YSI/y_ini> Pasul 2: Definim urmatoarele #define Register 1// id dialog Register (se poate incurca daca aveti alt dialog definit cu 1) #define Login 2// id dialog Register (se poate incurca daca aveti alt dialog definit cu 1) #define Sfolder "/Utilizatori/%s.ini" //Folderul unde se va salva Pasul 3: Facem un nou "enum" enum pINF { pPass, pCash, pAdmin, pKills, pDeaths } new PlayerInfo[MAX_PLAYERS][pINF]; Pasul 4: Punem acest cod la OnPlayerConnect if(fexist(UserPath(playerid)))//Variabila ce verifica daca exista contul { INI_ParseFile(UserPath(playerid), "LoadUser_%s", .bExtra = true, .extra = playerid); ShowPlayerDialog(playerid, DIALOG_LOGIN, DIALOG_STYLE_INPUT,"Login","Scrie parola mai jos pentru a te loga.","Login","Quit"); } else//Functia care spune ca daca contul nu exista acesta se va creea { ShowPlayerDialog(playerid, DIALOG_REGISTER, DIALOG_STYLE_INPUT,"Registering...","Scrie parola mai jos pentru a creea un cont nou !!","Register","Quit"); } Pasul 5: Adaugati la OnPlayerDialogResponse urmatoarele: public OnDialogResponse(playerid, dialogid, response, listitem, inputtext[]) { switch( dialogid )// functia care face switch intre dialoguri { case Register://dialogul de inregistrare { if (!response) //aceasta functie este in caz ca playerul nu raspunde , daca nu raspunde ii va da automat kick! return Kick(playerid); if(response)//Aceasta functie daca raspunde ii va crea contul { if(!strlen(inputtext)) return ShowPlayerDialog(playerid, Register, DIALOG_STYLE_INPUT, "Inregistrare","Tu nu ai introdus nici o parola in casuta.\nScrie parola mai jos pentru a crea un cont nou!.","Register","Quit");//Functia care ii spune ca daca nu introduce o parola nu ii creaza contul new INI:File = INI_Open(UserPath(playerid));//Functia care deschide scrierea fisierelor INI_SetTag(File,"data");//functia care ii pune tagul la inceputul contului INI_WriteInt(File,"Password",udb_hash(inputtext));//functia care salveaza statistica INI_WriteInt(File,"Cash",0);//functia care salveaza statistica INI_WriteInt(File,"Adminl",0);//functia care salveaza statistica INI_WriteInt(File,"Kills",0);//functia care salveaza statistica INI_WriteInt(File,"Deaths",0);//functia care salveaza statistica INI_Close(File);//Functia ce inchide salvarea SpawnPlayer(playerid);//Functia ce spawneaza playeru } } case DIALOG_LOGIN: { if ( !response ) return Kick ( playerid );//aceasta functie este in caz ca playerul nu raspunde , daca nu raspunde ii va da automat kick! if( response )Aceasta functie il va lasa pe jucator sa intre pe server si ii va da statisticile inapoi! { if(udb_hash(inputtext) == PlayerInfo[playerid][parola])//Aici citeste Hashul de la parola { INI_ParseFile(UserPath(playerid), "LoadUser_%s", .bExtra = true, .extra = playerid);// Aici loadeaza GivePlayerMoney(playerid, PlayerInfo[playerid][money]);//iar aici ii da bani playerului } else// aceasta functie ii spune ca nu a introdus bine parola sa o mai introduca odata! { ShowPlayerDialog(playerid, DIALOG_LOGIN, DIALOG_STYLE_INPUT,"Login","Tu ai introdus o parola gresita!.\nScrie parola in casuta de mai jos!!.","Login","Quit"); } return 1; } } } return 1; } Pasul 6: Punem La OnPlayerDisconnect urmatorul cod public OnPlayerDisconnect(playerid, reason) { new INI:File = INI_Open(UserPath(playerid));//Functia care deschide salvarea INI_SetTag(File,"data");Functia care scrie tagul INI_WriteInt(File,"Cash",GetPlayerMoney(playerid));Functia ce salveaza statsticile INI_WriteInt(File,"Admin",PlayerInfo[playerid][pAdmin]);Functia ce salveaza statsticile INI_WriteInt(File,"Kills",PlayerInfo[playerid][pKills]);Functia ce salveaza statsticile INI_WriteInt(File,"Deaths",PlayerInfo[playerid][pDeaths]);Functia ce salveaza statsticile INI_Close(File);Functia ce inchide salvarea return 1; } Pasul 7: Acum adaugam la OnPlayerDeath public OnPlayerDeath(playerid, killerid, reason) { PlayerInfo[killerid][pKills]++;//functia ce ii pune kilurile pe + PlayerInfo[playerid][pDeaths]++;//functia ce ii pune mortille pe + return 1; } Pasul 8: Pune urmatoarea functie forward LoadUser_data(playerid,name[],value[]);//Forwardul functie public LoadUser_data(playerid,name[],value[])//Functia { INI_Int("Password",PlayerInfo[playerid][pPass]);//Functia ce loadeaza parola INI_Int("Cash",PlayerInfo[playerid][pCash]);//Functia ce loadeaza banii INI_Int("Admin",PlayerInfo[playerid][pAdmin]);//functia ce loadeaza adminul INI_Int("Kills",PlayerInfo[playerid][pKills]);//functia ce salveaza killurile INI_Int("Deaths",PlayerInfo[playerid][pDeaths]);//Functia ce salveaza deathurile return 1; } Pasul 9: Punem Functia de hash Important: creditele ii revin lui DracoBlue stock udb_hash(buf[]) { new length=strlen(buf); new s1 = 1; new s2 = 0; new n; for (n=0; n<length; n++) { s1 = (s1 + buf[n]) % 65521; s2 = (s2 + s1) % 65521; } return (s2 << 16) + s1; } Pasul 10: Punem undeva in gamemode functia pentru partita salvari. stock UserPath(playerid) { new string[128],playername[MAX_PLAYER_NAME]; GetPlayerName(playerid,playername,sizeof(playername)); format(string,sizeof(string),Sfolder,playername); return string; } Cu toate acestea spuse acesta a fost tutorialul de creere a unui sistem de salvare pe Y_INI. I'm back bitches.
PawnFox Posted January 3, 2013 Posted January 3, 2013 #define PATH "/Accounts/%s.ini" Pentru a salva fiecare cont :) 94.23.120.101:7778
[Funky]Anakin Posted January 3, 2013 Posted January 3, 2013 Bun dar pe SQLite e mai folositor Chiar MYSql ar fii extraordinar daca ai face xD .Bun si asta 4.5 / 5.0 o.O
DarkyTheAngel Posted January 3, 2013 Posted January 3, 2013 4/5P.S: Daca te intrebi de ce 4/5 si nu 5/5, este din cauza gramaticii.
eXorcism Posted January 3, 2013 Author Posted January 3, 2013 Anakin" post="127918" timestamp="1357203189"]Bun dar pe SQLite e mai folositor Chiar MYSql ar fii extraordinar daca ai face xD .Bun si asta 4.5 / 5.0 o.OFunky sa sti si tu , mai bun decat Y_INI e doar mysqlPawnFox link=topic=23284.msg127913#msg127913 date=1357200664] #define PATH "/Accounts/%s.ini" Pentru a salva fiecare cont Tu nu ai vazut #define Sfolder "/Utilizatori/%s.ini" //Folderul unde se va salva ?sau face plopu pere ?In rest sunt multumit de note ! I'm back bitches.
Diabolik Posted January 3, 2013 Posted January 3, 2013 Foarte bun tutorial , bravo 10/10. LISTA - GAMEMODE-URI SA-MP - Le gasiti pe toate aici: http://twiriock.com/3MGP
[Funky]Anakin Posted January 3, 2013 Posted January 3, 2013 Funky sa sti si tu , mai bun decat Y_INI e doar mysqlTu nu ai vazut #define Sfolder "/Utilizatori/%s.ini" //Folderul unde se va salva ?sau face plopu pere ?In rest sunt multumit de note !Prove it ! Decat sa am un sistem de register / login pe Y_INI Intr-un fisier cu mai multe chestii mai bine folosesc dini decat Y_INI ! Dar folosesc SQLite fiindca arata mai bine si este mai frumos xD
eXorcism Posted January 4, 2013 Author Posted January 4, 2013 Anakin" post="127918" timestamp="1357203189"]Bun dar pe SQLite e mai folositor Chiar MYSql ar fii extraordinar daca ai face xD .Bun si asta 4.5 / 5.0 o.OAcum ca ma gandesc se poate sa incerc sa fac un sistem de salvare mysql dar r6 deoarece r7 nu stiu ),Daca imi iese voi face un tutorial ;) I'm back bitches.
Andrusk Posted February 13, 2013 Posted February 13, 2013 imi da eroarea asta :E:\Intelexe's1.4\samp03csvr_win32\filterscripts\register_login.pwn(58) : error 008: must be a constant expression; assumed zero la linia asta: case DIALOG_LOGIN:va rog ajutatima
Guest Rock Posted February 13, 2013 Posted February 13, 2013 Anakin" post="127966" timestamp="1357230973"]Decat sa am un sistem de register / login pe Y_INI Intr-un fisier cu mai multe chestii mai bine folosesc dini decat Y_INI ! Dar folosesc SQLite fiindca arata mai bine si este mai frumos xDNu vorbii daca nu cunosti.Daca nu stii sa il folosesti asta nu inseamna ca nu e bun, Y_INI e cel mai bun pentru scrierea si citirea fisierelor.Si calitatea nu se rezuma in aspect, ai facut vreodata un test de viteza intre ele?Nu, habar nai ce vorbesti si decat sa faci asa mai bine taci.
Andrusk Posted February 13, 2013 Posted February 13, 2013 nu am zis ca nu e bun , am intrebat cum rezolv eroarea aia ??
Guest Rock Posted February 13, 2013 Posted February 13, 2013 nu am zis ca nu e bun , am intrebat cum rezolv eroarea aia ??Ti sa parut ca am vorbit cu tine?Ai gresit cum le-ai asezat pe acolo ca linia aia nu are nici o problema.Gata cu off-topic ca incep sa dau warn.
Grig22 Posted November 1, 2013 Posted November 1, 2013 Misto like :cool: 10/10 "Maxim respect pentru orice proiectNimeni nu poate sa va scape cand va execut direct"
sKenzi Posted November 9, 2013 Posted November 9, 2013 Poate posta cineva include-ul ' Y_ini ' va rog ? Nu-l gasesc pe nicaieri..Singura eroare care mi-o da este ca nu poate gasi Y_ini.fatal error 100: cannot read from file: "YSI\y_ini"
kazoo22 Posted November 10, 2013 Posted November 10, 2013 Poate posta cineva include-ul ' Y_ini ' va rog ? Nu-l gasesc pe nicaieri..Singura eroare care mi-o da este ca nu poate gasi Y_ini.fatal error 100: cannot read from file: "YSI\y_ini"Click here!
sKenzi Posted November 10, 2013 Posted November 10, 2013 acum imi da o alta eroare. Scuzati ca postez aici, dar uitati-va si voi putin aici http://www.sa-mp.ro/forum/index.php?topic=29481.msg153692#newMultumesc.
AndreyS Posted November 30, 2013 Posted November 30, 2013 La mine nu imi gaseste OnPlayerDialogResponse,de ce nu il am?
POL_george Posted June 14, 2014 Posted June 14, 2014 C:\Users\laceanu cel voinic\Desktop\0 de la nenea George\gamemodes\gamemode.pwn(72) : error 017: undefined symbol "DIALOG_LOGIN"C:\Users\laceanu cel voinic\Desktop\0 de la nenea George\gamemodes\gamemode.pwn(76) : error 017: undefined symbol "DIALOG_REGISTER"C:\Users\laceanu cel voinic\Desktop\0 de la nenea George\gamemodes\gamemode.pwn(278) : error 017: undefined symbol "DIALOG_LOGIN"C:\Users\laceanu cel voinic\Desktop\0 de la nenea George\gamemodes\gamemode.pwn(283) : error 017: undefined symbol "parola"C:\Users\laceanu cel voinic\Desktop\0 de la nenea George\gamemodes\gamemode.pwn(286) : error 017: undefined symbol "money"C:\Users\laceanu cel voinic\Desktop\0 de la nenea George\gamemodes\gamemode.pwn(290) : error 017: undefined symbol "DIALOG_LOGIN"Pawn compiler 3.2.3664 Copyright © 1997-2006, ITB CompuPhase6 Errors.Linia 72: ShowPlayerDialog(playerid, DIALOG_LOGIN, DIALOG_STYLE_INPUT,"Login","Scrie parola mai jos pentru a te loga.","Login","Quit");Linia 76: ShowPlayerDialog(playerid, DIALOG_REGISTER, DIALOG_STYLE_INPUT,"Registering...","Scrie parola mai jos pentru a creea un cont nou !!","Register","Quit");Linia 278: case DIALOG_LOGIN:Linia 283: if(udb_hash(inputtext) == PlayerInfo[playerid][parola])//Aici citeste Hashul de la parolaLinia 286: GivePlayerMoney(playerid, PlayerInfo[playerid][money]);//iar aici ii da bani playeruluiLinia 290: ShowPlayerDialog(playerid, DIALOG_LOGIN, DIALOG_STYLE_INPUT,"Login","Tu ai introdus o parola gresita!.\nScrie parola in casuta de mai jos!!.","Login","Quit");
mR.KerigaN Posted June 19, 2014 Posted June 19, 2014 Imi da eroare C:\Users\C.I.P\Desktop\New folder\gamemodes\grandlarc.pwn(14) : fatal error 100: cannot read from file: "YSI/y_ini" linia #include <YSI/y_ini>
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