Closed MAGNAT2645 closed 5 years ago
Главный вопрос в данном случае: можно ли как-то вообще отключить серверные группы, чтобы SB не трогал админ.кэш на сервере?
bool IsClientHasAccess(int client) {
return ( GetUserAdmin( client ) ).HasFlag( Admin_Generic );
}
Это вообще неправильно. У SourceMod есть натив GetUserFlagBits()
, который и надо использовать:
bool IsClientHasAccess(int client) {
return (GetUserFlagBits(client) & ADMFLAG_GENERIC) == ADMFLAG_GENERIC;
}
видимо возвращает true даже для INVALID_ADMIN_ID, в итоге все игроки могут нажимать на заблокированные пункты
Это вообще нездоровое поведение. И я б лично это зарепортил.
можно ли как-то вообще отключить серверные группы, чтобы SB не трогал админ.кэш на сервере?
Можно попросить веб-часть не производить отправку админок при изменениях в СБ. И аналогично можно и в самом плагине выключить любые попытки вмешаться в админкеш. В конфиге есть. (у старого по крайней мере точно, у нового не помню)
Я как-то не заметил про GetUserFlagBits
, надо будет попробовать. (а вообще, я думаю, можно также попробовать GroupHandlerAPI)
Вообще GetUserAdmin.HasFlag
всегда возвращает false для INVALID_ADMIN_ID
, но в случае настройки серверных групп с Веб-части, происходит такая странная вещь (это ещё учитывая, что плагин присваивает админ.группу даже после OnRebuildAdminCache
с параметром part = AdminCache_Admins).
public void OnRebuildAdminCache(AdminCachePart part) {
if ( part == AdminCache_Admins ) {
for ( int i = 1; i <= MaxClients; i++ ) {
if ( IsClientInGame( i ) && !IsFakeClient( i ) && g_bIsLoaded[ i ] )
SetPlayerTypePermissions( i, g_iPlayerType[ i ] );
}
}
}
Я отключу перезагрузку кэша на всякий случай, раз уж не пользуюсь серверными группами с веб-части.
Это вообще нездоровое поведение. И я б лично это зарепортил.
Не буду забегать вперёд. Тут скорее мой косяк, такого не было у кого-либо. Просто для меня это слегка странное поведение. Я сколько раз вручную перезагружал кэш командой, всё было нормально. А как создал нового админа, так после этого пошли жалобы, что меню не блочит пункты для не-админов. В итоге все игроки могли спамить звуками (это как SaySounds, но написанный с нуля)
И ещё, не по теме: в списке админов отображается неверное кол-во банов у определённого админа (у меня нет банов с демо вообще)
Обе кнопки "Найти" по сути отображают один и тот же список банов админа.
а вообще, я думаю, можно также попробовать GroupHandlerAPI
Интересная штука. Я для себя написал недавно что-то подобное, но полагающееся полностью на MySQL. И интерфейса пока никакого нет. Рыться полностью в базе для добавления админа/группы. И апи тоже никакого нет, кроме получения хендла на соединение с БД.
Обе кнопки "Найти" по сути отображают один и тот же список банов админа.
Про это известно. Сначала надо вообще сами счётчики починить хД
Пока закрою тему, т.к. проблема вроде как решена. Если проблема всё же не решилась, то переоткрою.
Странный баг (если это действительно баг), переписывающий права на игровом сервере при регистрации нового администратора через веб-панель. После регистрации нового админа посылается RCON-запрос (как я понял), в итоге все игроки могут использовать админские фичи (даже в моих самописных плагинах, некоторые меню с ITEMDRAW_DISABLED резко становятся доступны обычным игрокам, например:
видимо возвращает true даже для INVALID_ADMIN_ID, в итоге все игроки могут нажимать на заблокированные пункты:
Этот баг может продолжаться до тех пор, пока не попытаться перезагрузить админ. кэш несколько раз.
В моём случае, чтобы вызвать этот баг, достаточно при создании нового админа привязать его к самому серверу и не указывать серверную группу (скрыл название, чтобы не было "рекламы"):
Опять же, повторюсь, баг может возникать не со стороны веб-панели и SB в целом, а со стороны одного из моих плагинов, НО сам по себе этот баг не возникает (что говорит о вполне стабильной работе плагина). Возникает он именно после регистрации нового админа (когда происходит перезагрузка кэша?)
EDIT: У меня серверных групп, кстати, вообще нет. Я хочу редактировать админ.группы отдельно от SB (на SB указывать только веб-права зарегистрированному админу).