AlliedModders

AlliedModders (https://forums.alliedmods.net/index.php)
-   Scripting Help (https://forums.alliedmods.net/forumdisplay.php?f=11)
-   -   [SOLVED] Run time error 4: index out of bounds (https://forums.alliedmods.net/showthread.php?t=155567)

^SmileY 04-24-2011 00:00

[SOLVED] Run time error 4: index out of bounds
 
PHP Code:

#include <amxmodx>
#include <amxmisc>

#include <pug_menu>
#include <pug_const>
#include <pug_stocks>

new const plugin_author[] = "Twilight Suzuka"
new const plugin_name[] = "pug-KEYPAD"

public pug_keypad_menu;
public 
pug_cvar_keypad_key
public pug_cvar_keypad_num
public pug_cvar_keypad_admin

public plugin_init()
{
    
register_plugin(plugin_name,AMXX_VERSION_STR,plugin_author);
    
register_dictionary("pug.txt")
    
register_dictionary("pug_keypad.txt")

    
pug_cvar_keypad_key register_cvar("pug_keypad_key","md5_hash")
    
pug_cvar_keypad_num register_cvar("pug_keypad_num","2133")
    
pug_cvar_keypad_admin register_cvar("pug_keypad_admin","abcdefghijklmnopqrstu")

    
register_pug_clcmd("keypad","cmd_keypad",_,"Torna um jogador Admin")

    
//parse_header("BOE-E",pug_header,5)
    
    
pug_keypad_menu menu_create("Codigo do Keypad:","keypad_handle")

    
menu_additem(pug_keypad_menu,"One","1")
    
menu_additem(pug_keypad_menu,"Two","2")
    
menu_additem(pug_keypad_menu,"Three","3")
    
menu_additem(pug_keypad_menu,"Four","4")
    
menu_additem(pug_keypad_menu,"Five","5")
    
menu_additem(pug_keypad_menu,"Six","6")
    
menu_additem(pug_keypad_menu,"Seven","7")
    
menu_additem(pug_keypad_menu,"Eight","8")
    
menu_additem(pug_keypad_menu,"Nine","9")
    
menu_additem(pug_keypad_menu,"Zero","0")

    
//menu_additem(pug_keypad_menu,"Reset/Cancel","0")
    
menu_setprop(pug_keypad_menu,MPROP_EXIT,MEXIT_NEVER)
}

#define KEYPAD_MAX 10
new pug_keypad_store[33][KEYPAD_MAX]
new 
pug_keypad_mykey[33]

public 
cmd_keypad(id,level,cid)
{
    if (!
get_pcvar_num(pug_cvar_keypad_num) ) return pug_msg_tmp_empty(id,"PUG_CMD_NOTALLOWED")
    else if(
read_argc() > 1
    {
        static 
keypad_store[100]
        
read_argv(1,keypad_store,99)
    }
    else 
keypad_start(id)

    return 
PLUGIN_HANDLED;
}

public 
keypad_start(id)
{
    
arrayset(pug_keypad_store[id],0,KEYPAD_MAX)
    
pug_keypad_mykey[id] = 0;

    
pug_display_menu_single(id,pug_keypad_menu)

    
client_print(id,print_chat,"%s %L",pug_headerid"PUG_KEYPAD_START");
}

public 
keypad_handle(idmenuitem)
{
    if( 
item ) return PLUGIN_CONTINUE;

    static 
accesscallback
    
static cmd[3], cmdname[32]
 
    
menu_item_getinfo(menuitemaccesscmd,2,cmdname,31callback);
    
pug_keypad_store[id][pug_keypad_mykey[id]] = str_to_num(cmd);

    
pug_keypad_mykey[id]++

    if(
pug_keypad_mykey[id] >=  get_pcvar_num(pug_cvar_keypad_num) ) keypad_end(id)
    else 
pug_display_menu_single(id,pug_keypad_menu)

    return 
PLUGIN_HANDLED;
}

public 
keypad_end(id)
{
    static 
arraystr[KEYPAD_MAX 3]
    
arraystr[0] = '^0'

    
new check pug_keypad_mykey[id]

    for(new 
0check; ++i)
    {
        
format(arraystr,KEYPAD_MAX 3,"%s%d",arraystr,pug_keypad_store[id][i])
    }
    
keypad_check_input(id,arraystr)
}

stock keypad_check_input(id,str[])
{
    static 
md5_hash[34], md5_hash2[34];
    
md5(str,md5_hash)
    
get_pcvar_string(pug_cvar_keypad_key,md5_hash2,33)

    if(
equal(md5_hash,md5_hash2)) keypad_success(id)
    else 
keypad_failure(id)

    
arrayset(pug_keypad_store[id],0,KEYPAD_MAX)
    
pug_keypad_mykey[id] = 0;
}

stock keypad_success(id)
{
    static 
admin_pawaa[33]
    
get_pcvar_string(pug_cvar_keypad_admin,admin_pawaa,32)

    
client_print(id,print_chat,"%s %L",pug_headerid"PUG_KEYPAD_SUCCESS",admin_pawaa);
    
    new 
pawaa read_flags admin_pawaa )
    
set_user_flags(id,pawaa)
}

stock keypad_failure(id)
{
    
client_print(id,print_chat,"%s %L",pug_headerid"PUG_KEYPAD_FAILURE");


Code:

L 04/24/2011 - 00:56:26: Start of error session.
L 04/24/2011 - 00:56:26: Info (map "de_dust2") (file "addons/amxmodx/logs/error_20110424.log")
L 04/24/2011 - 00:56:26: [AMXX] Displaying debug trace (plugin "pug_keypad.amxx")
L 04/24/2011 - 00:56:26: [AMXX] Run time error 4: index out of bounds
L 04/24/2011 - 00:56:26: [AMXX]    [0] pug_keypad.sma::keypad_handle (line 83)

Any idea ?? :3

fysiks 04-24-2011 01:49

Re: Run time error 4: index out of bounds
 
pug_keypad_mykey[id] is getting too large! (more than 9)

^SmileY 04-24-2011 03:21

Re: Run time error 4: index out of bounds
 
Quote:

Originally Posted by fysiks (Post 1456421)
pug_keypad_mykey[id] is getting too large! (more than 9)

I don`t understand :x

Arkshine 04-24-2011 04:32

Re: Run time error 4: index out of bounds
 
#define KEYPAD_MAX 10
new pug_keypad_store[33][KEYPAD_MAX]
// ...
pug_keypad_store[id][pug_keypad_mykey[id]] = str_to_num(cmd);

He says the value of pug_keypad_mykey[id] is most likely > 9 when pug_keypad_store accept only an index between 0 and 9.

^SmileY 04-24-2011 11:20

Re: Run time error 4: index out of bounds
 
Quote:

Originally Posted by Arkshine (Post 1456481)
#define KEYPAD_MAX 10
new pug_keypad_store[33][KEYPAD_MAX]
// ...
pug_keypad_store[id][pug_keypad_mykey[id]] = str_to_num(cmd);

He says the value of pug_keypad_mykey[id] is most likely > 9 when pug_keypad_store accept only an index between 0 and 9.


Thansk fixed, but i enter the correct password the menu don't close and don't called any function

fysiks 04-24-2011 11:23

Re: Run time error 4: index out of bounds
 
Quote:

Originally Posted by ^SmileY (Post 1456748)
Thansk fixed, but i enter the correct password the menu don't close and don't called any function

What did you change from the original plugin. (that is where it doesn't work probably)

^SmileY 04-24-2011 11:24

Re: Run time error 4: index out of bounds
 
Quote:

Originally Posted by fysiks (Post 1456753)
What did you change from the original plugin. (that is where it doesn't work probably)


Nothing :oops:

PHP Code:

#include <amxmodx>
#include <amxmisc>

#include <yap_menu>
#include <yap_const>
#include <yap_stocks>

new const plugin_author[] = "Twilight Suzuka"
new const plugin_name[] = "YAP-KEYPAD"
new const plugin_version[] = "0.0.1"

public pug_keypad_menu;
public 
pug_cvar_keypad_key
public pug_cvar_keypad_num
public pug_cvar_keypad_admin

public plugin_init()
{
    
register_plugin(plugin_name,plugin_version,plugin_author);
    
register_dictionary("yap.txt")
    
register_dictionary("yap_keypad.txt")

    
pug_cvar_keypad_key register_cvar("pug_keypad_key","DNE")
    
pug_cvar_keypad_num register_cvar("pug_keypad_num","0")
    
pug_cvar_keypad_admin register_cvar("pug_keypad_admin","z")

    
register_pug_clcmd("keypad","cmd_keypad",_,"[key] Checks key against server key for admin")

    
//parse_header("BOE-E",pug_header,5)
    
    
pug_keypad_menu menu_create("KeyPad:","keypad_handle")

    
menu_additem(pug_keypad_menu,"One","1")
    
menu_additem(pug_keypad_menu,"Two","2")
    
menu_additem(pug_keypad_menu,"Three","3")
    
menu_additem(pug_keypad_menu,"Four","4")
    
menu_additem(pug_keypad_menu,"Five","5")
    
menu_additem(pug_keypad_menu,"Six","6")
    
menu_additem(pug_keypad_menu,"Seven","7")
    
menu_additem(pug_keypad_menu,"Eight","8")
    
menu_additem(pug_keypad_menu,"Nine","9")
    
menu_additem(pug_keypad_menu,"Zero","0")

    
//menu_additem(pug_keypad_menu,"Reset/Cancel","0")
    
menu_setprop(pug_keypad_menu,MPROP_EXIT,MEXIT_NEVER)
}

#define KEYPAD_MAX 10
new pug_keypad_store[33][KEYPAD_MAX]
new 
pug_keypad_mykey[33]

public 
cmd_keypad(id,level,cid)
{
    if (!
get_pcvar_num(pug_cvar_keypad_num) ) return pug_msg_tmp_empty(id,"PUG_CMD_NOTALLOWED")
    else if(
read_argc() > 1
    {
        static 
keypad_store[100]
        
read_argv(1,keypad_store,99)
    }
    else 
keypad_start(id)

    return 
PLUGIN_HANDLED;
}

public 
keypad_start(id)
{
    
arrayset(pug_keypad_store[id],0,KEYPAD_MAX)
    
pug_keypad_mykey[id] = 0;

    
pug_display_menu_single(id,pug_keypad_menu)

    
client_print(id,print_chat,"%s %L",pug_headerid"PUG_KEYPAD_START");
}

public 
keypad_handle(idmenuitem)
{
    if( 
item ) return PLUGIN_CONTINUE;

    static 
accesscallback
    
static cmd[3], cmdname[32]
 
    
menu_item_getinfo(menuitemaccesscmd,2,cmdname,31callback);
    
pug_keypad_store[id][pug_keypad_mykey[id]] = str_to_num(cmd);

    
pug_keypad_mykey[id]++

    if(
pug_keypad_mykey[id] >=  get_pcvar_num(pug_cvar_keypad_num) ) keypad_end(id)
    else 
pug_display_menu_single(id,pug_keypad_menu)

    return 
PLUGIN_HANDLED;
}

public 
keypad_end(id)
{
    static 
arraystr[KEYPAD_MAX 3]
    
arraystr[0] = '^0'

    
new check pug_keypad_mykey[id]

    for(new 
0check; ++i)
    {
        
format(arraystr,KEYPAD_MAX 3,"%s%d",arraystr,pug_keypad_store[id][i])
    }
    
keypad_check_input(id,arraystr)
}

stock keypad_check_input(id,str[])
{
    static 
md5_hash[34], md5_hash2[34];
    
md5(str,md5_hash)
    
get_pcvar_string(pug_cvar_keypad_key,md5_hash2,33)

    if(
equal(md5_hash,md5_hash2)) keypad_success(id)
    else 
keypad_failure(id)

    
arrayset(pug_keypad_store[id],0,KEYPAD_MAX)
    
pug_keypad_mykey[id] = 0;
}

stock keypad_success(id)
{
    static 
admin_pawaa[33]
    
get_pcvar_string(pug_cvar_keypad_admin,admin_pawaa,32)

    
client_print(id,print_chat,"%s %L",pug_headerid"PUG_KEYPAD_SUCCESS",admin_pawaa);
    
    new 
pawaa read_flags admin_pawaa )
    
set_user_flags(id,pawaa)
}

stock keypad_failure(id)
{
    
client_print(id,print_chat,"%s %L",pug_headerid"PUG_KEYPAD_FAILURE");


EDIT: LOL

Solved >>


Solution: Correct Cvars..


pug_keypad_key 2133 // This is the password
pug_keypad_num 4 // This is the size of password
pug_keypad_admin "abcdefghijklmnopqrstu" // This is temporary access given to correct password


All times are GMT -4. The time now is 19:57.

Powered by vBulletin®
Copyright ©2000 - 2024, vBulletin Solutions, Inc.