Advertisement
Guest User

Untitled

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