Guest User

Untitled

a guest
Jul 9th, 2013
85
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 13.04 KB | None | 0 0
  1. #include <a_samp>
  2. #include <a_mysql>
  3. #include <sscanf2>
  4. //========================= [MySQL Database Settings] ==========================
  5.  
  6. #define mysql_host "localhost"//the IP of the host, should be displayed when created a database
  7. #define mysql_user "root"//database username
  8. #define mysql_password ""//database password
  9. #define mysql_database "samp"//database name
  10. //========================= [MySQL Database Settings] ==========================
  11.  
  12. //============================ [Colors] ========================================
  13. #define white 0xFFFFFFFF
  14. #define blue 0x0073FFFF
  15. #define liblue 0x00FFFFFF
  16. #define green 0x00E228FF
  17. #define ligreen 0x00FF28FF
  18. #define green2 0x9BFF00FF
  19. #define limegreen 0x00FF96FF
  20. #define pink 0xFFAFD7FF
  21. #define purple 0xDB00AFFF
  22. #define yellow 0xF5FF00FF
  23. #define orange 0xFFA000FF
  24. #define red 0xFF0000FF
  25. //============================ [Colors] ========================================
  26.  
  27.  
  28. //============================ [Hex] ===========================================
  29. #define cwhite "{FFFFFF}"
  30. #define cblue "{00B9FF}"
  31. #define cliblue "{00FFFA}"
  32. #define cgreen "{05E200}"
  33. #define cligreen "{05FF00}"
  34. #define cgreen2 "{A5FF00}"
  35. #define cpink "{FFA4C3}"
  36. #define cpurple "{E500C3}"
  37. #define cyellow "{FFFA00}"
  38. #define cyellow2 "{FFFF11}"
  39. #define corange "{FF9600}"
  40. #define cred "{FF0000}"
  41. //============================ [Hex] ===========================================
  42.  
  43. #define Logindialog 1
  44. #define Regdialog 2
  45. #define Reginfo 3
  46.  
  47. //============================ [Log] ===========================================
  48.  
  49. #define VERSION "a01a"
  50. #define AUTOR "OnO"
  51. enum PlayerData
  52. {
  53. AccID,
  54. Username[24],
  55. Password[129],
  56. Ip[16],
  57. Money,
  58. Score,
  59. Kills,
  60. Deaths,
  61. Logged,
  62. FailedLogins,
  63. FirstSpawn
  64. };
  65. native WP_Hash(buffer[], len, const str[]);
  66. new pData[MAX_PLAYERS][PlayerData];
  67. new Query[450];
  68. public OnGameModeInit()
  69. {
  70. mysql_debug(1);
  71. print("\n************************************");
  72. printf("Polski Serwer Rozrywki [PSR] wersja: '%s' Autor: %s ", VERSION, AUTOR);
  73. print("************************************\n");
  74. mysql_connect(mysql_host,mysql_user,mysql_database,mysql_password);
  75. mysql_query(
  76. "CREATE TABLE IF NOT EXISTS `Accounts` ("\
  77. "`AccID` int(10) NOT NULL AUTO_INCREMENT,"\
  78. "`Username` varchar(24) NOT NULL,"\
  79. "`Password` varchar(64) NOT NULL,"\
  80. "`IP` varchar(16) NULL,"\
  81. "`Money` int(15) NULL,"\
  82. "`Score` int(15) NULL,"\
  83. "`Kills` int(15) NULL,"\
  84. "`Deaths` int(15) NULL,"\
  85. "PRIMARY KEY (`AccID`)"\
  86. ") ENGINE=InnoDB DEFAULT CHARSET=latin1;");
  87. if(mysql_ping() > -1) return print("::BReg:: MySQL connection to database succeeded!");
  88.  
  89. else print("::BReg:: MySQL connection to database failed. Please check your database settings!");
  90. return 1;
  91. }
  92.  
  93. public OnGameModeExit()
  94. {
  95. print("\n************************************");
  96. print("Polski Serwer Rozrywki [PSR]");
  97. print("************************************\n");
  98. return 1;
  99. }
  100.  
  101. public OnPlayerConnect(playerid)
  102. {
  103. new string[256];
  104. format(Query,sizeof(Query),"SELECT Username FROM `Accounts` WHERE `Username` = '%s'",GetPName(playerid));
  105. mysql_query(Query);
  106. mysql_store_result();
  107. if(mysql_num_rows() != 0)
  108. {
  109. format(Query,sizeof Query,"SELECT IP FROM `Accounts` WHERE `Username` = '%s' AND `IP` = '%s'",GetPName(playerid),GetIP(playerid));
  110. mysql_query(Query);
  111. mysql_store_result();
  112. if(mysql_num_rows() != 0)
  113. {
  114. LoadStats(playerid);
  115. pData[playerid][Logged] = 1;
  116. PlaySound(playerid,1057);
  117. SendClientMessage(playerid,green,"» Zostałeś automatycznie zalogowany! Witamy z powrotem!");
  118. }
  119. else
  120. {
  121. format(string,sizeof(string),""cblue"Witaj, "cred"%s"cblue"! \nTwoje konto jest "cgreen"zarejestrowane!"cblue".\nWpisz swoje "cred"hasło"cblue" aby się zalogować!",GetPName(playerid));
  122. ShowPlayerDialog(playerid,Logindialog,DIALOG_STYLE_PASSWORD,""cgreen2"Logowanie",string,"Zaloguj","");
  123. }
  124. }
  125. else
  126. {
  127. format(string,sizeof(string),""cblue"Witaj, "cred"%s"cblue"! \nTwoje konto "cred"nie jest"cblue" zarejestowane!. \nProszę "cgreen"zarejestruj się"cblue" by kontynuować grę!",GetPName(playerid));
  128. ShowPlayerDialog(playerid,Regdialog,DIALOG_STYLE_INPUT,""cpurple"Rejestracja",string,"Zarejestruj","");
  129. }
  130. mysql_free_result();
  131. pData[playerid][FirstSpawn] = 1;
  132. return 1;
  133. }
  134.  
  135. public OnPlayerDisconnect(playerid, reason)
  136. {
  137. if(pData[playerid][Logged] == 1) return SaveStats(playerid);
  138. pData[playerid][FailedLogins] = 0;
  139. return 1;
  140. }
  141.  
  142. public OnPlayerSpawn(playerid)
  143. {
  144. if(pData[playerid][FirstSpawn] == 1 && pData[playerid][Logged] == 1)
  145. {
  146. GivePlayerMoney(playerid,pData[playerid][Money]);
  147. SetPlayerScore(playerid,pData[playerid][Score]);
  148. format(pData[playerid][Ip],16,"%s",GetIP(playerid));
  149. pData[playerid][FirstSpawn] = 0;
  150. }
  151. return 1;
  152. }
  153.  
  154. public OnPlayerDeath(playerid, killerid, reason)
  155. {
  156. pData[killerid][Kills]++;
  157. pData[playerid][Deaths]++;
  158. return 1;
  159. }
  160.  
  161. public OnVehicleSpawn(vehicleid)
  162. {
  163. return 1;
  164. }
  165.  
  166. public OnVehicleDeath(vehicleid, killerid)
  167. {
  168. return 1;
  169. }
  170.  
  171. public OnPlayerText(playerid, text[])
  172. {
  173. return 1;
  174. }
  175.  
  176. public OnPlayerCommandText(playerid, cmdtext[])
  177. {
  178. return 0;
  179. }
  180.  
  181. public OnPlayerEnterVehicle(playerid, vehicleid, ispassenger)
  182. {
  183. return 1;
  184. }
  185.  
  186. public OnPlayerExitVehicle(playerid, vehicleid)
  187. {
  188. return 1;
  189. }
  190.  
  191. public OnPlayerStateChange(playerid, newstate, oldstate)
  192. {
  193. return 1;
  194. }
  195.  
  196. public OnPlayerEnterCheckpoint(playerid)
  197. {
  198. return 1;
  199. }
  200.  
  201. public OnPlayerLeaveCheckpoint(playerid)
  202. {
  203. return 1;
  204. }
  205.  
  206. public OnPlayerEnterRaceCheckpoint(playerid)
  207. {
  208. return 1;
  209. }
  210.  
  211. public OnPlayerLeaveRaceCheckpoint(playerid)
  212. {
  213. return 1;
  214. }
  215.  
  216. public OnRconCommand(cmd[])
  217. {
  218. return 1;
  219. }
  220.  
  221. public OnPlayerRequestSpawn(playerid)
  222. {
  223. return 1;
  224. }
  225.  
  226. public OnObjectMoved(objectid)
  227. {
  228. return 1;
  229. }
  230.  
  231. public OnPlayerObjectMoved(playerid, objectid)
  232. {
  233. return 1;
  234. }
  235.  
  236. public OnPlayerPickUpPickup(playerid, pickupid)
  237. {
  238. return 1;
  239. }
  240.  
  241. public OnVehicleMod(playerid, vehicleid, componentid)
  242. {
  243. return 1;
  244. }
  245.  
  246. public OnVehiclePaintjob(playerid, vehicleid, paintjobid)
  247. {
  248. return 1;
  249. }
  250.  
  251. public OnVehicleRespray(playerid, vehicleid, color1, color2)
  252. {
  253. return 1;
  254. }
  255.  
  256. public OnPlayerSelectedMenuRow(playerid, row)
  257. {
  258. return 1;
  259. }
  260.  
  261. public OnPlayerExitedMenu(playerid)
  262. {
  263. return 1;
  264. }
  265.  
  266. public OnPlayerInteriorChange(playerid, newinteriorid, oldinteriorid)
  267. {
  268. return 1;
  269. }
  270.  
  271. public OnPlayerKeyStateChange(playerid, newkeys, oldkeys)
  272. {
  273. return 1;
  274. }
  275.  
  276. public OnRconLoginAttempt(ip[], password[], success)
  277. {
  278. return 1;
  279. }
  280.  
  281. public OnPlayerUpdate(playerid)
  282. {
  283. return 1;
  284. }
  285.  
  286. public OnPlayerStreamIn(playerid, forplayerid)
  287. {
  288. return 1;
  289. }
  290.  
  291. public OnPlayerStreamOut(playerid, forplayerid)
  292. {
  293. return 1;
  294. }
  295.  
  296. public OnVehicleStreamIn(vehicleid, forplayerid)
  297. {
  298. return 1;
  299. }
  300.  
  301. public OnVehicleStreamOut(vehicleid, forplayerid)
  302. {
  303. return 1;
  304. }
  305.  
  306. public OnDialogResponse(playerid, dialogid, response, listitem, inputtext[])
  307. {
  308. switch(dialogid)
  309. {
  310. case Regdialog:
  311. {
  312. new string[220];
  313. if(strlen(inputtext) == 0)
  314. {
  315. ShowPlayerDialog(playerid,Regdialog,DIALOG_STYLE_INPUT,""cblue"Rejestracja "cyellow"Wpisz swoje hasło",""cblue"Musisz zarejestrować "cyellow"swoje koneto"cblue"! \nProszę wpisz swoje "corange"hasło"cblue"! \n","Zarejestruj","");
  316. SendClientMessage(playerid,red,"» Proszę wpisać hasło!");
  317. }
  318. else
  319. {
  320. new EscapedText[64],buffer[129];
  321. mysql_real_escape_string(inputtext, EscapedText);
  322. WP_Hash(buffer,sizeof(buffer),EscapedText);
  323. format(Query,sizeof(Query),"INSERT INTO `Accounts` (Username,Password,IP,Money,Score,Kills,Deaths) VALUES('%s','%s','%s','0','0','0','0')",GetPName(playerid),buffer,GetIP(playerid));
  324. mysql_query(Query);
  325. mysql_store_result();
  326. SendClientMessage(playerid,green2,"» Zostałeś pomyślnie zarejestrowany!");
  327. format(string,sizeof(string),""cgreen"Twoje konto zostało pomyślnie utworzone! \n"cwhite"» Twój Nick: "cblue"%s \n"cwhite"» Twoje hasło: "cblue"%s \n"cwhite"» ID Twojego konta: "cblue"%i ",GetPName(playerid),inputtext,mysql_insert_id());
  328. ShowPlayerDialog(playerid,Reginfo,0,"Zarejestrowano!",string,"Ok","");
  329. mysql_free_result();
  330. LoadStats(playerid);
  331. pData[playerid][Logged] = 1;
  332. GivePlayerMoney(playerid,5000);
  333. SetPlayerScore(playerid,1);
  334. PlaySound(playerid,1083);
  335. }
  336. }
  337. case Logindialog:
  338. {
  339. if(!response) return Kick(playerid);
  340. if(strlen(inputtext) == 0)
  341. {
  342. new string[220];
  343. format(string,sizeof(string),""cblue"Witaj, "cred"%s"cblue"! \nTwoje konto jest "cgreen"zarejestrowane"cblue".\nProszę wpisz swoje "cred"hasło"cblue" aby się zalogować!",GetPName(playerid));
  344. ShowPlayerDialog(playerid,Logindialog,DIALOG_STYLE_INPUT,""cgreen2"Logowanie",string,"Zaloguj","");
  345. SendClientMessage(playerid,red,"» Proszę wpisać hasło!");
  346. }
  347. else
  348. {
  349. LoginPlayer(playerid,inputtext);
  350. }
  351. }
  352. }
  353. return 1;
  354. }
  355.  
  356. public OnPlayerClickPlayer(playerid, clickedplayerid, source)
  357. {
  358. return 1;
  359. }
  360. GetPName(playerid)
  361. {
  362. new pname[24];
  363. GetPlayerName(playerid,pname,24);
  364. return pname;
  365. }
  366. GetIP(playerid)
  367. {
  368. new ip[16];
  369. GetPlayerIp(playerid,ip,16);
  370. return ip;
  371. }
  372. stock PlaySound(playerid,soundid)
  373. {
  374. new Float:p[3];
  375. GetPlayerPos(playerid, p[0], p[1], p[2]);
  376. PlayerPlaySound(playerid, soundid, p[0], p[1], p[2]);
  377. return 1;
  378. }
  379. stock LoadStats(playerid)
  380. {
  381. format(Query, sizeof(Query), "SELECT * FROM `Accounts` WHERE `Username` = '%s'", GetPName(playerid));
  382. mysql_query(Query);
  383. mysql_store_result();
  384. mysql_fetch_row_format(Query, "|");
  385. sscanf(Query, "e<p<|>is[24]s[129]s[16]iiii>", pData[playerid]);//Remember to update this if you are going to add more info!
  386. mysql_free_result();
  387. return 1;
  388. }
  389. stock SaveStats(playerid)
  390. {
  391. format(Query,sizeof(Query),"UPDATE `Accounts` SET `IP` = '%s', `Money` = '%i', `Score` = '%i', `Kills` = '%i', `Deaths` = '%i' WHERE `Username` = '%s'",
  392. pData[playerid][Ip],
  393. GetPlayerMoney(playerid),
  394. GetPlayerScore(playerid),
  395. pData[playerid][Kills],
  396. pData[playerid][Deaths],
  397. GetPName(playerid));
  398.  
  399. mysql_query(Query);
  400. mysql_free_result();
  401. return 1;
  402. }
  403. stock LoginPlayer(playerid,const password[])
  404. {
  405. new string[165], buffer[129];
  406. WP_Hash(buffer,sizeof(buffer),password);
  407. format(Query,sizeof(Query),"SELECT Password FROM `Accounts` WHERE `Username` = '%s' AND `Password` = '%s'",GetPName(playerid),buffer);
  408. mysql_query(Query);
  409. mysql_store_result();
  410. if(mysql_num_rows() != 0)
  411. {
  412. format(string,sizeof(string),"» Zostałeś zalogowany! Witamy ponownie, "cred"%s"cgreen"!",GetPName(playerid));
  413. SendClientMessage(playerid,green,string);
  414. LoadStats(playerid);
  415. pData[playerid][Logged] = 1;
  416. PlaySound(playerid,1057);
  417. }
  418. else
  419. {
  420. pData[playerid][FailedLogins]++;
  421. format(string,sizeof(string),""cred"Podejście numer: "corange"%i \n"cblue"Witaj, "cred"%s"cblue"! \nTwoje konto jest "cgreen"zarejestrowane"cblue"!\nProszę wpisz swoje "cred"hasło"cblue" aby się zalogować!",3-pData[playerid][FailedLogins],GetPName(playerid));
  422. ShowPlayerDialog(playerid,Logindialog,DIALOG_STYLE_INPUT,""cgreen2"Log in",string,"Login","");
  423. PlaySound(playerid,1055);
  424. if(pData[playerid][FailedLogins] == 3)
  425. {
  426. format(string,sizeof(string),"» %s został wyrzucony przez Serwer. Powód: 3 błędne podejścia do logowania!",GetPName(playerid));
  427. SendClientMessageToAll(red,string);
  428. SendClientMessage(playerid,red,"» Zostałeś wyrzucony za 3-krotne wpisanie złego hasła do konta!");
  429. PlaySound(playerid,1141);
  430. Kick(playerid);
  431. }
  432. }
  433. mysql_free_result();
  434. return 1;
  435. }
Advertisement
Add Comment
Please, Sign In to add comment