Guest User

ASDF

a guest
Dec 19th, 2013
92
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 5.63 KB | None | 0 0
  1. #include <a_samp>
  2.  
  3. native WP_Hash( buffer[ ], len, const str[ ] );
  4.  
  5. new DB:Database;
  6. enum DATOS_USERS
  7. {
  8. USER_ID,
  9. USER_NOMBRE[MAX_PLAYER_NAME],
  10. USER_PASSWORD[129],
  11. USER_ADMIN,
  12. bool: USER_LOGUEADO
  13. };
  14. new InfoJugador[MAX_PLAYERS][DATOS_USERS];
  15.  
  16. #define LOGIN 10
  17. #define REGISTRO 11
  18.  
  19. main()
  20. {
  21. print("\n----------------------------------");
  22. print(" Blank Gamemode by your name here");
  23. print("----------------------------------\n");
  24. }
  25.  
  26. public OnGameModeInit()
  27. {
  28. SetGameModeText("Blank Script");
  29. AddPlayerClass(0, 1958.3783, 1343.1572, 15.3746, 269.1425, 0, 0, 0, 0, 0, 0);
  30.  
  31. Database = db_open("server.db");
  32. /*db_query(Database, "PRAGMA synchronous = OFF");
  33. db_query(Database, "CREATE TABLE IF NOT EXISTS users (userid INTEGER PRIMARY KEY AUTOINCREMENT, username VARCHAR(24) COLLATE NOCASE, password VARCHAR(129), admin INTEGER DEFAULT 0 NOT NULL)");*/
  34. return 1;
  35. }
  36.  
  37. public OnGameModeExit()
  38. {
  39. /*db_close(Database);*/
  40. return 1;
  41. }
  42.  
  43. public OnPlayerRequestClass(playerid, classid)
  44. {
  45. SetPlayerPos(playerid, 1958.3783, 1343.1572, 15.3746);
  46. SetPlayerCameraPos(playerid, 1958.3783, 1343.1572, 15.3746);
  47. SetPlayerCameraLookAt(playerid, 1958.3783, 1343.1572, 15.3746);
  48. return 1;
  49. }
  50.  
  51. public OnPlayerConnect(playerid)
  52. {
  53. for(new i; i < _: DATOS_USERS; ++i) InfoJugador[playerid][DATOS_USERS: i] = 0;
  54.  
  55. //Login
  56. GetPlayerName(playerid, InfoJugador[playerid][USER_NOMBRE], MAX_PLAYER_NAME);
  57. new Query[82], DBResult: result;
  58. format(Query, sizeof(Query), "SELECT password FROM users WHERE username = '%s' LIMIT 0, 1", DB_Escape(InfoJugador[playerid][USER_NOMBRE]));
  59. result = db_query(Database, Query);
  60. if(db_num_rows(result))
  61. {
  62. db_get_field_assoc(result, "password", InfoJugador[playerid][USER_PASSWORD], 129);
  63. ShowPlayerDialog(playerid, LOGIN, DIALOG_STYLE_PASSWORD, "{FFFF00}Login", "Ingresa tu pawssword abajo para loguearte", "Login", "Salir");
  64. }
  65. else ShowPlayerDialog(playerid, REGISTRO, DIALOG_STYLE_INPUT, "{FFFF00}Registro", "Ingresa un password para registrarte", "Registrar", "Salir" );
  66. return 1;
  67. }
  68.  
  69. public OnPlayerDisconnect(playerid, reason)
  70. {
  71. for(new i; i < _: DATOS_USERS; ++i) InfoJugador[playerid][DATOS_USERS: i] = 0;
  72. if(InfoJugador[playerid][USER_LOGUEADO] == true)
  73. {
  74. new Query[72];
  75. format(Query, sizeof(Query), "UPDATE users SET admin = %d WHERE username = '%s'", InfoJugador[playerid][USER_ADMIN], DB_Escape(InfoJugador[playerid][USER_NOMBRE]));
  76. db_query(Database, Query);
  77. }
  78. return 1;
  79. }
  80.  
  81. public OnPlayerSpawn(playerid)
  82. {
  83. return 1;
  84. }
  85.  
  86. public OnPlayerDeath(playerid, killerid, reason)
  87. {
  88. return 1;
  89. }
  90.  
  91. //Funciones
  92. // Para evitar inyecciones sql.
  93. stock DB_Escape(text[])
  94. {
  95. new
  96. ret[80* 2],
  97. ch,
  98. i,
  99. j;
  100. while ((ch = text[i++]) && j < sizeof (ret))
  101. {
  102. if (ch == '\'')
  103. {
  104. if (j < sizeof (ret) - 2)
  105. {
  106. ret[j++] = '\'';
  107. ret[j++] = '\'';
  108. }
  109. }
  110. else if (j < sizeof (ret))
  111. {
  112. ret[j++] = ch;
  113. }
  114. else
  115. {
  116. j++;
  117. }
  118. }
  119. ret[sizeof (ret) - 1] = '\0';
  120. return ret;
  121. }
  122.  
  123. public OnDialogResponse(playerid, dialogid, response, listitem, inputtext[])
  124. {
  125. switch(dialogid)
  126. {
  127. case REGISTRO:
  128. {
  129. if(response)
  130. {
  131. if(strlen(inputtext) < 3 || strlen(inputtext) > 24)
  132. {
  133. SendClientMessage( playerid, 0xFF0000FF, "[ERROR]: Ingresa un password de 3 a 24 caracteres" );
  134. ShowPlayerDialog( playerid, REGISTRO, DIALOG_STYLE_PASSWORD, "{FFFF00}Registro", "Ingresa un password para registrar esta cuenta", "Registrar", "Salir" );
  135. return 1;
  136. }
  137. new Query[208];
  138. WP_Hash(InfoJugador[playerid][USER_PASSWORD], 129, inputtext);
  139. format(Query, sizeof(Query), "INSERT INTO users (username, password) VALUES ('%s', '%s')", DB_Escape(InfoJugador[playerid][USER_NOMBRE]), DB_Escape(InfoJugador[playerid][USER_PASSWORD]));
  140. db_query(Database, Query);
  141. InfoJugador[playerid][USER_LOGUEADO] = true;
  142. SendClientMessage(playerid, 0x00FF00FF, "[SERVIDOR]: Gracias por registrarte en nuestro servidor! Te has logueado automáticamente");
  143. } else Kick(playerid);
  144. }
  145.  
  146. case LOGIN:
  147. {
  148. if(response)
  149. {
  150. new buf[129];
  151. WP_Hash(buf, 129, inputtext);
  152. if(!strcmp(buf, InfoJugador[playerid][USER_PASSWORD], false))
  153. {
  154. new Query[75];
  155. new DBResult:Result;
  156. format(Query, sizeof(Query), "SELECT * FROM users WHERE username = '%s' LIMIT 0, 1", DB_Escape(InfoJugador[playerid][USER_NOMBRE] ) );
  157. Result = db_query(Database, Query);
  158. if(db_num_rows(Result))
  159. {
  160. db_get_field_assoc(Result, "userid", Query, 7);
  161. InfoJugador[playerid][USER_ID] = strval(Query);
  162.  
  163. db_get_field_assoc(Result, "admin", Query, 3);
  164. InfoJugador[playerid][USER_ADMIN] = strval(Query);
  165.  
  166. InfoJugador[playerid][USER_LOGUEADO] = true;
  167. SendClientMessage( playerid, 0x00FF00FF, "[SERVIDOR]: Has ingresado correctamente a tu cuenta!" );
  168. }
  169. db_free_result(Result);
  170. }
  171. else
  172. {
  173. SendClientMessage(playerid, 0xFF0000FF, "[ERROR]: Password incorrecto!" );
  174. ShowPlayerDialog(playerid, LOGIN, DIALOG_STYLE_PASSWORD, "{FFFF00}Login", "Ingresa tu password para ingresar a tu cuenta", "Login", "Salir");
  175. }
  176. } else Kick(playerid);
  177. }
  178. }
  179. return 1;
  180. }
Advertisement
Add Comment
Please, Sign In to add comment