Numero negativo al guardar por segunda vez
#1
Tengo un problema cuando guardo por segunda vez el damage pasa a transformar a un numero negativo en la primer guardado registro 100 de damage al guardar por segunda vez este pasa a -0.00 solo pasa cuando guardo por segunda vez la primera siempre me registra bien
una cosa es que el damage lo registro como float


Código PHP:
public SaveGlobalPlayerData(index)
{
    if(g_iStatus[index] != LOGUEADO || !is_user_connected(index) || is_user_bot(index) || is_user_hltv(index))
    {
        return;
    }

    new szTemp[256], data[1];

    for(new KillsDATA_PLAYERSi++) 
    {
        g_OldPlayerData[index][i] += g_PlayerData[index][i];
        g_PlayerData[index][i] = 0;
    }

    formatex(szTempcharsmax(szTemp), "UPDATE %s SET `%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=%d",
        SQLX_TABLA,
        COLUMN_KILLS,
        g_OldPlayerData[index][Kills],
        COLUMN_DEATHS,
        g_OldPlayerData[index][Deaths],
        COLUMN_HEADSHOTS,
        g_OldPlayerData[index][HeadShots],
        COLUMN_BOMBPLANTEDS,
        g_OldPlayerData[index][BombPlanteds],
        COLUMN_BOMBDEFUSED,
        g_OldPlayerData[index][BombDefuseds],
        COLUMN_DAMAGES,
        g_OldPlayerData[index][Damages],
        COLUMN_ROUNDS,
        g_OldPlayerData[index][Rounds],
        COLUMN_PUGS,
        g_OldPlayerData[index][Pugs],
        COLUMN_KILLS3K,
        g_OldPlayerData[index][Kills3k],
        COLUMN_KILLS4K,
        g_OldPlayerData[index][Kills4k],
        COLUMN_KILLS5K,
        g_OldPlayerData[index][Kills5k],
        COLUMN_USERID,
        g_iPlayerUserID[index]);
    
    data
[0] = index;
    SQL_ThreadQuery(g_tuple"handler_actualizar"szTempdata1);
}

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");

Pawn Básico no critiquen xD  Approved

Responder
#2
(07/07/2021, 10:24 PM)Meliodas escribió: Tengo un problema cuando guardo por segunda vez el damage pasa a transformar a un numero negativo en la primer guardado registro 100 de damage al guardar por segunda vez este pasa a -0.00 solo pasa cuando guardo por segunda vez la primera siempre me registra bien
una cosa es que el damage lo registro como float


Código PHP:
public SaveGlobalPlayerData(index)
{
    if(g_iStatus[index] != LOGUEADO || !is_user_connected(index) || is_user_bot(index) || is_user_hltv(index))
    {
        return;
    }

    new szTemp[256], data[1];

    for(new KillsDATA_PLAYERSi++) 
    {
        g_OldPlayerData[index][i] += g_PlayerData[index][i];
        g_PlayerData[index][i] = 0;
    }

    formatex(szTempcharsmax(szTemp), "UPDATE %s SET `%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=%d",
        SQLX_TABLA,
        COLUMN_KILLS,
        g_OldPlayerData[index][Kills],
        COLUMN_DEATHS,
        g_OldPlayerData[index][Deaths],
        COLUMN_HEADSHOTS,
        g_OldPlayerData[index][HeadShots],
        COLUMN_BOMBPLANTEDS,
        g_OldPlayerData[index][BombPlanteds],
        COLUMN_BOMBDEFUSED,
        g_OldPlayerData[index][BombDefuseds],
        COLUMN_DAMAGES,
        g_OldPlayerData[index][Damages],
        COLUMN_ROUNDS,
        g_OldPlayerData[index][Rounds],
        COLUMN_PUGS,
        g_OldPlayerData[index][Pugs],
        COLUMN_KILLS3K,
        g_OldPlayerData[index][Kills3k],
        COLUMN_KILLS4K,
        g_OldPlayerData[index][Kills4k],
        COLUMN_KILLS5K,
        g_OldPlayerData[index][Kills5k],
        COLUMN_USERID,
        g_iPlayerUserID[index]);
    
    data
[0] = index;
    SQL_ThreadQuery(g_tuple"handler_actualizar"szTempdata1);
}

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");


Y cómo es el algorítmo de cálculo de daño?
Si querés una precisión de dos decimales creo que podrías usar .2f en vez de 0.02f
Responder
#3
(08/07/2021, 02:07 AM)warps escribió: Y cómo es el algorítmo de cálculo de daño?
Si querés una precisión de dos decimales creo que podrías usar .2f en vez de 0.02f

Código PHP:
public OnPlayerTakeDamage_Post(viaFloat:flDamageiDamageBits)
{
    if(pug_get_state() != ALIVE)
    {
        return;
    }
    new Float:flDmgTake;
    pev(vpev_dmg_takeflDmgTake);

    new Float:flRealDamage floatmin(flDmgTakeg_flHealth);
    g_PlayerData[a][Damages] += flRealDamage;

Pawn Básico no critiquen xD  Approved

Responder


Salto de foro:


Usuarios navegando en este tema: 1 invitado(s)