Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <a_samp>
- #include <sscanf2>
- #include <zcmd>
- #include <a_mysql>
- #define GameMode "PEDA 0.0.1"
- #define Spawn_X -2422.3657
- #define Spawn_Y 336.0663
- #define Spawn_Z 36.1682
- #define mysql_host "localhost" // aici punem ip hostului. Daca folosim in PC GM lasam localhost
- #define mysql_db "peda"// aici punem numele bazei de date.
- #define mysql_user "root"// aici punem numele userului de la host. Daca folositi PC lasati root.
- #define mysql_pass ""//Aici puneti parola de la host(de la phpmyadmin al hostului). In caz de folositi PC lasati asa.
- new handle; // handle(mâner) este cea de care ne vom folosi sa facem lagatura intre baza de date si server
- main()
- {
- print("\n----------------------------------");
- print(" Developing by EmilianIS");
- print("----------------------------------\n");
- }
- // MySql
- enum
- {
- DIALOG_LOGIN, // dialogul de login
- DIALOG_REGISTER,// dialogul de register
- DIALOG_VARSTA,
- DIALOG_SEX,
- DIALOG_EMAIL,
- DIALOG_REFFERAL
- };
- enum pInfo //numele enumului este pInfo. in el vom pune datele playerului gen Admin/Level/ Money/Experianta si altele.
- {
- pParola,//cu pParola vom lua parola din baza de date a playerului
- pID,// cu pID vom lua ID-ul din baza de date a playerului
- pVarsta,
- pSex,
- pEmail,
- pRefferal,
- pRegisterStep// aceasta ne ajuta la verificare.
- };
- new P_Data[MAX_PLAYERS][pInfo];// Aceasta variabila este array. cu ea vom verifica 2 lucruri. id playerului si datele lui gen P_Data[playerid][pID] == 1;
- forward MySQLConnect();// se creaza un nou callback cu forward
- public MySQLConnect()// se face callback-ul
- {
- handle = mysql_connect(mysql_host, mysql_user, mysql_db, mysql_pass);// definim handle(manerul) ca fiind conectarea mysql la host, baza de date, parola si user-ul
- if(mysql_errno() != 0)// in caz ca aceasta va fi diferita de 0(0 inseamna ca e conectat, 1 inseamna ca nu e conectat , fiind un vector)
- {
- printf("Conexiunea la baza de date %s a esuat ---> Server Inchis ~~~", mysql_db);// va trimite un mesaj in consola
- SendRconCommand("exit");// se inchide serverul
- }
- else// altfel daca este 0(daca se face legatura)
- {
- printf("Conexiunea la baza de date '%s' cu user-ul '%s' a reusit!!!", mysql_db, mysql_user);// ne va da acest mesaj in consola
- }
- return 1;
- }
- forward OnPlayerLogin(playerid);// se creaza callbac-ul
- public OnPlayerLogin(playerid)//Se creaza publicul
- {
- new rows, fields;// definim rows(randurile)si fields(domeniile)
- cache_get_data(rows, fields);//cache_get_data interogheaza date din baza de date. acele date sunt rows si fields
- if(rows)// atunci cand playerul se inregistreaza i se va crea niste randuri. Daca i se gasesc atunci cand se va conecta ii va da:
- {
- ShowPlayerDialog(playerid, DIALOG_LOGIN, DIALOG_STYLE_PASSWORD, "Logheaza-te!", "Te rog sa-ti introduci parola contuului mai jos!", "Logare", "Exit");// dialogul register
- }
- else// daca nu i se gasesc randuri, adica daca contul nu exista, atunci i se va da urmatorul dialog
- {
- ShowPlayerDialog(playerid, DIALOG_REGISTER, DIALOG_STYLE_INPUT, "Inregistrare", "Trebuie sa iti creezi un cont ca sa joci pe server. nTasteaza mai jos o parola, pentru a te inregistra!", "Inregistreaza", "Exit");// dialogul register
- }
- return 1;
- }
- public OnPlayerConnect(playerid)
- {
- new query[100];// definim query(interogare)
- mysql_format(handle, query, sizeof(query), "SELECT * FROM conturi WHERE Nume = '%s'", GetName(playerid));// mysql format face interogarile/setarile/obtiunile/updateurile la baza de date
- //handle reprezinta conectarea la mysql, query si sizeof(queri) reprezinta interogarea
- //"SELECT * FROM conturi WHERE Nume = '%s'"- Selecteaza de la tabelul cu conturi, unde numele este %s(de exemplu eu am numele Widualk pe sa-mp. Mi se va extrage numele si
- mysql_tquery(handle, query, "OnPlayerLogin", "i", playerid);// se va interoga OnPlayerLogin. Adica mai pe scurt , cand se conecteaza se va verifica daca are cont sau nu acel player.
- return 1;
- }
- public OnDialogResponse(playerid, dialogid, response, listitem, inputtext[])
- {
- new query[128], ip[25];// se creaza interogarea si ip.
- switch(dialogid)// se va folosi switch pentru a selecta dialogul
- {
- case DIALOG_REGISTER:// daca se va selecta dialogul register
- {
- if(!response)
- return Kick(playerid);// daca se va apasa pe butonul Exit ii va da kick
- if(response)// daca se apasa pe Butonul inregistrare se vor face urmatoarele verificari
- {
- if(!strlen(inputtext))// daca nu e scris nimic la parola
- return ShowPlayerDialog(playerid, DIALOG_REGISTER, DIALOG_STYLE_PASSWORD, "Parola incorecta!", "Introdu-ti o parola pentru a te inregistra pe server! n", "Inregistreaza", "Exit");// ii va da din nou dialogul register cu mesajul specific
- GetPlayerIp(playerid, ip, sizeof(ip));// definim ip-ul de mai sus
- mysql_format(handle, query, sizeof(query), "INSERT INTO conturi (Nume, Parola, IP) VALUES ('%s', '%e', '%s')", GetName(playerid), inputtext, ip);// se insereaza in tabelul cu conturi numele playerului, parola pe care a scris-o si ip pe care il are
- mysql_query(handle, query);// se va trimite setarile si se va interoga callback-ul OnRegistration
- ShowPlayerDialog(playerid, DIALOG_VARSTA, DIALOG_STYLE_INPUT, "Varsta", "Ce varsta doresti sa aiba caracterul?", "OK", "");
- }
- return 1;
- }
- case DIALOG_LOGIN:// daca se va selecta dialogul de login
- {
- if(!response) return Kick(playerid);// si se va apasa pe butonul exit ii va da kick
- if(response)//daca se apasa pe butonul LOGARE se va face urmatoarele verificari
- {
- if(!strlen(inputtext))// daca nu a scris nimic la parola
- return ShowPlayerDialog(playerid, DIALOG_LOGIN, DIALOG_STYLE_PASSWORD, "Parola incorecta!", "Te rog sa iti introduci parola corecta, pentru a te loga pe server.", "Logare", "Exit");// ii va da dialogul cu login cu mesajul specific
- // daca se va trece peste aceasta verificare se vor face urmatoarele:
- mysql_format(handle, query, sizeof(query), "SELECT * FROM `conturi` WHERE `Nume`='%e' AND `Parola` = '%e'", GetName(playerid),inputtext);// va fi selectata parola de la tabelul cu conturi
- mysql_tquery(handle, query, "OnLogin", "i", playerid);// se va face apel la baza si se va interoga CallBackUl OnLogin (Tquery = take query sau ia interogare in romana)
- }
- return 1;
- }
- case DIALOG_VARSTA:
- {
- if(response)
- {
- new query[200]; // definim query-ul
- 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
- }
- }
- case DIALOG_SEX:
- {
- new query[200];
- 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
- }
- }
- case DIALOG_EMAIL:
- {
- new query[200];
- 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
- }
- }
- case DIALOG_REFFERAL:
- {
- if(response)// primul buton
- {
- new query[200];
- 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
- }
- }
- return 1;
- }
- forward OnLogin(playerid);// definim callback ul
- public OnLogin(playerid)// facem publicul
- {
- new rows, fields,temporar[200];// definim randurile si domeniile, iar temporar se va folosi la extragerea stringurilor
- cache_get_data(rows, fields);// facem interogarea lor
- if(rows)// daca playerul are randuri(adica daca are cont creat, odata cu contul se creeaza randurile)
- {
- //deci daca are randuri
- P_Data[playerid][pParola] = cache_get_field_content(0, "Parola",temporar);// i se vaextrage parola si i se verifica daca coincide cu numele. Se foloseste new-ul temporar pentru extragerea parolei, ea retinandu-se temporar(pana cand se deconecteaza jucatorul)
- P_Data[playerid][pID] = cache_get_field_content_int(0, "ID");// i se vaextrage ip-ul
- //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);
- //un exemplu ar fi , daca are Admin , va fi ceva de genu P_Data[playerid][pAdmin] = cache_get_field_content_int(0,"Admin)"; i se va extrage din baza de date levelul de admin si i se va returna pe server, mai precis, cand se conecteaza are levelul de admin , care i-a fost setat de owner
- SpawnPlayer(playerid);// si se va da spawn
- }
- else// altfel , daca parola este gresita
- {
- ShowPlayerDialog(playerid, DIALOG_LOGIN, DIALOG_STYLE_PASSWORD, "Parola incorecta!", "Te rog sa iti introduci parola corecta, pentru a te loga pe server.", "Logare", "Exit");// ii va da dialogul cu mesajul specific.
- }
- 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");
- }
- return 1;
- }
- public OnGameModeExit()
- {
- mysql_close( handle ) ;// deconectam serverul de la baza de date, daca se inchide
- return 1;
- }
- /////////////////////////////////
- // Comenzi
- CMD:garals(playerid, params[]) // Teleport Gara LS
- {
- SetPlayerPos(playerid, 1743.2489, -1860.2096, 13.5790);
- SetPlayerFacingAngle(playerid, 0.0);
- SetPlayerInterior(playerid, 0);
- SetPlayerVirtualWorld(playerid, 0);
- return SendClientMessage(playerid, 0xAB0000FF, "Te-ai teleportat la gara din LS");
- }
- CMD:garasf(playerid, params[]) // Teleport Gara SF
- {
- SetPlayerPos(playerid, -1985.8003, 137.4680, 27.6875);
- SetPlayerFacingAngle(playerid, 0.0);
- SetPlayerInterior(playerid, 0);
- SetPlayerVirtualWorld(playerid, 0);
- return SendClientMessage(playerid, 0xAB0000FF, "Te-ai teleportat la gara din SF");
- }
- CMD:garalv(playerid, params[]) // Teleport Gara LV
- {
- SetPlayerPos(playerid, 1433.7260, 2613.3086, 11.3926);
- SetPlayerFacingAngle(playerid, 0.0);
- SetPlayerInterior(playerid, 0);
- SetPlayerVirtualWorld(playerid, 0);
- return SendClientMessage(playerid, 0xAB0000FF, "Te-ai teleportat la Gara LV");
- }
- CMD:jays(playerid, params[]) // Teleport Jays Diner
- {
- SetPlayerPos(playerid, -1939.7417, 2380.3413, 49.6953);
- SetPlayerFacingAngle(playerid, 0.0);
- SetPlayerInterior(playerid, 0);
- SetPlayerVirtualWorld(playerid, 0);
- return SendClientMessage(playerid, 0xAB0000FF, "Te-ai teleportat la Jays Diner");
- }
- public OnGameModeInit()
- {
- // MySQL
- MySQLConnect();
- //
- SetGameModeText(GameMode);
- // >>>>>>>Masini<<<<<<
- // Los Santos
- AddStaticVehicleEx(400,1780.5771,-1858.1754,13.2178,270.0972,-1,-1,-1); // Masina gara LS 1 -- [Landstalker]
- AddStaticVehicleEx(426,1772.3033,-1858.1874,13.2175,270.0955,-1,-1,-1); // Masina gara LS 2 -- [Premier]
- // San Fierro
- AddStaticVehicleEx(411,-2407.7573,334.7421,34.7680,144.4505,-1,-1,-1); // Masina hotel SF -- [Infernus]
- AddStaticVehicleEx(482,-1988.0170,157.8027,27.2963,0.3420,-1,-1,-1); // Masina gara SF 1 -- [Burrito]
- AddStaticVehicleEx(507,-1988.0197,150.4175,27.2661,0.5080,-1,-1,-1); // Masina gara SF 2 -- [Elegant]
- AddStaticVehicleEx(538,-1948.7773,110.9462,25.7186,358.4491,-1,-1,-1); // Tren Gara SF 1
- AddStaticVehicleEx(449, -2251.763, 223.2351, 15,0,-1,-1,-1); // Tramvai SF
- // Las Ventura
- AddStaticVehicleEx(550,1417.5288,2608.5806,10.3683,90.2248,-1,-1,-1); // Masina Gara LV 1 -- [Sunrise]
- AddStaticVehicleEx(560,1451.7970,2608.4819,10.3562,89.8636,-1,-1,-1); // Masina Gara LV 2 -- [Sultan]
- AddStaticVehicleEx(579,-1925.5948,2354.8528,48.7517,291.3351,-1,-1,-1); // Masina JAYS DINER 1 -- [Huntley]
- AddStaticVehicleEx(580,-1926.8275,2358.0876,48.8003,290.2672,-1,-1,-1); // Masina JAYS DINER 2 -- [Stafford]
- return 1;
- }
- //MySql
- public OnPlayerRequestClass(playerid,classid)
- {
- SetSpawnInfo(playerid, 0, 121, Spawn_X, Spawn_Y, Spawn_Z, 0, -1,-1,-1,-1,-1,-1);
- GivePlayerMoney(playerid, 100000);
- SpawnPlayer(playerid);
- return 1;
- }
- stock GetName(playerid)
- {
- new Name[MAX_PLAYER_NAME];
- GetPlayerName(playerid, Name, sizeof(Name));
- return Name;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement