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

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

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

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

Вип плагин.Помогите доработать функцию

Статус пользователя nextent
сообщение 30.10.2013, 9:01
Сообщение #1
Стаж: 12 лет

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

Здравствуйте уважаемые .Не моглибы вы мен помоч с плагином.Немно учусь редактировать плагины под себя и свой сервер.Сейчас делаю вип меню.Но в плагине не нравится что например берешь оружие кокое либо,оно взялось,и когда хочешь взять гранаты пишет "Можно взять только раз за раунд".Я так понимаю одна функия идет на все меню и на каждое оружие .Мне нужно чтобы каждое оружие бралось отдельно от каждого.
Собственно сам исходник.
Код
#include <amxmodx>
#include <amxmisc>
#include <hamsandwich>
#include <cstrike>
#include <fun>

#define VIP ADMIN_LEVEL_H
#define ADMIN ADMIN_BAN

const KEYSMENU = 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

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 can_take_round, can_take[33]
new g_msgSayText, g_maxplayers

public plugin_init()
{
    register_plugin("Vip Menu", "2.0", "nextent")
    
    register_event("HLTV", "event_round_start", "a", "1=0", "2=0")
    register_event("TextMsg", "Event_Restart", "a", "2&#Game_C", "2&#Game_w")
    register_clcmd("say /adminka", "ShowMotdAdm")
    register_clcmd("say /vipka", "ShowMotdVip")
    register_clcmd("say /admin", "print_adminlist")

    register_clcmd("amx_vip", "press_menu")
    register_menu("Vip Menu", KEYSMENU, "admin_menu")

    g_maxplayers = get_maxplayers()
    g_msgSayText = get_user_msgid("SayText")
}

public ShowMotdAdm(id)
{
    show_motd(id, "adminka.txt")
    return PLUGIN_HANDLED
}

public ShowMotdVip(id)
{
    show_motd(id, "vip.txt")
    return PLUGIN_HANDLED
}

public client_connect(id)
{
    client_cmd(id, "bind f3 amx_vip")
}

public Event_Restart()
{
    can_take_round = 0
}

public event_round_start()
{
    can_take_round++
    
    for (new id = 1; id <= g_maxplayers; id++)
    {
        can_take[id] = true
    }
}

public press_menu(id)
{    
    if(!(get_user_flags(id) & VIP))
    {
        colored_print(id, "^x04Недостаточно прав для использования команды")
        return PLUGIN_HANDLED
    }
    
    show_vip_menu(id)
    
    return PLUGIN_HANDLED
}

public show_vip_menu(id)
{
    static menu[450], len
    len = 0

    len += formatex(menu[len], charsmax(menu) - len, "\rVIP МЕНЮ^n^n")
  
    len += formatex(menu[len], charsmax(menu) - len, "\r1. \wВзять \r[\yM4A1+DGL+HE\r]^n")
    len += formatex(menu[len], charsmax(menu) - len, "\r2. \wВзять \r[\yAK47+DGL+HE\r]^n")
    len += formatex(menu[len], charsmax(menu) - len, "\r3. \wВзять \r[\yAWP+DGL+HE+ARMOR\r]^n^n")
    len += formatex(menu[len], charsmax(menu) - len, "\r4. \wКикнуть^n")
    len += formatex(menu[len], charsmax(menu) - len, "\r5. \wГолосование за карту^n")
    
    len += formatex(menu[len], charsmax(menu) - len, "\r0.\y Выход")
    
    show_menu(id, KEYSMENU, menu, -1, "Vip Menu")
    
    return PLUGIN_CONTINUE
}

public admin_menu(id, key)
{
    switch (key)
    {
        case 0:
        {
            if(can_take_round < 3)
            {
                colored_print(id, "^x04Доступно только с 3го раунда")
                return PLUGIN_CONTINUE
            }
            
            if(!can_take[id])
            {
                colored_print(id, "^x04Можно взять только раз за раунд")
                return PLUGIN_HANDLED
            }
            
            drop_weapons(id, 1)
            drop_weapons(id, 2)
            
            give_item(id,"weapon_hegrenade")
            give_item(id,"weapon_deagle")
            give_item(id,"weapon_m4a1")
            cs_set_user_bpammo(id, CSW_M4A1, 90)
            cs_set_user_bpammo(id, CSW_DEAGLE, 35)
            
            
            can_take[id] = false
        }
        case 1:
        {
            if(can_take_round < 3)
            {
                colored_print(id, "^x04Доступно только с 3го раунда")
                return PLUGIN_CONTINUE
            }
            
            if(!can_take[id])
            {
                colored_print(id, "^x04Можно взять только раз за раунд")
                return PLUGIN_HANDLED
            }
            
            drop_weapons(id, 1)
            drop_weapons(id, 2)
            
            give_item(id,"weapon_hegrenade")
            give_item(id,"weapon_deagle")
            give_item(id,"weapon_ak47")
            cs_set_user_bpammo(id, CSW_AK47, 90)
            cs_set_user_bpammo(id, CSW_DEAGLE, 35)
            
            can_take[id] = false
        }
        case 2:
        {
            if(can_take_round < 5)
            {
                colored_print(id, "^x04Доступно только с 5го раунда")
                return PLUGIN_CONTINUE
            }
            
            if(!can_take[id])
            {
                colored_print(id, "^x04Можно взять только раз за раунд")
                return PLUGIN_HANDLED
            }
    
            drop_weapons(id, 1)
            drop_weapons(id, 2)
            
            
            give_item(id, "weapon_hegrenade")
            set_user_armor(id, 100)
            give_item(id,"weapon_deagle")
            give_item(id,"weapon_awp")
            cs_set_user_bpammo(id, CSW_AWP, 30)
            cs_set_user_bpammo(id, CSW_DEAGLE, 35)
            
            can_take[id] = false
        }
        case 3:
        {
            client_cmd(id, "amx_kickmenu")
        }
        case 4:
        {
            client_cmd(id, "amx_votemapmenu")
        }        
        }
    }    
    return PLUGIN_CONTINUE
}

public print_viplist(user)
{
    new adminnames[33][32]
    new message[256]
    new id, count, x, len
    
    for(id = 1; id <= g_maxplayers; id++)
        if(is_user_connected(id))
            if(get_user_flags(id) & VIP)
                get_user_name(id, adminnames[count++], 31)

    len = format(message, 255, "Випы онлайн: ")
    if(count > 0) {
        for(x = 0; x < count; x++) {
            len += format(message[len], 255-len, "%s%s ", adminnames[x], x < (count-1) ? ", ":"")
            if(len > 96 ) {
                colored_print(user, "^x04%s", message)
                len = format(message, 255, "")
            }
        }
        colored_print(user, "^x04%s", message)
    }
    else {
        len += format(message[len], 255-len, "Отсутствуют")
        colored_print(user, "^x04%s", message)
    }
}

public print_adminlist(user)
{
    new adminnames[33][32]
    new message[256]
    new id, count, x, len
    
    for(id = 1; id <= g_maxplayers; id++)
        if(is_user_connected(id))
            if(get_user_flags(id) & ADMIN)
                get_user_name(id, adminnames[count++], 31)

    len = format(message, 255, "Админы онлайн: ")
    if(count > 0) {
        for(x = 0; x < count; x++) {
            len += format(message[len], 255-len, "%s%s ", adminnames[x], x < (count-1) ? ", ":"")
            if(len > 96 ) {
                colored_print(user, "^x04%s", message)
                len = format(message, 255, "")
            }
        }
        colored_print(user, "^x04%s", message)
    }
    else {
        len += format(message[len], 255-len, "Отсутствуют")
        colored_print(user, "^x04%s", message)
    }
    print_viplist(user)
}

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[i]
          
          if ((dropwhat == 1 && ((1<<weaponid) & PRIMARY_WEAPONS_BIT_SUM)) || (dropwhat == 2 && ((1<<weaponid) & SECONDARY_WEAPONS_BIT_SUM)))
         {
               static wname[32]
               get_weaponname(weaponid, wname, sizeof wname - 1)
               engclient_cmd(id, "drop", wname)
          }
     }
}

stock colored_print( target, const message[],  any:... )
{
    static buffer[ 512 ]

    if( !target )
    {
        static player
        for( player = 1; player <= g_maxplayers; player++ )
        {
            if ( !is_user_connected( player ) )
            continue;

            vformat( buffer, charsmax( buffer ), message, 3 )

            message_begin( MSG_ONE_UNRELIABLE, g_msgSayText, _, player )
            write_byte( player )
            write_string( buffer )
            message_end()
        }
    }

    else
    {
        vformat( buffer, charsmax( buffer ), message, 3 )

        message_begin( MSG_ONE, g_msgSayText, _, target )
        write_byte( target )
        write_string( buffer )
        message_end()
    }
}
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
   Цитировать сообщение
Статус пользователя nextent
сообщение 30.10.2013, 9:49
Сообщение #2
Стаж: 12 лет

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

Поспешил немного с паникай.Решил проблему следующим образом.Добавлением фукциий..
Код
new can_take_round2, can_take2[33]
Добавил
can_take_round2 = 0

can_take_round2++

can_take2[id] = true


Следующим образом эти значение прописал в case
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
   + Цитировать сообщение
  Ответить в данную темуНачать новую тему
 
0 пользователей и 1 гостей читают эту тему: