Вип меню (ограничение функций)

Сообщения
418
Реакции
-7
C++:
#include <amxmodx>
#include <fun>
#include <hamsandwich>
#include <zombieplague>
#define CC_COLORS_TYPE CC_COLORS_SHORT
#include <cromchat>

#define PLUGIN "VipMenu"
#define VERSION "1.0"
#define AUTHOR "_RedGamer_"

new vip_1[33], vip_2[33], vip_3[33], vip_4[33], vip_5[33], vip_6[33]

public plugin_init() {
    register_plugin(PLUGIN, VERSION, AUTHOR)
   
    register_clcmd("vip_menu", "menu")
   
    register_logevent("round_end", 2, "1=Round_End")
}

public menu(id)
{
    if(zp_get_user_survivor(id) || zp_get_user_nemesis(id))
    return PLUGIN_CONTINUE;

    new menu = menu_create("\w[\rVIP MENU\w] \yBy _RedGamer_", "menu2")

    if(get_user_flags(id) & ADMIN_LEVEL_H && !zp_get_user_zombie(id) && is_user_alive(id))
    menu_additem(menu, "\r[\wВзять 300 HP\r]\r[\yРаз в 2 раунда\r]", "1")
    else
    menu_additem(menu, "\d[Взять 300 HP][Раз в 2 раунда]", "1")

    if(get_user_flags(id) & ADMIN_LEVEL_H && !zp_get_user_zombie(id) && is_user_alive(id))
    menu_additem(menu, "\r[\wВзять 200 брони\r]\r[\yРаз в 4 раунда\r]", "2")
    else
    menu_additem(menu, "\d[Взять 200 брони][Раз в 4 раунда]", "2")

    if(get_user_flags(id) & ADMIN_LEVEL_H && !zp_get_user_zombie(id) && is_user_alive(id))  
    menu_additem(menu, "\r[\wВзять Plasmagun\r]\r[\yРаз в 3 раунда\r]", "3")
    else
    menu_additem(menu, "\d[Взять Plasmagun][Раз в 3 раунда]", "3")

    if(get_user_flags(id) & ADMIN_LEVEL_H && !zp_get_user_zombie(id) && is_user_alive(id))  
    menu_additem(menu, "\r[\wВзять Katana\r]\r[\yРаз в 6 раундов\r]", "4")
    else
    menu_additem(menu, "\d[Взять Katana][Раз в 6 раундов]", "4")

    if(get_user_flags(id) & ADMIN_LEVEL_H && !zp_get_user_zombie(id) && is_user_alive(id))  
    menu_additem(menu, "\r[\wВзять Balrog-9\r]\r[\yРаз в 4 раунда\r]", "5")
    else
    menu_additem(menu, "\d[Взять Balrog-9][Раз в 4 раунда]", "5")

    if(get_user_flags(id) & ADMIN_LEVEL_H && !zp_get_user_zombie(id) && is_user_alive(id))      
    menu_additem(menu, "\r[\wВзять Thunderbolt\r]\r[\yРаз в 4 раунда\r]", "6")
    else
    menu_additem(menu, "\d[Взять Thunderbolt][Раз в 4 раунда]", "6")


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

    menu_setprop(menu, MPROP_EXIT, MEXIT_ALL )
   
    menu_display(id, menu, 0)

    return PLUGIN_HANDLED;
}

public menu2(id, menu, iten)
{
    if(iten == MENU_EXIT || ~get_user_flags(id) & ADMIN_LEVEL_H)
    {
        menu_destroy(menu)
        return PLUGIN_HANDLED;
    }      
   
    new data[6], iName[64], access, call_back
   
    menu_item_getinfo(menu, iten, access, data, 5, iName, 63, call_back)
   
    new key = str_to_num(data)
   
    switch(key)
    {
        case 1:
        {
            if(vip_1[id] == 0)
            {
            vip_1[id] = 2
            set_user_health(id, 300)
            CC_SendMessage(id, "!n[!gVIP!n] !gВы взяли себе 300 хп!")
            }
            else client_print(id, print_chat, "[VIP] Жди %d раундов", vip_1[id])
            }    
        case 2:
        {
            {
            if(vip_2[id] == 0)
            {
            vip_2[id] = 4
            set_user_armor(id, 200)
            CC_SendMessage(id, "!n[!gVIP!n] !gВы взяли себе 200 брони!")
            }
            else client_print(id, print_chat, "[VIP] Жди %d раундов", vip_2[id])
            }
        }    
        case 3:
        {
            {
            if(vip_3[id] == 0)
            {
            vip_3[id] = 3
            client_cmd(id, "admin_get_plasmagun" )
            CC_SendMessage(id, "!n[!gVIP!n] !gВы взяли Плазма Пушку!")
            }
            else client_print(id, print_chat, "[VIP] Жди %d раундов", vip_3[id])
            }
        }  
        case 4:
        {
            {
            if(vip_4[id] == 0)
            {
            vip_4[id] = 6
            client_cmd(id, "admin_get_dualkatana" )
            CC_SendMessage(id, "!n[!gVIP!n] !gВы взяли двойную Катану!")
            }
            else client_print(id, print_chat, "[VIP] Жди %d раундов", vip_4[id])
            }
        }  
        case 5:
        {
            {
            if(vip_5[id] == 0)
            {
            vip_5[id] = 4
            client_cmd(id, "b9" )
            CC_SendMessage(id, "!n[!gVIP!n] !gВы взяли перчатки Balrog-9!")
            }
            else client_print(id, print_chat, "[VIP] Жди %d раундов", vip_5[id])
            }
        }  
        case 6:
        {
            {
            if(vip_6[id] == 0)
            {
            vip_6[id] = 4
            client_cmd(id, "admin_get_thunderbolt" )
            CC_SendMessage(id, "!n[!gVIP!n] !gВы взяли себе !bThunderBolt!g!")
            }
            else client_print(id, print_chat, "[VIP] Жди %d раундов", vip_6[id])
            }
        }
    }
    return PLUGIN_HANDLED;
       
}

public round_end()
{
    for(new id = 0; id <= get_maxplayers(); id++)
        {
        if(vip_1[id] > 0) vip_1[id] =- 1
    if(vip_2[id] > 0) vip_2[id] =- 1
    if(vip_3[id] > 0) vip_3[id] =- 1
    if(vip_4[id] > 0) vip_4[id] =- 1
    if(vip_5[id] > 0) vip_5[id] =- 1
    if(vip_6[id] > 0) vip_6[id] =- 1
        }
}
1679347579409.png
21 Мар 2023
Подскажите, что исправить.. часа 4 сижу мучаю это ограничение.. пробовал и event roundstart и HLTV всё не то.. помогите..При рестарте всё срабатывает.. но потом ограничение пишет Жди 2 раундов, а на след.раунде пишет это...
 
Сообщения
397
Реакции
221
Помог
13 раз(а)
RedGamer, исходный код и скриншот?
Если вам надо добавить ограничение в это меню, то ошиблись разделом. Вам сюда --> ТЫК
 
Сообщения
418
Реакции
-7
RedGamer, исходный код и скриншот?
Если вам надо добавить ограничение в это меню, то ошиблись разделом. Вам сюда --> ТЫК
Благодарю)
21 Мар 2023
RedGamer, исходный код и скриншот?
Если вам надо добавить ограничение в это меню, то ошиблись разделом. Вам сюда --> ТЫК
Ограничение то есть.. но оно видимо неправильно настроено.. помогите нормально без всяких покупок блин
21 Мар 2023
Code_0xABC подскажи если знаешь.
 
Сообщения
1,082
Реакции
58
Помог
11 раз(а)
Если правильно понял
Код:
new i_Round;

plugin_init() {
    RegisterHookChain(RG_CSGameRules_RestartRound, "_round");
}

public _round()
    i_Round = get_member_game(m_bCompleteReset) ? 0 : i_Round +1;
    
