Solucionado Frezeo a la hora de guardar datos
#1
Estoy utilizando SQLITE para guardar datos el problema es que a la hora de guardar se produce un frezeo en el servidor de 4 a 5 segundos a que se debe eso y como lo podria solucionar
Pawn Básico no critiquen xD  Approved

Responder
#2
1. Posiblemente la consulta que usas es muy larga. Muéstrala, tal vez se pueda optimizar.
2. Usa SQL_ThreadQuery.
Responder
#3
(23/06/2021, 09:27 AM)Mía escribió: 1. Posiblemente la consulta que usas es muy larga. Muéstrala, tal vez se pueda optimizar.
2. Usa SQL_ThreadQuery.
Es esto?
Código PHP:
public CheckTabla()
{
    new 
szTemp[768]
    
formatex(szTempcharsmax(szTemp), "\
        CREATE TABLE IF NOT EXISTS %s (`%s` varchar(33) NOT NULL default '' PRIMARY KEY, `%s` varchar(33),`%s` int,`%s` int,`%s` int,`%s` int,`%s` int,`%s` float, `%s` int, `%s` int, `%s` int,`%s` int, `%s` int)"
,
        
SQLX_TABLACOLUMN_AUTHIDCOLUMN_NAMECOLUMN_KILLSCOLUMN_DEATHSCOLUMN_HEADSHOTSCOLUMN_BOMBPLANTEDSCOLUMN_BOMBDEFUSEDCOLUMN_DAMAGESCOLUMN_ROUNDSCOLUMN_PUGSCOLUMN_KILLS3KCOLUMN_KILLS4KCOLUMN_KILLS5K)
    
g_query SQL_PrepareQuery(g_tupleszTemp)
    if(
SQL_Execute(g_query))
    {
        
server_print("Se realizo el registro")
    }
    else 
server_print("Error en el registro")

Pawn Básico no critiquen xD  Approved

Responder
#4
(23/06/2021, 01:45 PM)Meliodas escribió: Es esto?
Código PHP:
public CheckTabla()
{
 new 
szTemp[768]
 
formatex(szTempcharsmax(szTemp), "\
 CREATE TABLE IF NOT EXISTS %s (`%s` varchar(33) NOT NULL default '' PRIMARY KEY, `%s` varchar(33),`%s` int,`%s` int,`%s` int,`%s` int,`%s` int,`%s` float, `%s` int, `%s` int, `%s` int,`%s` int, `%s` int)"
,
 
SQLX_TABLACOLUMN_AUTHIDCOLUMN_NAMECOLUMN_KILLSCOLUMN_DEATHSCOLUMN_HEADSHOTSCOLUMN_BOMBPLANTEDSCOLUMN_BOMBDEFUSEDCOLUMN_DAMAGESCOLUMN_ROUNDSCOLUMN_PUGSCOLUMN_KILLS3KCOLUMN_KILLS4KCOLUMN_KILLS5K)
 
g_query SQL_PrepareQuery(g_tupleszTemp)
 if(
SQL_Execute(g_query))
 {
 
server_print("Se realizo el registro")
 }
 else 
server_print("Error en el registro")


Tienes problemas cuando guardas y ahí no guardas nada, muestra las consultas donde guardas los datos.
Responder
#5
(23/06/2021, 02:08 PM)Valentina. escribió: Tienes problemas cuando guardas y ahí no guardas nada, muestra las consultas donde guardas los datos.
disculpa
Código PHP:
public SaveGlobalPlayerData(index)
{
    if(!
is_user_connected(index) || is_user_bot(index) || is_user_hltv(index))
    {
        return;
    }

    new 
szTemp[456];
    
formatex(szTempcharsmax(szTemp), "SELECT * FROM %s WHERE ^"%s^" = ^"%s^""SQLX_TABLACOLUMN_AUTHIDg_szPlayerAuthdID[index]);
    
g_query SQL_PrepareQuery(g_tupleszTemp);

    if(
SQL_Execute(g_query))
    {
        new 
iKills SQL_ReadResult(g_query2);
        new 
iDeaths SQL_ReadResult(g_query3);
        new 
iHeadShots SQL_ReadResult(g_query4);
        new 
iBombPlanteds SQL_ReadResult(g_query5);
        new 
iBombDefused SQL_ReadResult(g_query6);
        new 
Float:flDamage;
        
SQL_ReadResult(g_query7flDamage);
        new 
iRounds SQL_ReadResult(g_query8);
        new 
iPugs SQL_ReadResult(g_query9);
        new 
iKill3k SQL_ReadResult(g_query10);
        new 
iKill4k SQL_ReadResult(g_query11);
        new 
iKill5k SQL_ReadResult(g_query12);

        
formatex(szTempcharsmax(szTemp), "UPDATE %s SET `%s`=^"%s^",`%s`=^"%i^",`%s`=^"%i^",`%s`=^"%i^",`%s`=^"%i^",`%s`=^"%i^",`%s`=^"%0.02f^",`%s`=^"%i^",`%s`=^"%i^",`%s`=^"%i^",`%s`=^"%i^",`%s`=^"%i^" WHERE %s=^"%s^"",
            
SQLX_TABLA,
            
COLUMN_NAME,
            
g_szPlayerName[index],
            
COLUMN_KILLS,
            
iKills g_PlayerData[index][Kills],
            
COLUMN_DEATHS,
            
iDeaths g_PlayerData[index][Deaths],
            
COLUMN_HEADSHOTS,
            
iHeadShots g_PlayerData[index][HeadShots],
            
COLUMN_BOMBPLANTEDS,
            
iBombPlanteds g_PlayerData[index][BombPlanteds],
            
COLUMN_BOMBDEFUSED,
            
iBombDefused g_PlayerData[index][BombDefuseds],
            
COLUMN_DAMAGES,
            
flDamage g_PlayerData[index][Damages],
            
COLUMN_ROUNDS,
            
iRounds g_PlayerData[index][Rounds],
            
COLUMN_PUGS,
            
iPugs g_PlayerData[index][Pugs],
            
COLUMN_KILLS3K,
            
iKill3k g_PlayerData[index][Kills3k],
            
COLUMN_KILLS4K,
            
iKill4k g_PlayerData[index][Kills4k],
            
COLUMN_KILLS5K,
            
iKill5k g_PlayerData[index][Kills5k],
            
COLUMN_AUTHID,
            
g_szPlayerAuthdID[index]);
        
g_query SQL_PrepareQuery(g_tupleszTemp);
        if(
SQL_Execute(g_query)) console_print(index"Datos Actualizados");
        else 
console_print(index"Error Actualizar datos");
    }

Pawn Básico no critiquen xD  Approved

Responder
#6
te vendría mejor hacer un select al entrar al servidor y le agregas un estado (conectado, digamos), y a la hora del update solo se lo permites hacer si ese estado es conectado, asi evitas esas 2 consultas seguidas.

usa SQL_ThreadQuery
[Imagen: zcsztw-4.png] [Imagen: 6u5fj2-4.png]
[Imagen: linkedin_thumb_image.png][Imagen: 76561198283253977.png][Imagen: linkedin_thumb_image.png]
Responder
#7
(23/06/2021, 03:25 PM)Hinami escribió: te vendría mejor hacer un select al entrar al servidor y le agregas un estado (conectado, digamos), y a la hora del update solo se lo permites hacer si ese estado es conectado, asi evitas esas 2 consultas seguidas.

usa SQL_ThreadQuery

soy algo nuevo con sqlite me podrias dar un ejemplo
Pawn Básico no critiquen xD  Approved

Responder
#8
(23/06/2021, 03:30 PM)Meliodas escribió: soy algo nuevo con sqlite me podrias dar un ejemplo
EJ
https://github.com/Chris4589/rangos_csgo...rangos.sma


Usa SQL_ThreadQuery


Solo ignora la función MySQL_Init() y busca el equivalente a sqlite (mira el plugin de r0ma)
[Imagen: maxresdefault.jpg]
[Imagen: zcsztw-4.png] [Imagen: 6u5fj2-4.png]
[Imagen: linkedin_thumb_image.png][Imagen: 76561198283253977.png][Imagen: linkedin_thumb_image.png]
Responder
#9
una cosa que no entiendo del SQL_ThreadQuery

Código PHP:
SQL_ThreadQueryg_hTuple"DataHandler"szQueryiData); 

DataHandler lo tengo que cambiar por mi funcion de PlayerRegister

Código PHP:
public PlayerRegister(index)
{
    if(!
is_user_connected(index) || is_user_bot(index) || is_user_hltv(index))
    {
        return;
    }

    
g_iStatus[index] = Logueado;

    new 
szTemp[2048];
    
formatex(szTempcharsmax(szTemp), "INSERT INTO %s (%s,%s,%s,%s,%s,%s,%s,%s,%s,%s,%s,%s,%s) VALUES ('%s','%s','0','0','0','0','0','0.0','0','0','0','0','0')",
        
SQLX_TABLA,
        
COLUMN_AUTHID,
        
COLUMN_NAME,
        
COLUMN_KILLS,
        
COLUMN_DEATHS,
        
COLUMN_HEADSHOTS,
        
COLUMN_BOMBPLANTEDS,
        
COLUMN_BOMBDEFUSED,
        
COLUMN_DAMAGES,
        
COLUMN_ROUNDS,
        
COLUMN_PUGS,
        
COLUMN_KILLS3K,
        
COLUMN_KILLS4K,
        
COLUMN_KILLS5K,
        
g_szPlayerAuthdID[index],
        
g_szPlayerName[index]);
    
g_query SQL_PrepareQuery(g_tupleszTemp);
    if(
SQL_Execute(g_query))
    {
        
console_print(index"No se encontro resultados, creando nuevos datos...");
    } else 
console_print(index"Error al registrar");

Pawn Básico no critiquen xD  Approved

Responder
#10
Código PHP:
public PlayerRegister(index)
{
    new 
szTemp[2048], data[1];
    
g_iStatus[index] = Logueado;

    
formatex(szTempcharsmax(szTemp), "INSERT INTO %s (%s,%s,%s,%s,%s,%s,%s,%s,%s,%s,%s,%s,%s) VALUES ('%s','%s','0','0','0','0','0','0.0','0','0','0','0','0')",
        
SQLX_TABLA,
        
COLUMN_AUTHID,
        
COLUMN_NAME,
        
COLUMN_KILLS,
        
COLUMN_DEATHS,
        
COLUMN_HEADSHOTS,
        
COLUMN_BOMBPLANTEDS,
        
COLUMN_BOMBDEFUSED,
        
COLUMN_DAMAGES,
        
COLUMN_ROUNDS,
        
COLUMN_PUGS,
        
COLUMN_KILLS3K,
        
COLUMN_KILLS4K,
        
COLUMN_KILLS5K,
        
g_szPlayerAuthdID[index],
        
g_szPlayerName[index]);
   
    
data[0] = index;
    
SQL_ThreadQuery(g_tuple"handler_registrar"szTempdata1);
}

public 
handler_registrar(FailStateHandle:QueryError[], ErrcodeData[], DataSize)
{
    new 
id Data[0];

    if (
fail_query(FailStateErrorErrcode))
    {
        
console_print(id"Error al registrar");
        return 
PLUGIN_HANDLED;
    }
    
    
console_print(id"No se encontro resultados, creando nuevos datos...");
    return 
PLUGIN_CONTINUE
}


fail_query(FailStateError[], Errcode)
{
    switch(
FailState)
    {
        case 
TQUERY_CONNECT_FAILED:
        {
            
log_to_file("sql_logs.log""Error en la conexion [%i] [%s]"ErrcodeError);
            return 
true;
        }
        case 
TQUERY_QUERY_FAILED:
        {
            
log_to_file("sql_logs.log""Error en la consulta [%i] [%s]" ErrcodeError);
            return 
true;
        }
    }
    return 
false;


Ni lo probe
“Quien te quiere en su vida, volverá a buscarte”
Qué frase más estúpida
Porque quien te quiere en su vida, jamás se iría.
Responder
#11
(24/06/2021, 02:23 PM)HK-416 escribió:
Código PHP:
public PlayerRegister(index)
{
    new 
szTemp[2048], data[1];
    g_iStatus[index] = Logueado;

    formatex(szTempcharsmax(szTemp), "INSERT INTO %s (%s,%s,%s,%s,%s,%s,%s,%s,%s,%s,%s,%s,%s) VALUES ('%s','%s','0','0','0','0','0','0.0','0','0','0','0','0')",
        SQLX_TABLA,
        COLUMN_AUTHID,
        COLUMN_NAME,
        COLUMN_KILLS,
        COLUMN_DEATHS,
        COLUMN_HEADSHOTS,
        COLUMN_BOMBPLANTEDS,
        COLUMN_BOMBDEFUSED,
        COLUMN_DAMAGES,
        COLUMN_ROUNDS,
        COLUMN_PUGS,
        COLUMN_KILLS3K,
        COLUMN_KILLS4K,
        COLUMN_KILLS5K,
        g_szPlayerAuthdID[index],
        g_szPlayerName[index]);
   
    data
[0] = index;
    SQL_ThreadQuery(g_tuple"handler_registrar"szTempdata1);
}

public 
handler_registrar(FailStateHandle:QueryError[], ErrcodeData[], DataSize)
{
    new 
id Data[0];

    if (
fail_query(FailStateErrorErrcode))
    {
        
console_print(id"Error al registrar");
        return 
PLUGIN_HANDLED;
    }
    
    
console_print(id"No se encontro resultados, creando nuevos datos...");
    return 
PLUGIN_CONTINUE
}


fail_query(FailStateError[], Errcode)
{
    switch(
FailState)
    {
        case 
TQUERY_CONNECT_FAILED:
        {
            
log_to_file("sql_logs.log""Error en la conexion [%i] [%s]"ErrcodeError);
            return 
true;
        }
        case 
TQUERY_QUERY_FAILED:
        {
            
log_to_file("sql_logs.log""Error en la consulta [%i] [%s]" ErrcodeError);
            return 
true;
        }
    }
    return 
false;


Ni lo probe

me lanza estos logs en consola
Código:
[SQLITE] Invalid query handle: 0

[AMXX] Displaying debug trace (plugin "Pug-Stats.amxx", version "1.0")

[AMXX] Run time error 10: native error (native "SQL_NumResults")

[AMXX] [0] Pug-Stats.sma::CheckTabla (line 340)

[AMXX] [1] Pug-Stats.sma::SQLXInit (line 327)

[AMXX] [2] Pug-Stats.sma::plugin_init (line 86)

Código PHP:
public SQLXInit()
{
    new 
get_type[12];
    
    
SQL_SetAffinity("sqlite");
    
    
SQL_GetAffinity(get_typesizeof get_type);

    if(!
equali(get_type"sqlite"))
    {
        
log_to_file("SQLITE_ERROR.txt""Error de conexion");
        return 
pause("a");
    }
    
    
g_tuple SQL_MakeDbTuple(""""""SQLX_DATABASE);
    
CheckTabla();
    return 
PLUGIN_CONTINUE
}

public 
CheckTabla()
{
    new 
szTemp[768], data[1];
    static 
index;
    
formatex(szTempcharsmax(szTemp), "\
        CREATE TABLE IF NOT EXISTS %s (`%s` varchar(33) NOT NULL default '' PRIMARY KEY, `%s` varchar(33),`%s` int,`%s` int,`%s` int,`%s` int,`%s` int,`%s` float, `%s` int, `%s` int, `%s` int,`%s` int, `%s` int)"
,
        
SQLX_TABLACOLUMN_AUTHIDCOLUMN_NAMECOLUMN_KILLSCOLUMN_DEATHSCOLUMN_HEADSHOTSCOLUMN_BOMBPLANTEDSCOLUMN_BOMBDEFUSEDCOLUMN_DAMAGESCOLUMN_ROUNDSCOLUMN_PUGSCOLUMN_KILLS3KCOLUMN_KILLS4KCOLUMN_KILLS5K);
    
data[0] = index;
    
SQL_ThreadQuery(g_tuple"handler_registrar"szTempdata1);
    if(
SQL_NumResults(Query)) //Aqui
    
{
        
server_print("Se realizo el registro")
    }
    else 
server_print("Error en el registro")

Pawn Básico no critiquen xD  Approved

Responder
#12
Código PHP:
public CheckTabla()
{
    new 
szTemp[768];
    
formatex(szTempcharsmax(szTemp), "\
        CREATE TABLE IF NOT EXISTS %s (`%s` varchar(33) NOT NULL default '' PRIMARY KEY, `%s` varchar(33),`%s` int,`%s` int,`%s` int,`%s` int,`%s` int,`%s` float, `%s` int, `%s` int, `%s` int,`%s` int, `%s` int)"
,
        
SQLX_TABLACOLUMN_AUTHIDCOLUMN_NAMECOLUMN_KILLSCOLUMN_DEATHSCOLUMN_HEADSHOTSCOLUMN_BOMBPLANTEDSCOLUMN_BOMBDEFUSEDCOLUMN_DAMAGESCOLUMN_ROUNDSCOLUMN_PUGSCOLUMN_KILLS3KCOLUMN_KILLS4KCOLUMN_KILLS5K);
    
//data[0] = index; / static index; = No es necesario ya que no necesitas mandar la ID de un cliente o ID de un estado
    
SQL_ThreadQuery(g_tuple"handler_checktable"szTemp);


public 
handler_checktable(FailStateHandle:QueryError[], ErrcodeData[], DataSize)
{
    if (
fail_query(FailStateErrorErrcode))
    {
        return 
PLUGIN_HANDLED;
    }

    
server_print("Consulta realizada correctamente")
    return 
PLUGIN_CONTINUE


Si usas "SQL_ThreadQuery" no esperes respuesta en la misma función por asi decirlo, el "data" que puse antes es por que mandabas el ID de un cliente en este caso es una simple verificacion de tabla no lo vas a necesitar y si luego necesitas usar el "SQL_ReadResult", "SQL_NumResults" y demas usalo dentro del handler "handler_checktable" luego del abajo del "if (fail_query(FailState, Error, Errcode))" que verifica si hubo algún tipo de fallo
“Quien te quiere en su vida, volverá a buscarte”
Qué frase más estúpida
Porque quien te quiere en su vida, jamás se iría.
Responder
#13
(24/06/2021, 04:17 PM)HK-416 escribió:
Código PHP:
public CheckTabla()
{
    new szTemp[768];
    formatex(szTempcharsmax(szTemp), "\
        CREATE TABLE IF NOT EXISTS %s (`%s` varchar(33) NOT NULL default '' PRIMARY KEY, `%s` varchar(33),`%s` int,`%s` int,`%s` int,`%s` int,`%s` int,`%s` float, `%s` int, `%s` int, `%s` int,`%s` int, `%s` int)"
,
        SQLX_TABLACOLUMN_AUTHIDCOLUMN_NAMECOLUMN_KILLSCOLUMN_DEATHSCOLUMN_HEADSHOTSCOLUMN_BOMBPLANTEDSCOLUMN_BOMBDEFUSEDCOLUMN_DAMAGESCOLUMN_ROUNDSCOLUMN_PUGSCOLUMN_KILLS3KCOLUMN_KILLS4KCOLUMN_KILLS5K);
    //data[0] = index; / static index; = No es necesario ya que no necesitas mandar la ID de un cliente o ID de un estado
    SQL_ThreadQuery(g_tuple"handler_checktable"szTemp);


public 
handler_checktable(FailStateHandle:QueryError[], ErrcodeData[], DataSize)
{
    if (
fail_query(FailStateErrorErrcode))
    {
        return 
PLUGIN_HANDLED;
    }

    
server_print("Consulta realizada correctamente")
    return 
PLUGIN_CONTINUE


Si usas "SQL_ThreadQuery" no esperes respuesta en la misma función por asi decirlo, el "data" que puse antes es por que mandabas el ID de un cliente en este caso es una simple verificacion de tabla no lo vas a necesitar y si luego necesitas usar el "SQL_ReadResult", "SQL_NumResults" y demas usalo dentro del handler "handler_checktable" luego del abajo del "if (fail_query(FailState, Error, Errcode))" que verifica si hubo algún tipo de fallo

entiendo muchas gracias pero ahora tengo este ultimo error creo
Código:
[SQLITE] Invalid query handle: 0

[AMXX] Displaying debug trace (plugin "Pug-Stats.amxx", version "1.0")

[AMXX] Run time error 10: native error (native "SQL_NumResults")

[AMXX]    [0] Pug-Stats.sma::DisplayPlayerStats (line 491)

Código PHP:
public DisplayPlayerStats(indextarget)
{
    if(!
is_user_connected(index))
    {
        return;
    }

    if(!
is_user_connected(target))
    {
        
client_print_color(indexprint_team_default"%s El usuario no está conectado"g_szTag);
        return;
    }

    new 
szTemp[256];
    
formatex(szTempcharsmax(szTemp), "SELECT * FROM %s WHERE ^"%s^" = ^"%s^""SQLX_TABLACOLUMN_AUTHIDg_szPlayerAuthdID[target]);
    
g_iStatus[index] = LOGUEADO;
    
SQL_ThreadQuery(g_tuple"handler_registrar"szTemp);

    if(
SQL_NumResults(Query))
    {
        new 
iKills SQL_ReadResult(Query2);
        new 
iDeaths SQL_ReadResult(Query3);
        new 
iHeadShots SQL_ReadResult(Query4);
        new 
iBombPlanteds SQL_ReadResult(Query5);
        new 
iBombDefused SQL_ReadResult(Query6);
        new 
Float:flDamage;
        
SQL_ReadResult(Query7flDamage);
        new 
iRounds SQL_ReadResult(Query8);    
        new 
iPlayingPugs SQL_ReadResult(Query9);
        new 
iKills3k SQL_ReadResult(Query10);
        new 
iKills4k SQL_ReadResult(Query11);
        new 
iKills5k SQL_ReadResult(Query12);
    }

Pawn Básico no critiquen xD  Approved

Responder
#14
Código PHP:
public DisplayPlayerStats(indextarget)
{
    if(!
is_user_connected(index))
    {
        return;
    }

    if(!
is_user_connected(target))
    {
        
client_print_color(indexprint_team_default"%s El usuario no está conectado"g_szTag);
        return;
    }

    new 
szTemp[256], data[1];
    
formatex(szTempcharsmax(szTemp), "SELECT * FROM %s WHERE ^"%s^" = ^"%s^""SQLX_TABLACOLUMN_AUTHIDg_szPlayerAuthdID[target]);
    
g_iStatus[index] = LOGUEADO;
    

    if(
SQL_NumResults(Query))
    {
        new 
iKills SQL_ReadResult(Query2);
        new 
iDeaths SQL_ReadResult(Query3);
        new 
iHeadShots SQL_ReadResult(Query4);
        new 
iBombPlanteds SQL_ReadResult(Query5);
        new 
iBombDefused SQL_ReadResult(Query6);
        new 
Float:flDamage;
        
SQL_ReadResult(Query7flDamage);
        new 
iRounds SQL_ReadResult(Query8);    
        new 
iPlayingPugs SQL_ReadResult(Query9);
        new 
iKills3k SQL_ReadResult(Query10);
        new 
iKills4k SQL_ReadResult(Query11);
        new 
iKills5k SQL_ReadResult(Query12);
    }

    
data[0] = index;

    
SQL_ThreadQuery(g_tuple"handler_get_player_stats"szTempdata1);


public 
handler_get_player_stats(FailStateHandle:QueryError[], ErrcodeData[], DataSize)
{
    if (
fail_query(FailStateErrorErrcode))
    {
        return 
PLUGIN_HANDLED;
    }

    new 
id data[0];
    
// te dejo el id del jugador por si lo necesitas por algo
    
if(SQL_NumResults(Query))
    {
        new 
iKills SQL_ReadResult(Query2);
        new 
iDeaths SQL_ReadResult(Query3);
        new 
iHeadShots SQL_ReadResult(Query4);
        new 
iBombPlanteds SQL_ReadResult(Query5);
        new 
iBombDefused SQL_ReadResult(Query6);
        new 
Float:flDamage;
        
SQL_ReadResult(Query7flDamage);
        new 
iRounds SQL_ReadResult(Query8);    
        new 
iPlayingPugs SQL_ReadResult(Query9);
        new 
iKills3k SQL_ReadResult(Query10);
        new 
iKills4k SQL_ReadResult(Query11);
        new 
iKills5k SQL_ReadResult(Query12);
    }

    return 
PLUGIN_CONTINUE

“Quien te quiere en su vida, volverá a buscarte”
Qué frase más estúpida
Porque quien te quiere en su vida, jamás se iría.
Responder
#15
(24/06/2021, 05:11 PM)HK-416 escribió:
Código PHP:
public DisplayPlayerStats(indextarget)
{
    if(!is_user_connected(index))
    {
        return;
    }

    if(!is_user_connected(target))
    {
        client_print_color(indexprint_team_default"%s El usuario no está conectado"g_szTag);
        return;
    }

    new szTemp[256], data[1];
    formatex(szTempcharsmax(szTemp), "SELECT * FROM %s WHERE ^"%s^" = ^"%s^""SQLX_TABLACOLUMN_AUTHIDg_szPlayerAuthdID[target]);
    g_iStatus[index] = LOGUEADO;
    

    
if(SQL_NumResults(Query))
    {
        new iKills SQL_ReadResult(Query2);
        new iDeaths SQL_ReadResult(Query3);
        new iHeadShots SQL_ReadResult(Query4);
        new iBombPlanteds SQL_ReadResult(Query5);
        new iBombDefused SQL_ReadResult(Query6);
        new Float:flDamage;
        SQL_ReadResult(Query7flDamage);
        new iRounds SQL_ReadResult(Query8);    
        
new iPlayingPugs SQL_ReadResult(Query9);
        new iKills3k SQL_ReadResult(Query10);
        new iKills4k SQL_ReadResult(Query11);
        new iKills5k SQL_ReadResult(Query12);
    }

    data[0] = index;

    SQL_ThreadQuery(g_tuple"handler_get_player_stats"szTempdata1);


public 
handler_get_player_stats(FailStateHandle:QueryError[], ErrcodeData[], DataSize)
{
    if (
fail_query(FailStateErrorErrcode))
    {
        return 
PLUGIN_HANDLED;
    }

    new 
id data[0];
    
// te dejo el id del jugador por si lo necesitas por algo
    
if(SQL_NumResults(Query))
    {
        new iKills SQL_ReadResult(Query2);
        new iDeaths SQL_ReadResult(Query3);
        new iHeadShots SQL_ReadResult(Query4);
        new iBombPlanteds SQL_ReadResult(Query5);
        new iBombDefused SQL_ReadResult(Query6);
        new Float:flDamage;
        SQL_ReadResult(Query7flDamage);
        new iRounds SQL_ReadResult(Query8);    
        
new iPlayingPugs SQL_ReadResult(Query9);
        new iKills3k SQL_ReadResult(Query10);
        new iKills4k SQL_ReadResult(Query11);
        new iKills5k SQL_ReadResult(Query12);
    }

    return 
PLUGIN_CONTINUE


me sale 
Código:
C:\Users\Luis\Desktop\Pug-Stats.sma(562) : warning 204: symbol is assigned a value that is never used: "iKills5k"
C:\Users\Luis\Desktop\Pug-Stats.sma(561) : warning 204: symbol is assigned a value that is never used: "iKills4k"
C:\Users\Luis\Desktop\Pug-Stats.sma(560) : warning 204: symbol is assigned a value that is never used: "iKills3k"
C:\Users\Luis\Desktop\Pug-Stats.sma(559) : warning 204: symbol is assigned a value that is never used: "iPlayingPugs"
C:\Users\Luis\Desktop\Pug-Stats.sma(558) : warning 204: symbol is assigned a value that is never used: "iRounds"
C:\Users\Luis\Desktop\Pug-Stats.sma(555) : warning 204: symbol is assigned a value that is never used: "iBombDefused"
C:\Users\Luis\Desktop\Pug-Stats.sma(554) : warning 204: symbol is assigned a value that is never used: "iBombPlanteds"
C:\Users\Luis\Desktop\Pug-Stats.sma(553) : warning 204: symbol is assigned a value that is never used: "iHeadShots"
C:\Users\Luis\Desktop\Pug-Stats.sma(552) : warning 204: symbol is assigned a value that is never used: "iDeaths"
C:\Users\Luis\Desktop\Pug-Stats.sma(551) : warning 204: symbol is assigned a value that is never used: "iKills"
C:\Users\Luis\Desktop\Pug-Stats.sma(547) : warning 204: symbol is assigned a value that is never used: "id"
Pawn Básico no critiquen xD  Approved

Responder
#16
(24/06/2021, 05:52 PM)Meliodas escribió: me sale 
Código:
C:\Users\Luis\Desktop\Pug-Stats.sma(562) : warning 204: symbol is assigned a value that is never used: "iKills5k"
C:\Users\Luis\Desktop\Pug-Stats.sma(561) : warning 204: symbol is assigned a value that is never used: "iKills4k"
C:\Users\Luis\Desktop\Pug-Stats.sma(560) : warning 204: symbol is assigned a value that is never used: "iKills3k"
C:\Users\Luis\Desktop\Pug-Stats.sma(559) : warning 204: symbol is assigned a value that is never used: "iPlayingPugs"
C:\Users\Luis\Desktop\Pug-Stats.sma(558) : warning 204: symbol is assigned a value that is never used: "iRounds"
C:\Users\Luis\Desktop\Pug-Stats.sma(555) : warning 204: symbol is assigned a value that is never used: "iBombDefused"
C:\Users\Luis\Desktop\Pug-Stats.sma(554) : warning 204: symbol is assigned a value that is never used: "iBombPlanteds"
C:\Users\Luis\Desktop\Pug-Stats.sma(553) : warning 204: symbol is assigned a value that is never used: "iHeadShots"
C:\Users\Luis\Desktop\Pug-Stats.sma(552) : warning 204: symbol is assigned a value that is never used: "iDeaths"
C:\Users\Luis\Desktop\Pug-Stats.sma(551) : warning 204: symbol is assigned a value that is never used: "iKills"
C:\Users\Luis\Desktop\Pug-Stats.sma(547) : warning 204: symbol is assigned a value that is never used: "id"

Hay problemas graves en esa porción de código. ¿Podrías dejar la función de carga de datos? Necesitaremos nuevas variables para almacenar los datos cargados cuando se conecte un jugador, porque me parece que en tus variables solo almacenas los datos desde la última conexión del jugador.
Responder
#17
(24/06/2021, 06:39 PM)Mía escribió: Hay problemas graves en esa porción de código. ¿Podrías dejar la función de carga de datos? Necesitaremos nuevas variables para almacenar los datos cargados cuando se conecte un jugador, porque me parece que en tus variables solo almacenas los datos desde la última conexión del jugador.

ese es el que carga cuando se conecta el jugador
Código PHP:
public PlayerRegister(index)
{
    new szTemp[2048], data[1];
    g_iStatus[index] = LOGUEADO;

    formatex(szTempcharsmax(szTemp), "INSERT INTO %s (%s,%s,%s,%s,%s,%s,%s,%s,%s,%s,%s,%s,%s) VALUES ('%s','%s','0','0','0','0','0','0.0','0','0','0','0','0')",
        SQLX_TABLA,
        COLUMN_AUTHID,
        COLUMN_NAME,
        COLUMN_KILLS,
        COLUMN_DEATHS,
        COLUMN_HEADSHOTS,
        COLUMN_BOMBPLANTEDS,
        COLUMN_BOMBDEFUSED,
        COLUMN_DAMAGES,
        COLUMN_ROUNDS,
        COLUMN_PUGS,
        COLUMN_KILLS3K,
        COLUMN_KILLS4K,
        COLUMN_KILLS5K,
        g_szPlayerAuthdID[index],
        g_szPlayerName[index]);
   
    data
[0] = index;
    SQL_ThreadQuery(g_tuple"handler_registrar"szTempdata1);

Pawn Básico no critiquen xD  Approved

Responder
#18
(24/06/2021, 06:45 PM)Meliodas escribió: ese es el que carga cuando se conecta el jugador
Código PHP:
public PlayerRegister(index)
{
    new szTemp[2048], data[1];
    g_iStatus[index] = LOGUEADO;

    formatex(szTempcharsmax(szTemp), "INSERT INTO %s (%s,%s,%s,%s,%s,%s,%s,%s,%s,%s,%s,%s,%s) VALUES ('%s','%s','0','0','0','0','0','0.0','0','0','0','0','0')",
        SQLX_TABLA,
        COLUMN_AUTHID,
        COLUMN_NAME,
        COLUMN_KILLS,
        COLUMN_DEATHS,
        COLUMN_HEADSHOTS,
        COLUMN_BOMBPLANTEDS,
        COLUMN_BOMBDEFUSED,
        COLUMN_DAMAGES,
        COLUMN_ROUNDS,
        COLUMN_PUGS,
        COLUMN_KILLS3K,
        COLUMN_KILLS4K,
        COLUMN_KILLS5K,
        g_szPlayerAuthdID[index],
        g_szPlayerName[index]);
   
    data
[0] = index;
    SQL_ThreadQuery(g_tuple"handler_registrar"szTempdata1);


Cerealspit
En serio se resetea todo cuando se conecta un jugador? Cual es el punto de usar una DB entonces Dafuq
Me rehúso a creerlo, pasa el client_putinserver!
Responder
#19
(24/06/2021, 07:01 PM)Mía escribió: Cerealspit
En serio se resetea todo cuando se conecta un jugador? Cual es el punto de usar una DB entonces Dafuq
Me rehúso a creerlo, pasa el client_putinserver!

Código PHP:
public client_putinserver(index)
{
    if(!
is_user_connected(index))
    {
        return;
    }
    for(new 
0<sizeof(g_PlayerData[]); i++)
    {
        
g_PlayerData[index][i] = EOS;
    }
    
g_iStatus[index] = NO_LOGUEADO;
    
get_user_authid(indexg_szPlayerAuthdID[index], charsmax(g_szPlayerAuthdID[]));
    
get_user_name(indexg_szPlayerName[index], charsmax(g_szPlayerName[]))
    
PlayerRegister(index);

Pawn Básico no critiquen xD  Approved

Responder
#20
Ya veo, usa el Steam ID como key esa Db. Creo que se debe rediseñar la tabla para tener un id con auto incremento, así optimizamos las consultas. Y cargar los datos en client_putinserver, así evitamos obtenerlos cada vez que se quieran guardar. Me desocupo más tarde y lo veo, si alguien no te lo hizo aun.
Responder
#21
(24/06/2021, 09:26 PM)Mía escribió: Ya veo, usa el Steam ID como key esa Db. Creo que se debe rediseñar la tabla para tener un id con auto incremento, así optimizamos las consultas. Y cargar los datos en client_putinserver, así evitamos obtenerlos cada vez que se quieran guardar. Me desocupo más tarde y lo veo, si alguien no te lo hizo aun.

Gracias.
Pawn Básico no critiquen xD  Approved

Responder
#22
EJ.
Código PHP:
/*
CREATE TABLE example
(
    id INT(10) UNSIGNED NOT NULL AUTO_INCREMENT PRIMARY KEY,
    steam_id varchar(64) NOT NULL UNIQUE KEY
 ...masdata
);
*/
#include <amxmodx>
#include <sqlx>
#include <reapi>

new const exampleTable[] = "example";

new 
playerId[33], statusPlayer[33];
new 
Handle:Tuple//cambias esa por tu variable de conexión

enum {
    REGISTER,
    LOGIN,
    SAVE
};

enum {
    NOT_LOGUED 0,
    LOGUED
};



public 
DataHandler(failstateHandle:Queryerror[], error2data[], datasizeFloat:flTime) {
    switch (failstate) {
        case TQUERY_CONNECT_FAILED: {
            log_to_file"SQL_LOG_TQ.txt""Error en la conexion al MySQL [%i]: %s"error2error );
            return;
        }
        case TQUERY_QUERY_FAILED: {
        log_to_file"SQL_LOG_TQ.txt""Error en la consulta al MySQL [%i]: %s"error2error );
        }
    }
    
    
new id data[0];
    
    
if (!is_user_connected(id)) {
        return;
    }
    
    
switch (data[1]) {
        case LOGIN: {

            if (SQL_NumResults(Query)) {
                playerIdid ] = SQL_ReadResultQuery);
                //le cargo todo de la db

                statusPlayerid ] = LOGUED;

            } else {
 
//g_frags[id] = 0;
 //no estoy registrado le doy todo a 0 antes de registrarlo
 
new AuthId[32];

 if (
is_user_steam(id)) {
 
get_user_authid(idAuthIdcharsmax(AuthId));
 } else {
 
get_user_name(idAuthIdcharsmax(AuthId));
 }

 new 
query[MAX_MENU_LENGTH], data[2];

 
data[0] = id;
 
data[1] = REGISTER;

 
//Insert into query
 
formatex(querycharsmax(query), "inert into ....");
 
SQL_ThreadQuery(Tuple"DataHandler"querydatasizeof(data));
            }
        }
        case REGISTER: {

            if (failstate TQUERY_SUCCESS){
                //error al registrar usuario
            } else {
 new 
AuthId[32];

 if (
is_user_steam(id)) {
 
get_user_authid(idAuthIdcharsmax(AuthId));
 } else {
 
get_user_name(idAuthIdcharsmax(AuthId));
 }

 new 
query[MAX_MENU_LENGTH], data[2];

 
data[0] = id;
 
data[1] = LOGIN;

 
formatex(querycharsmax(query), "SELECT * FROM %s WHERE steam_id= ^"%s^""exampleTableAuthId);

 
SQL_ThreadQuery(Tuple"DataHandler"querydatasizeof(data));
            }
        }
        case SAVE: {

            if (failstate TQUERY_SUCCESS) {
                //error no se guardo ni vrg
            } else {
                //se guardo
            }
        
    }
}

public 
save_data(id) {

    if (statusPlayer[id] != LOGUED) {
        return;
    }

    new query[MAX_MENU_LENGTH], data[2];

    data[0] = id;
    data[1] = SAVE;
    
    formatex
(querycharsmax(query), "UPDATE %s SET algo=0 WHERE id='%d'"
        exampleTableplayerId[id]);
    SQL_ThreadQuery(Tuple"DataHandler"querydatasizeof(data));
}


public 
client_disconnected(id) {

    if (statusPlayer[id] == LOGUED) {
        save_data(id);

        statusPlayer[id] = NOT_LOGUED;
    }  
}


public 
client_putinserver(id) {

 new 
AuthId[32];

 if (
is_user_steam(id)) {
 
get_user_authid(idAuthIdcharsmax(AuthId));
 } else {
 
get_user_name(idAuthIdcharsmax(AuthId));
 }

 new 
query[MAX_MENU_LENGTH], data[2];

 
data[0] = id;
 
data[1] = LOGIN;

 
formatex(querycharsmax(query), "SELECT * FROM %s WHERE steam_id= ^"%s^""exampleTableAuthId);

 
SQL_ThreadQuery(Tuple"DataHandler"querydatasizeof(data));
 
}

public 
plugin_init() {
 
//conexion sql


en tu busqueda será más rápido procesar un numero que un varchar. (ni idea si esta bien hecho)
[Imagen: zcsztw-4.png] [Imagen: 6u5fj2-4.png]
[Imagen: linkedin_thumb_image.png][Imagen: 76561198283253977.png][Imagen: linkedin_thumb_image.png]
Responder
#23
Solucionado gracias a Mía

Código PHP:
public client_putinserver(index)
{
    if(!is_user_connected(index))
    {
        return;
    }
    arrayset(g_PlayerData[index], 0DATA_PLAYERS);
    
    g_iStatus
[index] = NO_LOGUEADO;
    get_user_authid(indexg_szPlayerAuthdID[index], charsmax(g_szPlayerAuthdID[]));
    get_user_name(indexg_szPlayerName[index], charsmax(g_szPlayerName[]))
    PlayerLoad(index);
}

public 
CheckTabla()
{
    new szTemp[768];
    formatex(szTempcharsmax(szTemp), "\
        CREATE TABLE IF NOT EXISTS %s (`%s` INTEGER PRIMARY KEY AUTOINCREMENT NOT NULL, `%s` varchar(33), `%s` int,`%s` int,`%s` int,`%s` int,`%s` int,`%s` float, `%s` int, `%s` int, `%s` int,`%s` int, `%s` int)"

        SQLX_TABLACOLUMN_USERIDCOLUMN_AUTHIDCOLUMN_KILLSCOLUMN_DEATHSCOLUMN_HEADSHOTSCOLUMN_BOMBPLANTEDSCOLUMN_BOMBDEFUSEDCOLUMN_DAMAGESCOLUMN_ROUNDSCOLUMN_PUGSCOLUMN_KILLS3KCOLUMN_KILLS4KCOLUMN_KILLS5K);
    SQL_ThreadQuery(g_tuple"handler_checktable"szTemp);
}

public 
handler_checktable(FailStateHandle:QueryError[], ErrcodeData[], DataSize)
{
    if (fail_query(FailStateErrorErrcode))
    {
        server_print("Error al crear la tabla.")
        return PLUGIN_HANDLED;
    }

    server_print("Tabla creada.")
    return PLUGIN_CONTINUE


public 
handler_cargar(FailStateHandle:QueryError[], ErrcodeData[], DataSize)
{
    new index Data[0];
    
    
if (index != find_player("k"Data[1]))
    {
        SQL_FreeHandle(Query);
        return;
    }
    
    
if(fail_query(FailStateErrorErrcode))
    {
        console_print(index"Error al registrar");
        return;
    }
    
    
if (SQL_NumResults(Query))
    {
        g_iPlayerUserID[index] = SQL_ReadResult(Query0);
        
        g_OldPlayerData
[index][Kills] = SQL_ReadResult(Query2);
        g_OldPlayerData[index][Deaths] = SQL_ReadResult(Query3);
        g_OldPlayerData[index][HeadShots] = SQL_ReadResult(Query4);
        g_OldPlayerData[index][BombPlanteds] = SQL_ReadResult(Query5);
        g_OldPlayerData[index][BombDefuseds] = SQL_ReadResult(Query6);
        SQL_ReadResult(Query7Float:g_OldPlayerData[index][Damages]);
        g_OldPlayerData[index][Rounds] = SQL_ReadResult(Query8);
        g_OldPlayerData[index][Pugs] = SQL_ReadResult(Query9);
        g_OldPlayerData[index][Kills3k] = SQL_ReadResult(Query10);
        g_OldPlayerData[index][Kills4k] = SQL_ReadResult(Query11);
        g_OldPlayerData[index][Kills5k] = SQL_ReadResult(Query12);
        
        console_print
(index"Datos cargados");
        
        arrayset
(g_PlayerData[index], 0DATA_PLAYERS);
        
        g_iStatus
[index] = LOGUEADO;
    }
    else
        PlayerRegister(index);
    
    SQL_FreeHandle
(Query);
}

public 
handler_actualizar(FailStateHandle:QueryError[], Errcodedata[], DataSize)
{
    new id data[0];

    if(fail_query(FailStateErrorErrcode))
    {
        console_print(id"Error al registrar");
        return;
    }
    
    SQL_FreeHandle
(Query);
    
    
if (!is_user_connected(id))
        return;
    
    console_print
(id"Datos Actualizados");
}

public 
handler_registrar(FailStateHandle:QueryError[], ErrcodeData[], DataSize)
{
    new id Data[0];

    if(fail_query(FailStateErrorErrcode))
    {
        console_print(id"Error al registrar");
        return PLUGIN_HANDLED;
    }
    
    console_print
(id"Cuenta creada");
    
    arrayset
(g_OldPlayerData[id], 0DATA_PLAYERS);
    arrayset(g_PlayerData[id], 0DATA_PLAYERS);
    g_iStatus[id] = LOGUEADO;
    return PLUGIN_CONTINUE

Pawn Básico no critiquen xD  Approved

Responder


Salto de foro:


Usuarios navegando en este tema: 1 invitado(s)