Правила форума Гаранты форума
Размещение рекламы AMX-X компилятор

Здравствуйте, гость Вход | Регистрация

Наши новости:

14-дек
24-апр
10-апр
11-апр

Run time error 4: index out of bounds

, Run time error 4: index out of bounds
Статус пользователя 8ball1
сообщение 7.3.2019, 11:26
Сообщение #1
Стаж: 7 лет 2 месяца

Сообщений: 4
Благодарностей: 1
Полезность: 0

Здравствуйте, прошу помочь с решением проблемы: Run time error 4: index out of bounds . Исходник плагина прилагаю: Прикрепленный файл  vip_menu_jd_1.5.sma ( 12,04 килобайт ) Кол-во скачиваний: 7

Так-же, хотел спросить, как сделать чтоб это меню открывалось в начале раунда?
Сама проблема: Прикрепленное изображение
Заранее очень сильно благодарен.
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
   Цитировать сообщение
Статус пользователя 8ball1
сообщение 11.3.2019, 18:30
Сообщение #2
Стаж: 7 лет 2 месяца

Сообщений: 4
Благодарностей: 1
Полезность: 0

Ребят, ну помогите пожалуйста.
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
   + Цитировать сообщение
Статус пользователя Katowice
сообщение 11.3.2019, 23:45
Сообщение #3
Стаж: 11 лет

Сообщений: 137
Благодарностей: 11
Полезность: < 0

Cкрытый текст
Код
/*===============================================================================
=
    Идея: Jack Daniel`s | Полная Оптимизация кода: 17.04.2017
================================================================================
=*/

/*===============================================================================
=
    Библиотеки
================================================================================
=*/
#pragma tabsize 0
#include <amxmodx>
#include <amxmisc>
#include <cstrike>
#include <fun>
#include <engine>
#include <fakemeta>
#include <fakemeta_util>
#include <hamsandwich>
/*===============================================================================
=
    Данные о плагине
================================================================================
=*/
#define PLUGIN         "ViP Menu"
#define VERSION         "1.5"
#define AUTHOR         "Jack Daniel`s"
/*===============================================================================
=
    Константы/Массивы и остальное
================================================================================
=*/
native set_hg_auto_equip_status(id, new_status)
new keys = MENU_KEY_1|MENU_KEY_2|MENU_KEY_3|MENU_KEY_4|MENU_KEY_5|MENU_KEY_6|MENU_KEY_7|MEN
U_KEY_8|MENU_KEY_9|MENU_KEY_0
new bool:give_deagle[32], give_hpgrenade[32], total_rounds, can_usem[32], vip_menu_usage_count[33];
new g_icvars[8], g_ilcvars[8], g_iMaxPlayers;
/*===============================================================================
=
    Загрузка кваров
================================================================================
=*/
public plugin_cfg()
{
    new file[128]; get_localinfo("amxx_configsdir",file,63)
    format(file, 127, "%s/vip_menu.cfg", file)
    if(file_exists(file)) server_cmd("exec %s", file), server_exec()
}
/*===============================================================================
=
    Гл. Функция
================================================================================
=*/
public plugin_init()
{
    register_plugin(PLUGIN,VERSION,AUTHOR);
    register_logevent("RoundStart", 2, "1=Round_Start");
    register_event("TextMsg" , "event_restart", "a", "2=#Game_will_restart_in","2=#Game_Commencing");
    RegisterHam(Ham_Spawn, "player", "player_Spawn_Post" , 1);
    register_menu("Vip_Menu", keys, "Handle_Vip_Menu");
    register_concmd("vipmenu", "OpenVipMenu");
    register_logevent("vip_menu",2,"1=Round_Start")
    register_clcmd( "vipmenu", "vip_menu" )
    register_clcmd("say /vipmenu", "OpenVipMenu");
    register_clcmd("say_team /vipmenu", "OpenVipMenu");
       register_dictionary("vip_menu.txt");
    //Квары
    g_icvars[0]    =    register_cvar("vm_start_round","3") // Раунд с которого будет доступно вип меню
    g_icvars[1]    =    register_cvar("vm_round_usage_limit","2") // Сколько раз за раунд можно использовать меню. Если 0, то неограниченное число раз
    g_icvars[2]    =    register_cvar("vm_awp_start_round","4") // Номер раунда с которого будет доступно авп из вип меню  
    g_icvars[3]    =    register_cvar("vm_showscore_status","1") // Показывать или нет надпись VIP в таблице счета
    g_icvars[4]    =    register_cvar("vm_connect_chat_announce","1") // Оповещать (1) или нет (0) всех сообщением в чате при коннекте вип игрока
    g_icvars[5]    =    register_cvar("vm_connect_sound","1") // Проигрывать (1) или нет (0), звук при входе вип игрока на сервер
    g_icvars[6]    =    register_cvar("vm_access_flags","t") // Флаги доступа игроков, которым будет доступно вип меню
    g_icvars[7]    =    register_cvar("vm_give_money","5000")
    //Отключение на картах
    
    new sPref[][] = {"awp_", "aim_", "35hp_", "fy_"};
    new map[32]; get_mapname(map, charsmax(map));
    for(new i; i < sizeof sPref; i++)
    {
        if(containi(map, sPref[i]) != -1)
        {
            pause("ad");
            return;
        }
    }    
    
    //Квары в массив..
    g_ilcvars[0] =    get_pcvar_num(g_icvars[0]);
    g_ilcvars[1] =    get_pcvar_num(g_icvars[1]);
    g_ilcvars[2] =    get_pcvar_num(g_icvars[2]);
    g_ilcvars[3] =    get_pcvar_num(g_icvars[3]);
    g_ilcvars[4] =    get_pcvar_num(g_icvars[4]);
    g_ilcvars[5] =    get_pcvar_num(g_icvars[5]);
    cvar_to_flags(g_icvars[6], g_ilcvars[6]);
    g_ilcvars[7] =    get_pcvar_num(g_icvars[7]);
    
    g_iMaxPlayers = get_maxplayers();
}

public plugin_precache()
{
    if (g_ilcvars[5]) {
    precache_sound("vip_menu/connect_vip.wav");
  }
}
/*===============================================================================
=
    Подключение игрока
================================================================================
=*/
public client_connect(id)
{
    give_hpgrenade[id] = false
    give_deagle[id] = false
    set_hg_auto_equip_status(id, 0)
    new name[32]
    get_user_name(id, name, 31)
    if (get_user_flags(id) & g_ilcvars[6]) {
        if (g_ilcvars[4]) {
            PrintInChat(0, "%L", LANG_PLAYER, "VM_CONNECT_CHAT_ANNOUNCE", name)
        }
        if(g_ilcvars[5]) {
            emit_sound(0,CHAN_STATIC,"vip_menu/connect_vip.wav",1.0,ATTN_NORM,0,PITCH_NORM)
        }
    }
}
/*===============================================================================
=
    Новый раунд
================================================================================
=*/
public RoundStart(){    
    total_rounds++    
    arrayset(vip_menu_usage_count, 0, charsmax(vip_menu_usage_count));
}
/*===============================================================================
=
    Рестарт раунда или начало игры
================================================================================
=*/
public event_restart()
{
    total_rounds = 0;
    for(new id = 1; id <= g_iMaxPlayers; id++){
        set_hg_auto_equip_status(id, 0)
    }
    
    arrayset(give_hpgrenade, false, charsmax(give_hpgrenade));
}

public player_Spawn_Post(id)
{
  if (!is_user_alive(id) || !(get_user_flags(id) & g_ilcvars[6])) {
    return;
  }

  can_usem[id] = 0;

  if (total_rounds >= g_ilcvars[0]) {
    give_vip_equip(id);
  }
}
/*===============================================================================
=
    Меню
================================================================================
=*/
public OpenVipMenu(id)
{
    if(!is_user_alive(id)) {
        PrintInChat(id, "%L", LANG_PLAYER, "VM_FOR_ALIVE_WARNING")
        return PLUGIN_HANDLED;
    }

    if(!(get_user_flags(id) & g_ilcvars[6])) {
        PrintInChat(id, "%L", LANG_PLAYER, "VM_NOT_ACCESS_WARNING")
        return PLUGIN_HANDLED;
    }
    
    if(total_rounds < g_ilcvars[0]) {
        PrintInChat(id, "%L", LANG_PLAYER, "VM_ROUND_LIMIT_WARNING", (g_ilcvars[0] == 2) ? "о" : "", g_ilcvars[0])
        return PLUGIN_HANDLED;
    }
    
    if (g_ilcvars[1] && vip_menu_usage_count[id] >= g_ilcvars[1]) {
        PrintInChat(id, "%L", LANG_PLAYER, "VM_MAX_USAGE_WARNING")
        return PLUGIN_HANDLED;
  }
    new name[32]
    get_user_name(id, name, 31)
    static menu[650], iLen;
    iLen = 0;
    iLen = formatex(menu[iLen], charsmax(menu) - iLen, "%L^n^n", LANG_PLAYER, "VM_TITLE_NAME", name);

    iLen += formatex(menu[iLen], charsmax(menu) - iLen, "%L^n", LANG_PLAYER, "VM_ITEM_NAME1", g_ilcvars[7]);
    keys |= MENU_KEY_1;
    
    iLen += formatex(menu[iLen], charsmax(menu) - iLen, "%L^n", LANG_PLAYER, "VM_ITEM_NAME2");
    keys |= MENU_KEY_2;
    
    iLen += formatex(menu[iLen], charsmax(menu) - iLen, "%L^n", LANG_PLAYER, "VM_ITEM_NAME3");
    keys |= MENU_KEY_3;
    
    iLen += formatex(menu[iLen], charsmax(menu) - iLen, "%L^n", LANG_PLAYER, "VM_ITEM_NAME4");
    keys |= MENU_KEY_4;
    
    iLen += formatex(menu[iLen], charsmax(menu) - iLen, "%L^n", LANG_PLAYER, "VM_ITEM_NAME5");
    keys |= MENU_KEY_5;
    
    iLen += formatex(menu[iLen], charsmax(menu) - iLen, "%L^n", LANG_PLAYER, "VM_ITEM_NAME6",give_hpgrenade[id]?"[\yВкл\w]":"[\yВыкл\w]");
    keys |= MENU_KEY_6;
    
    iLen += formatex(menu[iLen], charsmax(menu) - iLen, "%L^n^n", LANG_PLAYER, "VM_ITEM_NAME7",give_deagle[id]?"[\yВкл\w]":"[\yВыкл\w]");
    keys |= MENU_KEY_7;

    iLen += formatex(menu[iLen], charsmax(menu) - iLen, "%L^n", LANG_PLAYER, "VM_EXIT");
    keys |= MENU_KEY_0;

    show_menu(id, keys, menu, -1, "Vip_Menu");
    return PLUGIN_HANDLED;
}  
public Handle_Vip_Menu(id, key)
{  
    switch(key)
    {
        case 0:
        {
            cs_set_user_money(id, cs_get_user_money(id) + g_ilcvars[7]);
            vip_menu_usage_count[id]++
            PrintInChat(id, "%L", LANG_PLAYER, "VM_MONEY", g_ilcvars[7])
        }
        
        case 1:
        {
            drop_user_weapons(id, 0)
            give_item(id, "weapon_m4a1")
            cs_set_user_bpammo(id, CSW_M4A1, 90);
            vip_menu_usage_count[id]++
            PrintInChat(id, "%L", LANG_PLAYER, "VM_M4A1")
        }
        
        case 2:
        {
            drop_user_weapons(id, 0)
            give_item(id, "weapon_ak47")
            cs_set_user_bpammo(id, CSW_AK47, 90);
            vip_menu_usage_count[id]++
            PrintInChat(id, "%L", LANG_PLAYER, "VM_AK47")
        }
        
        case 3:
        {
            if(total_rounds < g_ilcvars[2]){
                PrintInChat(id, "%L", LANG_PLAYER, "VM_AWP_RESTRICT_MSG", g_ilcvars[2], total_rounds)
            }else{
                drop_user_weapons(id, 0)
                give_item(id, "weapon_awp")
                cs_set_user_bpammo(id, CSW_AWP, 30);
                vip_menu_usage_count[id]++
                PrintInChat(id, "%L", LANG_PLAYER, "VM_AWP")
            }
        }
        
        case 4:
        {
            drop_user_weapons(id, 0)
            give_item(id, "weapon_famas")
            cs_set_user_bpammo(id, CSW_FAMAS, 90);
            vip_menu_usage_count[id]++
            PrintInChat(id, "%L", LANG_PLAYER, "VM_FAMAS")
        }
        
        case 5:
        {
            if(give_hpgrenade[id]){
                give_hpgrenade[id] = false
                set_hg_auto_equip_status(id, 0)
            }else{
                give_hpgrenade[id] = true
                set_hg_auto_equip_status(id, 1)
            }
            OpenVipMenu(id)
            PrintInChat(id, "%L", LANG_PLAYER, "VM_AUTO_GIVE_HPGRENADE", give_hpgrenade[id]?"!tвключена!":"!tвыключена!")
        }
        
        case 6:
        {
            if(give_deagle[id]){
                give_deagle[id] = false
            }else{
                give_deagle[id] = true
            }
            OpenVipMenu(id)
            PrintInChat(id, "%L", LANG_PLAYER, "VM_AUTO_GIVE_DEAGLE", give_deagle[id]?"!tвключена!":"!tвыключена!")
        }
    }
    return PLUGIN_HANDLED;
}
/*===============================================================================
=
    Стоки и Остальное
================================================================================
=*/
give_vip_equip(id)
{
    give_item(id,"weapon_flashbang")
    give_item(id,"weapon_flashbang")
    give_item(id,"weapon_hegrenade")
    give_item(id,"weapon_smokegrenade");
    give_item(id, "item_assaultsuit");
    if(give_deagle[id]){
    drop_user_weapons(id, 1)
    give_item(id, "weapon_deagle");
    cs_set_user_bpammo(id, CSW_DEAGLE, 35);
    }
}

