OtKashix

Untitled

Oct 23rd, 2021
582
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. enum Jugadores{
  2.     Nombre,
  3.     Float:Posicion[3],
  4.     bool:Registro,
  5.     Skin,
  6.     Float:Vida,
  7.     Float:Chaleco,
  8.     Dinero,
  9.     Banco,
  10.     Nivel,
  11.     Exp,
  12.     Trabajo,
  13.     Permiso,
  14.     bool:Conectado
  15. };
  16. new Jugador[MAX_PLAYERS][Jugadores];
  17.  
  18. public OnPlayerConnect(playerid)
  19. {
  20.     GameTextForPlayer(playerid, "~w~SA-MP: ~r~[E]~y~[S]~r~[P]~b~DracoRP", 5000, 5);
  21.     GetPlayerName(playerid, Jugador[playerid][Nombre], MAX_PLAYER_NAME);
  22.     printf("Al conectar  -  %s", Jugador[playerid]);
  23.    
  24.     // Comprobar si está baneado
  25.     new expire;
  26.     new timestamp;
  27.    
  28.     new DB_Query[158], Cache:ResultCache_;
  29.     mysql_format(Database, DB_Query, sizeof(DB_Query), "SELECT * FROM bans WHERE name='%s' LIMIT 1",
  30.         Jugador[playerid]
  31.     );
  32.     ResultCache_ = mysql_query(Database, DB_Query);
  33.    
  34.     // Si esta registrado en la base de datos
  35.     if(cache_num_rows()){
  36.         timestamp = gettime();
  37.         cache_get_value_name_int(0, "expire", expire);
  38.         if(timestamp < expire){
  39.             new faltante = expire - timestamp;
  40.             new secs, mins, hours, days;
  41.             while(faltante > 0){
  42.                 if(faltante > 216000){
  43.                     days++;
  44.                     faltante = faltante - 216000;
  45.                 }
  46.                 else if(faltante > 3600){
  47.                     hours++;
  48.                     faltante = faltante - 3600;
  49.                 }
  50.                 else if(faltante > 60){
  51.                     mins++;
  52.                     faltante = faltante - 60;
  53.                 }
  54.                 else{
  55.                     secs = faltante;
  56.                     faltante = 0;
  57.                 }
  58.             }
  59.             new string[144];
  60.             format(string, sizeof(string), "Serás desbaneado en %d días, %d horas, %d minutos, %d segundos", days, hours, mins, secs);
  61.             SendClientMessage(playerid, 0xea0148, string);
  62.             SetTimerEx("DelayedKick", 1000, false, "i", playerid);
  63.            
  64.             return 1;
  65.                
  66.         }
  67.         else{
  68.             mysql_format(Database, DB_Query, sizeof(DB_Query), "DELETE FROM bans WHERE name='%s'",
  69.                 Jugador[playerid]
  70.             );
  71.         }
  72.     }
  73.     cache_delete(ResultCache_);
  74.    
  75.     // Cuando se conecte el usuario comprobaremos si esta registrado en la base de datos
  76.     mysql_format(Database, DB_Query, sizeof(DB_Query), "SELECT * FROM accounts WHERE name='%s'",
  77.         Jugador[playerid]
  78.     );
  79.     ResultCache_ = mysql_query(Database, DB_Query);
  80.     // Si esta registrado en la base de datos
  81.     if(cache_num_rows()){
  82.         new str[144];
  83.  
  84.         format(str, sizeof(str), "%sEscribe la contraseña para ingresar", str);
  85.        
  86.         ShowPlayerDialog(playerid, DIALOGO_LOGIN, DIALOG_STYLE_PASSWORD, "{1A8CAB} DracoRP {FFFFFF} > Acceso", str, "Aceptar", "Cancelar");
  87.     }
  88.     // Si no esta registrado
  89.     else{
  90.         new str[144];
  91.  
  92.         format(str, sizeof(str), "%sEscribe la contraseña para tu cuenta", str);
  93.  
  94.         ShowPlayerDialog(playerid, DIALOGO_REGISTRO, DIALOG_STYLE_PASSWORD, "{1A8CAB} DracoRP {FFFFFF} > Registro > Contraseña", str, "Aceptar", "Cancelar");
  95.     }
  96.     cache_delete(ResultCache_);
  97.     Jugador[playerid][Registro] = false;
  98.     Jugador[playerid][Conectado] = true;
  99.     return 1;
  100. }
  101.  
  102. public OnDialogResponse(playerid, dialogid, response, listitem, inputtext[])
  103. {
  104.     switch(dialogid)
  105.     {
  106.         // Tras completar el dialogo de registro
  107.         case DIALOGO_REGISTRO:
  108.         {
  109.             if(response){
  110.                 new DB_Query[152];
  111.                 mysql_format(Database, DB_Query, sizeof(DB_Query), "INSERT INTO accounts (name, password) VALUES ('%s', '%e')",
  112.                     Jugador[playerid],
  113.                     inputtext
  114.                 );
  115.                 mysql_pquery(Database, DB_Query);
  116.                 // Spawneamos al jugador
  117.                 Jugador[playerid][Registro] = true;
  118.                 SpawnPlayer(playerid);
  119.             }
  120.             else return Kick(playerid);
  121.         }
  122.         // Tras completar el dialogo de login
  123.         case DIALOGO_LOGIN:
  124.         {
  125.             if(response){
  126.                 new DB_Query[151], Cache:ResultCache_;
  127.                 printf("Antes Query  -  %s", Jugador[playerid]);
  128.                 mysql_format(Database, DB_Query, sizeof(DB_Query), "SELECT * FROM accounts WHERE name='%s' AND password='%e'",
  129.                     Jugador[playerid],
  130.                     inputtext
  131.                 );
  132.                 printf("Tras Query  -  %s", Jugador[playerid]);
  133.                 ResultCache_ = mysql_query(Database, DB_Query);
  134.                 if(cache_num_rows()){
  135.                     // cache_get_value_name_float(Handle_, Field_, Dest_);
  136.                     cache_get_value_name_float(0, "posx", Jugador[playerid][Posicion][0]);
  137.                     cache_get_value_name_float(0, "posy", Jugador[playerid][Posicion][1]);
  138.                     cache_get_value_name_float(0, "posz", Jugador[playerid][Posicion][2]);
  139.                     cache_get_value_name_int(0, "skin", Jugador[playerid][Skin]);
  140.                     cache_get_value_name_float(0, "health", Jugador[playerid][Vida]);
  141.                     cache_get_value_name_float(0, "armour", Jugador[playerid][Chaleco]);
  142.                     cache_get_value_name_int(0, "money", Jugador[playerid][Dinero]);
  143.                     cache_get_value_name_int(0, "level", Jugador[playerid][Nivel]);
  144.                     cache_get_value_name_int(0, "exp", Jugador[playerid][Exp]);
  145.                     cache_get_value_name_int(0, "perms", Jugador[playerid][Permiso]);
  146.                     SpawnPlayer(playerid);
  147.                 }
  148.                 else{
  149.                     SendClientMessage(playerid, -1, "Contraseña incorrecta");
  150.                     SetTimerEx("DelayedKick", 1000, false, "i", playerid);
  151.                     return 1;
  152.                 }
  153.                 cache_delete(ResultCache_);
  154.             }
  155.             else return Kick(playerid);
  156.         }
  157.     }
  158.     return 1;
  159. }
RAW Paste Data