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

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

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

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

set_user_flags и контр выглядящий как тер

Статус пользователя Metal Messiah
сообщение 5.11.2013, 15:30
Сообщение #1


Иконка группы

Стаж: 13 лет

Сообщений: 2457
Благодарностей: 1482
Полезность: 770

HostGame.cf
В client_putinserver() вызывается проверка на настоящий стим и в результате выполняется set_user_flags( id, read_flags("st")).
Другой плагин, отвечающий за випменю, випмодель и виппонты, имеет функцию resetModel()
в ней проверяются права и в зависимости от флагов дается одна из 2 возможных моделей.
Код
public resetModel(id, level, cid)
{
    if (get_user_flags(id) & ADMIN_KICK)
    {
        new CsTeams:userTeam = cs_get_user_team(id)
        if (userTeam == CS_TEAM_T)
        {
            cs_set_user_model(id, "csbadmin_te")
        } else if(userTeam == CS_TEAM_CT)
        {
            cs_set_user_model(id, "csbadmin_ct")
        } else
        {
            cs_reset_user_model(id)
        }
    } else
    if (get_user_flags(id) & ADMIN_LEVEL_H)
    {
        new CsTeams:userTeam = cs_get_user_team(id)
        if (userTeam == CS_TEAM_T)
        {
            cs_set_user_model(id, "csbvip_te")
        } else if(userTeam == CS_TEAM_CT)
        {
            cs_set_user_model(id, "csbvip_ct")
        } else
        {
            cs_reset_user_model(id)
        }
    }    
    return PLUGIN_CONTINUE
}


Проблема заключается в том, что иногда вип игрок за CT случайно оказывается в модели vip террориста (наоборот не встречал). Бывало уже раза 3 с разными людьми, т.к. народ понятливый по первой же просьбе перезаходят на сервер и все становится на место. Почему - понять не могу. Самое интересное то, что все эти случаи именно с игроками с динамически присвоенными флагами. Никогда не встречал для игрока с флагами, прописанными в users.ini. Ни разу не было до того, как решил стимам випки давать.

Куда копать и как исправлять?


Полезные публикации - ссылки у меня в профиле. Ссылка на плагин против спама на сервере StopServerSpam там же.
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
   Цитировать сообщение
Safety1st
сообщение 5.11.2013, 16:23
Сообщение #2
Стаж: 14 лет
Город: Moscow

Сообщений: 7228
Благодарностей: 8071
Полезность: 196

Попробуйте вызывать проверку на Steam не в client_putinserver(), а в client_authorized(), что в принципе логичнее. Если код плагина позволяет, конечно.
И не помешал бы код с вызовом resetModel()

set_user_flags() вызывает client_infochanged(), что наверняка приводит к повторному применению как минимум resetModel() Наверное, в этих условиях глюк проявляется.
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
   + Цитировать сообщение
Статус пользователя Legenda
сообщение 5.11.2013, 18:10
Сообщение #3


Иконка группы

Стаж: 16 лет

Сообщений: 3619
Благодарностей: 1706
Полезность: 1010

Меценат Меценат

не используй cs_set_user_model
if else - заменить на switch case лучше

так же нет задержки
вполне возможно что сначала ставится модель, а только потом идет проверка

советую либо изучить либо использовать
https://c-s.net.ua/forum/ipb.html?s=&sh...st&p=489731
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
   + Цитировать сообщение
Статус пользователя Metal Messiah
сообщение 5.11.2013, 18:22
Сообщение #4


Иконка группы

Стаж: 13 лет

Сообщений: 2457
Благодарностей: 1482
Полезность: 770

HostGame.cf
В том то и проблема, что client_putinserver() вызывается только для тех кто вошел, а не для тех кто пытался подключиться и дропнулся при этом. Боюсь что если перенесу в authorized() количество проверок (а равно и запросов в БД) возрастет и начнутся лаги. Когда-то это было в client_connect.

Цитата
И не помешал бы код с вызовом resetModel()

В plugin_init
Код
register_event("ResetHUD", "resetModel", "b")


даже если вызывается дважды, результат оба раза должен же быть правильный?


Полезные публикации - ссылки у меня в профиле. Ссылка на плагин против спама на сервере StopServerSpam там же.
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
   + Цитировать сообщение
Статус пользователя Legenda
сообщение 5.11.2013, 18:26
Сообщение #5


Иконка группы

Стаж: 16 лет

Сообщений: 3619
Благодарностей: 1706
Полезность: 1010

Меценат Меценат

Цитата(Metal Messiah @ 5.11.2013, 20:22) *
В том то и проблема, что client_putinserver() вызывается только для тех кто вошел, а не для тех кто пытался подключиться и дропнулся при этом. Боюсь что если перенесу в authorized() количество проверок (а равно и запросов в БД) возрастет и начнутся лаги. Когда-то это было в client_connect.


В plugin_init
Код
register_event("ResetHUD", "resetModel", "b")


даже если вызывается дважды, результат оба раза должен же быть правильный?

нафига нужна база данных для проверки steam?
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
   + Цитировать сообщение
Статус пользователя Legenda
сообщение 5.11.2013, 18:38
Сообщение #6


Иконка группы

Стаж: 16 лет

Сообщений: 3619
Благодарностей: 1706
Полезность: 1010

Меценат Меценат

и примерно так должно быть:

Код
public resetModel(id)
{
    new flags
    flags = get_user_flags(id)
    if (flags & ADMIN_KICK)
        switch(cs_get_user_team(id))
        {
            case CS_TEAM_T: cs_set_user_model(id, "csbadmin_te")
            case CS_TEAM_CT: cs_set_user_model(id, "csbadmin_ct")
        }

    else if (flags & ADMIN_LEVEL_H)
        switch(cs_get_user_team(id))
        {
            case CS_TEAM_T: cs_set_user_model(id, "csbvip_te")
            case CS_TEAM_CT: cs_set_user_model(id, "csbvip_ct")
        }

    else
         cs_reset_user_model(id)

}


хотя советую использоваться fm_cs_set_user_model
ResetHUD это извращение ибо получится что модели меняются в процессе спавна, а по правильному надо ловить конец спавна
к тому же ResetHUD вызывается чаще, чем происходит спавн игрока
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
Поблагодарили 1 раз
   + Цитировать сообщение
Safety1st
сообщение 5.11.2013, 18:46
Сообщение #7
Стаж: 14 лет
Город: Moscow

Сообщений: 7228
Благодарностей: 8071
Полезность: 196

Цитата(Metal Messiah @ 5.11.2013, 20:22) *
В том то и проблема, что client_putinserver() вызывается только для тех кто вошел, а не для тех кто пытался подключиться и дропнулся при этом. Боюсь что если перенесу в authorized() количество проверок (а равно и запросов в БД) возрастет и начнутся лаги. Когда-то это было в client_connect.

Сделайте на время, будет больше инфы по проблеме.

Цитата(Legenda @ 5.11.2013, 20:38) *
ResetHUD это извращение ибо получится что модели меняются в процессе спавна, а по правильному надо ловить конец спавна

Скорее, ResetHUD - это самый простой способ поймать спавн игрока.
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
   + Цитировать сообщение
Статус пользователя Legenda
сообщение 5.11.2013, 18:48
Сообщение #8


Иконка группы

Стаж: 16 лет

Сообщений: 3619
Благодарностей: 1706
Полезность: 1010

Меценат Меценат

Цитата(Safety1st @ 5.11.2013, 20:46) *
Скорее, ResetHUD - это самый простой способ поймать спавн игрока.


http://amxxmodx.ru/hamsandwich/ham_constin...una-igroka.html
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
   + Цитировать сообщение
Safety1st
сообщение 5.11.2013, 19:08
Сообщение #9
Стаж: 14 лет
Город: Moscow

Сообщений: 7228
Благодарностей: 8071
Полезность: 196

Не пугайте меня такими сайтами)
Простой - в смысле без использования дополнительных модулей.
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
   + Цитировать сообщение
Статус пользователя Metal Messiah
сообщение 5.11.2013, 21:02
Сообщение #10


Иконка группы

Стаж: 13 лет

Сообщений: 2457
Благодарностей: 1482
Полезность: 770

HostGame.cf
спасибо за ответы.

возможно, дело в
Цитата
else
cs_reset_user_model(id)

тестирую так, потом через authorized. До встречи через сутки :)


Полезные публикации - ссылки у меня в профиле. Ссылка на плагин против спама на сервере StopServerSpam там же.
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
   + Цитировать сообщение
Статус пользователя Metal Messiah
сообщение 9.11.2013, 23:14
Сообщение #11


Иконка группы

Стаж: 13 лет

Сообщений: 2457
Благодарностей: 1482
Полезность: 770

HostGame.cf
заменил кусок кода на тот что написал Legenda
вроде за 2 дня не замечали...

всем спасибо если что подыму топик


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