stock drop_user_weapons(index, iType)
{
    new iWeaponsId[32], iNum;
    get_user_weapons(index, iWeaponsId, iNum);
    if(iType) iType = (1<<CSW_GLOCK18|1<<CSW_USP|1<<CSW_P228|1<<CSW_DEAGLE|1<<CSW_ELITE|1<<CSW_FIVESEVEN);
    else iType = (1<<CSW_M3|1<<CSW_XM1014|1<<CSW_MAC10|1<<CSW_TMP|1<<CSW_MP5NAVY|1<<CSW_UMP45|1<<CSW_P90|1<<CSW_GALIL|1<<CSW_FAMAS|1<<CSW_AK47|1<<CSW_M4A1|1<<CSW_SCOUT|1<<CSW_SG552|1<<CSW_AUG|1<<CSW_AWP|1<<CSW_G3SG1|1<<CSW_SG550|1<<CSW_M249);
    for(new i; i < iNum; i++)
    {
        if(iType & (1<<iWeaponsId[i]))
        {
            new szWeaponName[24];
            get_weaponname(iWeaponsId[i], szWeaponName, charsmax(szWeaponName));
            engclient_cmd(index, "drop", szWeaponName);
        }
    }
}

stock cvar_to_flags(cvar_ptr, &var)
{
  new cvar_value[32];
  get_pcvar_string(cvar_ptr, cvar_value, charsmax(cvar_value));
  var = read_flags(cvar_value);

  if (var == 0) {
    var = ADMIN_USER;
  }
}
stock PrintInChat(const id, const input[], any:...)
{
    new count = 1, players[32]
    static msg[191]
    vformat(msg, 190, input, 3)
    
    replace_all(msg, 190, "!g", "^4") // Green Color
    replace_all(msg, 190, "!n", "^1") // Default Color
    replace_all(msg, 190, "!t", "^3") // Team Color
    
    
    
    if (id) players[0] = id; else get_players(players, count, "ch")
    {
        for (new i = 0; i < count; i++)
        {
            if (is_user_connected(players[i]))
            {
                message_begin(MSG_ONE_UNRELIABLE, get_user_msgid("SayText"), _, players[i])
                write_byte(players[i]);
                write_string(msg);
                message_end();
            }
        }
    }
}
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
   + Цитировать сообщение
Статус пользователя SISA
сообщение 12.3.2019, 9:13
Сообщение #4
Стаж: 15 лет

Сообщений: 2774
Благодарностей: 2956
Полезность: 994

give_deagle[32] > give_deagle[33]
give_hpgrenade[32] > give_hpgrenade[33]
can_usem[32] > can_usem[33]

2Katowice как ваш код решает проблему 32го слота ? smile.gif
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
   + Цитировать сообщение
  Ответить в данную темуНачать новую тему
 
0 пользователей и 1 гостей читают эту тему: