Allied Modders en español

Versión completa: Problemillas con ADV Vault y hud
Actualmente estas viendo una versión simplificada de nuestro contenido. Ver la versión completa con el formato correcto.
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)
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();
            }
        }
    }

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.
Eso te quito
Código PHP:
register_clcmd("nightvision""CmdMenuPrincipal"
Te tira error por que la funcion CmdMenuPrincipal no existe
eso es todo?

tiraba logs en todas las funciones.