Advertisement
Guest User

Untitled

a guest
Oct 19th, 2015
165
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 18.95 KB | None | 0 0
  1. #include <a_samp>
  2. #include <sscanf2>
  3. #include <zcmd>
  4. #include <a_mysql>
  5.  
  6. #define GameMode "PEDA 0.0.1"
  7. #define Spawn_X -2422.3657
  8. #define Spawn_Y 336.0663
  9. #define Spawn_Z 36.1682
  10. #define mysql_host "localhost" // aici punem ip hostului. Daca folosim in PC GM lasam localhost
  11. #define mysql_db "peda"// aici punem numele bazei de date.
  12. #define mysql_user "root"// aici punem numele userului de la host. Daca folositi PC lasati root.
  13. #define mysql_pass ""//Aici puneti parola de la host(de la phpmyadmin al hostului). In caz de folositi PC lasati asa.
  14.  
  15. new handle; // handle(mâner) este cea de care ne vom folosi sa facem lagatura intre baza de date si server
  16.  
  17. main()
  18. {
  19. print("\n----------------------------------");
  20. print(" Developing by EmilianIS");
  21. print("----------------------------------\n");
  22. }
  23.  
  24. // MySql
  25. enum
  26. {
  27. DIALOG_LOGIN, // dialogul de login
  28. DIALOG_REGISTER,// dialogul de register
  29. DIALOG_VARSTA,
  30. DIALOG_SEX,
  31. DIALOG_EMAIL,
  32. DIALOG_REFFERAL
  33. };
  34.  
  35. enum pInfo //numele enumului este pInfo. in el vom pune datele playerului gen Admin/Level/ Money/Experianta si altele.
  36. {
  37. pParola,//cu pParola vom lua parola din baza de date a playerului
  38. pID,// cu pID vom lua ID-ul din baza de date a playerului
  39. pVarsta,
  40. pSex,
  41. pEmail,
  42. pRefferal,
  43. pRegisterStep// aceasta ne ajuta la verificare.
  44. };
  45.  
  46. 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;
  47.  
  48. forward MySQLConnect();// se creaza un nou callback cu forward
  49. public MySQLConnect()// se face callback-ul
  50. {
  51. 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
  52. 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)
  53. {
  54. printf("Conexiunea la baza de date %s a esuat ---> Server Inchis ~~~", mysql_db);// va trimite un mesaj in consola
  55. SendRconCommand("exit");// se inchide serverul
  56. }
  57. else// altfel daca este 0(daca se face legatura)
  58. {
  59. printf("Conexiunea la baza de date '%s' cu user-ul '%s' a reusit!!!", mysql_db, mysql_user);// ne va da acest mesaj in consola
  60. }
  61. return 1;
  62. }
  63.  
  64. forward OnPlayerLogin(playerid);// se creaza callbac-ul
  65. public OnPlayerLogin(playerid)//Se creaza publicul
  66. {
  67. new rows, fields;// definim rows(randurile)si fields(domeniile)
  68. cache_get_data(rows, fields);//cache_get_data interogheaza date din baza de date. acele date sunt rows si fields
  69. 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:
  70. {
  71. ShowPlayerDialog(playerid, DIALOG_LOGIN, DIALOG_STYLE_PASSWORD, "Logheaza-te!", "Te rog sa-ti introduci parola contuului mai jos!", "Logare", "Exit");// dialogul register
  72. }
  73. else// daca nu i se gasesc randuri, adica daca contul nu exista, atunci i se va da urmatorul dialog
  74. {
  75. 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
  76. }
  77. return 1;
  78. }
  79.  
  80. public OnPlayerConnect(playerid)
  81. {
  82. new query[100];// definim query(interogare)
  83. 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
  84. //handle reprezinta conectarea la mysql, query si sizeof(queri) reprezinta interogarea
  85. //"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
  86. 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.
  87. return 1;
  88. }
  89.  
  90. public OnDialogResponse(playerid, dialogid, response, listitem, inputtext[])
  91. {
  92. new query[128], ip[25];// se creaza interogarea si ip.
  93. switch(dialogid)// se va folosi switch pentru a selecta dialogul
  94. {
  95. case DIALOG_REGISTER:// daca se va selecta dialogul register
  96. {
  97. if(!response)
  98. return Kick(playerid);// daca se va apasa pe butonul Exit ii va da kick
  99. if(response)// daca se apasa pe Butonul inregistrare se vor face urmatoarele verificari
  100. {
  101. if(!strlen(inputtext))// daca nu e scris nimic la parola
  102. 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
  103.  
  104. GetPlayerIp(playerid, ip, sizeof(ip));// definim ip-ul de mai sus
  105. 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
  106. mysql_query(handle, query);// se va trimite setarile si se va interoga callback-ul OnRegistration
  107. ShowPlayerDialog(playerid, DIALOG_VARSTA, DIALOG_STYLE_INPUT, "Varsta", "Ce varsta doresti sa aiba caracterul?", "OK", "");
  108. }
  109. return 1;
  110. }
  111. case DIALOG_LOGIN:// daca se va selecta dialogul de login
  112. {
  113. if(!response) return Kick(playerid);// si se va apasa pe butonul exit ii va da kick
  114. if(response)//daca se apasa pe butonul LOGARE se va face urmatoarele verificari
  115. {
  116. if(!strlen(inputtext))// daca nu a scris nimic la parola
  117. 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
  118. // daca se va trece peste aceasta verificare se vor face urmatoarele:
  119. 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
  120. 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)
  121. }
  122. return 1;
  123. }
  124. case DIALOG_VARSTA:
  125. {
  126. if(response)
  127. {
  128. new query[200]; // definim query-ul
  129. new varsta = strval(inputtext);// strval convertete un string in intenger(numar natural)
  130.  
  131. 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:
  132. 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", "");
  133.  
  134. // daca trece peste aceasta verificare se vor intampla urmatoarele:
  135. P_Data[playerid][pVarsta] = varsta;// variabila varsta va fi egala cu numarul introdus in casuta
  136.  
  137. 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
  138. mysql_query(handle, query);// trimitem mesajul catre baza de date
  139.  
  140. P_Data[playerid][pRegisterStep] = 1;
  141.  
  142. mysql_format(handle, query, sizeof(query), "UPDATE `conturi` SET `RegisterStep`='%d' WHERE `Nume`='%e'", P_DATA[playerid][pRegisterStep], GetName(playerid));// se updateaza
  143. mysql_query(handle, query);// se trimite interogarea
  144.  
  145. ShowPlayerDialog(playerid, DIALOG_SEX, DIALOG_STYLE_MSGBOX, "Sex", "Ce sex doresti sa aiba caracterul?", "Masculin", "Feminin");// il timitem la dialogul de sex
  146. }
  147. }
  148. case DIALOG_SEX:
  149. {
  150. new query[200];
  151. if(response)// daca apasa pe primul buton(masculin)
  152. {
  153. P_Data[playerid][pSex] = 1;//Seteaza pSex = 1(adica baiat)
  154.  
  155. 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
  156. mysql_query(handle, query);// se trimite catre baza de date.
  157.  
  158. P_Data[playerid][pRegisterStep] = 2;
  159.  
  160. mysql_format(handle, query, sizeof(query), "UPDATE `conturi` SET `RegisterStep`='%d' WHERE `Nume`='%e'", P_DATA[playerid][pRegisterStep], GetName(playerid));// se updateaza
  161. mysql_query(handle, query);// se trimite interogarea
  162.  
  163. ShowPlayerDialog(playerid, DIALOG_EMAIL, DIALOG_STYLE_INPUT, "Email", "Ce email ai?", "OK", "");// il timitem la dialogul de email
  164. }
  165. if(!response)
  166. {
  167. P_Data[playerid][pSex] = 2;//Seteaza pSex = 1(adica baiat)
  168.  
  169. 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
  170. mysql_query(handle, query);// se trimite catre baza de date.
  171.  
  172. P_Data[playerid][pRegisterStep] = 2;
  173.  
  174. mysql_format(handle, query, sizeof(query), "UPDATE `conturi` SET `RegisterStep`='%d' WHERE `Nume`='%e'", P_DATA[playerid][pRegisterStep], GetName(playerid));// se updateaza
  175. mysql_query(handle, query);// se trimite interogarea
  176.  
  177. ShowPlayerDialog(playerid, DIALOG_EMAIL, DIALOG_STYLE_INPUT, "Email", "Ce email ai?", "OK", "");// il timitem la dialogul de email
  178. }
  179. }
  180. case DIALOG_EMAIL:
  181. {
  182. new query[200];
  183. if(response)
  184. {
  185. 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
  186. 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
  187.  
  188. strmid(P_Data[playerid][pEmail],inputtext, 0, strlen(inputtext), 100);// strmid obtine lungimea unui string.
  189. // in acest caz lungimea este introdusa in pEmail, adica P_Data[playerid][pEmail] = inputtext, dar va da eroare, asa ca ne folosim de strmid.
  190.  
  191. 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
  192. mysql_query(handle, query);// se trimite mesajul catre baza de date.
  193.  
  194. P_Data[playerid][pRegisterStep] = 3;
  195.  
  196. mysql_format(handle, query, sizeof(query), "UPDATE `conturi` SET `RegisterStep`='%d' WHERE `Nume`='%e'", P_DATA[playerid][pRegisterStep], GetName(playerid));// se updateaza
  197. mysql_query(handle, query);// se trimite interogarea
  198.  
  199. ShowPlayerDialog(playerid, DIALOG_REFFERAL, DIALOG_STYLE_INPUT, "Refferal", "Te-a adus cineva pe server?", "OK", "SKIP");// il timitem la dialogul de refferal
  200. }
  201. }
  202. case DIALOG_REFFERAL:
  203. {
  204. if(response)// primul buton
  205. {
  206. new query[200];
  207.  
  208. mysql_format(handle, query, sizeof(query), "SELECT * FROM `conturi` WHERE `Nume` = '%e'",inputtext);// selecteaza numele din baza de date
  209. mysql_query(handle, query);// se trimite interogarea catre baza
  210.  
  211. cache_get_data(rows, fields);// definim randurile si domeniile
  212.  
  213. if(rows)// daca acel player are cont(are randuri in baza de date)
  214. {
  215. strmid(P_Data[playerid][pRefferal],inputtext,0,strlen(inputtext),25);// i se seteaza refferal-ul
  216.  
  217. mysql_format(handle, query, sizeof(query), "UPDATE `conturi` SET `Refferal`='%e' WHERE `Nume`='%e'", P_DATA[playerid][pRefferal], GetName(playerid));// se updateaza refferalul playerului
  218. mysql_query(handle, query);// se trimite interogarea
  219.  
  220.  
  221. P_Data[playerid][pRegisterStep] = 4;
  222.  
  223. mysql_format(handle, query, sizeof(query), "UPDATE `conturi` SET `RegisterStep`='%d' WHERE `Nume`='%e'", P_DATA[playerid][pRegisterStep], GetName(playerid));// se updateaza
  224. mysql_query(handle, query);// se trimite interogarea
  225. }
  226. else// daca nu are cont(nu i se gaseste randuri in baza de date)
  227. {
  228. ShowPlayerDialog(playerid, DIALOG_REFFERAL, DIALOG_STYLE_INPUT, "Refferal", "Cine te-a adus pe server?", "OK", "SKIP");// ii da din nou dialogul cu refferal
  229. }
  230.  
  231. }
  232. if(!response)// al 2-lea buton
  233. {
  234. SendClientMessage(playerid,-1,"Bine, deci nimeni nu te-a adus!");
  235.  
  236. P_Data[playerid][pRegisterStep] = 4;
  237. mysql_format(handle, query, sizeof(query), "UPDATE `conturi` SET `RegisterStep`='%d' WHERE `Nume`='%e'", P_DATA[playerid][pRegisterStep], GetName(playerid));// se updateaza
  238. mysql_query(handle, query);// se trimite interogarea
  239.  
  240. SpawnPlayer(playerid);// ii da spawn
  241. }
  242. }
  243. return 1;
  244. }
  245.  
  246. forward OnLogin(playerid);// definim callback ul
  247. public OnLogin(playerid)// facem publicul
  248. {
  249. new rows, fields,temporar[200];// definim randurile si domeniile, iar temporar se va folosi la extragerea stringurilor
  250. cache_get_data(rows, fields);// facem interogarea lor
  251. if(rows)// daca playerul are randuri(adica daca are cont creat, odata cu contul se creeaza randurile)
  252. {
  253. //deci daca are randuri
  254. 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)
  255. P_Data[playerid][pID] = cache_get_field_content_int(0, "ID");// i se vaextrage ip-ul
  256. //extragem din baza de date urmatoarele:
  257. P_Data[playerid][pVarsta] = cache_get_field_content_int(0, "Varsta");
  258. P_Data[playerid][pSex] = cache_get_field_content_int(0, "Sex");
  259. P_Data[playerid][pEmail] = cache_get_field_content(0, "Email",temporar);
  260. P_Data[playerid][pRefferal] = cache_get_field_content(0, "Refferal",temporar);
  261. P_Data[playerid][pRegisterStep] = cache_get_field_content_int(0, "RegisterStep");
  262. SpawnPlayer(playerid);
  263. //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
  264. SpawnPlayer(playerid);// si se va da spawn
  265. }
  266. else// altfel , daca parola este gresita
  267. {
  268. 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.
  269. }
  270. if(P_Data[playerid][pRegisterStep] == 0)
  271. return ShowPlayerDialog(playerid, DIALOG_VARSTA, DIALOG_STYLE_INPUT, "Varsta", "Ce varsta doresti sa aiba caracterul?", "OK", "");
  272.  
  273. if(P_Data[playerid][pRegisterStep] == 1)
  274. return ShowPlayerDialog(playerid, DIALOG_SEX, DIALOG_STYLE_MSGBOX, "Sex", "Ce sex doresti sa aiba caracterul?", "Masculin", "Feminin");
  275.  
  276. if(P_Data[playerid][pRegisterStep] == 2)
  277. return ShowPlayerDialog(playerid, DIALOG_EMAIL, DIALOG_STYLE_INPUT, "Email", "Ce email ai?", "OK", "");
  278.  
  279. if(P_Data[playerid][pRegisterStep] == 3)
  280. return ShowPlayerDialog(playerid, DIALOG_REFFERAL, DIALOG_STYLE_INPUT, "Refferal", "Cine te-a adus pe server?", "OK", "SKIP");
  281. }
  282. return 1;
  283. }
  284.  
  285. public OnGameModeExit()
  286. {
  287. mysql_close( handle ) ;// deconectam serverul de la baza de date, daca se inchide
  288. return 1;
  289. }
  290. /////////////////////////////////
  291.  
  292. // Comenzi
  293.  
  294. CMD:garals(playerid, params[]) // Teleport Gara LS
  295. {
  296. SetPlayerPos(playerid, 1743.2489, -1860.2096, 13.5790);
  297. SetPlayerFacingAngle(playerid, 0.0);
  298. SetPlayerInterior(playerid, 0);
  299. SetPlayerVirtualWorld(playerid, 0);
  300. return SendClientMessage(playerid, 0xAB0000FF, "Te-ai teleportat la gara din LS");
  301. }
  302.  
  303. CMD:garasf(playerid, params[]) // Teleport Gara SF
  304. {
  305. SetPlayerPos(playerid, -1985.8003, 137.4680, 27.6875);
  306. SetPlayerFacingAngle(playerid, 0.0);
  307. SetPlayerInterior(playerid, 0);
  308. SetPlayerVirtualWorld(playerid, 0);
  309. return SendClientMessage(playerid, 0xAB0000FF, "Te-ai teleportat la gara din SF");
  310. }
  311.  
  312. CMD:garalv(playerid, params[]) // Teleport Gara LV
  313. {
  314. SetPlayerPos(playerid, 1433.7260, 2613.3086, 11.3926);
  315. SetPlayerFacingAngle(playerid, 0.0);
  316. SetPlayerInterior(playerid, 0);
  317. SetPlayerVirtualWorld(playerid, 0);
  318. return SendClientMessage(playerid, 0xAB0000FF, "Te-ai teleportat la Gara LV");
  319. }
  320.  
  321. CMD:jays(playerid, params[]) // Teleport Jays Diner
  322. {
  323. SetPlayerPos(playerid, -1939.7417, 2380.3413, 49.6953);
  324. SetPlayerFacingAngle(playerid, 0.0);
  325. SetPlayerInterior(playerid, 0);
  326. SetPlayerVirtualWorld(playerid, 0);
  327. return SendClientMessage(playerid, 0xAB0000FF, "Te-ai teleportat la Jays Diner");
  328. }
  329.  
  330. public OnGameModeInit()
  331. {
  332. // MySQL
  333. MySQLConnect();
  334. //
  335. SetGameModeText(GameMode);
  336. // >>>>>>>Masini<<<<<<
  337. // Los Santos
  338. AddStaticVehicleEx(400,1780.5771,-1858.1754,13.2178,270.0972,-1,-1,-1); // Masina gara LS 1 -- [Landstalker]
  339. AddStaticVehicleEx(426,1772.3033,-1858.1874,13.2175,270.0955,-1,-1,-1); // Masina gara LS 2 -- [Premier]
  340. // San Fierro
  341. AddStaticVehicleEx(411,-2407.7573,334.7421,34.7680,144.4505,-1,-1,-1); // Masina hotel SF -- [Infernus]
  342. AddStaticVehicleEx(482,-1988.0170,157.8027,27.2963,0.3420,-1,-1,-1); // Masina gara SF 1 -- [Burrito]
  343. AddStaticVehicleEx(507,-1988.0197,150.4175,27.2661,0.5080,-1,-1,-1); // Masina gara SF 2 -- [Elegant]
  344. AddStaticVehicleEx(538,-1948.7773,110.9462,25.7186,358.4491,-1,-1,-1); // Tren Gara SF 1
  345. AddStaticVehicleEx(449, -2251.763, 223.2351, 15,0,-1,-1,-1); // Tramvai SF
  346. // Las Ventura
  347. AddStaticVehicleEx(550,1417.5288,2608.5806,10.3683,90.2248,-1,-1,-1); // Masina Gara LV 1 -- [Sunrise]
  348. AddStaticVehicleEx(560,1451.7970,2608.4819,10.3562,89.8636,-1,-1,-1); // Masina Gara LV 2 -- [Sultan]
  349. AddStaticVehicleEx(579,-1925.5948,2354.8528,48.7517,291.3351,-1,-1,-1); // Masina JAYS DINER 1 -- [Huntley]
  350. AddStaticVehicleEx(580,-1926.8275,2358.0876,48.8003,290.2672,-1,-1,-1); // Masina JAYS DINER 2 -- [Stafford]
  351.  
  352. return 1;
  353. }
  354.  
  355. //MySql
  356. public OnPlayerRequestClass(playerid,classid)
  357. {
  358. SetSpawnInfo(playerid, 0, 121, Spawn_X, Spawn_Y, Spawn_Z, 0, -1,-1,-1,-1,-1,-1);
  359. GivePlayerMoney(playerid, 100000);
  360. SpawnPlayer(playerid);
  361. return 1;
  362. }
  363.  
  364. stock GetName(playerid)
  365. {
  366. new Name[MAX_PLAYER_NAME];
  367.  
  368. GetPlayerName(playerid, Name, sizeof(Name));
  369. return Name;
  370. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement