Time error (11) - Menu de armas
#1
Hola, tengo el siguiente problema..
Logs:
Cita:L 07/01/2019 - 14:38:44: [AMXX] Displaying debug trace (plugin "mejora_armas.amxx", version "1.0")

L 07/01/2019 - 14:38:44: [AMXX] Run time error 11: divide

L 07/01/2019 - 14:38:44: [AMXX] [0] mejora_armas.sma::mostar_menu_principal (line 165)

L 07/01/2019 - 14:38:44: [AMXX] [1] mejora_armas.sma::clcmd__ChangeTeam (line 139)

Codigo:
Código PHP:
#include <amxmodx>
#include <amxmisc>
#include <fakemeta>
#include <safemenu>

#define PLUGIN "Mejorame :D"
#define VERSION "1.0"
#define AUTHOR "Sambuseti"

#define porcentaje(%1,%2,%3)  (%1 * %3) / %2  // Porcentaje de cuanto tiene

enum 
{
    
FM_CS_TEAM_UNASSIGNED 0,
    
FM_CS_TEAM_T,
    
FM_CS_TEAM_CT,
    
FM_CS_TEAM_SPECTATOR
};

enum
{
    
_TMP 0,
    
_MAC10,
    
_MP5NAVY,
    
_GALIL,
    
_SG552,
    
    
TOTAL_ITENMENU
};

new const 
menu_Armas[][]  =
{
    
// ---Armas Primarias--
    
"Taktische Maschinenpistole",
    
"M-10",
    
"Maschinepistole 5",
    
"IWI Galil ACE",
    
"Sturmgewehr 90"
};

new const 
Info_Submenu[][]  =
{
    
// ---Armas Primarias--
    
"\wPistola ametralladora, fabricada en\y Austria.",
    
"\wPistola ametralladora compacta, fabricada en\y Estado Unidos.",
    
"\wSubfusil, fabricada en\y Estados Unidos.",
    
"\wFusil de asalto, fabricada en\y Israel.",
    
"\wFusil de asalto, fabricada en\y Suiza"

};

enum _:APDATOS

    
ANAME[33],
    
AITEMS[32],
    
AMODEL[100],
    
APMODEL[32],
    
MENU,
    
MUERTES,
    
Float:ADAMAGE
};

new const 
g_primary_items[14][APDATOS] = 
{
    
// NAME                                    ID                    VMODEL                PMODEL        Menu        Muertes     Daño    
    
{"Taktische Maschinenpistole",             "weapon_tmp",         "default",             "default",    _TMP,         0,          1.0},
    {
"Taktische Maschinenpistole (II)",        "weapon_tmp",         "default",             "default",    _TMP,         1,         2.0},
    {
"Taktische Maschinenpistole (III)",    "weapon_tmp",         "default",            "default",    _TMP,         2,         3.0},
    {
"Taktische Maschinenpistole (IV)",        "weapon_tmp",         "default",             "default",    _TMP,         3,         4.0},
    {
"Taktische Maschinenpistole (VI)",        "weapon_tmp",         "default",             "default",    _TMP,         4,         5.0},
    {
"Taktische Maschinenpistole (VII)",    "weapon_tmp",         "default",             "default",    _TMP,         10,     12.0},
    {
"M-10",                                 "weapon_mac10",        "default",            "default",    _MAC10,         0,         1.0},
    {
"M-10 (II)",                             "weapon_mac10",        "default",            "default",    _MAC10,         2,         2.0},
    {
"Maschinepistole 5",                    "weapon_mp5navy",   "default",            "default",  _MP5NAVY,    0,      1.0},
    {
"Maschinepistole 5 (II)",                "weapon_mp5navy",   "default",            "default",  _MP5NAVY,    2,      2.0},
    {
"IWI Galil ACE",                        "weapon_galil",     "default",            "default",  _GALIL,        0,      1.0},
    {
"IWI Galil ACE (II)",                    "weapon_galil",     "default",            "default",  _GALIL,        2,      5.0},
    {
"Sturmgewehr 90",                        "weapon_sg552",     "default",            "default",  _SG552,        0,      1.0},
    {
"Sturmgewehr 90 (II)",                    "weapon_sg552",     "default",            "default",  _SG552,        2,      56.0}
    
};


new 
g_menuitem33 ], g_armas33 ][ sizeof g_primary_items ],  g_armaselec33 ][ TOTAL_ITENMENU ];

// contemos juntos
new finis_weapon_tipe[33][ TOTAL_ITENMENU ], g_total_weapon_tipe[33][ TOTAL_ITENMENU ], num_defaul_weapon[33][ TOTAL_ITENMENU ]

public 
plugin_init() 
{
    
register_plugin(PLUGINVERSIONAUTHOR)
    
    
register_clcmd("chooseteam""clcmd__ChangeTeam");
    
register_clcmd("jointeam""clcmd__ChangeTeam");
}

public 
client_putinserver(id
{
    for(new 
0sizeof(g_primary_items); ++i)
    {
        
g_armas[id][i] = 0;
        for(new 
0TOTAL_ITENMENUj++)
        {
            if(
g_primary_items[i][MENU] == j)
            {
                
g_total_weapon_tipe[id][j]++
                
finis_weapon_tipe[id][j] = i
                
                
if(equal(g_primary_items[i][AMODEL], "default"))
                    
g_armaselec[id][j] = i;
            }
                
            if(
equal(g_primary_items[i][AMODEL], "default"))
                
num_defaul_weapon[id][j] = i
        
}
    }
    
g_armaselec[id][_TMP] = 7;
    
g_armaselec[id][_MP5NAVY] = g_armaselec[id][_MP5NAVY]+5;
}
    

public 
clcmd__ChangeTeam(const id
{
    if(!
is_user_connected(id)) 
    {
        return 
PLUGIN_HANDLED;
    }
    
    new 
iTeam;
    
iTeam fm_cs_get_user_team(id);
    
    if(
iTeam == FM_CS_TEAM_SPECTATOR || iTeam == FM_CS_TEAM_UNASSIGNED
    {
        return 
PLUGIN_CONTINUE;
    }
    
    
mostar_menu_principalid );
    return 
PLUGIN_HANDLED;
}

// Game Menu
public mostar_menu_principalid )
{
    if(!
is_user_connected(id)) 
    {
        return;
    }
    new 
i
    
    
new menuidtext100 ], numsizeof menu_Armas ];
    
menuid menu_create("\r[Armamento]\yMejora de Armas^n^n\yEliminar enemigos^ncon el arma que deseas mejorar^n""menu_principal");
    
    for(
0TOTAL_ITENMENUi++) 
    {
        
num_to_str(inumcharsmax(num));
                
        if(
g_total_weapon_tipe[id][i] == 0)
        {
            
client_print(idprint_chat"Se Contaron %d armas en el menu de %s, por lo tanto no aparece"g_total_weapon_tipe[id][i], menu_Armas[i]);
            continue;
        }
                
        
formatex(textcharsmax(text), "%s \y| \wMejorado:\r %i%\y%"menu_Armas[i], porcentaje((g_armaselec[id][i]-num_defaul_weapon[id][i]), (finis_weapon_tipe[id][i]-num_defaul_weapon[id][i]), g_total_weapon_tipe[id][i]));
        
menu_additem(menuid,textnum);
        
client_print(idprint_chat"Se Contaron %d armas en el menu de %s"g_total_weapon_tipe[id][i], menu_Armas[i]);
    }
    
    
menu_setprop(menuidMPROP_EXITNAME"Volver");

    if(
pev_valid(id) ==  2
    {
        
set_pdata_int(id20505);
    }

    
ShowLocalMenu(idmenuid);
}

public 
menu_principal(idmenuiditem
{
    if(!
is_user_connected(id)) 
    {
        
DestroyLocalMenu(idmenuid);
        return 
PLUGIN_HANDLED;
    }
    
    if(
item == MENU_EXIT
    {
        
DestroyLocalMenu(idmenuid);
        return 
PLUGIN_HANDLED
    }

    new 
buffer[4], dummy
    menu_item_getinfo
(menuiditemdummybuffercharsmax(buffer), __dummy)
    
    if (
str_to_num(buffer) == 6) return PLUGIN_HANDLED;
    
    
g_menuitemid ] = str_to_num(buffer)
    
    
DestroyLocalMenu(idmenuid);
    
show_menu_armasid )
    return 
PLUGIN_HANDLED;
}

public 
show_menu_armasid 
{
    if(!
is_user_connected(id)) 
    {
        return;
    }

    new 
menuidtext200 ];
    for (new 
0sizeof g_primary_itemsi++)
    {
        if(
g_primary_items[i][MENU] == g_menuitemid ])
        {
                if(
g_armaselec[id][g_menuitemid ]] == i)
                {
                    
formatex(textcharsmax(text), "\r[ZP:SOLDIER]\yMejorar \d%s^n^nProxima mejora: \w%s^n\yMuertes necesarias: \w%d"menu_Armas[g_menuitemid ]], g_primary_items[g_armaselec[id][g_menuitemid ]]+1][ANAME], g_primary_items[g_armaselec[id][g_menuitemid ]]+1][MUERTES])
                    
menuid menu_create(text"menu_armas");
                    
                    
formatex(textcharsmax(text), "Mejora Actual: %s"g_primary_items[g_armaselec[id][g_menuitemid ]]][ANAME])
                    
menu_additem(menuidtext"1");
                }
        }
    }
    
    
formatex(textcharsmax(text), "^n%s"Info_Submenu[g_menuitemid ]])
    
Acentos(textcharsmax(text))
    
menu_addtext(menuidtext1);
    
    
menu_setpropmenuidMPROP_EXITNAME "Volver");

    if(
pev_valid(id) ==  2
    {
        
set_pdata_int(id20505);
    }

    
ShowLocalMenu(idmenuid);
}

public 
menu_armas(idmenuiditem
{
    if(!
is_user_connected(id)) 
    {
        
DestroyLocalMenu(idmenuid);
        return 
PLUGIN_HANDLED;
    }
    
    if(
item == MENU_EXIT
    {
        
DestroyLocalMenu(idmenuid);

        
mostar_menu_principalid )
        return 
PLUGIN_HANDLED
    }

    new 
buffer[4], dummy
    menu_item_getinfo
(menuiditemdummybuffercharsmax(buffer), __dummy)
    
DestroyLocalMenu(idmenuid);


    return 
PLUGIN_HANDLED;
}

stock fm_cs_get_user_team(id
{
    if (
pev_valid(id) != 2
    {
        return 
FM_CS_TEAM_UNASSIGNED;
    }
    
    return 
get_pdata_int(id1145);
}

stock Acentos(szText[]= ""len 0

    
replace_all(szTextlen"á""á")
    
replace_all(szTextlen"Á""Ã")
    
replace_all(szTextlen"é""é")
    
replace_all(szTextlen"É""É")
    
replace_all(szTextlen"í""Ã*"
    
replace_all(szTextlen"Í""Ã")
    
replace_all(szTextlen"ó""ó")
    
replace_all(szTextlen"Ó""Ó")
    
replace_all(szTextlen"ú""ú")
    
replace_all(szTextlen"Ú""Ú")
    
replace_all(szTextlen"ñ""ñ")
    
replace_all(szTextlen"Ñ""Ñ")
    
    static 
szReturn[1024];
    
formatex(szReturncharsmax(szReturn), szText);
    
    return 
szReturn;

Responder
#2
En algún momento del código estás dividiendo por 0, asegurate que el argumento "%2" sea distinto de 0

Código PHP:
#define porcentaje(%1,%2,%3)  (%1 * %3) / %2  // Porcentaje de cuanto tiene 
Responder
#3
(01/07/2019, 03:22 PM)INTIFADA escribió: En algún momento del código estás dividiendo por 0, asegurate que el argumento "%2" sea distinto de 0

Código PHP:
#define porcentaje(%1,%2,%3)  (%1 * %3) / %2  // Porcentaje de cuanto tiene 

Código PHP:
public mostar_menu_principalid )
{
    if(!
is_user_connected(id)) 
    {
        return;
    }
    new 
i
    
    
new menuidtext100 ], numsizeof menu_Armas ];
    
menuid menu_create("\r[Armamento]\yMejora de Armas^n^n\yEliminar enemigos^ncon el arma que deseas mejorar^n""menu_principal");
    
    for(
0TOTAL_ITENMENUi++) 
    {
        
num_to_str(inumcharsmax(num));
                
        if(
g_total_weapon_tipe[id][i] == 0)
        {
            
client_print(idprint_chat"Se Contaron %d armas en el menu de %s, por lo tanto no aparece"g_total_weapon_tipe[id][i], menu_Armas[i]);
            continue;
        }
                
        
//formatex(text, charsmax(text), "%s \y| \wMejorado:\r %i%\y%", menu_Armas[i], porcentaje((g_armaselec[id][i]-num_defaul_weapon[id][i]), (finis_weapon_tipe[id][i]-num_defaul_weapon[id][i]), g_total_weapon_tipe[id][i]));
        
menu_additem(menuid,textnum);
        
client_print(idprint_chat"Se Contaron %d armas en el menu de %s"g_total_weapon_tipe[id][i], menu_Armas[i]);
    }
    
    
menu_setprop(menuidMPROP_EXITNAME"Volver");

    if(
pev_valid(id) ==  2
    {
        
set_pdata_int(id20505);
    }

    
ShowLocalMenu(idmenuid);

no comprendo
Responder
#4
(01/07/2019, 04:42 PM)Reverant escribió:
(01/07/2019, 03:22 PM)INTIFADA escribió: En algún momento del código estás dividiendo por 0, asegurate que el argumento "%2" sea distinto de 0

Código PHP:
#define porcentaje(%1,%2,%3)  (%1 * %3) / %2  // Porcentaje de cuanto tiene 

Código PHP:
public mostar_menu_principalid )
{
    if(!
is_user_connected(id)) 
    {
        return;
    }
    new 
i
    
    
new menuidtext100 ], numsizeof menu_Armas ];
    
menuid menu_create("\r[Armamento]\yMejora de Armas^n^n\yEliminar enemigos^ncon el arma que deseas mejorar^n""menu_principal");
    
    for(
0TOTAL_ITENMENUi++) 
    {
        
num_to_str(inumcharsmax(num));
                
        if(
g_total_weapon_tipe[id][i] == 0)
        {
            
client_print(idprint_chat"Se Contaron %d armas en el menu de %s, por lo tanto no aparece"g_total_weapon_tipe[id][i], menu_Armas[i]);
            continue;
        }
                
        
//formatex(text, charsmax(text), "%s \y| \wMejorado:\r %i%\y%", menu_Armas[i], porcentaje((g_armaselec[id][i]-num_defaul_weapon[id][i]), (finis_weapon_tipe[id][i]-num_defaul_weapon[id][i]), g_total_weapon_tipe[id][i]));
        
menu_additem(menuid,textnum);
        
client_print(idprint_chat"Se Contaron %d armas en el menu de %s"g_total_weapon_tipe[id][i], menu_Armas[i]);
    }
    
    
menu_setprop(menuidMPROP_EXITNAME"Volver");

    if(
pev_valid(id) ==  2
    {
        
set_pdata_int(id20505);
    }

    
ShowLocalMenu(idmenuid);

no comprendo

Código PHP:
porcentaje (
    (
g_armaselec[id][i] - num_defaul_weapon[id][i]), 
    (
finis_weapon_tipe[id][i] - num_defaul_weapon[id][i]),
    
g_total_weapon_tipe[id][i]


Tu problema es que una de las restas que se hacen cuando llamas a porcentaje(param1, param2, param3) devuelve 0, entonces te tira error de que no podes dividir por 0 ya que el param2 lo usas para dividir. Tendrias que revisar los posibles valores que envias como segundo parametro.

Código PHP:
// Este es tu parametro 2
(finis_weapon_tipe[id][i] - num_defaul_weapon[id][i]) 
Responder


Salto de foro:


Usuarios navegando en este tema: 1 invitado(s)