//Используй переменную, пример
if(i_Round > 2) {
    //Выполнит, если раунд 3 и выше
}
 
Сообщения
418
Реакции
-7
Если правильно понял
Код:
new i_Round;

plugin_init() {
    RegisterHookChain(RG_CSGameRules_RestartRound, "_round");
}

public _round()
    i_Round = get_member_game(m_bCompleteReset) ? 0 : i_Round +1;
   
//Используй переменную, пример
if(i_Round > 2) {
    //Выполнит, если раунд 3 и выше
}
Немного не понял, можно поподробнее?)
 
Сообщения
1,082
Реакции
58
Помог
11 раз(а)
Что тут непонятно? Тебе ограничение по раундам надо или по количеству, или и то и то?
 
Сообщения
418
Реакции
-7
что тут непонятно?
Мне требуется
C++:
for(new id = 0; id <= get_maxplayers(); id++)
        {
        if(vip_1[id] > 0) vip_1[id] =- 1
    if(vip_2[id] > 0) vip_2[id] =- 1
    if(vip_3[id] > 0) vip_3[id] =- 1
    if(vip_4[id] > 0) vip_4[id] =- 1
    if(vip_5[id] > 0) vip_5[id] =- 1
    if(vip_6[id] > 0) vip_6[id] =- 1
Что здесь не так? Оно на следующем раунде откидывает в -1 что только не пробовал
 
Сообщения
1,082
Реакции
58
Помог
11 раз(а)
Мне требуется
C++:
for(new id = 0; id <= get_maxplayers(); id++)
        {
        if(vip_1[id] > 0) vip_1[id] =- 1
    if(vip_2[id] > 0) vip_2[id] =- 1
    if(vip_3[id] > 0) vip_3[id] =- 1
    if(vip_4[id] > 0) vip_4[id] =- 1
    if(vip_5[id] > 0) vip_5[id] =- 1
    if(vip_6[id] > 0) vip_6[id] =- 1
Что здесь не так? Оно на следующем раунде откидывает в -1 что только не пробовал
тут от слова все не так
 
Сообщения
418
Реакции
-7
Сообщения
397
Реакции
221
Помог
13 раз(а)
RedGamer, пробуй

Код:
/**
    1.1 (21.03.2023) by b0t.
        - Редактура;
        - Оптимизация;
*/
#include <amxmodx>
#include <fun>
#include <hamsandwich>
#include <zombieplague>
#define CC_COLORS_TYPE CC_COLORS_SHORT
#include <cromchat>
#define PLUGIN "VipMenu"
#define VERSION "1.1"
#define AUTHOR "_RedGamer_"
#define ITEMS_CELLS     6
new
    p_iRounds[33][ITEMS_CELLS];
public plugin_init() {
    register_plugin(PLUGIN, VERSION, AUTHOR)
  
    register_clcmd("vip_menu", "menu")
  
    register_logevent("LogEvent__StartRound",2,"1=Round_Start");
}
public menu(id)
{
    if(zp_get_user_survivor(id) || zp_get_user_nemesis(id))
        return PLUGIN_CONTINUE;
    new menu = menu_create("\w[\rVIP MENU\w] \yBy _RedGamer_", "menu2")
    if(get_user_flags(id) & ADMIN_LEVEL_H && !zp_get_user_zombie(id) && is_user_alive(id)) {
        menu_additem(menu, "\r[\wВзять 300 HP\r]\r[\yРаз в 2 раунда\r]");
        menu_additem(menu, "\r[\wВзять 200 брони\r]\r[\yРаз в 4 раунда\r]");
        menu_additem(menu, "\r[\wВзять Plasmagun\r]\r[\yРаз в 3 раунда\r]");
        menu_additem(menu, "\r[\wВзять Katana\r]\r[\yРаз в 6 раундов\r]");
        menu_additem(menu, "\r[\wВзять Balrog-9\r]\r[\yРаз в 4 раунда\r]");
        menu_additem(menu, "\r[\wВзять Thunderbolt\r]\r[\yРаз в 4 раунда\r]");
    }
    else {
        menu_additem(menu, "\d[Взять 300 HP][Раз в 2 раунда]");
        menu_additem(menu, "\d[Взять 200 брони][Раз в 4 раунда]");
        menu_additem(menu, "\d[Взять Plasmagun][Раз в 3 раунда]");
        menu_additem(menu, "\d[Взять Katana][Раз в 6 раундов]");
        menu_additem(menu, "\d[Взять Balrog-9][Раз в 4 раунда]");
        menu_additem(menu, "\d[Взять Thunderbolt][Раз в 4 раунда]");
    }
   
    menu_setprop(menu,MPROP_EXITNAME, "Выход")
    menu_display(id,menu);
    return PLUGIN_HANDLED;
}
public menu2(id, menu, item)
{
    menu_destroy(iMenu);
    if(item == MENU_EXIT)
        return PLUGIN_HANDLED;
   
    if(p_iRounds[id][item] > 0) {
        client_print(id, print_chat, "[VIP] Жди %i раундов",p_iRounds[id][item]);
        menu(id);
        return PLUGIN_HANDLED;
    }
    switch(item+1)
    {
        case 1:
        {
            p_iRounds[id][item] = 2;
            set_user_health(id, 300)
            CC_SendMessage(id, "!n[!gVIP!n] !gВы взяли себе 300 хп!")
        }
        case 2:
        {
            p_iRounds[id][item] = 4;
            set_user_armor(id, 200)
            CC_SendMessage(id, "!n[!gVIP!n] !gВы взяли себе 200 брони!")
        }   
        case 3:
        {
            p_iRounds[id][item] = 3;
            client_cmd(id, "admin_get_plasmagun" )
            CC_SendMessage(id, "!n[!gVIP!n] !gВы взяли Плазма Пушку!")
        } 
        case 4:
        {
            p_iRounds[id][item] = 6;
            client_cmd(id, "admin_get_dualkatana" )
            CC_SendMessage(id, "!n[!gVIP!n] !gВы взяли двойную Катану!")
        } 
        case 5:
        {
            p_iRounds[id][item] = 4;
            client_cmd(id, "b9" )
            CC_SendMessage(id, "!n[!gVIP!n] !gВы взяли перчатки Balrog-9!")
        } 
        case 6:
        {
            p_iRounds[id][item] = 4;
            client_cmd(id, "admin_get_thunderbolt" )
            CC_SendMessage(id, "!n[!gVIP!n] !gВы взяли себе !bThunderBolt!g!")
        }
    }
    return PLUGIN_HANDLED;
}
public LogEvent__StartRound() {
    new iPlayers[32],iNum;
    get_players(iPlayers,iNum,"ch");
    for(new i,id;i<iNum;i++) {
        id = iPlayers[i];
        for(new x;x<ITEMS_CELLS;x++) {
            if(p_iRounds[id][x] > 0)
                p_iRounds[id][x]--;
        }
    }
}

UPD:

В иделе бы ещё в client_putinserver добавить:
Код:
public client_putinserver(id) {
     for(new i;i<ITEMS_CELLS;i++) {
          p_iRounds[id][i] = 0;
     }
}
 

Вложения

  • 4 KB Просмотры: 5
Сообщения
1,082
Реакции
58
Помог
11 раз(а)
можно еще пропустить
Код:
if(!is_connected(id))
    continue;
 
Сообщения
1,082
Реакции
58
Помог
11 раз(а)
RedGamer, не нужно, это если бы не использовал get_players перед циклом
 
Сообщения
397
Реакции
221
Помог
13 раз(а)
RedGamer, тот что я скинул выше устраивает? Или химичишь сидишь
 
Сообщения
1,082
Реакции
58
Помог
11 раз(а)
b0t., ну тут еще надо всетаки)))
if(item == MENU_EXIT), хотя меню уничтожет
 

Пользователи, просматривающие эту тему

Сейчас на форуме нет ни одного пользователя.
Сверху Снизу