1. newerth Пользователь

    Регистрация:
    13.03.15
    Сообщения:
    103
    Симпатии:
    13
    Привет всем, ребята помогите пожалуйста сделать так чтоб на определенных картах нельзя было брать оружие через меню!
    Вот исходник
    #include <amxmodx>

    #include <amxmisc>

    #include <cstrike>

    #include <fun>

    #include <fakemeta>

    #include <engine>

    #include <hamsandwich>



    #define VIP_ACCESS ADMIN_LEVEL_H




    #define PLUGIN "vips"

    #define VERSION "0.1"

    #define AUTHOR "T"
    #define INUM1 1
    new iNum[33], iNum2[33]



    const PRIMARY_WEAPONS_BIT_SUM = (1<<CSW_SCOUT)|(1<<CSW_XM1014)|(1<<CSW_MAC10)|(1<<CSW_AUG)|(1<<CSW_UMP45)|(1<<CSW_SG550)|(1<<CSW_GALIL)|(1<<CSW_FAMAS)|(1<<CSW_AWP)|(1<<CSW_MP5NAVY)|(1<<CSW_M249)|(1<<CSW_M3)|(1<<CSW_M4A1)|(1<<CSW_TMP)|(1<<CSW_G3SG1)|(1<<CSW_SG552)|(1<<CSW_AK47)|(1<<CSW_P90)

    const SECONDARY_WEAPONS_BIT_SUM = (1<<CSW_P228)|(1<<CSW_ELITE)|(1<<CSW_FIVESEVEN)|(1<<CSW_USP)|(1<<CSW_GLOCK18)|(1<<CSW_DEAGLE)

    new g_roundCount
    new g_StartTime


    public plugin_init()

    {

    register_plugin(PLUGIN, VERSION, AUTHOR)




    register_logevent("round_end", 2, "1=Round_End")
    register_event("HLTV", "logevent_round_start", "a", "1=0", "2=0")



    register_clcmd("say /vipmenu", "Menu")

    register_clcmd("say_team /vipmenu", "Menu")



    }



    public Event_GameRestart()

    g_roundCount = 1



    public round_end()

    g_roundCount++



    public client_putinserver(id)

    {

    if(get_user_flags(id) & ADMIN_IMMUNITY)

    set_task(0.1, "adminconnect", id)



    }



    public adminconnect(id)

    {

    new name[32]

    get_user_name(id, name, 31)

    nChatPrint(0, "^4[SERVER] ^1присоединился - ^3%s^1", name)

    }
    public logevent_round_start()
    {
    g_StartTime = get_systime()

    new iPlayers[32], iNums
    get_players(iPlayers, iNums) // Получаем игроков
    for(new i; i < iNums; i++)
    {
    iNum[iPlayers] = INUM1 // Устанавливаем число.
    iNum2[iPlayers] = INUM1
    }
    }



    public ResetHUD(id)

    set_task(0.5, "VIP", id + 6910)



    public VIP(TaskID)

    {

    new id = TaskID - 6910

    if(is_user_admin(id))

    {

    message_begin(MSG_ALL, get_user_msgid("ScoreAttrib"))

    write_byte(id)

    write_byte(4)

    message_end()

    give_item(id,"weapon_hegrenade")

    give_item(id,"weapon_flashbang")

    give_item(id,"weapon_flashbang")

    give_item(id,"weapon_smokegrenade")

    give_item(id,"item_assaultsuit")

    give_item(id,"item_thighpack")

    }

    return PLUGIN_HANDLED

    }



    public Menu(id)

    {

    if(get_systime() - g_StartTime > 30)
    {
    nChatPrint(id,"^4[SERVER] ^1Брать оружие можно только в течении^4 30 секунд ^1от начала раунда")
    return PLUGIN_HANDLED
    }

    if(get_user_flags(id) & ADMIN_LEVEL_H)

    {

    new msg[222], name[32]

    get_user_name(id, name, 31)

    formatex(msg, charsmax(msg), "\rВ\wип меню \d[\rЭлитный Паблик\d]^n\rИ\wмя игрока: \d%s", name)

    new menu = menu_create(msg, "menu_handler")



    menu_additem(menu, "\wВзять \r[\yDeagle\r] \wс \r1-го \wраунда", "1", 0)

    menu_additem(menu, "\wВзять \r[\yAK-47\r] \wс \r3-го \wраунда", "2", 0)

    menu_additem(menu, "\wВзять \r[\yM4a1\r] \wс \r3-го \wраунда", "3", 0)

    menu_additem(menu, "\wВзять \r[\yAWP\r] \wс \r4-го \wраунда", "4", 0)

    menu_additem(menu, "\wВзять \r[\yFAMAS\r] \wсо \r2-го \wраунда", "5", 0)



    menu_setprop(menu, MPROP_EXITNAME, "\yВыход")

    menu_display(id, menu, 0)

    }

    else nChatPrint(id,"^4[SERVER] ^1Вы не покупали ^4VIP права ^3Цена ^4150^1р - Купить онлайн ^3Cs-Unreal.Net/^3Store")



    return PLUGIN_HANDLED

    }



    public menu_handler(id, menu, item)

    {

    if(item == MENU_EXIT)

    {

    menu_destroy(menu)

    return PLUGIN_HANDLED

    }

    new data[6], iName[64], name[32]

    new access, callback

    get_user_name(id, name, 31)

    menu_item_getinfo(menu, item, access, data,5, iName, 63, callback)

    new key = str_to_num(data)

    switch(key)

    {

    case 1:

    {

    if(is_user_alive(id))

    {

    if(iNum2[id] <= 0)
    {
    nChatPrint(id,"^4[SERVER] ^1Подождите... ^4deagle ^1используется^4 1 ^1раз за раунд.") // выводим сообщение
    return PLUGIN_CONTINUE
    }

    drop_weapons(id, 2)

    give_item(id,"weapon_deagle")

    cs_set_user_bpammo(id, CSW_DEAGLE, 35)

    nChatPrint(id, "^4[SERVER] ^1Ты взял(а) ^3deagle", name)

    iNum2[id]--

    }

    }



    case 2:

    {

    if(g_roundCount < 3)

    {

    nChatPrint(id,"^4[SERVER] ^1Это оружие доступно с^4 3 ^1раунда")

    return PLUGIN_HANDLED

    }

    if(iNum[id] <= 0)
    {
    nChatPrint(id,"^4[SERVER] ^1Вы уже использовали.Подождите...") // выводим сообщение
    return PLUGIN_CONTINUE
    }

    drop_weapons(id, 1)

    give_item(id,"weapon_ak47")

    cs_set_user_bpammo(id, CSW_AK47, 90)

    nChatPrint(id,"^4[SERVER] ^1Ты взял(а) ^3AK-47", name)

    iNum[id]-- //

    }



    case 3:

    {

    if(g_roundCount < 3)

    {

    nChatPrint(id,"^4[SERVER] ^1Это оружие доступно с^4 3 ^1раунда")

    return PLUGIN_HANDLED

    }

    if(iNum[id] <= 0)
    {
    nChatPrint(id,"^4[SERVER] ^1Вы уже использовали.Подождите...") // выводим сообщение
    return PLUGIN_CONTINUE
    }

    drop_weapons(id, 1)

    give_item(id,"weapon_m4a1")

    cs_set_user_bpammo(id, CSW_M4A1, 90)

    nChatPrint(id,"^4[SERVER] ^1Ты взял(а) ^3m4a1", name)

    iNum[id]-- //

    }



    case 4:

    {

    if(g_roundCount < 4)

    {

    nChatPrint(id,"^4[SERVER] ^1Это оружие доступно с^4 4 ^1раунда")

    return PLUGIN_HANDLED

    }

    if(iNum[id] <= 0)
    {
    nChatPrint(id,"^4[SERVER] ^1Вы уже использовали.Подождите...") // выводим сообщение
    return PLUGIN_CONTINUE
    }

    drop_weapons(id, 1)

    give_item(id,"weapon_awp")

    cs_set_user_bpammo(id, CSW_AWP, 30)

    nChatPrint(id,"^4[SERVER] ^1Ты взял(а) ^3AWP", name)
    iNum[id]-- //

    }



    case 5:

    {

    if(g_roundCount < 2)

    {

    nChatPrint(id,"^4[SERVER] ^1Это оружие доступно с^4 2 ^1раунда")

    return PLUGIN_HANDLED

    }

    if(iNum[id] <= 0)
    {
    nChatPrint(id,"^4[SERVER] ^1Вы уже использовали.Подождите...") // выводим сообщение
    return PLUGIN_CONTINUE
    }

    drop_weapons(id, 1)

    give_item(id,"weapon_famas")

    cs_set_user_bpammo(id, CSW_FAMAS, 90)

    nChatPrint(id,"^4[SERVER] ^1Ты взял(а) ^3FAMAS", name)

    iNum[id]-- //


    }

    }

    return PLUGIN_HANDLED

    }



    stock drop_weapons(id, dropwhat)

    {

    static weapons[32], num, i, weaponid

    num = 0

    get_user_weapons(id, weapons, num)



    for (i = 0; i < num; i++)

    {

    weaponid = weapons

    if((dropwhat == 1 && ((1<<weaponid) & PRIMARY_WEAPONS_BIT_SUM)) || (dropwhat == 2 && ((1<<weaponid) & SECONDARY_WEAPONS_BIT_SUM)))

    {

    static wname[32]

    get_weaponname(weaponid, wname, charsmax(wname))

    engclient_cmd(id, "drop", wname)

    }

    }

    }



    stock nChatPrint(const id, const input[], any:...)

    {

    new nCount = 1, nNum[32]

    static nMsgs[191]

    vformat(nMsgs, 190, input, 3)

    replace_all(nMsgs, 190, "!g", "^4")

    replace_all(nMsgs, 190, "!n", "^1")

    replace_all(nMsgs, 190, "!t", "^3")

    if(id) nNum[0] = id; else get_players(nNum, nCount, "ch")

    {

    for(new i = 0; i < nCount; i++)

    {

    if(is_user_connected(nNum))

    {

    message_begin(MSG_ONE_UNRELIABLE, get_user_msgid("SayText"), _, nNum)

    write_byte(nNum)

    write_string(nMsgs)

    message_end()

    }

    }

    }

    }
     
  2. Roman Пользователь

    Регистрация:
    09.02.16
    Сообщения:
    95
    Симпатии:
    15
    Пол:
    Мужской
    просто сам плагин отключи, в папке addons/amxmodx/configs создаешь папку maps и в нем файл plugins-название карты.ini (plugins-awp_india.ini)
    открываешь этот файл и в нем прописываешь плагин, который хочешь чтобы на авп карте не работал и рядом пишешь disabled (vipmenu.amxx disabled)
    Это обычный способ, если у тебя стоит стандартный плагин для остановки.

    Если ты хочешь, чтобы определенное оружие не брали, то это дело скриптеров
     
  3. newerth Пользователь

    Регистрация:
    13.03.15
    Сообщения:
    103
    Симпатии:
    13
    я сделал но походу на rehlds это не работает, или я что-то криво сделал(
     
  4. BaJIepbI4 Пользователь

    Регистрация:
    12.05.15
    Сообщения:
    1.071
    Симпатии:
    211
    Пол:
    Мужской
    Skype:
    BaJIepbI4_sky
    В public plugin_init() добавь это:
    Код:
    new mPref[][] = {"awp_", "aim_", "35hp"};
        new map[32]; get_mapname(map, charsmax(map));
        for(new i; i < sizeof mPref; i++)
        {
            if(containi(map, mPref[i]) != -1)
            {
                pause("ad");
                return;
            }
        }
    Плагин будет запаузен на картах awp_... aim_... 35hp...
     
  5. maFFyoZZyk Черный Жнец ^_^ Команда форума

    Регистрация:
    14.01.16
    Сообщения:
    1.248
    Симпатии:
    548
    Пол:
    Мужской
    Вырезал небось с плагина Dead Message???
     
  6. BaJIepbI4 Пользователь

    Регистрация:
    12.05.15
    Сообщения:
    1.071
    Симпатии:
    211
    Пол:
    Мужской
    Skype:
    BaJIepbI4_sky
    Неа, из другого, а что? :)
     
  7. maFFyoZZyk Черный Жнец ^_^ Команда форума

    Регистрация:
    14.01.16
    Сообщения:
    1.248
    Симпатии:
    548
    Пол:
    Мужской
    На неугомоновский похоже)
     
  8. BaJIepbI4 Пользователь

    Регистрация:
    12.05.15
    Сообщения:
    1.071
    Симпатии:
    211
    Пол:
    Мужской
    Skype:
    BaJIepbI4_sky
    Да, он и есть :)
     
  9. Phantom Команда форума

    Регистрация:
    27.02.15
    Сообщения:
    1.691
    Симпатии:
    796
    Пол:
    Мужской
    Telegram:
    ph4nt0m
    BaJIepbI4, в if(containi(map, mPref) != -1) можно и без != -1, натива сама вернет 1, если совпадение будет
     
  10. BaJIepbI4 Пользователь

    Регистрация:
    12.05.15
    Сообщения:
    1.071
    Симпатии:
    211
    Пол:
    Мужской
    Skype:
    BaJIepbI4_sky
    Если я правильно понимаю, то условие вернет true в любом случае, если написать без !=-1.
     
  11. Phantom Команда форума

    Регистрация:
    27.02.15
    Сообщения:
    1.691
    Симпатии:
    796
    Пол:
    Мужской
    Telegram:
    ph4nt0m
    BaJIepbI4, нет, я же говорю, если mPref(пусть будет awp_) будет найден в map(а тут пусть будет awp_india), то функция сама вернет 1, без указаний. Если же mPref(теперь пусть будет aim_) не будет найден в map(awp_india), то функция сама вернет -1, опять же, указания не нужны
     
  12. BaJIepbI4 Пользователь

    Регистрация:
    12.05.15
    Сообщения:
    1.071
    Симпатии:
    211
    Пол:
    Мужской
    Skype:
    BaJIepbI4_sky
    Я понимаю, как отработает оператор containi :) Т.е. if(-1) даст false?
     
  13. Slowpoked Пользователь

    Регистрация:
    08.11.15
    Сообщения:
    241
    Симпатии:
    45
    Пол:
    Мужской
    Каким боком это к ReHLDS вообще относится?
     
  14. katastrofa Пользователь

    Регистрация:
    28.02.15
    Сообщения:
    170
    Симпатии:
    57
    Пол:
    Мужской
    Skype:
    katastrofa.exe
    Никаким. Он видимо накосячил с кфг для карты.
     
  15. Phantom Команда форума

    Регистрация:
    27.02.15
    Сообщения:
    1.691
    Симпатии:
    796
    Пол:
    Мужской
    Telegram:
    ph4nt0m
    Верно
     
  16. neygomon Его Темнейшество :j Команда форума

    Регистрация:
    26.02.15
    Сообщения:
    7.594
    Симпатии:
    4.169
    Пол:
    Мужской
    Phantom, что за херня?
    != -1 нужно.
    так как:
    • натива возвращает -1 или позицию, включая 0, то есть твое условие будет (containi(...) == 0) и это буде означать что совпадение есть и начинается с начала строки -______-
    • -1 - это не найдено совпадений
    Код:
    @return                -1 on failure (no match found). Any other value
    *                        indicates a position in the string where the match starts.
    --- добавлено 23.03.16 ---
    BaJIepbI4, он неверную инфу тебе дал.
     
    Последнее редактирование: 23.03.16
    Phantom и BaJIepbI4 нравится это.
  17. Phantom Команда форума

    Регистрация:
    27.02.15
    Сообщения:
    1.691
    Симпатии:
    796
    Пол:
    Мужской
    Telegram:
    ph4nt0m
    neygomon, все, больше не буду. Пошел учить амыикс
     
  18. Phantom Команда форума

    Регистрация:
    27.02.15
    Сообщения:
    1.691
    Симпатии:
    796
    Пол:
    Мужской
    Telegram:
    ph4nt0m
    neygomon, а он, получается, тут был прав?
     
  19. neygomon Его Темнейшество :j Команда форума

    Регистрация:
    26.02.15
    Сообщения:
    7.594
    Симпатии:
    4.169
    Пол:
    Мужской
    Phantom, не прав он.
    если будет 0, то будет отрицание, а это уже не тру