Jump to content

burnfire

Membru
  • Posts

    382
  • Joined

  • Last visited

    Never

Everything posted by burnfire

  1. Ii pentru timerul care salveaza datele jucatorilor...
  2. Partea a doua 1.Ne ducem la callback-ul OnDialogResponse,si introducem urmatorul cod explicat:[pawn] new iUID = BUD::GetNameUID(GetName(playerid)); //Luam id-ul BUD al playerului respectiv switch (dialogid)//Folosim instructiunea switch pentru o schimbare mai rapida { case Register: //Dialogul Register { if(!response) return Kick(playerid);//Daca nu raspunde,primeste kick if(strlen(inputtext) < 3 || strlen(inputtext) > 20 || isnull(inputtext)) return ShowRegisterDialog(playerid);//Daca parola e prea mica/prea mare ii v-a trimite un mesaj if(BUD::RegisterName(GetName(playerid),inputtext)) //Inregistreaza numele in baza de date { BUD::MultiSet( iUID, "iiiiii", "Cash",PInfo[playerid][Cash], "Score",PInfo[playerid][score], "Admin",PInfo[playerid][Admin], "VIP",PInfo[playerid][VIP], "Muted",PInfo[playerid][Muted], "Warns",PInfo[playerid][Warns] );//Introducem in tabel variabilele } SendClientMessage(playerid,0x00FF00FF,"Te-ai inregistrat cu succes!"); //Dam de stire ca s-a inregistrat PlayerPlaySound(playerid,1057,0,0,0); //Aici nu este obligatoriu,dar da un aspect sonor special ) ShowLoginDialog(playerid); //Ii aratam dialogul de login } case Login: //Dialogul de login { if(!response) return Kick(playerid); //Daca nu raspunde,primeste kick if(strlen(inputtext) < 3 || strlen(inputtext) > 20 || isnull(inputtext)) return ShowLoginDialog(playerid); //Daca parola este prea mica / prea mare,ii va arata incao data dialogul de login if( BUD::CheckAuth( GetName( playerid ), inputtext )) //Veriicam daca parola introdusa este corecta {//Daca este corecta BUD::MultiGet(iUID,"iiiiii", "Cash",_Cash, "Score",_Score, "Admin",_Admin, "VIP",_VIP, "Muted",_Muted, "Warns",_Warns );//Extragem variabilele din tabel PInfo[playerid][Cash] = _Cash;//Le asociam cu enumul nostru PInfo[playerid][score] = _Score; PInfo[playerid][Admin] = _Admin; PInfo[playerid][VIP] = _VIP; PInfo[playerid][Muted] = _Muted; PInfo[playerid][Warns] = _Warns; ResetPlayerMoney(playerid); //Resetam banii jucatorului GivePlayerMoney(playerid,_Cash); //Ii redam banii din cont SetPlayerScore(playerid,_Score); //Ii setam scorul care il avea PlayerPlaySound(playerid,1057,0,0,0);//Si aceasta linie NU este obligatorie Date = SetTimer("Data",5000,true); //Aceasta v-a fi explicat la pasul urmator SendClientMessage(playerid,0x00FF00FF,"Te-ai logat cu succes!");//Ii dam de stire ca s-a logat cu succes! } else {//Daca parola introdusa este incorecta SendClientMessage(playerid,0xFF0000FF,"Ai introdus o parola incorecta!Te rugam sa mai incerci!");//Ii dam de stireca parola introdusa este incorecta ShowLoginDialog(playerid);//Ii aratam dialogul de login } } } return 1; }[/pawn] 2.Facem un timer sa ii salveze datele cand se afla pe server! [pawn]/*Undeva sub include-uri*/ forward Data(playerid); /*Timerul il avem setat la pasul 1*/ /*Undeva in josul scriptului...*/ public Data(playerid) { PInfo[playerid][Cash] = _Cash;//Le asociam cu enumul nostru PInfo[playerid][score] = _Score; PInfo[playerid][Admin] = _Admin; PInfo[playerid][VIP] = _VIP; PInfo[playerid][Muted] = _Muted; PInfo[playerid][Warns] = _Warns; return 1; } [/pawn] Cam aceasta a fost partea a doua a tutorialului nostru!
  3. Si noi la scoala gimnaziala facem C++,nu chiar asa de avansat...chiar nu stiam ca in C++ se pune return...credeam ca e cu getch()....infine...bravo!5/5
  4. Ala ii sa afli despre BUD:,introducerea,ca sa zic asa!Teoretic! Asta ii sa il puc in Practica!Practic!)
  5. BUD Register/Login System Salutare SA:MP Romania!Astazi am sa va arat cum sa creati un Register/Login folosind BUD(Blaising User Database) creat de catre Slice care se bazeaza pe SQL. BUD il puteti gasi aici Acest tutorial v-a fi compus din mai multe parti: l.Introducerea si invatare BUD: 2.Login dialog si verificarea parolelor 3.O simpla comanda de admin Sa incepem: l: 1.Ne ducem la OnGameModeInit si punem urmatorul cod explicat: [pawn]public OnGameModeInit() { BUD::Setting(opt.Database,"Database.db"); //Acesta este numele database,care v-a fi creata in scriptfiles BUD::Setting(opt.Asynchronous,false); //Aceasta setare tine de performanta,dar,daca ai vre-o pana de curent,sunt sanse mai mari sa se piarda date daca este setata pe true BUD::Setting(opt.KeepAliveTime,1000); //Timpul dupa care se inchide data de baze de la ultima utilizare BUD::Setting(opt.CheckForUpdates,true); //Verifica daca sunt update-uri(pe site-ul lui Slice) BUD::Initialize(); //Porneste BUD pentru a face actiunile de mai jos //Acestea sunt numele unor coloane care v-or fi create in tabelul `Tabel` in baza de date care poarta numele de mai sus... BUD::VerifyColumn("Admin",BUD::TYPE_NUMBER);//Verifica daca coloana "Admin" exista,daca nu,o v-a crea BUD::VerifyColumn("VIP",BUD::TYPE_NUMBER);//La fel si aici BUD::VerifyColumn("Cash",BUD::TYPE_NUMBER);//Si aici la fel BUD::VerifyColumn("Score",BUD::TYPE_NUMBER);//Si aici BUD::VerifyColumn("Muted",BUD::TYPE_NUMBER);//Si aici BUD::VerifyColumn("Warns",BUD::TYPE_NUMBER);//Si aici return 1; }[/pawn] 2.Cream un enum pentru a transporta datele prin FS: [pawn]enum bInfo //Cream enumul { Admin,//Stocam Admin Levelul VIP,//Stocam VIP levelul Cash,//Stocam cash-ul Score,//Stocam score-ul Warns,//Stocam warnurile Muted//Stocam daca a primit mute } new PInfo[MAX_PLAYERS][bInfo];[/pawn] 3.Creeam tot atatea varibile pentru a le folosi in citirea informatiilor si,atribuirea cu variabilele din enumul de mai sus: [pawn]new _Admin,_VIP,_Cash,_Score,_Warns,_Muted; //Cream variabilele necesare citirii datelor din DB.[/pawn] 5.Ne ducem la OnPlayerRequestClass si scriem urmatorul cod explicat: [pawn]if(!BUD::IsNameRegistred(GetName(playerid)) { ShowRegisterDialog(playerid); } else { ShowLoginDialog(playerid); }[/pawn] 6.Introducem undeva la sfarsitul FS-ului urmatoarele Stock-uri: [pawn] #define REGISTER 0 #define LOGIN 1 stock GetName(playerid) { new pName[MAX_PLAYER_NAME];//Variabila sa scoatem numele GetPlayerName(playerid,pName,sizeof(pName));//Extragem numele return pName;//returnam numele jucatorului,care a fost extras } stock ShowRegisterDialog(playerid) { ShowPlayerDialog(playerid,REGISTER,DIALOG_STYLE_PASSWORD,"Register","Bine ai venit!\nTe rugam sa te inregistrezi","Ok","Kick"); return 1; } stock ShowLoginDialog(playerid) { ShowPlayerDialog(playerid,LOGIN,DIALOG_STYLE_PASSWORD,"Login","Bine ai revenit!\nTe rugam sa te loghezi","Ok","Kick"); return 1; } [/pawn] 7.Ne intoarcem privirile la callback-ul OnDialogResponse: [pawn]public OnDialogResponse(playerid,dialogid,response,inputtext[ ],listitem) { new uid = BUD::GetNameUID(GetName(playerid)); switch(dialogid) { case REGISTER: { if(!response) return Kick(playerid); //Daca apasa pe Kick,ii v-a da Kick if(strlen(inputtext) < 3 || strlen(inputtext) > 20) return ShowRegisterDialog(playerid); //Daca parola este mai mica de 3 caractere sau mai mare de 20 de caractere,ii v-a arata din nou dialogul de register! if(BUD::RegisterName(GetName(playerid),inputtext)) //Inregistreaza numele in baza de date { BUD::MultiSet( iUID, "iiiiii", //Ca la sscanf,arata din ce este format MultiSet-ul "Cash",PInfo[playerid][Cash], "Score",PInfo[playerid][score], "Admin",PInfo[playerid][Admin], "VIP",PInfo[playerid][VIP], "Muted",PInfo[playerid][Muted], "Warns",PInfo[playerid][Warns] ); SendClientMessage(playerid,-1,"Te-ai inregistrat cu succes!Acum te vei loga!"); ShowLoginDialog(playerid); } } } return 1; }[/pawn] ll:To Be Continued
  6. Si scuze ca te intreb,dar acest streamer este facut dupa Acest link?Intrebam doar :rolleyes:
  7. Poi am pus un cod pentru a invata oamenii cum se foloseste instructiunea "for" intr-un mod amuzant )
  8. Updateaza include-ul Rotative sau ia-l de pe net... P.S:Link Rotative:Click
  9. Salutare sa-mp Roamnia!Astazi am sa va prezint o metoda de a flooda serverul si/sau ai da crash! Cum de am pus acest cod:Astazi la info profu ne-a dat un cod in C++ sa il scriem pe calculator,si Dr*acu m-o pus sa scriu un nr. de genu ) "6666666666" si,in 20 min o ajuns abia la 330000000 ) P.S:Acest cod merge si in pawno ) Codul este: [pawn] #include <a_samp> #include <sscanf2> //Codul il punem la OnPlayerText public OnPlayerText(playerid,text[]) { new intro,result[128]; if(sscanf(params,"i",intro)) return 0; for(new i=0,i<=intro) { format(result,128,"Incercare de dat crash serverului numar %d",i); SendClientMessageToAll(-1,result); } return 1; }[/pawn] NOTA IMPORTANTA:Ca sa aveti sanse cat mai mari de dat crash,puneti un numar cat mai mare! NOTA IMPORTANTA 2:Nu am testat acest cod,dar daca calculatorul care hosteaza serverul este var*za,atunci codul v-a reusi si serverul v-a primi crash!
  10. De ce sa iau ban?)In fine,va mai astept cu parerile )
  11. Ia versiunea cea mai noua si foloseste pawno care contine inc ala :P
  12. F tare! 5/5 Poate face Rimmon un tutorial cum se creeaza un astfel de font...
  13. Da nu ai acces la tot forumul?
  14. Sau nivel de experienta:Incepator,avansat,etc... Si de ex,forumul sa vada daca utilizatorul chiar are acel grad,daca nu,sa ii puna la nick:"Mincinos %s",unde %s este nick-ul )
  15. Nu cred ca am sa inteleg vreodata cum se fac casutele astea cu imagini si text... Dar bravo,imi plac chestiile astea cu imagini si scris pe ele,nu stiu cum le zice 5/5 ;)
  16. Atunci ce map editore mai stiti (in afara de Map Editor si MTA),ma refer sa nu fie in-game,ca alea in in-game sunt greu de "manevrat" )
  17. Pana acum,toate programele la care scria ca is pentru Windows XP,au mers si pentru Windows 8...
  18. Salutare SA:MP Romania!Am si eu o problema cu Map Editor! Deci,dupa cum probabil stiti,mi-am pus Windows 8...si nu mai merge Map Editor...pe XP mergea... Cu driverele is la zi,pe net driverele erau mai vechi decat ce aveam eu in PC! Si totusi,imi da eroare cum ca nu am driverele la zis :| Ce ar trebui sa fac? :-)
  19. pui la OnPlayerRequestClass codul ala! P.S:Am facut greseala pentru ca m-am gandit la un GM de roleplay ;)
  20. OK...m-a atentionat Anakin ca dialogurile trebuia sa le fac cu strcat,si asa am facut... Intradevar,si in cazul meu este primul server...deci...
  21. Presupun ca este vorba despre OnPlayerRequestSpawn... Vezi ca este o functie:AddPlayerClass...o stergi!!!Acum te duci unde vrei sa pui camera,scrii /save,te duci in My Documents -> GTA Files -> SA:MP ->savedpositions.txt si o iei pe ultima ;)Sper ca ai inteles
  22. Nu,daca ar fi fost al lui,ar fi aratat mai fain!:)
  23. Destul de fainut serverul pentru prima versiune,dar la dialoguri .... iti recomand sa folosesti strcat pentru a face dialogurile mai frumoase(asta am invatato de la voi,astia buni) Primul dialog cu comenzile este urat(scuze),dar trebuie sa folosesti strcat. Daca vrei,poti sa ma contactezi sa iti arat ^^ )
  24. Sa stiti ca este cam buguit... Daca stai afk(inchizi fereastra) si o redeschizi dupa cateva minute,TD-urile se v-or intercala(ca sa recupereze timpul de afk....Da nah,asa ii cu TD-urile astea )
×
×
  • 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.