Русское сообщество по скриптингу

Как получить все флаги одной функцией  [Решено]

Все вопросы по скриптингу для AMXX, помощь в редактировании плагинов.

Модераторы: Subb98, liFe iS GoOD

Правила форума
1. Запрещено материться и оскорблять других участников форума.
2. Запрещен флуд, оффтоп, дабл постинг во всех разделах форума, кроме раздела "Болтовня".
3. Запрещено взламывать сайт/форум или наносить любой вред проекту.
4. Запрещено рекламировать другие ресурсы.
5. Запрещено создавать темы без информативного названия. Название темы должно отображать ее смысл.

В данном разделе форума разрешено создавать темы, касающие только скриптинга для AMX Mod X.

Правила при создании новой темы:
1. При вставке кода плагина необходимо использовать тег [code=php].
2. Любые изображения должны быть загружены, как вложения к вашему сообщению.
3. При описании проблемы или запросе на помощь в редактировании плагина обязательно выкладывайте исходник sma плагина.

Как получить все флаги одной функцией

Сообщение EbGiK » 10 сен 2017, 15:05

Есть такая функция, которой можно получить все флаги?
Я знаю, что можно так делать,
Код: Выделить всё
if(get_user_flags(playerId) & ADMIN_IMMUNITY){userFlag = "a"; } 
else if(get_user_flags(playerId) & ADMIN_RESERVATION){userFlag "b"; }
...
 

но мне не удобно, слишком много проверок получается
Аватара пользователя
EbGiK
 
Сообщения: 192
Зарегистрирован: 05 фев 2016, 16:40
Благодарил (а): 43 раз.
Поблагодарили: 3 раз.
Языки программирования: Counter-Strike 1.6
Counter-Strike: Source
Team Fortress II
Left 4 Dead

Re: Как получить все флаги одной функцией  [Решено]

Сообщение NEoMASTERR » 10 сен 2017, 15:08

get_user_flags возвращает все флаги
Зачем вам их в буквы переводить?
Последний раз редактировалось NEoMASTERR 10 сен 2017, 15:09, всего редактировалось 1 раз.
Аватара пользователя
NEoMASTERR
 
Сообщения: 832
Зарегистрирован: 05 янв 2015, 16:38
Благодарил (а): 43 раз.
Поблагодарили: 188 раз.
Опыт программирования: Около года
Языки программирования: Counter-Strike 1.6

Re: Как получить все флаги одной функцией

Сообщение EbGiK » 10 сен 2017, 15:09

NEoMASTERR, спасибо
Аватара пользователя
EbGiK
 
Сообщения: 192
Зарегистрирован: 05 фев 2016, 16:40
Благодарил (а): 43 раз.
Поблагодарили: 3 раз.
Языки программирования: Counter-Strike 1.6
Counter-Strike: Source
Team Fortress II
Left 4 Dead

Re: Как получить все флаги одной функцией

Сообщение oReo » 14 сен 2017, 04:32

EbGiK, get_user_flags(playerId);
Последний раз редактировалось oReo 20 сен 2017, 15:08, всего редактировалось 2 раз(а).
деструктор решает все проблемы: нет переменной - нет проблемы (с) Subb98
Аватара пользователя
oReo
 
Сообщения: 165
Зарегистрирован: 24 май 2017, 05:59
Благодарил (а): 10 раз.
Поблагодарили: 5 раз.
Опыт программирования: Около 3 месяцев
Языки программирования: Pawn

Re: Как получить все флаги одной функцией

Сообщение NEoMASTERR » 14 сен 2017, 11:18

Вы должны зарегистрироваться, чтобы видеть ссылки.

Мне кажется там от 0 до 31 число возможно, т.е. порядковый номер флага а не битсумма
Код: Выделить всё
id   - Flag set id, ranging from 0 to 31


Да и про второй параметр
Код: Выделить всё
AMXX stores multiple sets of flags internally, but only flag set
0 is actively used. You should not change the value of the second
parameter from the default.
Аватара пользователя
NEoMASTERR
 
Сообщения: 832
Зарегистрирован: 05 янв 2015, 16:38
Благодарил (а): 43 раз.
Поблагодарили: 188 раз.
Опыт программирования: Около года
Языки программирования: Counter-Strike 1.6

Re: Как получить все флаги одной функцией

Сообщение артист666 » 14 сен 2017, 11:58

Получить флаги игрока буквами в строку:
Код: Выделить всё
static szFlags[23]; get_flags(get_user_flags(id), szFlagscharsmax(szFlags)) 


Установить флаги игрока буквами:
Код: Выделить всё
set_user_flags(idread_flags("abcdefghijklmnopqrstu")) 



oReo писал(а):EbGiK, get_user_flags(playerId, read_flags("флаги какие нужны в буквах");

NEoMASTERR писал(а):Мне кажется там от 0 до 31 число возможно, т.е. порядковый номер флага а не битсумма


2й параметр у get_user_flags и 3й у set_user_flags - это наборы флагов.
Т.е. amxx использует по умолчанию набор флагов с ид == 0.
Но можно использовать дополнительные наборы, т.е. создать свои собственные, на набор 1 например.
Игрок может иметь 32 набора флагов.
Если вы хотите чему-то научиться, пробуйте, задавайте вопросы.
Иначе компенсируйте потраченное время на ваши "проблемы".
Аватара пользователя
артист666
 
Сообщения: 2706
Зарегистрирован: 09 апр 2013, 17:46
Благодарил (а): 284 раз.
Поблагодарили: 639 раз.
Опыт программирования: Больше трех лет
Языки программирования: С, C++
Delphi
HTML, CSS, Java Script
Pawn

Re: Как получить все флаги одной функцией

Сообщение oReo » 20 сен 2017, 10:48

артист666, но ведь код который я скинул компактный и рабочий ;)
деструктор решает все проблемы: нет переменной - нет проблемы (с) Subb98
Аватара пользователя
oReo
 
Сообщения: 165
Зарегистрирован: 24 май 2017, 05:59
Благодарил (а): 10 раз.
Поблагодарили: 5 раз.
Опыт программирования: Около 3 месяцев
Языки программирования: Pawn

Re: Как получить все флаги одной функцией

Сообщение Mistrick » 20 сен 2017, 12:36

oReo, Вы хоть знаете для чего 2-й параметр в get_user_flags()?
Аватара пользователя
Mistrick
Скриптер
 
Сообщения: 2940
Зарегистрирован: 04 ноя 2012, 18:15
Благодарил (а): 43 раз.
Поблагодарили: 1247 раз.
Языки программирования: PAWN
С/С++(few above zero)

Re: Как получить все флаги одной функцией

Сообщение oReo » 20 сен 2017, 12:42

Mistrick, get_user_flags(id);
1 arg. id = id игрока
пример:
Код: Выделить всё
if(get_user_flags(players[i]) & read_flags("b"))
{
    client_print(players[i], "Ты админ :D");

идёт проверка если у игрока есть флаг "b" то выполняется команда client_print "ты админ :D"
Я понимаю это как то так :D
Последний раз редактировалось oReo 20 сен 2017, 15:09, всего редактировалось 2 раз(а).
деструктор решает все проблемы: нет переменной - нет проблемы (с) Subb98
Аватара пользователя
oReo
 
Сообщения: 165
Зарегистрирован: 24 май 2017, 05:59
Благодарил (а): 10 раз.
Поблагодарили: 5 раз.
Опыт программирования: Около 3 месяцев
Языки программирования: Pawn

Re: Как получить все флаги одной функцией

Сообщение артист666 » 20 сен 2017, 14:16

Код: Выделить всё
if(get_user_flags(id) & read_flags("b")) 


Код: Выделить всё
static flagsflags read_flags("abcf")
if((
get_user_flags(id) & flags) == flags
Если вы хотите чему-то научиться, пробуйте, задавайте вопросы.
Иначе компенсируйте потраченное время на ваши "проблемы".
Аватара пользователя
артист666
 
Сообщения: 2706
Зарегистрирован: 09 апр 2013, 17:46
Благодарил (а): 284 раз.
Поблагодарили: 639 раз.
Опыт программирования: Больше трех лет
Языки программирования: С, C++
Delphi
HTML, CSS, Java Script
Pawn

След.

Вернуться в Скриптинг

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 21