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

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

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

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

> Правила форума

Этот раздел, как вы могли заметить по названию, предназначен для решения вопросов по поводу уже существующих модов и плагинов.
Пожалуйста, если у вас проблема с написанием плагина, не путайте этот раздел с разделом по скриптингу.
Для поиска плагинов и модов существует соответствующий раздел.

Название темы должно соответствовать содержанию. Темы с названием типа "Помогите", "Вопрос", "парни подскажите..." - будут удалены.
Все темы, не относящиеся к "Вопросам по модам и плагинам", будут удалены или перемещены в соответствующий раздел.

Правила оформления темы:
1. Помимо заголовка не забудьте верно сформулировать свой вопрос.
2. Выложите исходник (в тег кода + ) или ссылку на плагин который вызывает у вас вопросы.
3. Выложите лог с ошибками (если имеется) под спойлер

Проблема с ADMIN_LEVEL

Статус пользователя narkk3
сообщение 14.1.2017, 23:35
Сообщение #1
Стаж: 10 лет

Сообщений: 99
Благодарностей: 2
Полезность: < 0

Скажите пожалуйста, как сделать чтобы определенное действие работало на двух флагах?
К примеру у меня VIP меню, и нужно чтобы оно работало и с флагом H и с флагом G. (ADMIN_LEVEL)
Я делал так, но на флаг G не работает. Как правильно сделать, чтобы работало меню на двух флагах?
Код
if(get_user_flags(id) & ADMIN_LEVEL_H && ! get_user_flags(id) & ADMIN_LEVEL_G)
{
iLen += formatex(menu[iLen], charsmax(menu) - iLen, "^n\r1. \wВзять M4a1^n")
keys |= MENU_KEY_1
iLen += formatex(menu[iLen], charsmax(menu) - iLen, "\r2. \wВзять Ak-47^n")
keys |= MENU_KEY_2
iLen += formatex(menu[iLen], charsmax(menu) - iLen, "\r3. \wВзять Famas^n")
keys |= MENU_KEY_3
iLen += formatex(menu[iLen], charsmax(menu) - iLen, "\r4. \wВзять Awp^n")
keys |= MENU_KEY_4
iLen += formatex(menu[iLen], charsmax(menu) - iLen, "\r5. \wВзять Scout^n")
keys |= MENU_KEY_5
iLen += formatex(menu[iLen], charsmax(menu) - iLen, "\r6. \wВзять Пулемет^n")
keys |= MENU_KEY_6
iLen += formatex(menu[iLen], charsmax(menu) - iLen, "\r7. \wСделать рестарт^n")
keys |= MENU_KEY_7                                                                                                              
iLen += formatex(menu[iLen], charsmax(menu) - iLen, "\r8. \wКикнуть игрока^n")
keys |= MENU_KEY_8

Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
   Цитировать сообщение
Статус пользователя r0no^
сообщение 14.1.2017, 23:54
Сообщение #2


Стаж: 14 лет
Город: Vilnius

Сообщений: 359
Благодарностей: 162
Полезность: 626

if(get_user_flags(id) & ADMIN_LEVEL_H && get_user_flags(id) & ADMIN_LEVEL_G)


Лишь утратив всё до конца, человек обретает свободу!
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
   + Цитировать сообщение
Статус пользователя narkk3
сообщение 15.1.2017, 3:48
Сообщение #3
Стаж: 10 лет

Сообщений: 99
Благодарностей: 2
Полезность: < 0

Цитата(r0no^ @ 15.1.2017, 0:54) *
if(get_user_flags(id) & ADMIN_LEVEL_H && get_user_flags(id) & ADMIN_LEVEL_G)

Сделал так. Всё равно может брать оружие/пользоваться игрок только с флагом ADMIN_LEVEL_H.
Захожу с флагом ADMIN_LEVEL_G - нельзя взять.
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
   + Цитировать сообщение
Статус пользователя r0no^
сообщение 15.1.2017, 18:57
Сообщение #4


Стаж: 14 лет
Город: Vilnius

Сообщений: 359
Благодарностей: 162
Полезность: 626

narkk3, if(get_user_flags(id) & ADMIN_LEVEL_H || get_user_flags(id) & ADMIN_LEVEL_G)


Лишь утратив всё до конца, человек обретает свободу!
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
Поблагодарили 1 раз
   + Цитировать сообщение
Статус пользователя narkk3
сообщение 17.1.2017, 15:20
Сообщение #5
Стаж: 10 лет

Сообщений: 99
Благодарностей: 2
Полезность: < 0

Цитата(r0no^ @ 15.1.2017, 19:57) *
narkk3, if(get_user_flags(id) & ADMIN_LEVEL_H || get_user_flags(id) & ADMIN_LEVEL_G)

Всё-равно пишет мол доступно только для вип.
Вот паблик оружия, которое я беру.
kod

Код
public m4a1 (id)  // Функция команды в общий чат " /say m4 "                  
    {                                                                    
    //if(!(get_user_flags(id) & ADMIN_LEVEL_H && get_user_flags(id) & ADMIN_LEVEL_G))
    if(get_user_flags(id) & ADMIN_LEVEL_H || get_user_flags(id) & ADMIN_LEVEL_G)
        {                        
        print_col_chat(id, "^1[^4Информация^1] Данное оружие доступно ^3только^1 для ^4VIP^1-^4клиентов^1!"); // Если игрок без флага "VIP_FLAG"
        return PLUGIN_HANDLED; // Прекращаем ему действие.
        }
    if(inbuyzone)
        {
        if(!g_buyzone[id])
        {
            print_col_chat(id, "%L", LANG_SERVER,"OUTSIDE_BUYZONE")
            return PLUGIN_HANDLED
        }
        }
    if(! is_user_alive(id))  // Если игрок не жив.
    {
        print_col_chat(id, "^1[^4Информация^1] Оружие можно брать ^3только живым^1!"); // Выводим ему в чат сообщение. (Цветное)
        return PLUGIN_HANDLED; // Прекращаем ему действие.
    }
    if(user_has_weapon(id,CSW_M4A1))
    {
                print_col_chat(id, "%L", LANG_SERVER,"ALREADY_OWN_WEAPON")
    }
    /*if(round_number <= 1 ) // Отсчитываем раунды,если меньше или ровно первому.
    {
        print_col_chat(id, "^1[^4Информация^1] Данное оружие ^3доступно только^1 с^4 2-го^1 раунда!"); // Выводим ему в чат сообщение. (Цветное)
        return PLUGIN_HANDLED; // Прекращаем ему действие.
    }*/
    if(g_i_status[id]==true)
            {
                if(get_user_flags(id) & ADMIN_LEVEL_H)
                {
                new name[50]
                get_user_name(id,name,49)
                give_item(id,"weapon_m4a1")
                cs_set_user_bpammo(id, CSW_M4A1, 90)
                print_col_chat(0, "^4* ^1VIP-клиент ^3%s^1 взял ^4M4a1^1 из оружейки.", name);
                g_i_status[id]=false
                }
                else
                if(get_user_flags(id) & ADMIN_LEVEL_G)
                {
                new name[50]              
                get_user_name(id, name, 49)
                give_item(id,"weapon_m4a1")
                cs_set_user_bpammo( id , CSW_M4A1, 90 )                
                print_col_chat(0, "^4* ^1Celebrity ^3%s^1 взял ^4M4a1^1 из оружейки.", name);
                g_i_status[id]=false
                }
            }                                                                                                                      
            
            else
                print_col_chat(id, "^1[^4Информация^1] Вы ^3уже брали^1 оружие из оружейки!")
        
    return PLUGIN_CONTINUE;  // Продолжаем действия,которые были прекращены выше.                                                                        
}

Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
   + Цитировать сообщение
Статус пользователя vovan4ik1997
сообщение 17.1.2017, 16:06
Сообщение #6


Стаж: 13 лет

Сообщений: 1087
Благодарностей: 433
Полезность: 718

Код:
public m4a1 (id) 
{
static flags; flags = get_user_flags(id)
if((flags & ADMIN_LEVEL_F) || (flags & ADMIN_RCON))
{
print_col_chat(id, "^1[^4Информация^1] Данное оружие доступно ^3только^1 для ^4VIP^1-^4клиентов^1!"); // Если игрок без флага "VIP_FLAG"
return PLUGIN_HANDLED; // Прекращаем ему действие.
}
}


Представь, что ты заплатил однажды, а получаешь прибыль постоянно.
Закажи правильный контент тут
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
Поблагодарили 1 раз
   + Цитировать сообщение
Статус пользователя ssx
сообщение 17.1.2017, 16:08
Сообщение #7


Стаж: 12 лет

Сообщений: 2237
Благодарностей: 1343
Полезность: 836

может ТС путает флаг h в users.ini с ADMIN_LEVEL_H


[Half-Life DM FFA] 78.152.169.100:27016
[CS 1.6 GunGame] 78.152.169.100:27018
[CS 1.6 DM AIM] 78.152.169.100:27017
[CS 1.6 DM FFA] 78.152.169.100:27015
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
   + Цитировать сообщение
Статус пользователя vovan4ik1997
сообщение 17.1.2017, 16:09
Сообщение #8


Стаж: 13 лет

Сообщений: 1087
Благодарностей: 433
Полезность: 718

narkk3, LOL :D
Ты ставишь проверку на флаги и ставишь запрет на продолжение действий.
У тебя конструкция вида:
Если (флаг Н и флаг G){
print_col_chat(id, "^1[^4Информация^1] Данное оружие доступно ^3только^1 для ^4VIP^1-^4клиентов^1!")
}

А чтобы работало, как ты хочешь надо вставлять мою конструкцию в другое место:
Код:

if(g_i_status[id]==true)
{
if(get_user_flags(id) & ADMIN_LEVEL_H)
{
new name[50]
get_user_name(id,name,49)
give_item(id,"weapon_m4a1")
cs_set_user_bpammo(id, CSW_M4A1, 90)
print_col_chat(0, "^4* ^1VIP-клиент ^3%s^1 взял ^4M4a1^1 из оружейки.", name);
g_i_status[id]=false
}
else
if(get_user_flags(id) & ADMIN_LEVEL_G)
{
new name[50]
get_user_name(id, name, 49)
give_item(id,"weapon_m4a1")
cs_set_user_bpammo( id , CSW_M4A1, 90 )
print_col_chat(0, "^4* ^1Celebrity ^3%s^1 взял ^4M4a1^1 из оружейки.", name);
g_i_status[id]=false
}
}


А из самого начала удалить..


Представь, что ты заплатил однажды, а получаешь прибыль постоянно.
Закажи правильный контент тут
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
Поблагодарили 2 раз
   + Цитировать сообщение
voed
сообщение 17.1.2017, 17:40
Сообщение #9
Стаж: 11 лет

Сообщений: 2593
Благодарностей: 1760
Полезность: 405

Цитата(vovan4ik1997 @ 17.1.2017, 16:09) *
Код:

if(g_i_status[id]==true)
{
if(get_user_flags(id) & ADMIN_LEVEL_H)
{
new name[50]
get_user_name(id,name,49)
give_item(id,"weapon_m4a1")
cs_set_user_bpammo(id, CSW_M4A1, 90)
print_col_chat(0, "^4* ^1VIP-клиент ^3%s^1 взял ^4M4a1^1 из оружейки.", name);
g_i_status[id]=false
}
else
if(get_user_flags(id) & ADMIN_LEVEL_G)
{
new name[50]
get_user_name(id, name, 49)
give_item(id,"weapon_m4a1")
cs_set_user_bpammo( id , CSW_M4A1, 90 )
print_col_chat(0, "^4* ^1Celebrity ^3%s^1 взял ^4M4a1^1 из оружейки.", name);
g_i_status[id]=false
}
}

А вот и индусы подъехали good.gif
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
Поблагодарили 1 раз
   + Цитировать сообщение
Статус пользователя vovan4ik1997
сообщение 17.1.2017, 17:45
Сообщение #10


Стаж: 13 лет

Сообщений: 1087
Благодарностей: 433
Полезность: 718

voed,
И вам не хворать. Только этот код я взял из поста ТС, и дал понять, что именно в нем нужно сделать изменения


Представь, что ты заплатил однажды, а получаешь прибыль постоянно.
Закажи правильный контент тут
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
   + Цитировать сообщение
Статус пользователя narkk3
сообщение 17.1.2017, 18:38
Сообщение #11
Стаж: 10 лет

Сообщений: 99
Благодарностей: 2
Полезность: < 0

vovan4ik1997,
Ааа, только что понял о_0
С английским проблем нету. Просто смотрел другой плагин вип, так там оказывается была ошибка, а я не посмотрел, а потом не понимал из-за чего. Точно. Вообще где-то голову потерял. Сначало нужны действия, потом через else уже запрет :)

Отредактировал: narkk3, - 17.1.2017, 18:40
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
   + Цитировать сообщение
voed
сообщение 17.1.2017, 19:27
Сообщение #12
Стаж: 11 лет

Сообщений: 2593
Благодарностей: 1760
Полезность: 405

vovan4ik1997, не принимай близко к сердцу, я бы исправил цитату, но редактировать сообщение не могу smile.gif
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
   + Цитировать сообщение
Статус пользователя narkk3
сообщение 17.1.2017, 22:54
Сообщение #13
Стаж: 10 лет

Сообщений: 99
Благодарностей: 2
Полезность: < 0

Цитата(vovan4ik1997 @ 17.1.2017, 18:45) *
voed,
И вам не хворать. Только этот код я взял из поста ТС, и дал понять, что именно в нем нужно сделать изменения

Короче что-то я намешал всё вместе, но что-то собрал. Вроде как всё работает, но при сообщении 'Игрок N взял м4а1' появляется еще второе сообщение 'вы уже брали это оружие'.
Появляется оно лишь тогда, когда я беру оружие.
Код
public m4a1 (id)
    {                                                                    
   static flags; flags = get_user_flags(id)
   if((flags & ADMIN_LEVEL_H) || (flags &  ADMIN_LEVEL_G))
        {
        if(g_i_status[id]==true)
            {
                if(get_user_flags(id) & ADMIN_LEVEL_H)
                {
                new name[50]
                get_user_name(id,name,49)
                give_item(id,"weapon_m4a1")
                cs_set_user_bpammo(id, CSW_M4A1, 90)
                print_col_chat(0, "^4* ^1VIP-клиент ^3%s^1 взял ^4M4a1^1 из оружейки.", name);
                g_i_status[id]=false
                }
                else
                if(get_user_flags(id) & ADMIN_LEVEL_G)
                {
                new name[50]              
                get_user_name(id, name, 49)
                give_item(id,"weapon_m4a1")
                cs_set_user_bpammo( id , CSW_M4A1, 90 )                
                print_col_chat(0, "^4* ^1Celebrity ^3%s^1 взял ^4M4a1^1 из оружейки.", name);
                g_i_status[id]=false
                }
                else      
                print_col_chat(id, "^1[^4Информация^1] Данное оружие доступно ^3только^1 для ^4VIP^1-^4клиентов^1!");
            }
        if(g_i_status[id]==false)
        print_col_chat(id, "^1[^4Информация^1] Вы ^3уже брали^1 оружие из оружейки!"); // Если игрок без флага "VIP_FLAG"
        //return PLUGIN_HANDLED; // Прекращаем ему действие.
        }
    }

И почему-то, когда обычный игрок вводит /m4 (говоря про public m4a1) ему не показывает, мол 'доступно только для вип'.
Помоги пожалуйста, ибо я проще говоря рукожоп superstition.gif

Отредактировал: narkk3, - 17.1.2017, 22:57
Причина: Выдано устное предупреждение!
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
   + Цитировать сообщение
Статус пользователя JIuXeP
сообщение 18.1.2017, 3:45
Сообщение #14


Стаж: 12 лет

Сообщений: 338
Благодарностей: 205
Полезность: 792

люблю ретурны
Код:
public m4a1(id)
{
static flags;
flags = get_user_flags(id);

// если игрок по флагам не подходит...
if (!(flags & ADMIN_LEVEL_H || flags & ADMIN_LEVEL_G))
{
print_col_chat(id, "^1[^4Информация^1] Данное оружие доступно ^3только^1 для ^4VIP^1-^4клиентов^1!");
return PLUGIN_HANDLED;
}

// если игрок уже брал аружку xD
if (g_i_status[id] == false)
{
print_col_chat(id, "^1[^4Информация^1] Вы ^3уже брали^1 оружие из оружейки!");
return PLUGIN_HANDLED;
}

// если результаты условий выше имеют отрицательный результат, можем выдать игроку всё, что захотим
// ...

new name[50] // хм, надо бы это проверить на русских никах, не уверен
get_user_name(id, name, 49)
give_item(id, "weapon_m4a1")
cs_set_user_bpammo(id, CSW_M4A1, 90)
g_i_status[id] = false

if (flags & ADMIN_LEVEL_H)
print_col_chat(0, "^4* ^1VIP-клиент ^3%s^1 взял ^4M4a1^1 из оружейки.", name);
else // if (flags & ADMIN_LEVEL_G)
print_col_chat(0, "^4* ^1Celebrity ^3%s^1 взял ^4M4a1^1 из оружейки.", name);

// только в случае с CLIENT CMD! Кратко и понятно:
// return PLUGIN_CONTINUE; // Выведется сообщение игрока с чат-командой (или unknown command в консоли)...
return PLUGIN_HANDLED; // Прекращаем ему действие. ADD: в этом случае, ни в чате ни в консоли ничего не выведется, просто откроется меню
}
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
   + Цитировать сообщение
Статус пользователя esterio
сообщение 18.1.2017, 20:40
Сообщение #15
Стаж: 13 лет
Город: Украина

Сообщений: 266
Благодарностей: 215
Полезность: 627

Код:
new const FLAGS = (ADMIN_LEVEL_H | ADMIN_LEVEL_G);
if ((get_user_flags(id) & FLAGS) == FLAGS) {
// ...
}


Отредактировал: esterio, - 18.1.2017, 20:41


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