Статус темы:
Закрыта.
  1. xopoIIIuu Пользователь

    Регистрация:
    22.04.15
    Сообщения:
    234
    Симпатии:
    51
    Пол:
    Мужской
    Добрый день, помогите исправить ошибку, на к-с.нет.юа создавал данную тему недели 2 назад, но *гуро* кодеры мне не смогли помочь)
    Суть ошибки: Проверялся на пустом сервере.
    Когда впервые заходит игрок и выбирает команду Наблюдателей то у него отображается по 1 игроку в каждой команде (Показывает что в кт-1 игрок, в т-1 игрок, в наблюдателях тоже один игрок). Баг не критичен, но хотелось бы его убрать.
    Когда игрок заходит за кт или т, то отображение игроков в командах нормальное.

    И еще одно: Когда игрок выбирает наблюдателей, то не может потом перейти за кт или т, нужно ждать 1 раунд, хотелось бы как-то это исправить)
    #include <amxmodx>
    #include <amxmisc>
    #include <fakemeta>
    #include <cstrike>

    new bool:DetectVIPMap[33];


    new act_menu[33] = 0; // Т.е. Вкл.
    new bool: g_bChange[33];

    // 1 2 5 6
    #define MENU_KEYS (1<<0 | 1<<1 | 1<<4 | 1<<5)

    public plugin_init()
    {
    register_plugin("Choose Menu" , "1.0" , "unnamed" );

    register_message(get_user_msgid("ShowMenu"), "MessageShowMenu");
    register_message(get_user_msgid("VGUIMenu"), "MessageVGUIMenu");

    register_menucmd(register_menuid("\wВыберите команду:"), MENU_KEYS, "Menu_Team");
    register_clcmd("chooseteam", "OpenMenu");
    //register_clcmd("say /menu", "OpenMenu");
    //register_clcmd("menu", "OpenMenu");
    //register_event("HLTV", "event_HLTV", "a", "1=0", "2=0");


    new entity = -1;
    if((engfunc(EngFunc_FindEntityByString, entity, "classname", "info_vip_start")) > 0)
    {
    DetectVIPMap[0] = true;
    }
    else
    {
    DetectVIPMap[0] = false;
    }
    }

    public ShowMenu(id)
    {
    new iPlayers[32], iNumCT , iNumT, iNumSP;
    get_players(iPlayers, iNumCT, "e", "CT" );
    get_players(iPlayers, iNumT, "e", "TERRORIST");
    get_players(iPlayers, iNumSP, "e", "SPECTATOR");
    static szMenu[256]
    static iLen;

    iLen = formatex(szMenu, charsmax(szMenu), "\wВыберите команду:^n^n");
    iLen += formatex(szMenu[iLen], charsmax(szMenu) - iLen, "\y[1].\wТеррористы [%d]^n", iNumT)
    iLen += formatex(szMenu[iLen], charsmax(szMenu) - iLen, "\y[2].\wКонтр-Террористы [%d]^n^n^n", iNumCT)
    iLen += formatex(szMenu[iLen], charsmax(szMenu) - iLen, "\y[5].\wАвто-Выбор^n^n")
    iLen += formatex(szMenu[iLen], charsmax(szMenu) - iLen, "\y[6].\wНаблюдатель [%d]^n", iNumSP)
    show_menu(id, MENU_KEYS, szMenu, -1, "");
    return PLUGIN_HANDLED;
    }

    public Menu_Team(id, key)
    {
    g_bChange[id] = true;
    set_task(2.0, "Clear", id)


    switch(++key)
    {
    case 1:
    {
    engclient_cmd(id, "jointeam", "1");
    engclient_cmd(id, "joinclass", "1");
    }
    case 2:
    {
    engclient_cmd(id, "jointeam", "2");
    engclient_cmd(id, "joinclass", "1");
    }
    case 5:
    {
    engclient_cmd(id, "jointeam", "5");
    engclient_cmd(id, "joinclass", "1");
    }
    case 6:
    {
    engclient_cmd(id, "jointeam", "6");
    engclient_cmd(id, "joinclass", "1");
    }
    }


    return PLUGIN_HANDLED;
    }

    public Clear(id) g_bChange[id] = false;
    public client_putinserver(id) g_bChange[id] = false;

    public OpenMenu(id)
    {

    if(DetectVIPMap[0] == false)
    {
    menu_cancel(id);
    TeamMenu(id);
    return PLUGIN_HANDLED;
    }
    return PLUGIN_CONTINUE;
    }

    public MessageShowMenu(iMsgID, iDest, iReceiver)
    {
    if(g_bChange[iReceiver])
    {
    set_pdata_int(iReceiver, 205, 0);
    return PLUGIN_HANDLED;
    }

    new const Team_Select[] = "#Team_Select";

    new szMenu[sizeof(Team_Select)];
    get_msg_arg_string(4, szMenu, charsmax(szMenu));

    if(!equal(szMenu, Team_Select))
    {
    return PLUGIN_CONTINUE;
    }

    // reset CS menu code
    set_pdata_int(iReceiver, 205, 0);

    // show your own menu
    TeamMenu(iReceiver);
    return PLUGIN_HANDLED;
    }

    public MessageVGUIMenu(iMsgID, iDest, iReceiver)
    {
    if(g_bChange[iReceiver])
    {
    return PLUGIN_HANDLED;
    }

    if(get_msg_arg_int(1) != 2)
    {
    return PLUGIN_CONTINUE;
    }

    // show your own menu
    TeamMenu(iReceiver);
    return PLUGIN_HANDLED;
    }

    public TeamMenu(id)
    {
    if (act_menu[id] == 1)
    {

    ShowMenu(id);
    act_menu[id] = 0;

    }
    else
    {
    new menu = menu_create("\dc-s.net.ua","func_menu");
    menu_setprop( menu,MPROP_NUMBER_COLOR,"\w")
    menu_additem( menu,"\rВыбрать команду")
    menu_additem( menu,"\yМеню сервера^nновая строка")
    menu_additem( menu,"\rПодпишись:^nновая строка^n")
    menu_setprop( menu, MPROP_EXITNAME, "Выход");
    menu_display(id, menu, 0);

    }
    act_menu[id] = 0;
    return PLUGIN_HANDLED;
    }


    public func_menu(id, menu, key)
    {
    key++

    if(key==1)
    {
    act_menu[id] = 1;
    TeamMenu(id)
    }

    if(key==2) client_cmd(id,"amx_menu")

    return PLUGIN_HANDLED;
    }
    /* AMXX-Studio Notes - DO NOT MODIFY BELOW HERE
    *{\\ rtf1\\ ansi\\ deff0{\\ fonttbl{\\ f0\\ fnil Tahoma;}}\n\\ viewkind4\\ uc1\\ pard\\ lang1049\\ f0\\ fs16 \n\\ par }
    */
     
  2. neygomon Его Темнейшество :j Команда форума

    Регистрация:
    26.02.15
    Сообщения:
    7.596
    Симпатии:
    4.171
    Пол:
    Мужской
    xopoIIIuu,
    PHP:
    get_players(iPlayersiNumSP"e""SPECTATOR");
    это не работает в amxx, почему то.
    поэтому там надо делать общий цикл по игрокам и проверять команды.
     
    xopoIIIuu нравится это.
  3. xopoIIIuu Пользователь

    Регистрация:
    22.04.15
    Сообщения:
    234
    Симпатии:
    51
    Пол:
    Мужской
    Спасибо, может быть что-то попробую с этим поделать)
     
Статус темы:
Закрыта.