KorDen
Atra esterní ono thelduin!
- Сообщения
- 2,142
- Реакции
- 1,424
Решил сделать общую тему для всех наработок
Что это? Изначально для изменения сообщений подключения/отключения я использовал Connect Announce by Arg, было довольно удобно - обычным пользователям выводилось простое перекрашенное сообщение о подключении/отключении, админам - еще IP и ID. Однако, когда я начал смотреть исходники, я понял что вся та функциональность, которая есть в CA, мне не нужна. А там есть и GeoIP (регион мне не нужен, да и HLXCE выводит), и установка личных сообщений каждому игроку, и еще куча бреда. И так можно говорить про многие плагины.
Когда сервер не слишком популярен, об оптимизации многие не слишком задумываются. Однако когда сервер на 64 слота, DeathMatch с приличным онлайном - тут уже и начнешь задумываться о любой оптимизации. Хотя конечно лучше бы такую оптимизацию делать везде, но многим удобна настраиваемость через конфиги, а некоторые даже не заморачиваются на этот счет.
Собственно тогда и начал я делать свои облегченные версии используемых мною плагинов, некоторые из которых публикую здесь.
Что это? Изначально для изменения сообщений подключения/отключения я использовал Connect Announce by Arg, было довольно удобно - обычным пользователям выводилось простое перекрашенное сообщение о подключении/отключении, админам - еще IP и ID. Однако, когда я начал смотреть исходники, я понял что вся та функциональность, которая есть в CA, мне не нужна. А там есть и GeoIP (регион мне не нужен, да и HLXCE выводит), и установка личных сообщений каждому игроку, и еще куча бреда. И так можно говорить про многие плагины.
Когда сервер не слишком популярен, об оптимизации многие не слишком задумываются. Однако когда сервер на 64 слота, DeathMatch с приличным онлайном - тут уже и начнешь задумываться о любой оптимизации. Хотя конечно лучше бы такую оптимизацию делать везде, но многим удобна настраиваемость через конфиги, а некоторые даже не заморачиваются на этот счет.
Собственно тогда и начал я делать свои облегченные версии используемых мною плагинов, некоторые из которых публикую здесь.
Описание: Плагин позволяет отображать измененные сообщения о смене команды, подключении и отключении игроков, с выводом Steam ID и IP админам в последних двух. НАСТРОЕК (в виде переменных) НЕТ!
FAQ:
ГДЕ КОНФИГИ? Их нет. Нужны конфиги - используйте ConnectAnnounce, здесь все это убрано для оптимизации
Где редактировать строчки? - Настройка сообщений производится редактированием исходника с последующей перекомпиляцией. Четыре вызова функции Fromat и массив teams вначале. Если же вы плохо понимаете построение форматных строк, то луче все же воспользоваться ConnectAnnounce, этот плагин для тех кто понимает хотя бы базово как редактировать плагины и где найти строки, которые нужно отредактировать.
В %GAMENAME%!=css пишет про терористов и КТ, почему? - Имена команд из игры не запрашиваются - по умолчанию этот плагин под CSS, для других игр придется изменять в само начале в массиве teams названия команд. Там же можно указать и цвета. Почему? А какой смысл делать лишее при каждой смене карты, ведь гораздо лучше один раз изменить имена в исходнике и перекомпилировать.
MoreColors? - Не упоминайте мне про него - цвета прекрасно указываются через \x07RRGGBB или даже через \x08RRGGBBAA - не вижу никакого смысла подключать целую библиотеку, тем более возникают проблемы, когда в никах у игроков есть фигурные скобки.
Коды цветов команд: Цвет CT/BLU - \x0799CCFF Цвет T/RED - \x07FF4040 Цвет Spectators - \x07CCCCCC
При изменении прошу обратить внимание на то, что при подключении нельзя узнать client через GetClientOfUserId(GetEventInt(event,"userid")), адрес же при подключении передается в событии (подробности тут - http://wiki.alliedmods.net/Generic_Source_Server_Events )
FAQ:
ГДЕ КОНФИГИ? Их нет. Нужны конфиги - используйте ConnectAnnounce, здесь все это убрано для оптимизации
Где редактировать строчки? - Настройка сообщений производится редактированием исходника с последующей перекомпиляцией. Четыре вызова функции Fromat и массив teams вначале. Если же вы плохо понимаете построение форматных строк, то луче все же воспользоваться ConnectAnnounce, этот плагин для тех кто понимает хотя бы базово как редактировать плагины и где найти строки, которые нужно отредактировать.
В %GAMENAME%!=css пишет про терористов и КТ, почему? - Имена команд из игры не запрашиваются - по умолчанию этот плагин под CSS, для других игр придется изменять в само начале в массиве teams названия команд. Там же можно указать и цвета. Почему? А какой смысл делать лишее при каждой смене карты, ведь гораздо лучше один раз изменить имена в исходнике и перекомпилировать.
MoreColors? - Не упоминайте мне про него - цвета прекрасно указываются через \x07RRGGBB или даже через \x08RRGGBBAA - не вижу никакого смысла подключать целую библиотеку, тем более возникают проблемы, когда в никах у игроков есть фигурные скобки.
Коды цветов команд: Цвет CT/BLU - \x0799CCFF Цвет T/RED - \x07FF4040 Цвет Spectators - \x07CCCCCC
При изменении прошу обратить внимание на то, что при подключении нельзя узнать client через GetClientOfUserId(GetEventInt(event,"userid")), адрес же при подключении передается в событии (подробности тут - http://wiki.alliedmods.net/Generic_Source_Server_Events )
Позволяет прослушивать голосовой чат другой команды, а так же включать режим, при котором админа слышат все.
Так же админу виден чат чужой команды, наблюдателей и мертвых (не выключается)
С последним у меня небольшой баг, в некоторых случаях сообщение отображается дважды (стандартное и дублируемое через плагин). До конца не уловил все случаи стандартной логики когда отображаться должно/не должно.
Команды:
sm_enemyvoice - включить прослушку чата чужой команды
sm_talktoserver - включить режим вашей слышимости всему серверу
Необходимый флаг - ADMFLAG_BAN (для простоты изменения вынесен в дефайн ADMIN_LEVEL в начале кода)
Оригинальный плагин
Так же админу виден чат чужой команды, наблюдателей и мертвых (не выключается)
С последним у меня небольшой баг, в некоторых случаях сообщение отображается дважды (стандартное и дублируемое через плагин). До конца не уловил все случаи стандартной логики когда отображаться должно/не должно.
Команды:
sm_enemyvoice - включить прослушку чата чужой команды
sm_talktoserver - включить режим вашей слышимости всему серверу
Необходимый флаг - ADMFLAG_BAN (для простоты изменения вынесен в дефайн ADMIN_LEVEL в начале кода)
Оригинальный плагин
Недавно мне написал Konstantin о том, что у него не работает BunnyHop после обнов, от которого единственное необходимое ему действие - при зажатии пробела производить бесконеный прыжок, без ускорений, двойных прыжков и прочего. Проблему то решили, однако взглянув на код infinite-jumping, включающий еще и SMLib, я понял, что это идеальный пример как НЕ надо писать плагины, уж столько там лишнего было...
А в итоге необходимый плагин для просто бесконечного прыжка получился смешным:
Это весь плагин, да-да. #include <sourcemod> ведь не обязателен, компилятор сам его подключает автоматически, а плагин получается в две-три строчки :lol: (Вместо кода на 35.5 килобайт + SMLib)
Даже выкладывать скомпилированный как-то не катит :-D
А в итоге необходимый плагин для просто бесконечного прыжка получился смешным:
PHP:
public Action:OnPlayerRunCmd(client, &buttons, &impulse, Float:vel[3], Float:angles[3], &weapon)
if (IsPlayerAlive(client) && (buttons & IN_JUMP) && !(GetEntityFlags(client) & FL_ONGROUND) && !(GetEntityMoveType(client) & MOVETYPE_LADDER) && (GetEntProp(client, Prop_Data, "m_nWaterLevel") <= 1))
buttons &= ~IN_JUMP;
Даже выкладывать скомпилированный как-то не катит :-D
(Предположительно для CSS, поскольку в других OrangeBox играх для полного копирования необходимого кода smac_rcon возможно нужно добавить еще кое-что, что в случае с CSS не используется)
Один из модулей SMAC - SMAC Rcon Locker кроме защиты RCON-пароля от смены позволяет, используя дополниельное расширение SM Rcon, создавать белый список адресов, с которых возможно подключение через RCON к серверу. Однако многие его не используют, а тем более когда вам нужна возможность подклчюения с люого места (например через 3G модем), функция получается не актуальной.
Так же в коде есть еще дополнительные меры защиты некоторых переменных, однако идет проверка на версию движка, под которую CSS, и, возможно, другие OrangeBox-игры не попадают. Поэтому для CSS этот код можно полностью вырезать, в итоге оставив только защиту самого RCON-пароля от смены.
Для облегчения в данном плагине так же идет запись предупреждения при попытке смены пароля в error-лог SM, а не в лог SMAC.
Один из модулей SMAC - SMAC Rcon Locker кроме защиты RCON-пароля от смены позволяет, используя дополниельное расширение SM Rcon, создавать белый список адресов, с которых возможно подключение через RCON к серверу. Однако многие его не используют, а тем более когда вам нужна возможность подклчюения с люого места (например через 3G модем), функция получается не актуальной.
Так же в коде есть еще дополнительные меры защиты некоторых переменных, однако идет проверка на версию движка, под которую CSS, и, возможно, другие OrangeBox-игры не попадают. Поэтому для CSS этот код можно полностью вырезать, в итоге оставив только защиту самого RCON-пароля от смены.
Для облегчения в данном плагине так же идет запись предупреждения при попытке смены пароля в error-лог SM, а не в лог SMAC.
Урезанный NoBlock - действует для всех игроков и для всех гранат.
Можно немного подправить для совместимости с CSS Throwing Knives
Никаких переменных, настроек и дополнительных функций.
Можно немного подправить для совместимости с CSS Throwing Knives
Никаких переменных, настроек и дополнительных функций.
Вложения
-
kdlp-adminsentinel.sp2.7 КБ · Просмотры: 519
-
kdlp-adminsentinel.smx3.6 КБ · Просмотры: 239
-
kdlp-rcon-lock.sp744 байт · Просмотры: 236
-
kdlp-rcon-lock.smx2.3 КБ · Просмотры: 127
-
kdlp-noblock.sp779 байт · Просмотры: 708
-
kdlp-noblock.smx2.5 КБ · Просмотры: 548
-
kdlp-gameevents.sp2.4 КБ · Просмотры: 2,350
-
kdlp-gameevents.smx4.3 КБ · Просмотры: 946
Последнее редактирование: