Пользователи, просматривающие тему (Пользователей: 0, Гостей: 0)

  1. ThePhoenix

    Регистрация:
    08.03.15
    Сообщения:
    1.524
    Симпатии:
    151
    Пол:
    Мужской
    Telegram:
    ThePhoenix2017
    Skype:
    the.phoenix666
    В общем следующая ошибка:
    Код:
    L 08/14/2016 - 23:34:36: Info (map "de_dust2_2x2") (file "addons/amxmodx/logs/error_20160814.log")
    L 08/14/2016 - 23:34:36: [AMXX] Displaying debug trace (plugin "codsql_beta.amxx")
    L 08/14/2016 - 23:34:36: [AMXX] Run time error 3: stack error
    L 08/14/2016 - 23:34:36: [AMXX]    [0] codsql_beta.sma::Item_Deploy_Post (line 1212)
    Вот собственно функция и строчка:
    Код:
    new WeaponName[24];
        for(new i = CSW_P228; i <= CSW_P90; i++){
            if(i == 2)
                continue;
      
            get_weaponname(i, WeaponName, 23);
            RegisterHam(Ham_Item_Deploy, WeaponName, "Item_Deploy_Post", 1);
        }
    Код:
    public Item_Deploy_Post(ent)
    {
        new id = get_pdata_cbase(ent, 41, 4);
        if(!is_user_alive(id))
            return;
      
        new team = get_user_team(id);
        if(team > 2)
            return;
      
        new bron = cs_get_weapon_id(ent);
        if(!((1<<bron) & (bronie_klasy[klasa_gracza[id]] | bonusowe_bronie_gracza[id] | bronie_druzyny[team] | bronie_dozwolone)))
        {
            new weaponname[24]; //1212 line
            get_weaponname(bron, weaponname, 23);
            engclient_cmd(id, "drop", weaponname);
        }
        if(cs_get_user_shield(id) && !gracz_ma_tarcze[id])
            engclient_cmd(id, "drop", "weapon_shield");
    }
    Если не ошибаюсь,то это функция блокировки оружия. Если оружия нет в классе,то оно его дропнуть пытается.
    Но у меня стоит вип система и оно не может дропнуть грены,по этому видать и вылетает ошибка.
    Но суть в чём,как сделать исключение к примеру на грены? И на пистолеты желательно!
    Чтобы дропало всё,кроме грен + пистолетов.
    Или может быть я не прав и эта не та функция?
     
  2. pUzzlik

    Регистрация:
    06.05.15
    Сообщения:
    956
    Симпатии:
    323
    Пол:
    Мужской
    @ThePhoenix, Если я верно понял вопрос, то ищем следующее.
    PHP:
    #define CSW_NONE            0
    #define CSW_P228            1
    #define CSW_GLOCK           2  // Unused by game, See CSW_GLOCK18.
    #define CSW_SCOUT           3
    #define CSW_HEGRENADE       4
    #define CSW_XM1014          5
    #define CSW_C4              6
    #define CSW_MAC10           7
    #define CSW_AUG             8
    #define CSW_SMOKEGRENADE    9
    #define CSW_ELITE           10
    #define CSW_FIVESEVEN       11
    #define CSW_UMP45           12
    #define CSW_SG550           13
    #define CSW_GALI            14
    #define CSW_GALIL           14
    #define CSW_FAMAS           15
    #define CSW_USP             16
    #define CSW_GLOCK18         17
    #define CSW_AWP             18
    #define CSW_MP5NAVY         19
    #define CSW_M249            20
    #define CSW_M3              21
    #define CSW_M4A1            22
    #define CSW_TMP             23
    #define CSW_G3SG1           24
    #define CSW_FLASHBANG       25
    #define CSW_DEAGLE          26
    #define CSW_SG552           27
    #define CSW_AK47            28
    #define CSW_KNIFE           29
    #define CSW_P90             30
    #define CSW_VEST            31  // Custom
    #define CSW_VESTHELM        32  // Custom
    #define CSW_SHIELDGUN       99
    #define CSW_LAST_WEAPON     CSW_P90
    Как я вижу из кода у тебя уже есть исключения для глока.
    А так то чтобы сделать исключения для грены нужно под цикл добавить
    PHP:
    if(== CSW_HEGRENADE) continue;

    // or

    if(== 4) continue;
    дальше по анологии
     
  3. pUzzlik

    Регистрация:
    06.05.15
    Сообщения:
    956
    Симпатии:
    323
    Пол:
    Мужской
    Ах да от и ошибку нашёл, конечно хотелось бы увидеть весь код чтобы наверняка убедиться но все же
    PHP:
    new weaponname[24]; //1212 line
    get_weaponname(bronweaponname23);
    >>>>
    PHP:
    static weaponname[33];
    get_weaponname(bronweaponnamecharsmax(weaponname));
    Не знаю что за мудак указал именно такую размерность массива но к примеру CSW_SMOKEGRENADE будет равен 31 байтам почем
    engclient_cmd(id, "drop", weaponname);
    Просто не сможет указать полностью название, ну крч ошибка тут очевидна, но и я могу ошибаться :)
     
  4. Mistrick Разработчик

    Регистрация:
    13.07.15
    Сообщения:
    228
    Симпатии:
    139
    Пол:
    Мужской
    @pUzzlik, откуда там будет 31 байт? "weapon_smokegrenade" - 19 байт. Нет weaponname больше 23 байт, потому столько и выделили. Хотя смок и так самый длинный, значит даже 20 байт достаточно.
     
  5. pUzzlik

    Регистрация:
    06.05.15
    Сообщения:
    956
    Симпатии:
    323
    Пол:
    Мужской
    @Mistrick, Ну я по этому посчитал CSW_SMOKEGRENADE :)
     
  6. ThePhoenix

    Регистрация:
    08.03.15
    Сообщения:
    1.524
    Симпатии:
    151
    Пол:
    Мужской
    Telegram:
    ThePhoenix2017
    Skype:
    the.phoenix666
    @pUzzlik, я так понял,это :
    if(i == 2)
    Исключение для глока?
    Я могу показать и весь код,просто светить не охота всем.
    Мне бы понадобилась ещё небольшая помощь.