Guest User

Untitled

a guest
Oct 26th, 2017
136
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 10.96 KB | None | 0 0
  1. #include <a_samp>
  2. #include <mysql>
  3. #include <ZCMD>
  4. #include <sscanf>
  5. //#include <zones>
  6.  
  7. //=====
  8.  
  9. #define DHOST ""
  10. #define DUSER ""
  11. #define DPASS ""
  12. #define DDB ""
  13.  
  14. //=====
  15.  
  16. #define DIALOG_LOGIN 100
  17. #define DIALOG_REGISTER 101
  18. #define DIALOG_MYINFO 105
  19. #define DIALOG_SUGGESTION 106
  20.  
  21. //=====
  22.  
  23. #define SERVERNAME "Welcome to the server!"
  24. #define SERVER "Server"
  25.  
  26. //=====
  27.  
  28. #define cGREEN 0x33AA33AA
  29. #define cRED 0xAA3333AA
  30. #define cYELLOW 0xFFFF00AA
  31. #define cLIGHTBLUE 0x33CCFFAA
  32. #define cORANGE 0xFF9900AA
  33. #define cWHITE 0xFFFFFFAA
  34.  
  35. //=====
  36.  
  37. main() { }
  38.  
  39. enum pInfo
  40. {
  41. UserID,
  42. Username[25],
  43. Password[50],
  44. PlayerIP[19],
  45. pScore,
  46. pMoney,
  47. pLevel
  48. };
  49. new PlayerInfo[MAX_PLAYERS][pInfo];
  50.  
  51. public OnGameModeInit()
  52. {
  53. SetGameModeText(SERVER);
  54. InitMysqlConnection();
  55. AddPlayerClass(0, 1958.3783, 1343.1572, 15.3746, 269.1425, 0, 0, 0, 0, 0, 0);
  56. // In OnGameModeInit
  57. return 1;
  58. }
  59.  
  60. public OnGameModeExit()
  61. {
  62. return 1;
  63. }
  64.  
  65. public OnPlayerConnect(playerid)
  66. {
  67. if(CheckUser(playerid))
  68. {
  69. ShowPlayerDialog(playerid, DIALOG_LOGIN, DIALOG_STYLE_INPUT, "Enter your password.", "Please enter your password below.", "Login", "Cancel");
  70. }
  71. else
  72. {
  73. ShowPlayerDialog(playerid, DIALOG_REGISTER, DIALOG_STYLE_INPUT, SERVERNAME, "Please insert a password with between 3 and 15 characters!", "Register", "Cancel");
  74. }
  75. //other code here.
  76. return 1;
  77. }
  78.  
  79. public OnPlayerDisconnect(playerid)
  80. {
  81. SaveUser(playerid);
  82. return 1;
  83. }
  84.  
  85. public OnPlayerSpawn(playerid)
  86. {
  87. return 1;
  88. }
  89.  
  90. //=========Commands==========
  91. CMD:suggestion(playerid, params[])
  92. {
  93. ShowPlayerDialog(playerid, DIALOG_SUGGESTION, DIALOG_STYLE_INPUT, SERVERNAME, "Insert your suggestion below!", "Submit", "Cancel");
  94. }
  95.  
  96. CMD:myinfo(playerid, params[])
  97. {
  98. new string[200];
  99. format(string,sizeof(string),"Your IP: %s \r\nYour Name: %s \r\nYour Score: %d \r\nYour Ping: %d",GetIp(playerid), GetName(playerid), PlayerInfo[playerid][pScore], GetPlayerPing(playerid));
  100. ShowPlayerDialog(playerid, DIALOG_MYINFO, DIALOG_STYLE_MSGBOX, "Player Info", string, "Finished", "Cancel");
  101. return 1;
  102. }
  103.  
  104. CMD:score(playerid, params[])
  105. {
  106. SetPlayerScore(playerid, GetPlayerScore(playerid) + 10);
  107. GivePlayerMoney(playerid, GetPlayerMoney(playerid) + 10);
  108. return 1;
  109. }
  110.  
  111. COMMAND:fix(playerid,params[])
  112. {
  113. if(IsPlayerInAnyVehicle(playerid))
  114. {
  115. if(GetPlayerMoney(playerid) > 400)
  116. {
  117. RepairVehicle(GetPlayerVehicleID(playerid));
  118. GivePlayerMoney(playerid, -500);
  119. SendClientMessage(playerid, cGREEN, "You vehicle has been repaired");
  120. }
  121. else
  122. {
  123. SendClientMessage(playerid, cRED, "You dont have enough money to use this service!");
  124. }
  125. }
  126. else
  127. {
  128. SendClientMessage(playerid, cRED, "You arnt currently in a vehicle");
  129. }
  130. return 1;
  131. }
  132. /*
  133. CMD:pm(playerid, params[])
  134. {
  135. new pId;
  136. new pName[MAX_PLAYER_NAME];
  137. new string[256];
  138. GetPlayerName(pId,pName,sizeof(pName));
  139. format(string,sizeof(string),"[Administrator]: %s (%d) Has Set %s's (%d) Level To %d.",pName,
  140. );
  141. */
  142.  
  143.  
  144.  
  145. CMD:setlevel(playerid, params[])
  146. {
  147. new pId, alevel;
  148. if(PlayerInfo[playerid][pLevel] >= 5 || IsPlayerAdmin(playerid))
  149. {
  150. if(sscanf(params, "dd", pId, alevel)) return SendClientMessage(playerid, cYELLOW, "Usage: /setlvl [ID] [0 - 5]");
  151. else if(!IsPlayerConnected(pId)) return SendClientMessage(playerid, cRED, "The ID You Entered Was Not Found.");
  152. else if(alevel < 0) return SendClientMessage(playerid, cYELLOW, "Usage: /setlvl [ID] [0 - 5]");
  153. else if(alevel > 5) return SendClientMessage(playerid, cYELLOW, "Usage: /setlvl [ID] [0 - 5]");
  154. else
  155. {
  156. new pName[MAX_PLAYER_NAME], pName2[MAX_PLAYER_NAME];
  157. new string[256],string2[256];
  158. GetPlayerName(playerid,pName,sizeof(pName));
  159. GetPlayerName(pId,pName2,sizeof(pName2));
  160. format(string,sizeof(string),"[Administrator]: %s (%d) Has Set %s's (%d) Level To %d.",pName,playerid,pName2,pId,alevel);
  161. format(string2,sizeof(string2),"SERVER: %s (%d) Has Set Your Level To %d.",pName,playerid,alevel);
  162. SendClientMessageToAll(cYELLOW,string);
  163. SendClientMessage(pId,cYELLOW,string2);
  164. PlayerInfo[playerid][pLevel] = alevel;
  165. }
  166. }
  167. else
  168. {
  169. return 0;
  170. }
  171. return 1;
  172. }
  173.  
  174. //=====Stocks======
  175. stock InitMysqlConnection()
  176. {
  177. mysql_init(LOG_ONLY_ERRORS, 1);
  178. mysql_connect(DHOST, DUSER, DPASS, DDB);
  179. }
  180.  
  181. stock GetIp(playerid)
  182. {
  183. new Ip[16];
  184. GetPlayerIp(playerid, Ip, sizeof(Ip));
  185. return Ip;
  186. }
  187.  
  188. stock GetName(playerid)
  189. {
  190. new pName[MAX_PLAYER_NAME];
  191. GetPlayerName(playerid, pName, sizeof(pName));
  192. return pName;
  193. }
  194.  
  195. stock CheckUserLogin(playerid, password[])
  196. {
  197. new Query[200]; format(Query, sizeof(Query), "SELECT * FROM `names` WHERE username = '%s' AND password = '%s';",GetName(playerid), password);
  198. mysql_query(Query);
  199. mysql_store_result();
  200. if(mysql_num_rows()) return 1;
  201. return 0;
  202. }
  203.  
  204. stock CreateUser(playerid, password[])
  205. {
  206. new Query[400];
  207. format(Query, sizeof(Query), "INSERT INTO `names` (`UserID`,`Username`, `Password`, `PlayerIP`) VALUES (NULL,'%s', '%s', '%s')", GetName(playerid), password, GetIp(playerid));
  208.  
  209. mysql_query(Query);
  210.  
  211. SendClientMessage(playerid, cYELLOW, "Account created, you should be logged in any second now.");
  212. LoginUser(playerid);
  213. }
  214.  
  215. stock SaveSuggestion(playerid, suggestion[])
  216. {
  217. new Query[400];
  218. format(Query, sizeof(Query), "INSERT INTO `suggestions` (`Username`, `Suggestion`) VALUES('%s', '%s')", GetName(playerid), suggestion);
  219. mysql_query(Query);
  220.  
  221. SendClientMessage(playerid, cYELLOW, "Thank you for your suggestion! An admin will review this shortly!");
  222. }
  223.  
  224. COMMAND:report(playerid, params[])
  225. {
  226. new warnID, aReason[250], warnname[25];
  227. if(sscanf(params,"ds",warnID, aReason)) return SendClientMessage(playerid, cRED, "/report (playerid) (reason)");
  228. if(!IsPlayerConnected(playerid)) return SendClientMessage(playerid, cRED,"Player not connected.");
  229. if(warnID == playerid) return SendClientMessage(playerid, cRED,"You cannot report yourself!");
  230. new Query[400], string[198];
  231. format(string, 198, "You have reported %s for '%s'",warnname, aReason);
  232. SendClientMessage(playerid, cWHITE, string);
  233. GetPlayerName(warnID,warnname,25);
  234. format(Query, sizeof(Query), "INSERT INTO `reports` (`Reported`, `Reporter`, `Reason`) VALUES('%s', '%s', '%s')", warnname, GetName(playerid), aReason);
  235. mysql_query(Query);
  236. return 1;
  237. }
  238.  
  239. stock CheckUser(playerid)
  240. {
  241. new Query[300]; format(Query, sizeof(Query), "SELECT * FROM `names` WHERE `Username` = '%s'",GetName(playerid));
  242. mysql_query(Query);
  243. mysql_store_result();
  244. if(mysql_num_rows()) return 1;
  245. return 0;
  246. }
  247. stock LoginUser(playerid)
  248. {
  249. new Query[300], Result[128], fields[7][50];
  250. format(Query, sizeof(Query), "SELECT * FROM `names` WHERE `Username` = '%s'", GetName(playerid));
  251. mysql_query(Query);
  252. mysql_store_result();
  253. mysql_fetch_row(Result);
  254. split(Result, fields, '|');
  255. for(new i; i < 7; i++)
  256. {
  257. print(fields[i]);
  258. }
  259. /*
  260. PlayerInfo[playerid][UserID] = strval(fields[0]);
  261. PlayerInfo[playerid][Username] = fields[1];
  262. PlayerInfo[playerid][Password] = fields[2];
  263. PlayerInfo[playerid][PlayerIP] = fields[3];
  264. PlayerInfo[playerid][pScore] = strval(fields[4]);
  265. PlayerInfo[playerid][pMoney] = strval(fields[5]);
  266. PlayerInfo[playerid][pLevel] = strval(fields[6]);
  267. */
  268. mysql_free_result();
  269.  
  270. GivePlayerMoney(playerid, PlayerInfo[playerid][pMoney]);
  271. SetPlayerScore(playerid, PlayerInfo[playerid][pScore]);
  272. SendClientMessage(playerid, cYELLOW, "You have successfully logged in!");
  273.  
  274. new query2[200];
  275. format(query2, sizeof(query2), "UPDATE `names` SET `PlayerIP` = '%s' WHERE `Username` = '%s'", GetIp(playerid), GetName(playerid));
  276. mysql_query(query2);
  277. return 1;
  278. }
  279.  
  280.  
  281. stock SaveUser(playerid)
  282. {
  283. new query[400];
  284. format(query, sizeof(query), "UPDATE `names` SET `Score` = %d, `Money` = %d, `pLevel` = %d WHERE `Username` = '%s'", GetPlayerScore(playerid), GetPlayerMoney(playerid), PlayerInfo[playerid][pLevel], GetName(playerid));
  285. mysql_query(query);
  286. }
  287. public OnDialogResponse(playerid, dialogid, response, listitem, inputtext[])
  288. {
  289. switch(dialogid)
  290. {
  291. case DIALOG_LOGIN:
  292. {
  293. if(CheckUserLogin(playerid,inputtext))
  294. {
  295. LoginUser(playerid);
  296. }
  297. else
  298. {
  299. ShowPlayerDialog(playerid, DIALOG_LOGIN, DIALOG_STYLE_INPUT, "Incorrect username or password.", "That password was incorrect! Try again!", "Login", "Cancel");
  300. }
  301. }
  302. case DIALOG_REGISTER:
  303. {
  304. if(response)
  305. {
  306. if(strlen(inputtext) >= 3 && strlen(inputtext) <= 15)
  307. {
  308. CreateUser(playerid, inputtext);
  309. }
  310. else
  311. {
  312. SendClientMessage(playerid, cYELLOW, "Password has to contain between 3 and 15 letters / numbers.");
  313. ShowPlayerDialog(playerid, DIALOG_REGISTER, DIALOG_STYLE_INPUT, SERVERNAME, "Please insert a password with between 3 and 15 characters!", "Register", "Cancel");
  314. }
  315. }
  316. }
  317. case DIALOG_SUGGESTION:
  318. {
  319. if(response)
  320. {
  321. if(strlen(inputtext) >= 10 && strlen(inputtext) <= 250)
  322. {
  323. SaveSuggestion(playerid, inputtext);
  324. }
  325. else
  326. {
  327. SendClientMessage(playerid, cYELLOW, "Suggestion has to contain between 10 and 250 words/numbers.");
  328. }
  329. }
  330. }
  331. }
  332. return 0;
  333. }
Add Comment
Please, Sign In to add comment