Guest User

Base

a guest
Oct 5th, 2018
1,059
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 10.79 KB | None | 0 0
  1. //---------------------------- Includes ----------------------------------------
  2. #include <a_samp>
  3. #include <sscanf2>
  4. #include <streamer>
  5. #include <zcmd>
  6. #include <foreach>
  7. #include <a_mysql>
  8.  
  9. native WP_Hash(buffer[], len, const str[]);
  10.  
  11.  
  12. #define COLOR_RED 0xFF0000AA
  13. #define COLOR_BLUE 0x0000BBAA
  14. #define COLOR_YELLOW 0xFFFF00AA
  15. #define COLOR_TOMATO 0xFF6347AA
  16. #define COLOR_WHITE 0xFFFFFFAA
  17. #define COLOR_ORANGE 0xFF9900AA
  18. #define COLOR_GREY 0xAFAFAFAA
  19. #define COLOR_GREEN 0x33AA33AA
  20. #define COLOR_PINK 0xFFC0CBAA
  21.  
  22. #define DIALOG_LOGIN 1
  23. #define DIALOG_REGISTER 2
  24. #define DIALOG_STATS 3
  25.  
  26. //enumeration where you store your player data / any data.
  27. enum playerInfo
  28. {
  29. ID,
  30. Name[MAX_PLAYER_NAME],
  31. Password[129], // let it be 129, don't change it
  32. Score,
  33. Money,
  34. Kills,
  35. Deaths,
  36. Admin,
  37. VIP
  38. };
  39. new PlayerData[MAX_PLAYERS][playerInfo];
  40.  
  41.  
  42. /*Tables
  43. CREATE TABLE IF NOT EXISTS `player` (`id` int(11) NOT NULL AUTO_INCREMENT PRIMARY KEY,`name` varchar(25),`password` varchar(129),`score` int(11) NOT NULL DEFAULT '0',`money` int(11) NOT NULL DEFAULT '0',`kills` int(11) NOT NULL DEFAULT '0',`deaths` int(11) NOT NULL DEFAULT '0',`admin` int(11) NOT NULL DEFAULT '0',`vip` int(11) NOT NULL DEFAULT '0' */
  44.  
  45. //SQL
  46. new PlayerIsLogged[MAX_PLAYERS];
  47. new connection = -1;
  48. main()
  49. {
  50. print("\n==================================");
  51. print(" MYSQL BASES GAMEMODE ");
  52. print(" By ZigGamerX And Jithu ");
  53. print(" 2018 ");
  54. print("==================================\n");
  55. }
  56.  
  57. public OnGameModeInit()
  58. {
  59. //Enable/Disables & Others
  60. SetGameModeText("Blank");
  61.  
  62. //MYSQL
  63. mysql_log(LOG_ERROR | LOG_WARNING, LOG_TYPE_HTML); // for checking logs
  64. connection = mysql_connect("localhost", "name", "db", "password");
  65.  
  66. "CREATE TABLE IF NOT EXISTS `player` (`id` int(11) NOT NULL AUTO_INCREMENT PRIMARY KEY,`name` varchar(25),`password` varchar(129),`score` int(11) NOT NULL DEFAULT '0',`money` int(11) NOT NULL DEFAULT '0',`kills` int(11) NOT NULL DEFAULT '0',`deaths` int(11) NOT NULL DEFAULT '0',`admin` int(11) NOT NULL DEFAULT '0',`vip` int(11) NOT NULL DEFAULT '0'";
  67. return 1;
  68. }
  69.  
  70. public OnGameModeExit()
  71. {
  72. for(new i = 0; i < MAX_PLAYERS; i++) // loop ahhh fucking part
  73. {
  74. OnPlayerDisconnect(i, 1); // it will be like the player is disconnecting.
  75. }
  76. mysql_close(connection); // closes the connection handle
  77. return 1;
  78. }
  79.  
  80. public OnPlayerRequestClass(playerid, classid)
  81. {
  82. return 1;
  83. }
  84.  
  85. public OnPlayerConnect(playerid)
  86. {
  87.  
  88. //Reset player's stats for evading bugs
  89. PlayerData[playerid][Score] = 0;
  90. PlayerData[playerid][Money] = 0;
  91. PlayerData[playerid][Kills] = 0;
  92. PlayerData[playerid][Deaths] = 0;
  93. PlayerData[playerid][Admin] = 0;
  94. PlayerData[playerid][VIP] = 0;
  95.  
  96. new query[128];
  97. GetPlayerName(playerid, PlayerData[playerid][Name], MAX_PLAYER_NAME);
  98. // SELECT * FROM `tablename` WHERE `string` = '%e' , %e can be used only in MySQL.
  99. mysql_format(connection, query, sizeof(query), "SELECT * FROM `player` WHERE `name` = '%e' LIMIT 1", PlayerData[playerid][Name]);
  100. mysql_tquery(connection, query, "OnAccountCheck", "i", playerid); // function , mysql_tquery(connection handle, variable, function name, params, ....);
  101.  
  102. PlayerIsLogged[playerid] = 0;
  103. return 1;
  104. }
  105.  
  106. forward OnAccountCheck(playerid); // creating public function
  107. public OnAccountCheck(playerid)
  108. {
  109. if(cache_num_rows() > 0) // This means that ' The data exists ', ' if(cache_num_rows() > 0) means if the data exists in the table
  110. {
  111. PlayerData[playerid][ID] = cache_get_field_content_int(0, "id");
  112. cache_get_field_content(0, "password", PlayerData[playerid][Password], connection, 129);
  113. PlayerData[playerid][Score] = cache_get_field_content_int(0, "score");
  114. PlayerData[playerid][Money] = cache_get_field_content_int(0, "money");
  115. PlayerData[playerid][Kills] = cache_get_field_content_int(0, "kills");
  116. PlayerData[playerid][Deaths] = cache_get_field_content_int(0, "deaths");
  117. PlayerData[playerid][Admin] = cache_get_field_content_int(0, "admin");
  118. PlayerData[playerid][VIP] = cache_get_field_content_int(0, "vip");
  119. ShowPlayerDialog(playerid, DIALOG_LOGIN, DIALOG_STYLE_PASSWORD, "Login", "LOGIN TYPE:", "Login", "Leave");
  120. }
  121. else // if the data doesn't exists
  122. {
  123. ShowPlayerDialog(playerid, DIALOG_REGISTER, DIALOG_STYLE_INPUT, "Register", "REGISTER TEXT:", "Register", "Leave");
  124. }
  125. return 1;
  126. }
  127.  
  128. public OnPlayerDisconnect(playerid, reason)
  129. {
  130. //MYSQL ACCCOUNT
  131. new query[128];
  132. GetPlayerName(playerid, PlayerData[playerid][Name], MAX_PLAYER_NAME);
  133. if(PlayerIsLogged[playerid] == 0) return 0;
  134. mysql_format(connection, query, sizeof(query), "UPDATE `player` SET `score` = '%i',`money` = '%i',`kills` ='%i',`deaths` = '%i',`admin` = '%i',`vip` = '%i' WHERE `name` = '%e' LIMIT 1", GetPlayerScore(playerid), GetPlayerMoney(playerid), PlayerData[playerid][Kills], PlayerData[playerid][Deaths], PlayerData[playerid][Admin], PlayerData[playerid][VIP], PlayerData[playerid][Name]);
  135. mysql_tquery(connection, query);
  136. return 1;
  137. }
  138.  
  139. public OnPlayerSpawn(playerid)
  140. {
  141. return 1;
  142. }
  143.  
  144. public OnPlayerDeath(playerid, killerid, reason)
  145. {
  146.  
  147. //mysql Account save
  148. if(killerid == INVALID_PLAYER_ID) return 0;
  149. if(PlayerIsLogged[killerid] == 0) return 0;
  150. if(PlayerIsLogged[playerid] == 0) return 0;
  151. PlayerData[killerid][Kills]++;
  152. PlayerData[playerid][Deaths]++;
  153. return 1;
  154. }
  155.  
  156. public OnVehicleSpawn(vehicleid)
  157. {
  158. return 1;
  159. }
  160.  
  161. public OnPlayerCommandPerformed(playerid, cmdtext[], success)
  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 OnPlayerTakeDamage(playerid, issuerid, Float: amount, weaponid,bodypart)
  177. {
  178. return 1;
  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. //Account MYSQL
  309. switch(dialogid)
  310. {
  311. case DIALOG_LOGIN:
  312. {
  313. if(!response) return Kick(playerid);
  314. new hashed_pass[129];
  315. WP_Hash(hashed_pass, sizeof(hashed_pass), inputtext);
  316. if(strcmp(hashed_pass, PlayerData[playerid][Password]) == 0) // if the player types correct password
  317. {
  318. PlayerIsLogged[playerid] = 1; // the player is logged in,
  319. }
  320. else // if the player types wrong password
  321. {
  322. ShowPlayerDialog(playerid, DIALOG_LOGIN, DIALOG_STYLE_PASSWORD, "Login", "LOGIN TEXT:", "Login", "Leave");
  323. }
  324. }
  325. case DIALOG_REGISTER:
  326. {
  327. if(!response) return Kick(playerid);
  328. if(strlen(inputtext) <= 3) return ShowPlayerDialog(playerid, DIALOG_REGISTER, DIALOG_STYLE_INPUT, "Register", "REGISTER TEXT:", "Register", "Leave");
  329. new query[256];
  330. mysql_format(connection, query, sizeof(query), "INSERT INTO `player` (`name`, `password`) VALUES ('%e', '%e')", PlayerData[playerid][Name], PlayerData[playerid][Password]);
  331. mysql_tquery(connection, query, "OnAccountCreate", "i", playerid);
  332. }
  333. }
  334. return 1;
  335. }
  336.  
  337. forward OnAccountCreate(playerid);
  338. public OnAccountCreate(playerid)
  339. {
  340. PlayerData[playerid][ID] = cache_insert_id();
  341. PlayerIsLogged[playerid] = 1; // sets the player to logged in.
  342. return 1;
  343. }
  344.  
  345. public OnPlayerClickPlayer(playerid, clickedplayerid, source)
  346. {
  347. return 1;
  348. }
  349.  
  350. stock GetName(playerid)
  351. {
  352. new name[MAX_PLAYER_NAME];
  353. GetPlayerName(playerid, name, sizeof(name));
  354. return name;
  355. }
  356.  
  357.  
  358. //Commands
  359. CMD:admins(playerid, params[])
  360. {
  361. new string[128];
  362. for(new i = 0; i <MAX_PLAYERS; i++)
  363. {
  364. if(PlayerData[i][Admin] >= 1)
  365. {
  366. GetPlayerName(i, PlayerData[i][Name], MAX_PLAYER_NAME);
  367. format(string, sizeof(string), "{FFFF00}------------------Online Administrators-------------------\nAdmin: %s, Level: %i", PlayerData[i][Name], PlayerData[i][Admin]);
  368. SendClientMessage(playerid, -1, string);
  369. }
  370. else
  371. {
  372. SendClientMessage(playerid, -1, "{FF0000}No administrators online.");
  373. }
  374. }
  375. return 1;
  376. }
  377.  
  378. CMD:stats(playerid, params[])
  379. {
  380. new playerID;
  381. if(sscanf(params, "i", playerID)) return SendClientMessage(playerid, -1, "{FFFF00}Usage: /stats <playerid>");
  382. if(IsPlayerConnected(playerID))
  383. {
  384. new string[256];
  385. GetPlayerName(playerid, PlayerData[playerID][Name], MAX_PLAYER_NAME);
  386. format(string, sizeof(string), "{FFFF00}Username: %s\nScore: %i\nMoney: %i\nKills: %i\nDeaths: %i,Admin Level: %i,VIP Level: %i", PlayerData[playerID][Name], GetPlayerScore(playerID), GetPlayerMoney(playerID), PlayerData[playerID][Kills], PlayerData[playerID][Deaths], PlayerData[playerID][Admin], PlayerData[playerID][VIP]);
  387. ShowPlayerDialog(playerid, DIALOG_STATS, DIALOG_STYLE_MSGBOX, "Player's Stats", string, "Close", "");
  388. }
  389. return 1;
  390. }
Add Comment
Please, Sign In to add comment