Advertisement
fzbian

gamemode error

Jun 21st, 2021 (edited)
114
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C# 4.74 KB | None | 0 0
  1. #include <a_samp>
  2. #include <core>
  3. #include <float>
  4. #include <Pawn.CMD>
  5. native WP_Hash(buffer[], len, const str[]);
  6.  
  7. #pragma tabsize 0
  8.  
  9. enum USER_DATA {
  10.     USER_ID,
  11.     USER_NAME[MAX_PLAYER_NAME],
  12.     USER_PASSWORD[129],
  13.     USER_ADMIN
  14. };
  15. enum {
  16.     DIALOG_REGISTER, // DIALOG_REGISTER is 0
  17.     DIALOG_LOGIN // DIALOG_LOGIN is 1
  18. };
  19.  
  20. new
  21.     User[MAX_PLAYERS][USER_DATA];
  22.  
  23. new DB:Database;
  24. ConnectDatabase() {
  25.     //if(Database == DB:0) {
  26.     if((Database = db_open("usrp.db")) == DB:0) {
  27.         print("[DB] No fue posible hacer conexion con la base de datos.\n");
  28.         SendRconCommand("exit");
  29.     } else {
  30.         db_query(Database, "PRAGMA synchronous = OFF");
  31.         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)");
  32.         print("[DB] La base de datos fue conectada correctamente.\n");
  33.     } return 1;
  34. }
  35.  
  36. public OnPlayerConnect(playerid) {
  37.     new tmp[USER_DATA];
  38.     User[playerid] = tmp;
  39.     GetPlayerName(playerid, User[playerid][USER_NAME], MAX_PLAYER_NAME);
  40.     new Query[82], DBResult: Result;
  41.     format(Query, sizeof Query, "SELECT password FROM users WHERE username = '%q' LIMIT 1", User[playerid][USER_NAME]);
  42.     Result = db_query(Database, Query);
  43.     if (db_num_rows(Result)) {
  44.         db_get_field_assoc(Result, "password", User[playerid][USER_PASSWORD], 129);
  45.         ShowPlayerDialog(playerid, DIALOG_LOGIN, DIALOG_STYLE_PASSWORD, "Ingresar", "Ingresa tu contraseña para ingresar.", "Ingresar", "Salir");
  46.     } else {
  47.         ShowPlayerDialog(playerid, DIALOG_REGISTER, DIALOG_STYLE_PASSWORD, "Registro", "Ingresa una contraseña para registrar tu cuenta.", "Registrar", "Salir");
  48.     }
  49.     db_free_result(Result);
  50.     return 1;
  51. }
  52. public OnPlayerDisconnect(playerid, reason) {
  53.     new tmp[USER_DATA];
  54.     User[playerid] = tmp;
  55.  
  56.     new Query[51];
  57.     format(Query, sizeof Query, "UPDATE users SET admin = %d WHERE userid = %d", User[playerid][USER_ADMIN], User[playerid][USER_ID]);
  58.     db_query(Database, Query);
  59.     return 1;
  60. }
  61.  
  62. public OnDialogResponse(playerid, dialogid, response, listitem, inputtext[])
  63. {
  64.     switch (dialogid)
  65.     {
  66.         case DIALOG_REGISTER:
  67.         {
  68.             if (!response) return Kick(playerid);
  69.             if (!(3 <= strlen(inputtext) <= 20)) {
  70.                 SendClientMessage(playerid, -1, "[ERROR]: La contraseña debe ser mayor a 3 caracteres y menor a 20 caracteres." );
  71.                 ShowPlayerDialog(playerid, DIALOG_REGISTER, DIALOG_STYLE_PASSWORD, "Registro", "Ingresa una contraseña para registrar tu cuenta.", "Registrar", "Salir" );
  72.                 return 1;
  73.             }
  74.             new Query[208];
  75.             WP_Hash(User[playerid][USER_PASSWORD], 129, inputtext);
  76.             format(Query, sizeof Query, "INSERT INTO users (username, password) VALUES ('%q', '%s')", User[playerid][USER_NAME], User[playerid][USER_PASSWORD]);
  77.             db_query(Database, Query);
  78.             SendClientMessage(playerid, -1, "[SERVER]: Has sido registrado correctamente.");
  79.  
  80.             new DBResult: Result;
  81.             Result = db_query(Database, "SELECT last_insert_rowid()");
  82.             User[playerid][USER_ID] = db_get_field_int(Result);
  83.             db_free_result(Result);
  84.  
  85.         }
  86.         case DIALOG_LOGIN:
  87.         {
  88.             if (!response) return Kick(playerid);
  89.             new buf[129];
  90.  
  91.             WP_Hash(buf, 129, inputtext);
  92.             if (strcmp(buf, User[playerid][USER_PASSWORD]))
  93.             {
  94.                 SendClientMessage(playerid, -1, "[ERROR]: Contraseña incorrecta, intentalo de nuevo.");
  95.                 ShowPlayerDialog(playerid, DIALOG_LOGIN, DIALOG_STYLE_PASSWORD, "Ingresar", "Ingresa tu contraseña para ingresar.", "Ingresar", "Salir" );
  96.             }
  97.            
  98.             new DBResult: Result;
  99.             format(buf, sizeof buf, "SELECT * FROM users WHERE username = '%q' LIMIT 1", User[playerid][USER_NAME]);
  100.             Result = db_query(Database, buf);
  101.            
  102.             if (db_num_rows(Result)) {
  103.                 User[playerid][USER_ID] = db_get_field_assoc_int(Result, "userid");
  104.                 User[playerid][USER_ADMIN] = db_get_field_assoc_int(Result, "admin");
  105.                 SendClientMessage(playerid, -1, "[SERVER]: Has sido correctamente ingresado!");
  106.             }
  107.             db_free_result(Result);
  108.         }
  109.         default: return 0;
  110.     }
  111.     return 1;
  112. }
  113.  
  114. public OnPlayerSpawn(playerid) {
  115.     SetPlayerInterior(playerid,0);
  116.     TogglePlayerClock(playerid,0);
  117.     SetPlayerPos(playerid, 2098.5884, -1760.7990, 13.5625);
  118.     return 1;
  119. }
  120.  
  121. public OnGameModeInit() {
  122.     ConnectDatabase();
  123.     print("Im working.");
  124.     return 1;
  125. }
  126.  
  127. public OnGameModeExit() {
  128.     if(Database) {
  129.         db_close(Database);
  130.     }
  131.     return 1;
  132. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement