Advertisement
Guest User

GM

a guest
Nov 12th, 2015
130
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 14.56 KB | None | 0 0
  1. /*
  2.  
  3. Credite:...
  4.  
  5. Structura:....
  6.  
  7. etc...
  8.  
  9. */
  10.  
  11. #include <a_samp>
  12. #include <a_mysql>
  13.  
  14. /*====================================Devfine's=================================*/
  15.  
  16. #define mysql_host "localhost"
  17. #define mysql_db "bazadate"
  18. #define mysql_user "root"
  19. #define mysql_pass ""
  20.  
  21. /*====================================Forward's=================================*/
  22.  
  23. forward OnLogin(playerid);
  24. forward OnPlayerLogin(playerid);
  25. forward MySQLConnect();
  26.  
  27. /*====================================Enum's=================================*/
  28.  
  29. enum
  30. {
  31. DIALOG_LOGIN,
  32. DIALOG_REGISTER,
  33. DIALOG_VARSTA,
  34. DIALOG_SEX,
  35. DIALOG_EMAIL,
  36. DIALOG_REFFERAL
  37. };
  38.  
  39. enum pInfo
  40. {
  41. pParola,
  42. pID,
  43. pVarsta,
  44. pSex,
  45. pEmail,
  46. pRefferal,
  47. pRegisterStep
  48. };
  49.  
  50. new P_Data[MAX_PLAYERS][pInfo];
  51.  
  52.  
  53. new handle;
  54.  
  55. main()
  56. {
  57. print("\n----------------------------------");
  58. print(" GM HaiPa bydavid1995 version V 0.0.1");
  59. print("----------------------------------\n");
  60. }
  61.  
  62. public MySQLConnect()
  63. {
  64. handle = mysql_connect(mysql_host, mysql_user, mysql_db, mysql_pass);
  65. if(mysql_errno() != 0)
  66. {
  67. printf("Conexiunea la baza de date %s a esuat ---> Server Inchis ~~~", mysql_db);
  68. SendRconCommand("exit");
  69. }
  70. else
  71. {
  72. printf("Conexiunea la baza de date '%s' cu user-ul '%s' a reusit!!!", mysql_db, mysql_user);
  73. }
  74. return 1;
  75. }
  76.  
  77. public OnGameModeInit()
  78. {
  79. SetGameModeText("HaiPat");
  80. MySQLConnect();
  81. return 1;
  82. }
  83.  
  84. public OnGameModeExit()
  85. {
  86. mysql_close( handle ) ;
  87. return 1;
  88. }
  89.  
  90. public OnPlayerRequestClass(playerid, classid)
  91. {
  92. return 1;
  93. }
  94.  
  95. public OnPlayerConnect(playerid)
  96. {
  97. new query[100];
  98.  
  99. mysql_format(handle, query, sizeof(query), "SELECT * FROM conturi WHERE Nume = '%s'", GetName(playerid));
  100. mysql_tquery(handle, query, "OnPlayerLogin", "i", playerid);
  101. return 1;
  102. }
  103.  
  104. public OnPlayerLogin(playerid)
  105. {
  106. new rows, fields;
  107. cache_get_data(rows, fields);
  108. if(rows)
  109. {
  110. ShowPlayerDialog(playerid, DIALOG_LOGIN, DIALOG_STYLE_PASSWORD, "Logheaza-te!", "Te rog sa-ti introduci parola contuului mai jos!", "Logare", "Exit");
  111. }
  112. else
  113. {
  114. 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");
  115. }
  116. return 1;
  117. }
  118.  
  119.  
  120. public OnLogin(playerid)
  121. {
  122. new rows, fields,temporar[200];
  123. cache_get_data(rows, fields);
  124. if(rows)
  125. {
  126. P_Data[playerid][pParola] = cache_get_field_content(0, "Parola",temporar);
  127. P_Data[playerid][pID] = cache_get_field_content_int(0, "ID");
  128.  
  129. P_Data[playerid][pVarsta] = cache_get_field_content_int(0, "Varsta");
  130. P_Data[playerid][pSex] = cache_get_field_content_int(0, "Sex");
  131. P_Data[playerid][pEmail] = cache_get_field_content(0, "Email",temporar);
  132. P_Data[playerid][pRefferal] = cache_get_field_content(0, "Refferal",temporar);
  133. P_Data[playerid][pRegisterStep] = cache_get_field_content_int(0, "RegisterStep");
  134. SpawnPlayer(playerid);
  135. }
  136. else
  137. {
  138. ShowPlayerDialog(playerid, DIALOG_LOGIN, DIALOG_STYLE_PASSWORD, "Parola incorecta!", "Te rog sa iti introduci parola corecta, pentru a te loga pe server.", "Logare", "Exit");
  139. }
  140.  
  141. if(P_Data[playerid][pRegisterStep] == 0)
  142. return ShowPlayerDialog(playerid, DIALOG_VARSTA, DIALOG_STYLE_INPUT, "Varsta", "Ce varsta doresti sa aiba caracterul?", "OK", "");
  143.  
  144. if(P_Data[playerid][pRegisterStep] == 1)
  145. return ShowPlayerDialog(playerid, DIALOG_SEX, DIALOG_STYLE_MSGBOX, "Sex", "Ce sex doresti sa aiba caracterul?", "Masculin", "Feminin");
  146.  
  147. if(P_Data[playerid][pRegisterStep] == 2)
  148. return ShowPlayerDialog(playerid, DIALOG_EMAIL, DIALOG_STYLE_INPUT, "Email", "Ce email ai?", "OK", "");
  149.  
  150. if(P_Data[playerid][pRegisterStep] == 3)
  151. return ShowPlayerDialog(playerid, DIALOG_REFFERAL, DIALOG_STYLE_INPUT, "Refferal", "Cine te-a adus pe server?", "OK", "SKIP");
  152.  
  153. return 1;
  154. }
  155.  
  156. public OnPlayerDisconnect(playerid, reason)
  157. {
  158. return 1;
  159. }
  160.  
  161. public OnPlayerSpawn(playerid)
  162. {
  163. return 1;
  164. }
  165.  
  166. public OnPlayerDeath(playerid, killerid, reason)
  167. {
  168. return 1;
  169. }
  170.  
  171. public OnVehicleSpawn(vehicleid)
  172. {
  173. return 1;
  174. }
  175.  
  176. public OnVehicleDeath(vehicleid, killerid)
  177. {
  178. return 1;
  179. }
  180.  
  181. public OnPlayerText(playerid, text[])
  182. {
  183. return 1;
  184. }
  185.  
  186. public OnPlayerEnterVehicle(playerid, vehicleid, ispassenger)
  187. {
  188. return 1;
  189. }
  190.  
  191. public OnPlayerExitVehicle(playerid, vehicleid)
  192. {
  193. return 1;
  194. }
  195.  
  196. public OnPlayerStateChange(playerid, newstate, oldstate)
  197. {
  198. return 1;
  199. }
  200.  
  201. public OnPlayerEnterCheckpoint(playerid)
  202. {
  203. return 1;
  204. }
  205.  
  206. public OnPlayerLeaveCheckpoint(playerid)
  207. {
  208. return 1;
  209. }
  210.  
  211. public OnPlayerEnterRaceCheckpoint(playerid)
  212. {
  213. return 1;
  214. }
  215.  
  216. public OnPlayerLeaveRaceCheckpoint(playerid)
  217. {
  218. return 1;
  219. }
  220.  
  221. public OnRconCommand(cmd[])
  222. {
  223. return 1;
  224. }
  225.  
  226. public OnPlayerRequestSpawn(playerid)
  227. {
  228. return 1;
  229. }
  230.  
  231. public OnObjectMoved(objectid)
  232. {
  233. return 1;
  234. }
  235.  
  236. public OnPlayerObjectMoved(playerid, objectid)
  237. {
  238. return 1;
  239. }
  240.  
  241. public OnPlayerPickUpPickup(playerid, pickupid)
  242. {
  243. return 1;
  244. }
  245.  
  246. public OnVehicleMod(playerid, vehicleid, componentid)
  247. {
  248. return 1;
  249. }
  250.  
  251. public OnVehiclePaintjob(playerid, vehicleid, paintjobid)
  252. {
  253. return 1;
  254. }
  255.  
  256. public OnVehicleRespray(playerid, vehicleid, color1, color2)
  257. {
  258. return 1;
  259. }
  260.  
  261. public OnPlayerSelectedMenuRow(playerid, row)
  262. {
  263. return 1;
  264. }
  265.  
  266. public OnPlayerExitedMenu(playerid)
  267. {
  268. return 1;
  269. }
  270.  
  271. public OnPlayerInteriorChange(playerid, newinteriorid, oldinteriorid)
  272. {
  273. return 1;
  274. }
  275.  
  276. public OnPlayerKeyStateChange(playerid, newkeys, oldkeys)
  277. {
  278. return 1;
  279. }
  280.  
  281. public OnRconLoginAttempt(ip[], password[], success)
  282. {
  283. return 1;
  284. }
  285.  
  286. public OnPlayerUpdate(playerid)
  287. {
  288. return 1;
  289. }
  290.  
  291. public OnPlayerStreamIn(playerid, forplayerid)
  292. {
  293. return 1;
  294. }
  295.  
  296. public OnPlayerStreamOut(playerid, forplayerid)
  297. {
  298. return 1;
  299. }
  300.  
  301. public OnVehicleStreamIn(vehicleid, forplayerid)
  302. {
  303. return 1;
  304. }
  305.  
  306. public OnVehicleStreamOut(vehicleid, forplayerid)
  307. {
  308. return 1;
  309. }
  310.  
  311. public OnDialogResponse(playerid, dialogid, response, listitem, inputtext[])
  312. {
  313. new query[128], ip[25], rows, fields;
  314. switch(dialogid)
  315. {
  316. case DIALOG_REGISTER:
  317. {
  318. if(!response)
  319. return Kick(playerid);
  320. if(response)
  321. {
  322. if(!strlen(inputtext))
  323. return ShowPlayerDialog(playerid, DIALOG_REGISTER, DIALOG_STYLE_PASSWORD, "Parola incorecta!", "Introdu-ti o parola pentru a te inregistra pe server! n", "Inregistreaza", "Exit");
  324.  
  325. GetPlayerIp(playerid, ip, sizeof(ip));
  326. mysql_format(handle, query, sizeof(query), "INSERT INTO conturi (Nume, Parola, IP) VALUES ('%s', '%e', '%s')", GetName(playerid), inputtext, ip);
  327. mysql_query(handle, query);
  328.  
  329. ShowPlayerDialog(playerid, DIALOG_VARSTA, DIALOG_STYLE_INPUT, "Varsta", "Ce varsta doresti sa aiba caracterul?", "OK", "");
  330. }
  331. return 1;
  332. }
  333. case DIALOG_LOGIN:
  334. {
  335. if(!response) return Kick(playerid);
  336. if(response)
  337. {
  338. if(!strlen(inputtext))
  339. 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");
  340.  
  341. mysql_format(handle, query, sizeof(query), "SELECT * FROM `conturi` WHERE `Nume`='%e' AND `Parola` = '%e'", GetName(playerid),inputtext);
  342. mysql_tquery(handle, query, "OnLogin", "i", playerid);
  343. }
  344. return 1;
  345. }
  346. case DIALOG_VARSTA:
  347. {
  348. if(response)
  349. {
  350. new varsta = strval(inputtext);// strval convertete un string in intenger(numar natural)
  351.  
  352. 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:
  353. 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", "");
  354.  
  355. // daca trece peste aceasta verificare se vor intampla urmatoarele:
  356. P_Data[playerid][pVarsta] = varsta;// variabila varsta va fi egala cu numarul introdus in casuta
  357.  
  358. 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
  359. mysql_query(handle, query);// trimitem mesajul catre baza de date
  360.  
  361. P_Data[playerid][pRegisterStep] = 1;
  362.  
  363. mysql_format(handle, query, sizeof(query), "UPDATE `conturi` SET `RegisterStep`='%d' WHERE `Nume`='%e'", P_Data[playerid][pRegisterStep], GetName(playerid));// se updateaza
  364. mysql_query(handle, query);// se trimite interogarea
  365.  
  366. ShowPlayerDialog(playerid, DIALOG_SEX, DIALOG_STYLE_MSGBOX, "Sex", "Ce sex doresti sa aiba caracterul?", "Masculin", "Feminin");// il timitem la dialogul de sex
  367. }
  368. }
  369. case DIALOG_SEX:
  370. {
  371. if(response)// daca apasa pe primul buton(masculin)
  372. {
  373. P_Data[playerid][pSex] = 1;//Seteaza pSex = 1(adica baiat)
  374.  
  375. 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
  376. mysql_query(handle, query);// se trimite catre baza de date.
  377.  
  378. P_Data[playerid][pRegisterStep] = 2;
  379.  
  380. mysql_format(handle, query, sizeof(query), "UPDATE `conturi` SET `RegisterStep`='%d' WHERE `Nume`='%e'", P_Data[playerid][pRegisterStep], GetName(playerid));// se updateaza
  381. mysql_query(handle, query);// se trimite interogarea
  382.  
  383. ShowPlayerDialog(playerid, DIALOG_EMAIL, DIALOG_STYLE_INPUT, "Email", "Ce email ai?", "OK", "");// il timitem la dialogul de email
  384. }
  385. if(!response)
  386. {
  387. P_Data[playerid][pSex] = 2;//Seteaza pSex = 1(adica baiat)
  388.  
  389. 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
  390. mysql_query(handle, query);// se trimite catre baza de date.
  391.  
  392. P_Data[playerid][pRegisterStep] = 2;
  393.  
  394. mysql_format(handle, query, sizeof(query), "UPDATE `conturi` SET `RegisterStep`='%d' WHERE `Nume`='%e'", P_Data[playerid][pRegisterStep], GetName(playerid));// se updateaza
  395. mysql_query(handle, query);// se trimite interogarea
  396.  
  397. ShowPlayerDialog(playerid, DIALOG_EMAIL, DIALOG_STYLE_INPUT, "Email", "Ce email ai?", "OK", "");// il timitem la dialogul de email
  398. }
  399. }
  400. case DIALOG_EMAIL:
  401. {
  402. if(response)
  403. {
  404. 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
  405. 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
  406.  
  407. strmid(P_Data[playerid][pEmail],inputtext, 0, strlen(inputtext), 100);// strmid obtine lungimea unui string.
  408. // in acest caz lungimea este introdusa in pEmail, adica P_Data[playerid][pEmail] = inputtext, dar va da eroare, asa ca ne folosim de strmid.
  409.  
  410. 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
  411. mysql_query(handle, query);// se trimite mesajul catre baza de date.
  412.  
  413. P_Data[playerid][pRegisterStep] = 3;
  414.  
  415. mysql_format(handle, query, sizeof(query), "UPDATE `conturi` SET `RegisterStep`='%d' WHERE `Nume`='%e'", P_Data[playerid][pRegisterStep], GetName(playerid));// se updateaza
  416. mysql_query(handle, query);// se trimite interogarea
  417.  
  418. ShowPlayerDialog(playerid, DIALOG_REFFERAL, DIALOG_STYLE_INPUT, "Refferal", "Te-a adus cineva pe server?", "OK", "SKIP");// il timitem la dialogul de refferal
  419. }
  420. }
  421. case DIALOG_REFFERAL:
  422. {
  423. if(response)// primul buton
  424. {
  425.  
  426. mysql_format(handle, query, sizeof(query), "SELECT * FROM `conturi` WHERE `Nume` = '%e'",inputtext);// selecteaza numele din baza de date
  427. mysql_query(handle, query);// se trimite interogarea catre baza
  428.  
  429. cache_get_data(rows, fields);// definim randurile si domeniile
  430.  
  431. if(rows)// daca acel player are cont(are randuri in baza de date)
  432. {
  433. strmid(P_Data[playerid][pRefferal],inputtext,0,strlen(inputtext),25);// i se seteaza refferal-ul
  434.  
  435. mysql_format(handle, query, sizeof(query), "UPDATE `conturi` SET `Refferal`='%e' WHERE `Nume`='%e'", P_Data[playerid][pRefferal], GetName(playerid));// se updateaza refferalul playerului
  436. mysql_query(handle, query);// se trimite interogarea
  437.  
  438.  
  439. P_Data[playerid][pRegisterStep] = 4;
  440.  
  441. mysql_format(handle, query, sizeof(query), "UPDATE `conturi` SET `RegisterStep`='%d' WHERE `Nume`='%e'", P_Data[playerid][pRegisterStep], GetName(playerid));// se updateaza
  442. mysql_query(handle, query);// se trimite interogarea
  443. }
  444. else// daca nu are cont(nu i se gaseste randuri in baza de date)
  445. {
  446. ShowPlayerDialog(playerid, DIALOG_REFFERAL, DIALOG_STYLE_INPUT, "Refferal", "Cine te-a adus pe server?", "OK", "SKIP");// ii da din nou dialogul cu refferal
  447. }
  448.  
  449. }
  450. if(!response)// al 2-lea buton
  451. {
  452. SendClientMessage(playerid,-1,"Bine, deci nimeni nu te-a adus!");
  453.  
  454. P_Data[playerid][pRegisterStep] = 4;
  455. mysql_format(handle, query, sizeof(query), "UPDATE `conturi` SET `RegisterStep`='%d' WHERE `Nume`='%e'", P_Data[playerid][pRegisterStep], GetName(playerid));// se updateaza
  456. mysql_query(handle, query);// se trimite interogarea
  457.  
  458. SpawnPlayer(playerid);// ii da spawn
  459. }
  460. }
  461. }
  462. return 1;
  463. }
  464.  
  465. public OnPlayerClickPlayer(playerid, clickedplayerid, source)
  466. {
  467. return 1;
  468. }
  469.  
  470. /*=======================================Stock's=========================================*/
  471. stock GetName(playerid)
  472. {
  473. new Name[MAX_PLAYER_NAME];
  474.  
  475. GetPlayerName(playerid, Name, sizeof(Name));
  476. return Name;
  477. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement