Контакты Поиск

[ вход ]
[ последние сообщения ]

  • Страница 2 из 2
  • «
  • 1
  • 2
Форум » SourceMod >> CS:Source >> CSGO » Обсуждение » Меню когда админ умер[CS:GO].
Меню когда админ умер[CS:GO].
«SeReGa»☆ Дата: Четверг, 18.12.2014, 22:59:23 | Сообщение # 16
Сообщений: 395
Репутация: 37 [ +/- ]
Цитата TEIN ()
«SeReGa»☆
еще

Цитата TEIN ()
BarD
А если еще..?

TEIN Что - то задумал))
 
andrey50390 Дата: Пятница, 19.12.2014, 17:06:31 | Сообщение # 17
Сообщений: 62
Репутация: 0 [ +/- ]
Как сделать чтобы только 1 раз в раунд было появление меню?
 
volodya Дата: Пятница, 19.12.2014, 18:21:50 | Сообщение # 18
Сообщений: 14
Репутация: 0 [ +/- ]
Наверно так
Код
#include <sourcemod>   
#include <cstrike>  

new limit [MAXPLAYERS + 1];  

public OnPluginStart()   
{   
    HookEvent ("player_death",player_death);   
    HookEvent ("round_start",round_start);   
}   

public Action: round_start (Handle:event, const String:name[], bool:dontBroadcast)   
{  
   for (new client = 1; client <= MaxClients; client++)  
   {  
    limit[client] = 0;  
   }  
}  

public player_death (Handle:event, const String:name[], bool:dontBroadcast)   
{   
    new client = GetClientOfUserId (GetEventInt (event, "userid"));  
    if (IsClientInGame(client) && (GetUserFlagBits(client) && ADMFLAG_GENERIC))  
    {   
     if (limit[client] == 1)  
   {  
    limit[client] ++;  
    Menu (client);   
   }  
    }   
}   

public Menu (client)   
{   
    new Handle: menu = CreateMenu (cmd_menu);   
    SetMenuTitle (menu,"Использовать возрождение?\n \n");   
    AddMenuItem (menu, "0", "Да");   
    AddMenuItem (menu, "1", "Нет");   
    DisplayMenu (menu, client, 0);   
}   

public cmd_menu (Handle:menu, MenuAction:action, client, option)   
{   
    if (action == MenuAction_Select)   
    {   
     if (option == 0)   
     {   
    CS_RespawnPlayer(client);  
     }   
     if (option == 1)   
     {   
      CloseHandle (menu);   
     }   
    }   
    else if (action == MenuAction_End)   
    {   
     CloseHandle (menu);   
    }   
}


Сообщение отредактировал volodya - Пятница, 19.12.2014, 19:08:37
 
TEIN Дата: Пятница, 19.12.2014, 18:48:39 | Сообщение # 19
Сообщений: 568
Репутация: 78 [ +/- ]
«SeReGa»☆
На мой взгляд: (1) не нужно проверять каждый раз при смерти клиента на админа; (2) необходимо исключить конфликты с другими плагинами (проверки, таймеры (если нужны)) и т.д., если что-то еще надумаю - скажу; ну а если вводить доп. функции - вызвать меню, если вдруг админ передумал и захотел возродиться после того, как нажал "Нет"

volodya
В событии старта раунда нет клиента, необходимо использовать цикл, аля:
for (new i = 1; i <= MaxClients; i++) // Code...
 
BarD Дата: Суббота, 20.12.2014, 10:13:05 | Сообщение # 20
Сообщений: 942
Репутация: 132 [ +/- ]
TEIN, Он может назвать переменную, как хочет. Как говорила моя учительница по физике: "Моя морковка. Хочу и кину." :)
В данном случае он назвал свою переменную "client", в чем я не вижу ничего такого.
Ты говоришь, что не надо проверять, админ ли игрок, при каждой его смерти. А если у него отберут админку, пока он жив и на сервере? В этом коде я не вижу никаких ошибок, как логических, так и синтаксических.
 
TEIN Дата: Суббота, 20.12.2014, 14:34:34 | Сообщение # 21
Сообщений: 568
Репутация: 78 [ +/- ]
BarD
Ты думаешь, что ты прав?)

Пятница, Вчера, 18:48:39
Сообщение отредактировал volodya - Пятница, 19.12.2014, 19:08:37

Делай выводы, на счет админа, СОВЕРШЕННО не нужно проверять каждый раз ПРИ СМЕРТИ, ведь можно проверить в том случае, если вдруг список администраторов обновился
 
хвостег Дата: Суббота, 20.12.2014, 17:44:33 | Сообщение # 22
Сообщений: 161
Репутация: 53 [ +/- ]
Цитата TEIN ()
Делай выводы, на счет админа, СОВЕРШЕННО не нужно проверять каждый раз ПРИ СМЕРТИ, ведь можно проверить в том случае, если вдруг список администраторов обновился


Не вижу смысла делать подобный хук.
Взять флаги клиента не составляет никакого труда.
Побитово сверить темболее.
Эта связка моментально работает и не несет никакой нагрузки.
Зачем городить огород если и так все просто до безобразия?

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

volodya, (GetUserFlagBits(client) & ADMFLAG_GENERIC) - тут должен быть один амперсанд.


Сообщение отредактировал хвостег - Суббота, 20.12.2014, 17:46:52
 
TEIN Дата: Суббота, 20.12.2014, 17:55:34 | Сообщение # 23
Сообщений: 568
Репутация: 78 [ +/- ]
хвостег
Никто и не спорит, что код выполняется моментально, но приведу пример: зачем авторизовываться на сайте каждый раз при входе, если можно этого избежать, нажав кнопочку "Запомнить", думаю, тебе понятен ход моих мыслей?
 
хвостег Дата: Суббота, 20.12.2014, 18:14:59 | Сообщение # 24
Сообщений: 161
Репутация: 53 [ +/- ]
Сайт - огромный проект, который состоит из кучи различных модулей(зависит от функционала), зачем сравнивать подобное со скриптом в 30 строк.
Ладно я еще пойму если у тебя какой либо мод для игры, в котором кода на 6к строк или более, там нужно придумывать различные системы идентификации пользователей, разделять игровые фреймы, чтобы не грузить сервер запросами и прочими хреновинами, но в данном случае я не вижу смысла городить подобный беспредел.
 
TEIN Дата: Суббота, 20.12.2014, 19:12:25 | Сообщение # 25
Сообщений: 568
Репутация: 78 [ +/- ]
хвостег
копейка рубль бережет
 
BarD Дата: Суббота, 20.12.2014, 19:33:50 | Сообщение # 26
Сообщений: 942
Репутация: 132 [ +/- ]
TEIN, мы оба правы. Не будем ссориться, это нам обоим ни к чему.
 
iEx Дата: Суббота, 20.12.2014, 20:23:41 | Сообщение # 27
Сообщений: 305
Репутация: 23 [ +/- ]
Вы тут дебаты устроили прямо)
 
Форум » SourceMod >> CS:Source >> CSGO » Обсуждение » Меню когда админ умер[CS:GO].
  • Страница 2 из 2
  • «
  • 1
  • 2
Поиск: