Advertisement
Guest User

Untitled

a guest
Aug 15th, 2017
60
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 9.37 KB | None | 0 0
  1. #include <a_samp>
  2. #include <a_mysql>
  3. #include <ZCMD>
  4.  
  5. #define DHOST "PUT YOUR HOST INFO HERE"
  6. #define DUSER "PUT YOUR PHPMYADMIN USERNAME HERE"
  7. #define DPASS "PUT YOUR PHPMYADMIN PASSWORD HERE"
  8. #define DDB "PUT THE DATABASE NAME HERE (IN OUR CASE sa-mp)"
  9.  
  10. #define DIALOG_LOGIN 100
  11. #define DIALOG_REGISTER 101
  12.  
  13. #define gLOGIN 1
  14. #define gREGISTRATION 2
  15. #define gINIT 3
  16. #define gSAVE 4
  17. #define gNEWUSER 5
  18.  
  19. #define GREEN 0x33AA33AA
  20. #define RED 0xAA3333AA
  21. #define YELLOW 0xFFFF00AA
  22. #define ORANGE 0xFF9900AA
  23. #define WHITE 0xFFFFFFAA
  24.  
  25. main(){}
  26.  
  27. enum pInfo
  28. {
  29. Username[25],
  30. Password[50],
  31. PlayerIP[19],
  32. pScore[9],
  33. pMoney[9]
  34.  
  35. };
  36. new PlayerInfo[MAX_PLAYERS][pInfo];
  37.  
  38. public OnGameModeInit()
  39. {
  40. mysql_debug(1);
  41. mysql_connect(DHOST, DUSER, DDB, DPASS);
  42.  
  43. SetGameModeText("Server");
  44. AddPlayerClass(0, 1958.3783, 1343.1572, 15.3746, 269.1425, 0, 0, 0, 0, 0, 0);
  45. return 1;
  46. }
  47.  
  48. public OnGameModeExit()
  49. {
  50. mysql_close();
  51. return 1;
  52. }
  53.  
  54. public OnPlayerConnect(playerid)
  55. {
  56. CheckUser(playerid);
  57. return 1;
  58. }
  59.  
  60. public OnPlayerDisconnect(playerid)
  61. {
  62. SaveUser(playerid);
  63. return 1;
  64. }
  65.  
  66. public OnPlayerSpawn(playerid)
  67. {
  68. return 1;
  69. }
  70.  
  71. stock GetName(playerid)
  72. {
  73. new pName[MAX_PLAYER_NAME];
  74. GetPlayerName(playerid, pName, sizeof(pName));
  75. return pName;
  76. }
  77.  
  78. stock GetIp(playerid)
  79. {
  80. new Ip[16];
  81. GetPlayerIp(playerid, Ip, sizeof(Ip));
  82. return Ip;
  83. }
  84.  
  85. stock CheckUserLogin(playerid, password[])
  86. {
  87. new Query[400]; format(Query, sizeof(Query), "SELECT * FROM `names` WHERE username = '%s' AND password = '%s';",GetName(playerid), password);
  88. mysql_query(Query);
  89. return 1;
  90. }
  91.  
  92. stock CreateUser(playerid, password[])
  93. {
  94. new Query[400];
  95. format(Query, sizeof(Query), "INSERT INTO `names` (`Username`, `Password`, `PlayerIP`) VALUES('%s', '%s', '%s')", GetName(playerid), password, GetIp(playerid));
  96. mysql_query(Query, gNEWUSER, playerid);
  97.  
  98. SendClientMessage(playerid, YELLOW, "Account created, you should be logged in any second now.");
  99. LoginUser(playerid);
  100. }
  101.  
  102. stock SaveUser(playerid)
  103. {
  104. new query[400];
  105. format(query, sizeof(query), "UPDATE `names` SET `Score` = %d WHERE `Username` = '%s'", GetPlayerScore(playerid), GetName(playerid));
  106. mysql_query(query, gSAVE);
  107. }
  108.  
  109. stock CheckUser(playerid)
  110. {
  111. new Query[400];
  112. format(Query, sizeof(Query), "SELECT * FROM `names` WHERE `Username` = '%s'",GetName(playerid));
  113. mysql_query(Query, gINIT, playerid);
  114. return 1;
  115. }
  116.  
  117. stock LoginUser(playerid)
  118. {
  119. new Query[400];
  120. format(Query, sizeof(Query), "SELECT * FROM `names` WHERE `Username` = '%s'", GetName(playerid));
  121. mysql_query(Query, gLOGIN, playerid);
  122. return 1;
  123. }
  124.  
  125. public OnQueryFinish(query[], resultid, extraid, connectionHandle)
  126. {
  127. switch(resultid)
  128. {
  129. case gINIT:
  130. {
  131. mysql_store_result();
  132. if(mysql_num_rows() > 0) ShowPlayerDialog(extraid, DIALOG_LOGIN, DIALOG_STYLE_INPUT, "Server", "Please enter your password to login", "Login", "Cancel");
  133. else ShowPlayerDialog(extraid, DIALOG_REGISTER, DIALOG_STYLE_INPUT, "Server", "Please insert a password with between 3 and 15 characters!", "Register", "Cancel");
  134. mysql_free_result();
  135. }
  136. case gLOGIN:
  137. {
  138. mysql_store_result();
  139. sscanf(query, "p<|>s[24]s[16]s[19]d[9]d[9]", PlayerInfo[extraid]);
  140. print(query);
  141. mysql_free_result();
  142.  
  143. SetPlayerScore(extraid, PlayerInfo[extraid][pScore]);
  144. SendClientMessage(extraid, YELLOW, "You have successfully logged in!");
  145.  
  146. new query2[128];
  147. format(query2, sizeof(query2), "UPDATE `names` SET `PlayerIP` = '%s' WHERE `Username` = '%s'", GetIp(extraid), GetName(extraid));
  148. mysql_query(query2);
  149. }
  150. case gSAVE: return 1;
  151. case gREGISTRATION: return 1;
  152. case gNEWUSER: return 1;
  153. }
  154. return 1;
  155. }
  156.  
  157. public OnDialogResponse(playerid, dialogid, response, listitem, inputtext[])
  158. {
  159. switch(dialogid)
  160. {
  161. case DIALOG_LOGIN:
  162. {
  163. if(CheckUserLogin(playerid,inputtext)) LoginUser(playerid);
  164. SetPlayerScore(playerid, PlayerInfo[playerid][pScore]);
  165. GivePlayerMoney(playerid, PlayerInfo[playerid][pMoney]);
  166. else ShowPlayerDialog(playerid, DIALOG_LOGIN, DIALOG_STYLE_INPUT, "That account is not in the database!", "I'm sorry, That password was incorrect! Try again!", "Login", "Cancel");
  167. }
  168. case DIALOG_REGISTER:
  169. {
  170. if(response)
  171. {
  172. if(strlen(inputtext) >= 3 && strlen(inputtext) <= 15) CreateUser(playerid, inputtext);
  173. else
  174. {
  175. SendClientMessage(playerid, YELLOW, "Password has to contain between 3 and 15 letters / numbers.");
  176. ShowPlayerDialog(playerid, DIALOG_REGISTER, DIALOG_STYLE_INPUT, "Server", "Please insert a password with between 3 and 15 characters!", "Register", "Cancel");
  177. }
  178.  
  179. }
  180. }
  181. }
  182. return 0;
  183. }
  184.  
  185. stock sscanf(string[], format[], {Float,_}:...)
  186. {
  187. new
  188. formatPos = 0,
  189. stringPos = 0,
  190. paramPos = 2,
  191. paramCount = numargs();
  192. while (paramPos < paramCount && string[stringPos])
  193. {
  194. switch (format[formatPos++])
  195. {
  196. case '\0':
  197. {
  198. return 0;
  199. }
  200. case 'i', 'd':
  201. {
  202. new
  203. neg = 1,
  204. num = 0,
  205. ch = string[stringPos];
  206. if (ch == '-')
  207. {
  208. neg = -1;
  209. ch = string[++stringPos];
  210. }
  211. do
  212. {
  213. stringPos++;
  214. if (ch >= '0' && ch <= '9')
  215. {
  216. num = (num * 10) + (ch - '0');
  217. }
  218. else
  219. {
  220. return 1;
  221. }
  222. }
  223. while ((ch = string[stringPos]) && ch != ' ');
  224. setarg(paramPos, 0, num * neg);
  225. }
  226. case 'h', 'x':
  227. {
  228. new
  229. ch,
  230. num = 0;
  231. while ((ch = string[stringPos++]))
  232. {
  233. switch (ch)
  234. {
  235. case 'x', 'X':
  236. {
  237. num = 0;
  238. continue;
  239. }
  240. case '0' .. '9':
  241. {
  242. num = (num << 4) | (ch - '0');
  243. }
  244. case 'a' .. 'f':
  245. {
  246. num = (num << 4) | (ch - ('a' - 10));
  247. }
  248. case 'A' .. 'F':
  249. {
  250. num = (num << 4) | (ch - ('A' - 10));
  251. }
  252. case ' ':
  253. {
  254. break;
  255. }
  256. default:
  257. {
  258. return 1;
  259. }
  260. }
  261. }
  262. setarg(paramPos, 0, num);
  263. }
  264. case 'c':
  265. {
  266. setarg(paramPos, 0, string[stringPos++]);
  267. }
  268. case 'f':
  269. {
  270. new tmp[25];
  271. strmid(tmp, string, stringPos, stringPos+sizeof(tmp)-2);
  272. setarg(paramPos, 0, _:floatstr(tmp));
  273. }
  274. case 's', 'z':
  275. {
  276. new
  277. i = 0,
  278. ch;
  279. if (format[formatPos])
  280. {
  281. while ((ch = string[stringPos++]) && ch != ' ')
  282. {
  283. setarg(paramPos, i++, ch);
  284. }
  285. if (!i) return 1;
  286. }
  287. else
  288. {
  289. while ((ch = string[stringPos++]))
  290. {
  291. setarg(paramPos, i++, ch);
  292. }
  293. }
  294. stringPos--;
  295. setarg(paramPos, i, '\0');
  296. }
  297. default:
  298. {
  299. continue;
  300. }
  301. }
  302. while (string[stringPos] && string[stringPos] != ' ')
  303. {
  304. stringPos++;
  305. }
  306. while (string[stringPos] == ' ')
  307. {
  308. stringPos++;
  309. }
  310. paramPos++;
  311. }
  312. while (format[formatPos] == 'z') formatPos++;
  313. return format[formatPos];
  314. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement