Вывести админов в чат, по флагам

AlmazON

Не путать с самим yand3xmail
Сообщения
5,099
Реакции
2,755
Оффтоп
Получите оптимизацию:
PHP:
public OnPluginStart() HookEvent("round_start", Event_RoundStart, EventHookMode_PostNoCopy);

public Event_RoundStart(Handle:event, const String:name[], bool:dontBroadcast)
{
	for (new i = 1; i <= MaxClients; i++)
	{
		if (IsClientInGame(i) && !IsFakeClient(i))
		{
			switch (GetUserFlagBits(i))
			{
				case 1<<1:PrintToChatAll("[Админ] %N", i);
				case 1<<14:PrintToChatAll("[Гл. админ] %N", i);
				case 1<<16:PrintToChatAll("[Зм. админ] %N", i);
			}
		}
	}
}
Оффтоп
 

R1KO

fuck society
Сообщения
9,457
Реакции
7,786
  • Команда форума
  • #22
AlmazON, разве switch это не == ? Нужно же побитовое сравнение &
Или ты проверял работоспособность?
 

AlmazON

Не путать с самим yand3xmail
Сообщения
5,099
Реакции
2,755
  • Мне нравится
Реакции: R1KO

R1KO

fuck society
Сообщения
9,457
Реакции
7,786
  • Команда форума
  • #24
Тогда выходит и так можно:
PHP:
switch (GetUserFlagBits(i)) 
{
 	case ADMFLAG_GENERIC:PrintToChatAll("[Админ] %N", i); 
	case ADMFLAG_ROOT:PrintToChatAll("[Гл. админ] %N", i); 
	case ADMFLAG_CUSTOM2:PrintToChatAll("[Зм. админ] %N", i); 
}
 

AlmazON

Не путать с самим yand3xmail
Сообщения
5,099
Реакции
2,755
выходит и так можно
Да можно, но длиннее. Я больше доверяю цифрам по такому сравнению (в любом случае, оптимальнее - короче по коду). :acute:
Оффтоп
По оптимизации циклов идейка интересует? Может допроверишь сам, но в некоторых случаях точно сгодится.
 

R1KO

fuck society
Сообщения
9,457
Реакции
7,786
  • Команда форума
  • #26
Оффтоп
 

TolikCorp

Участник
Сообщения
874
Реакции
334
Все же, необходимо сначала искать ROOT флаг. А то получится, что главный - не главный)))
 
  • Мне нравится
Реакции: R1KO

AlmazON

Не путать с самим yand3xmail
Сообщения
5,099
Реакции
2,755
необходимо сначала искать ROOT флаг
Не циклом. Здесь "случайно" получится. То первым, то вовсе последним - каким уж зайдёт на сервер) Я уже предлагал вариант, похожий на твой неудавшийся, но эдак с памятью и выводом из неё информации.
 

TolikCorp

Участник
Сообщения
874
Реакции
334
Я про это:
PHP:
     case ADMFLAG_GENERIC:PrintToChatAll("[Админ] %N", i); 
    case ADMFLAG_ROOT:PrintToChatAll("[Гл. админ] %N", i); 
    case ADMFLAG_CUSTOM2:PrintToChatAll("[Зм. админ] %N", i);

Некоторые ставят все подряд флаги: abc..z
По первому совпадению он покажет, что ГЛАВНЫЙ - совсем не главный, а простой АДМИН.
 

TolikCorp

Участник
Сообщения
874
Реакции
334
Как-то так?
PHP:
new cnt;
public OnPluginStart() HookEvent("round_start", Event_RoundStart, EventHookMode_PostNoCopy);
public Event_RoundStart(Handle:event, const String:name[], bool:dontBroadcast) 
    if(++cnt == 5)
    {
        for(new client = 1; client <= GetMaxClients(); client++) 
            if(IsClientInGame(client) && !IsFakeClient(client)) 
            { 
                new flags = GetUserFlagBits(client); 
                if(flags & ADMFLAG_ROOT)
                    PrintToChatAll("[Гл. админ] %N", client); 
                else if(flags & ADMFLAG_CUSTOM2)
                    PrintToChatAll("[Зм. админ] %N", client);
                else if(flags & ADMFLAG_GENERIC)
                    PrintToChatAll("[Админ] %N", client); 
            }  
        cnt = 0;
    }
 
Последнее редактирование:

AlmazON

Не путать с самим yand3xmail
Сообщения
5,099
Реакции
2,755
Должно, работать, в принципе. Оффтоп
А что от switch'а отказался? Поменял местами либо буквы флагов, либо цифры и всё (1 - главадмин).
Погоди, а UnhookEvent("round_start", Event_RoundStart, EventHookMode_PostNoCopy); то тут зачем??
 

R1KO

fuck society
Сообщения
9,457
Реакции
7,786
  • Команда форума
  • #35
AlmazON, он 1 раз напишет и всё))

TolikCorp, Если я верно тебя понял, что ты хочешь выводить только 1-й раунд то или юзай бул или в OnMapStart() снова делай HookEvent("round_start", Event_RoundStart, EventHookMode_PostNoCopy);
 

TolikCorp

Участник
Сообщения
874
Реакции
334
Я подумал про один раз за игру на 5м раунде показывать)

Добавлено через 53 секунды
Изменил, каждые 5 раундов будет показывать.
 
Последнее редактирование:

★$$StOk$$★

Участник
Сообщения
629
Реакции
187
:clapp: таким людям которые умничают на форумах, а потом нагло берут код который скинули в теме и выдают за свой плагин.

Оффтоп
Бред,сенатор нормальный человек и скриптёр.
 

pokypka20

Участник
Сообщения
244
Реакции
31

★$$StOk$$★

Участник
Сообщения
629
Реакции
187
Оффтоп
Он рпг с Divix`om вместе писал,с alliedmods они брали минимум или вообще ничего не брали.
Даже если всё так как ты и говоришь,то все мы не без грехов.
 

pokypka20

Участник
Сообщения
244
Реакции
31
Он рпг с Divix`om вместе писал,с alliedmods они брали минимум или вообще ничего не брали.
Даже если всё так как ты и говоришь,то все мы не без грехов.

Оффтоп
 
Сверху Снизу