Problemillas con ADV Vault y hud
#1
Buenas, Estoy armando un plugins xD pero me tira unos logs en ciertas lineas.

Código PHP:
/*Librerias*/
#include <amxmodx>
#include <amxmisc>
#include <fun>
#include <adv_vault>
#include <hamsandwich>
//#include <csx>

/*Macro de niveles */
#define levelup(%1) (%1 * %1 +10)

/* Registro de plugin*/
new const szInfoPlugin[][] = {
    {
"Sistema de niveles"},
    {
"1.0"},
    {
"Kyabe"}
}
/*Enumeradores*/
enum {
    
EXP,
    
LEVEL,
    
RANGO,
    
CAMPOS_DATA
}
enum RANGOS_DATA {
    
NOMBRE[64],
    
LEVEL_RANGO
}
/*Variables*/
new iExp[33];
new 
iLevel[33];
new 
iPlayerTag[33];
new 
iAdminTag[33];
new 
iRango[33];

/*Variables globales*/
new Vault;
new 
iMaxPlayers;
new 
cvar_maxlevelcvar_expkillcvar_expC4cvar_dropadmin

/*Constantes*/
new TASK_MAINHUD 3646
new HUD_CHANNEL 1
new Float:HUD_STATS_X 0.01
new Float:HUD_STATS_Y 0.22

