Guest User

Untitled

a guest
Feb 21st, 2022
45
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 5.56 KB | None | 0 0
  1. #include < a_samp >
  2. #include < streamer >
  3. #include < sscanf2 >
  4. #include < YSI\y_iterate >
  5. #include < a_mysql >
  6.  
  7. #define mysql_host "localhost"
  8. #define mysql_user "root"
  9. #define mysql_pass ""
  10. #define mysql_database "test_database"
  11.  
  12. new PogresnaLozinka[MAX_PLAYERS];
  13.  
  14. new MySQL:Database;
  15.  
  16. enum {
  17. d_reg,
  18. d_log
  19. }
  20.  
  21. enum PlayerInfo{
  22. ID,
  23. Name[25],
  24. Password[65],
  25. Kills,
  26. Deaths,
  27. Cash,
  28. Score
  29. }
  30. new PI[MAX_PLAYERS][PlayerInfo];
  31.  
  32. main() {
  33. print("Mod je uspjesno ucitan");
  34. }
  35.  
  36. public OnGameModeInit() {
  37. Database = mysql_connect(mysql_host, mysql_user, mysql_pass, mysql_database);
  38. if(Database == MYSQL_INVALID_HANDLE || mysql_errno(Database) != 0) {
  39. print("Connecting to MySQL database failed");
  40. SendRconCommand("exit");
  41. return (false);
  42. }
  43. return (true);
  44. }
  45.  
  46. public OnGameModeExit() {
  47. foreach(new a: Player) {
  48. SavePlayer(a);
  49. }
  50. mysql_close(Database);
  51. return (true);
  52. }
  53.  
  54. public OnPlayerConnect(playerid) {
  55. new DB_Query[115];
  56. GetPlayerName(playerid, PI[playerid][Name], MAX_PLAYER_NAME);
  57. mysql_format(Database, DB_Query, sizeof(DB_Query), "SELECT * FROM `users` WHERE `Username` = '%e' LIMIT 1", PI[playerid][Name]);
  58. mysql_tquery(Database, DB_Query, "OnPlayerDataCheck", "i", playerid);
  59. //++
  60. PogresnaLozinka[playerid] = 0;
  61. return (true);
  62. }
  63.  
  64. public OnDialogResponse(playerid, dialogid, response, listitem, inputtext[]) {
  65. switch(dialogid) {
  66. case d_reg: {
  67. if(strlen(inputtext) < 6 || strlen(inputtext) > 24) {
  68. SendClientMessage(playerid, -1, "Lozinka ne moze ici ispod 6 i iznad 24 karaktera");
  69. ShowPlayerDialog(playerid, d_reg, DIALOG_STYLE_PASSWORD, "Registracija na server","Molimo vas unesite vasu lozinku kako bi ste se registrirali na server","Register","Quit");
  70. return (false);
  71. }
  72. else {
  73. new DB_Query[256];
  74. SHA256_PassHash(inputtext, GetName(playerid), PI[playerid][Password], 65);
  75. mysql_format(Database, DB_Query, sizeof(DB_Query), "INSERT INTO `users` (`Username`, `Password`, `Score`, `Kills`, `Cash`, `Deaths`)\
  76. VALUES ('%e', '%s','0', '0', '0', '0')", PI[playerid][Name], PI[playerid][Password]);
  77. mysql_tquery(Database, DB_Query);
  78. SetSpawnInfo(playerid, 0, 26, 1958.33, 1343.12, 15.36, 269.15, 0, 0, 0, 0, 0, 0);
  79. SpawnPlayer(playerid);
  80. SetPlayerScore(playerid, PI[playerid][Score]);
  81. GivePlayerMoney(playerid, PI[playerid][Cash]);
  82. }
  83. }
  84. case d_log: {
  85. if(strlen(inputtext) < 6 || strlen(inputtext) > 24) {
  86. SendClientMessage(playerid, -1, "Lozinka ne moze ici ispod 6 i iznad 24 karaktera");
  87. ShowPlayerDialog(playerid, d_reg, DIALOG_STYLE_PASSWORD, "Registracija na server","Molimo vas unesite vasu lozinku kako bi ste se registrirali na server","Register","Quit");
  88. return (false);
  89. }
  90. else {
  91. new DB_Query[120], accpass[65];
  92. SHA256_PassHash(accpass, GetName(playerid), PI[playerid][Password], sizeof(accpass));
  93. if(strcmp(accpass, PI[playerid][Password]) != 0) {
  94. PogresnaLozinka[playerid]++;
  95. if(PogresnaLozinka[playerid] == 3) {
  96. Kick(playerid);
  97. }
  98. else {
  99. SendClientMessage(playerid, -1, "Ta lozinka nije povezana sa tim racunom");
  100. ShowPlayerDialog(playerid, d_log, DIALOG_STYLE_PASSWORD, "Prijava na server","Molimo vas unesite vasu lozinku kako bi ste se prijavili na server","Login","Quit");
  101. return (false);
  102. }
  103. }
  104. mysql_format(Database, DB_Query, sizeof(DB_Query),"SELECT * FROM `users` WHERE `Username` = '%e' LIMIT 1", PI[playerid][Name]);
  105. mysql_tquery(Database, DB_Query, "LoadAcc", "i", playerid);
  106. //++
  107. SetPlayerScore(playerid, PI[playerid][Score]);
  108. GivePlayerMoney(playerid, PI[playerid][Cash]);
  109. SetSpawnInfo(playerid, 0,26,1328.1277,-1558.4608,13.5469, 139.9262, 0,0,0,0,0,0);
  110. SpawnPlayer(playerid);
  111. }
  112. }
  113. }
  114. return (true);
  115. }
  116.  
  117. public OnPlayerDeath(playerid, killerid, reason) {
  118. PI[killerid][Kills]++;
  119. PI[playerid][Deaths]++;
  120. SavePlayer(killerid); SavePlayer(playerid);
  121. return (true);
  122. }
  123.  
  124. public OnPlayerDisconnect(playerid, reason) {
  125. SavePlayer(playerid);
  126. return (true);
  127. }
  128.  
  129. forward OnPlayerDataCheck(playerid);
  130. public OnPlayerDataCheck(playerid) {
  131. new rows;
  132. cache_get_row_count(rows);
  133. if(rows > 0) {
  134. cache_get_value(0, "Password", PI[playerid][Password], 65);
  135. ShowPlayerDialog(playerid, d_log, DIALOG_STYLE_PASSWORD, "Prijava na server","Molimo vas unesite vasu lozinku kako bi ste se prijavili na server","Login","Quit");
  136. }
  137. else {
  138. ShowPlayerDialog(playerid, d_reg, DIALOG_STYLE_PASSWORD, "Registracija na server","Molimo vas unesite vasu lozinku kako bi ste se registrirali na server","Register","Quit");
  139. }
  140. return (true);
  141. }
  142.  
  143. forward LoadAcc(playerid);
  144. public LoadAcc(playerid){
  145. new rows;
  146. cache_get_row_count(rows);
  147. if(!rows) return (false);
  148. else {
  149. cache_get_value_int(0, "ID", PI[playerid][ID]);
  150. cache_get_value_int(0, "Kills", PI[playerid][Kills]);
  151. cache_get_value_int(0, "Deaths", PI[playerid][Deaths]);
  152. cache_get_value_int(0, "Score", PI[playerid][Score]);
  153. cache_get_value_int(0, "Cash", PI[playerid][Cash]);
  154. }
  155. return(true);
  156. }
  157.  
  158. stock SavePlayer(playerid) {
  159. new DB_Query[256];
  160. mysql_format(Database, DB_Query, sizeof(DB_Query), "UPDATE `users` SET `Score` = %d, `Cash` = %d, `Kills` = %d, `Deaths` = %d WHERE `ID` = %d LIMIT 1",
  161. PI[playerid][Score], PI[playerid][Cash], PI[playerid][Kills], PI[playerid][Deaths], PI[playerid][ID]);
  162. mysql_tquery(Database, DB_Query);
  163. return (true);
  164. }
  165.  
  166. stock GetName(playerid) {
  167. new name[MAX_PLAYER_NAME];
  168. GetPlayerName(playerid, name, sizeof(name));
  169. return name;
  170. }
Advertisement
Add Comment
Please, Sign In to add comment