new iData[CAMPOS_DATA]
new const 
iRangos_Data[][RANGOS_DATA] = {
    {
"Sin rango"1},
    {
"Cadete"10},
    {
"Distinguido"18},
    {
"Soldado"24},
    {
"Soldado razo"30},
    {
"Sargento"35},
    {
"Teniente"48},
    {
"Coronel"60},
    {
"Mayor"75},
    {
"Almirante"90}
}
/*Plugin INIT*/
public plugin_init() {
    
register_plugin(szInfoPlugin[0], szInfoPlugin[1], szInfoPlugin[2])
    
register_clcmd("say""HookSay")
    
register_clcmd("say_team""BlockSay_Team")
    
register_clcmd("nightvision""CmdMenuPrincipal")
    
register_concmd("amx_niveles""CmdDarNiveles"ADMIN_RCON"<Target><Niveles>")
    
    
cvar_maxlevel register_cvar("amx_maxlevel""100")
    
cvar_expkill register_cvar("amx_expkill""50")
    
cvar_expC4 register_cvar("amx_expC4""75")
    
cvar_dropadmin register_cvar("amx_dropadmin""2"//esta cvar
    
    
RegisterHam(Ham_Killed"player""fw_PlayerKilled"true)
    
    
register_logevent("Round_End"2"1=Round_End")
    
    
Vault adv_vault_is_open("Datos_PJ")
    
    
iData[EXP] = adv_vault_register_field(Vault"EXP")
    
iData[LEVEL] = adv_vault_register_field(Vault"LEVEL")
    
iData[RANGO] = adv_vault_register_field(Vault"RANGOS")
    
    
adv_vault_init(Vault)
    
    
iMaxPlayers get_maxplayers()
    
}
/*EVENTOS*/
public client_putinserver(iIndex)
{
    
get_user_name(iIndexiPlayerTag[iIndex], charsmax(iPlayerTag))
    
    
iExp[iIndex] = 0
    iLevel
[iIndex] = 1
    iRango
[iIndex] = 0
    
    
if(get_user_flags(iIndex) & ADMIN_RCON)
        
formatex(iAdminTag[iIndex], charsmax(iAdminTag), "STAFF")
    else if(
get_user_flags(iIndex) & ADMIN_IMMUNITY)
        
formatex(iAdminTag[iIndex], charsmax(iAdminTag), "ENCARGADO")
    else if(
get_user_flags(iIndex) & ADMIN_LEVEL_A)
        
formatex(iAdminTag[iIndex], charsmax(iAdminTag), "ADMIN")
    else if(
get_user_flags(iIndex) & ADMIN_LEVEL_B)
        
formatex(iAdminTag[iIndex], charsmax(iAdminTag), "VIP")
    else
        
formatex(iAdminTag[iIndex], charsmax(iAdminTag), "USER")
    
    
set_task(1.0"HUD"iIndex+TASK_MAINHUD)
    
    
//Cargar(iIndex)
}
public 
client_disconnect(iIndex)
{
    
Guardar(iIndex)
    
remove_task(iIndex+TASK_MAINHUD)
}
public 
fw_PlayerKilled(victimattackershouldgib)
{
    if(
victim == attacker || !is_user_alive(attacker))
        return;
    
    
CheckLevel(attacker, (get_pcvar_num(cvar_expkill)))
}
public 
Round_End()
{
    for(new 
id 1id <= iMaxPlayersid++)
    {
        if(!
is_user_connected(id))
            continue;
        
ChatColor(id"^4[PRE] ^1Datos guardados")
        
Guardar(id)
    }
}
/*public bomb_explode(planter, defuser)
{
    ChatColor(planter, "^4[PRE] ^1Ganas ^4%d ^1por que exploto el C4", (get_pcvar_num(cvar_expC4)))
    CheckLevel(planter, (get_pcvar_num(cvar_expC4)))
}
public bomb_defused(defuser)
{
    ChatColor(defuser, "^4[PRE] ^1Ganas ^%d ^1Por desactivar el C4", (get_pcvar_num(cvar_expC4)))
    CheckLevel(defuser, (get_pcvar_num(cvar_expC4)))
}*/
public CheckLevel(iIndexiData)
{
    new 
Level false
    iExp
[iIndex] = (is_user_admin(iIndex))? (iData * (get_pcvar_num(cvar_dropadmin))) : iData
    
    iExp
[iIndex] = clamp(iExp[iIndex], 0levelup((get_pcvar_num(cvar_maxlevel))))
    if(
iExp[iIndex] >= levelup(iLevel[iIndex]))
    {
        
iLevel[iIndex]++
        
Level true
    
}
    if(
Level)
    {
        
ChatColor(iIndex"^4[PRE] ^1haz ascendido a nivel %i"iLevel[iIndex])
    }
    
CheckRango(iIndex)
}
public 
CheckRango(iIndex)
{
    new 
Aumento false
    
while(iLevel[iIndex] >= iRangos_Data[iRango[iIndex]][LEVEL_RANGO])
    {
        
Aumento true
        iRango
[iIndex]++
    }
    if(
Aumento)
    {
        
ChatColor(0"^4[PRE] ^1El usuario ^3%s ^1ha sido ascendido a ^4%s"iPlayerTag[iIndex], iRangos_Data[iRango[iIndex]][NOMBRE])
        
Aumento false
    
}
}
public 
HUD(iIndex)
{
    
iIndex -= TASK_MAINHUD
    
    set_hudmessage
(25500HUD_STATS_XHUD_STATS_Y00.01.00.00.0HUD_CHANNEL)
    
ShowSyncHudMsg(iIndexCreateHudSyncObj(), "Nombre:%s^nNivel:%d (%d/%d)^nRango:%s^nEstatus:%s"iPlayerTag[iIndex], iLevel[iIndex], iExp[iIndex], levelup(iLevel[iIndex]), iRangos_Data[iRango[iIndex]][NOMBRE], iAdminTag[iIndex])
}
/*HOOK SAY*/
public HookSay(iIndex)
{
    static 
szSay[192], szNombre[32];
    
    
read_args(szSaycharsmax(szSay))
    
remove_quotes(szSay)
    
replace_all(szSaycharsmax(szSay), "%""")
    
    
get_user_name(iIndexszNombre32)
    
    
formatex(szSaycharsmax(szSay), "%s ^3[^4%s^3] %s:%s%s", (is_user_alive(iIndex))? "" "*MUERTO"iRangos_Data[iRango[iIndex]][NOMBRE], szNombre, (is_user_admin(iIndex))? "^4" ""szSay)
    
    
ChatColor(0szSay)
}
public 
BlockSay_Team(iIndex)
{
    
ChatColor(iIndex"^4[PRE] ^1El chat de equipo esta desactivado")
    return;
}
/*ADV_VAULT*/
public Guardar(iIndex)
{
    
adv_vault_set_start(Vault)
    
    
adv_vault_set_field(VaultiData[EXP], iExp[iIndex], charsmax(iExp))
    
adv_vault_set_field(VaultiData[LEVEL], iLevel[iIndex], charsmax(iLevel))
    
adv_vault_set_field(VaultiData[RANGO], iRango[iIndex], charsmax(iRango))
    
    
adv_vault_set_end(Vault0iPlayerTag[iIndex])
}
public 
Cargar(iIndex)
{
    
//if(!adv_vault_get_prepare(Vault, _, iPlayerTag[iIndex]))
        //return;
    
    
iExp[iIndex] = adv_vault_get_field(VaultiData[EXP])
    
iLevel[iIndex] = adv_vault_get_field(VaultiData[LEVEL])
    
iRango[iIndex] = adv_vault_get_field(VaultiData[RANGO])
    
}
/*FUNCIONES EXTRAS*/
public CmdDarNiveles(iIndex)
{
    new 
iData[32], gLevel[3], iTargetiAdminName[32];
    
    
read_argv(1iDatacharsmax(iData))
    
read_argv(2gLevelcharsmax(gLevel))
    
    
get_user_name(iIndexiAdminName32)
    
    
iTarget cmd_target(iIndexiData0)
    
    if(
iTarget)
        return;
    
    
iLevel[iIndex] += str_to_num(gLevel)
    
    
ChatColor(iIndex"^4[PRE] ^1Le haz dado ^4%i ^1Niveles a ^3%s"str_to_num(gLevel), iTarget)
    
ChatColor(0"^4[PRE] ^1El admin ^3%s ^1Ha dado ^4%i ^1Niveles a %s"iAdminNamegLeveliTarget)
    
ChatColor(iTarget"^4[PRE] ^1El admin ^4%s ^1Te ha dado ^4%i ^1Niveles"iAdminNamegLevel)
}
stock ChatColor(const index, const input[], any:...)
{    
    new 
count 1players[32], len
    
static msg[192]
    
    
len formatex(msg,charsmaxmsg ), "");
    
vformat(msg[len], charsmax(msg), input3)
    
msg[191] = '^0';
    
    
replace_all(msg190"!g""^4"// Color Verde
    
replace_all(msg190"!y""^1"// Color Normal
    
replace_all(msg190"!t""^3"// Color de Equipo
    
    
if (indexplayers[0] = index; else get_players(playerscount"ch")
    {
        for (new 
0counti++)
        {
            if (
is_user_connected(players[i]))
            {
                
message_begin(MSG_ONE_UNRELIABLEget_user_msgid("SayText"), _players[i])
                
write_byte(players[i]);
                
write_string(msg);
                
message_end();
            }
        }
    }


las lineas donde tira logs es esta

Código PHP:
if(!adv_vault_get_prepare(Vault_iPlayerTag[iIndex]))
        return; 

y esta

Código PHP:
Cargar(iIndex

Otra cosa, cuando entro aparece el hud pero al momento de unirme a un equipo deja de salir el hud

Código PHP:
public HUD(iIndex)
{
    
iIndex -= TASK_MAINHUD
    
    set_hudmessage
(25500HUD_STATS_XHUD_STATS_Y00.01.00.00.0HUD_CHANNEL)
    
ShowSyncHudMsg(iIndexCreateHudSyncObj(), "Nombre:%s^nNivel:%d (%d/%d)^nRango:%s^nEstatus:%s"iPlayerTag[iIndex], iLevel[iIndex], iExp[iIndex], levelup(iLevel[iIndex]), iRangos_Data[iRango[iIndex]][NOMBRE], iAdminTag[iIndex])


Ahora me fije, y algunos logs aparecen en otras lineas pero wue

L 09/25/2018 - 21:36:56: Info (map "de_dust2") (file "addons/amxmodx/logs/error_20180925.log")
L 09/25/2018 - 21:36:56: Function "CmdMenuPrincipal" was not found
L 09/25/2018 - 21:36:56: [AMXX] Displaying debug trace (plugin "Sistema_niveles.amxx")
L 09/25/2018 - 21:36:56: [AMXX] Run time error 19: function not found
L 09/25/2018 - 21:36:56: [AMXX] [0] Sistema_niveles.sma::plugin_init (line 65)
L 09/25/2018 - 21:37:06: ERROR Invalid VaultIndex: 0
L 09/25/2018 - 21:37:06: [AMXX] Displaying debug trace (plugin "Sistema_niveles.amxx")
L 09/25/2018 - 21:37:06: [AMXX] Run time error 10: native error (native "adv_vault_set_start")
L 09/25/2018 - 21:37:06: [AMXX] [0] Sistema_niveles.sma::Guardar (line 205)
L 09/25/2018 - 21:37:06: [AMXX] [1] Sistema_niveles.sma::client_disconnect (line 114)
Si no te gusta algo, cámbialo. Si no lo puedes cambiar, cambia la forma en que piensas sobre ello <3
Responder
#2
Prueba

Código PHP:
/*Librerias*/
#include <amxmodx>
#include <amxmisc>
#include <fun>
#include <adv_vault>
#include <hamsandwich>
//#include <csx>

/*Macro de niveles */
#define levelup(%1) (%1 * %1 +10)

/* Registro de plugin*/
new const szInfoPlugin[][] = {
    {
"Sistema de niveles"},
    {
"1.0"},
    {
"Kyabe"}
}
/*Enumeradores*/
enum {
    
EXP,
    
LEVEL,
    
RANGO,
    
CAMPOS_DATA
}
enum RANGOS_DATA {
    
NOMBRE[64],
    
LEVEL_RANGO
}
/*Variables*/
new iExp[33];
new 
iLevel[33];
new 
iPlayerTag[33][32];
new 
iAdminTag[33];
new 
iRango[33];

/*Variables globales*/
new Vault;
new 
iMaxPlayers;
new 
cvar_maxlevelcvar_expkillcvar_expC4cvar_dropadmin

/*Constantes*/
new HUD_CHANNEL 1
new Float:HUD_STATS_X 0.01
new Float:HUD_STATS_Y 0.22

new iData[CAMPOS_DATA]
new const 
iRangos_Data[][RANGOS_DATA] = {
    {
"Sin rango"1},
    {
"Cadete"10},
    {
"Distinguido"18},
    {
"Soldado"24},
    {
"Soldado razo"30},
    {
"Sargento"35},
    {
"Teniente"48},
    {
"Coronel"60},
    {
"Mayor"75},
    {
"Almirante"90}
}
/*Plugin INIT*/
public plugin_init() {
    
register_plugin(szInfoPlugin[0], szInfoPlugin[1], szInfoPlugin[2])
    
register_clcmd("say""HookSay")
    
register_clcmd("say_team""BlockSay_Team")
    
// register_clcmd("nightvision", "CmdMenuPrincipal")
    
register_concmd("amx_niveles""CmdDarNiveles"ADMIN_RCON"<Target><Niveles>")
    
    
cvar_maxlevel register_cvar("amx_maxlevel""100")
    
cvar_expkill register_cvar("amx_expkill""50")
    
cvar_expC4 register_cvar("amx_expC4""75")
    
cvar_dropadmin register_cvar("amx_dropadmin""2"//esta cvar
    
    
RegisterHam(Ham_Killed"player""fw_PlayerKilled"true)
    
    
register_logevent("Round_End"2"1=Round_End")
    
    
Vault adv_vault_is_open("Datos_PJ")
    
    
iData[EXP] = adv_vault_register_field(Vault"EXP")
    
iData[LEVEL] = adv_vault_register_field(Vault"LEVEL")
    
iData[RANGO] = adv_vault_register_field(Vault"RANGOS")
    
    
adv_vault_init(Vault)
    
    
iMaxPlayers get_maxplayers()
    
}
/*EVENTOS*/
public client_putinserver(iIndex)
{
    
get_user_name(iIndexiPlayerTag[iIndex], 31);
    
    
iExp[iIndex] = 0
    iLevel
[iIndex] = 1
    iRango
[iIndex] = 0
    
    
if(get_user_flags(iIndex) & ADMIN_RCON)
        
formatex(iAdminTag[iIndex], charsmax(iAdminTag), "STAFF")
    else if(
get_user_flags(iIndex) & ADMIN_IMMUNITY)
        
formatex(iAdminTag[iIndex], charsmax(iAdminTag), "ENCARGADO")
    else if(
get_user_flags(iIndex) & ADMIN_LEVEL_A)
        
formatex(iAdminTag[iIndex], charsmax(iAdminTag), "ADMIN")
    else if(
get_user_flags(iIndex) & ADMIN_LEVEL_B)
        
formatex(iAdminTag[iIndex], charsmax(iAdminTag), "VIP")
    else
        
formatex(iAdminTag[iIndex], charsmax(iAdminTag), "USER")
    
    
set_task(1.0"HUD"iIndex__"b")
    
    
//Cargar(iIndex)
}
public 
client_disconnect(iIndex)
{
    
Guardar(iIndex)
    
remove_task(iIndex)
}
public 
fw_PlayerKilled(victimattackershouldgib)
{
    if(
victim == attacker || !is_user_alive(attacker))
        return;
    
    
CheckLevel(attacker, (get_pcvar_num(cvar_expkill)))
}
public 
Round_End()
{
    for(new 
id 1id <= iMaxPlayersid++)
    {
        if(!
is_user_connected(id))
            continue;
        
ChatColor(id"^4[PRE] ^1Datos guardados")
        
Guardar(id)
    }
}
public 
bomb_explode(planterdefuser)
{
    
ChatColor(planter"^4[PRE] ^1Ganas ^4%d ^1por que exploto el C4", (get_pcvar_num(cvar_expC4)))
    
CheckLevel(planter, (get_pcvar_num(cvar_expC4)))
}
public 
bomb_defused(defuser)
{
    
ChatColor(defuser"^4[PRE] ^1Ganas ^%d ^1Por desactivar el C4", (get_pcvar_num(cvar_expC4)))
    
CheckLevel(defuser, (get_pcvar_num(cvar_expC4)))
}
public 
CheckLevel(iIndexiData)
{
    new 
Level false
    iExp
[iIndex] = (is_user_admin(iIndex))? (iData * (get_pcvar_num(cvar_dropadmin))) : iData
    
    iExp
[iIndex] = clamp(iExp[iIndex], 0levelup((get_pcvar_num(cvar_maxlevel))))
    if(
iExp[iIndex] >= levelup(iLevel[iIndex]))
    {
        
iLevel[iIndex]++
        
Level true
    
}
    if(
Level)
    {
        
ChatColor(iIndex"^4[PRE] ^1haz ascendido a nivel %i"iLevel[iIndex])
    }
    
CheckRango(iIndex)
}
public 
CheckRango(iIndex)
{
    new 
Aumento false
    
while(iLevel[iIndex] >= iRangos_Data[iRango[iIndex]][LEVEL_RANGO])
    {
        
Aumento true
        iRango
[iIndex]++
    }
    if(
Aumento)
    {
        
ChatColor(0"^4[PRE] ^1El usuario ^3%s ^1ha sido ascendido a ^4%s"iPlayerTag[iIndex], iRangos_Data[iRango[iIndex]][NOMBRE])
        
Aumento false
    
}
}
public 
HUD(iIndex)
{
    
set_hudmessage(25500HUD_STATS_XHUD_STATS_Y00.01.00.00.0HUD_CHANNEL)
    
show_hudmessage(iIndex"Nombre:%s^nNivel:%d (%d/%d)^nRango:%s^nEstatus:%s"iPlayerTag[iIndex], iLevel[iIndex], iExp[iIndex], levelup(iLevel[iIndex]), iRangos_Data[iRango[iIndex]][NOMBRE], iAdminTag[iIndex])
}
/*HOOK SAY*/
public HookSay(iIndex)
{
    static 
szSay[192], szNombre[32];
    
    
read_args(szSaycharsmax(szSay))
    
remove_quotes(szSay)
    
replace_all(szSaycharsmax(szSay), "%""")
    
    
get_user_name(iIndexszNombre32)
    
    
formatex(szSaycharsmax(szSay), "%s ^3[^4%s^3] %s:%s%s", (is_user_alive(iIndex))? "" "*MUERTO"iRangos_Data[iRango[iIndex]][NOMBRE], szNombre, (is_user_admin(iIndex))? "^4" ""szSay)
    
    
ChatColor(0szSay)
}
public 
BlockSay_Team(iIndex)
{
    
ChatColor(iIndex"^4[PRE] ^1El chat de equipo esta desactivado")
    return;
}
/*ADV_VAULT*/
public Guardar(iIndex)
{
    
adv_vault_set_start(Vault)
    
    
adv_vault_set_field(VaultiData[EXP], iExp[iIndex], charsmax(iExp))
    
adv_vault_set_field(VaultiData[LEVEL], iLevel[iIndex], charsmax(iLevel))
    
adv_vault_set_field(VaultiData[RANGO], iRango[iIndex], charsmax(iRango))
    
    
adv_vault_set_end(Vault0iPlayerTag[iIndex])
}
public 
Cargar(iIndex)
{
    if(!
adv_vault_get_prepare(Vault_iPlayerTag[iIndex])) return;
    
    
iExp[iIndex] = adv_vault_get_field(VaultiData[EXP])
    
iLevel[iIndex] = adv_vault_get_field(VaultiData[LEVEL])
    
iRango[iIndex] = adv_vault_get_field(VaultiData[RANGO])
    
}
/*FUNCIONES EXTRAS*/
public CmdDarNiveles(iIndex)
{
    new 
iData[32], gLevel[3], iTargetiAdminName[32];
    
    
read_argv(1iDatacharsmax(iData))
    
read_argv(2gLevelcharsmax(gLevel))
    
    
get_user_name(iIndexiAdminName32)
    
    
iTarget cmd_target(iIndexiData0)
    
    if(
iTarget)
        return;
    
    
iLevel[iIndex] += str_to_num(gLevel)
    
    
ChatColor(iIndex"^4[PRE] ^1Le haz dado ^4%i ^1Niveles a ^3%s"str_to_num(gLevel), iTarget)
    
ChatColor(0"^4[PRE] ^1El admin ^3%s ^1Ha dado ^4%i ^1Niveles a %s"iAdminNamegLeveliTarget)
    
ChatColor(iTarget"^4[PRE] ^1El admin ^4%s ^1Te ha dado ^4%i ^1Niveles"iAdminNamegLevel)
}
stock ChatColor(const index, const input[], any:...)
{    
    new 
count 1players[32], len
    
static msg[192]
    
    
len formatex(msg,charsmaxmsg ), "");
    
vformat(msg[len], charsmax(msg), input3)
    
msg[191] = '^0';
    
    
replace_all(msg190"!g""^4"// Color Verde
    
replace_all(msg190"!y""^1"// Color Normal
    
replace_all(msg190"!t""^3"// Color de Equipo
    
    
if (indexplayers[0] = index; else get_players(playerscount"ch")
    {
        for (new 
0counti++)
        {
            if (
is_user_connected(players[i]))
            {
                
message_begin(MSG_ONE_UNRELIABLEget_user_msgid("SayText"), _players[i])
                
write_byte(players[i]);
                
write_string(msg);
                
message_end();
            }
        }
    }

Responder
#3
Ok lo voy a probar. Pero podrias decirme que cambiaste, prefiero que me digan el error a que lo reparen, asi aprendo. Si no es mucha molestia salu2

funciona correctamente, por casualidad no tendras por hay el modulo de CSX, no lo encuentro y lo necesito.
Si no te gusta algo, cámbialo. Si no lo puedes cambiar, cambia la forma en que piensas sobre ello <3
Responder
#4
Eso te quito
Código PHP:
register_clcmd("nightvision""CmdMenuPrincipal"
Te tira error por que la funcion CmdMenuPrincipal no existe
Plata o Plomo Usted decide


- Pablo Emilio Escobar Gaviria -
Responder
#5
eso es todo?

tiraba logs en todas las funciones.
Si no te gusta algo, cámbialo. Si no lo puedes cambiar, cambia la forma en que piensas sobre ello <3
Responder


Salto de foro:


Usuarios navegando en este tema: 1 invitado(s)