Участник
Пользователь
- Сообщения
- 67
- Реакции
- 85
Приветствую, уважаемые участники форума dev-cs.ru Хочу поделится своим опытом с теми, кто часто занимается проверкой/тестированием/отладкой плагинов. Цель этой статьи — сохранить самый ценный ресурс — Ваше Время.
Все мы учимся на своих ошибках и приобретаем бесценный опыт. Оглядываясь назад, я могу сказать, что потратил довольно много времени на тестирование многих мелочей, когда можно было бы использовать это время с большой пользой. Здесь я опишу многие приёмы, которые пришли ко мне с опытом и позволили значительно сократить время на проверку плагинов. Статья может быть полезна как тем, кто занимается созданием плагинов, так и просто владельцам серверов, предпочитающим тестировать плагины перед установкой на свой сервер.
Это волшебная программа. Не могу передать словами, сколько времени она мне сэкономила и продолжает экономить каждый день. Она у меня на горячую клавишу Win+1 стоит. Это не просто так. Моё личное мнение — это самая полезная программа в мире для работы на ПК.
Everything – поисковый движок, который индексирует все файлы на накопителях т позволяет производить "живой поиск" по всем вашим файлам. Забудьте о такой схеме доступа к файлу, как [Мой компьютер — Диск X – выбор директории — выбор субдиректории]. Вы знаете имя файла. Вы владеете навыком печати на клавиатуре. Программа предоставит вам всё за мгновение. После знакомства в программой, я не представляю возможным работу за компьютером без Everything. Здесь я говорю о работе за ПК вообще, выходя далеко за границы этой статьи.
Загрузить программу Everything бесплатно с официального сайта разработчика: https://www.voidtools.com/
Все мы учимся на своих ошибках и приобретаем бесценный опыт. Оглядываясь назад, я могу сказать, что потратил довольно много времени на тестирование многих мелочей, когда можно было бы использовать это время с большой пользой. Здесь я опишу многие приёмы, которые пришли ко мне с опытом и позволили значительно сократить время на проверку плагинов. Статья может быть полезна как тем, кто занимается созданием плагинов, так и просто владельцам серверов, предпочитающим тестировать плагины перед установкой на свой сервер.
По ходу статьи постоянно идут отсылки на приложения (выделены оранжевым).
Приложения прикреплены в виде архиве, внизу первого сообщения темы.
Или их можно загрузить здесь: https://drive.google.com/file/d/1Cplk4hnnj0RGGkiNEtW3jjdlAH_FrM5m/view
Помимо приложений, архив по ссылке выше включает в себя версию статьи в формате PDF.
Перед началом уточню, что большинство тестов я проводил с ботами при отключенном интернете. Адресом сервера был 192.168.0.1:27016
Часто бывает нужным быстро сделать рестарт. И я написал для себя простой плагин rr.amxx для тестового сервера – введя в консоль команду rr происходит рестарт раундов на сервере.
Смотрите приложение 1: rr.sma или код ниже
Альтернатива: бинд amx_cvar sv_restart 1 на любую клавишу, например,
bind p "amx_cvar sv_restart 1"
Но я уже на автомате могу набрать комбинацию клавиш ~ rr Enter ~, по этому пользуюсь первым вариантом.
Смотрите приложение 1: rr.sma или код ниже
C-like:
#include <amxmodx>
public plugin_init()
{
register_plugin("RESTART [TEST]", "1.0", "Leo_[BH]")
register_concmd("rr", "restart")
}
public restart()
{
server_cmd("sv_restart 1")
}
Альтернатива: бинд amx_cvar sv_restart 1 на любую клавишу, например,
bind p "amx_cvar sv_restart 1"
Но я уже на автомате могу набрать комбинацию клавиш ~ rr Enter ~, по этому пользуюсь первым вариантом.
Чтобы наступил следующий раунд, самый просто способ это просто убить всех игроков. kk.amx – используются консольные команды qq или kk или bot_kill (последнее, конечно, не обязательно :] )
Смотрите приложение 2: kk.sma или код ниже
Дополнительно:можете забиндить на клавишу, к примеру:
bind x kk
Альтернативный вариант: написать плагин для окончания раунда по такой-же или иной команде.
Смотрите приложение 2: kk.sma или код ниже
C-like:
#include <amxmodx>
public plugin_init()
{
register_plugin("KILL ALL [TEST]", "1.0", "Leo_[BH]")
register_concmd("qq", "KillAll")
register_concmd("kk", "KillAll")
// register_concmd("bot_kill", "KillAll")
}
public KillAll()
{
for(new i = 1; i < 33; i++)
{
if(is_user_alive(i)) user_kill(i)
}
}
Дополнительно:можете забиндить на клавишу, к примеру:
bind x kk
Альтернативный вариант: написать плагин для окончания раунда по такой-же или иной команде.
Настроенный плагин team_join позволит не тратить время на такую мелочь как выбор команды и скина игрока.
Оригинальный плагин: https://forums.alliedmods.net/showthread.php?t=69819
Настройки:
tjm_join_team 4
tjm_switch_team 0
tjm_class_t 5
tjm_class_ct 5
tjm_block_change 0
Рекомедую изменить настройки в самом исходном коде (изменить квары по умолчанию).
Еще из-за этого плагина боты помирают после подключения к игре, используйте модифицированную мною версию этого плагина (готовое решение, настройки уже выставлены, ботов будем игнорировать):
Смотрите приложение 3: team_join.sma
Оригинальный плагин: https://forums.alliedmods.net/showthread.php?t=69819
Настройки:
tjm_join_team 4
tjm_switch_team 0
tjm_class_t 5
tjm_class_ct 5
tjm_block_change 0
Рекомедую изменить настройки в самом исходном коде (изменить квары по умолчанию).
Еще из-за этого плагина боты помирают после подключения к игре, используйте модифицированную мною версию этого плагина (готовое решение, настройки уже выставлены, ботов будем игнорировать):
Смотрите приложение 3: team_join.sma
<moddir>\resource\GameMenu.res можно отредактировать, вставив туда пункт быстрого подключения к любимому серверу... или тестовому серверу, в нашем случае.
Смотрите приложение 4: gamemenu
Как результат, можно подключаться к серверу быстрее, не открывая диалогового окна Find Servers. А также быстро делать переподключения (альтернатива: reconnect).
Смотрите приложение 4: gamemenu
Как результат, можно подключаться к серверу быстрее, не открывая диалогового окна Find Servers. А также быстро делать переподключения (альтернатива: reconnect).
Делаем автоконнект к серверу, пару вариантов:
I. Создать файл конфигурации autoexec.cfg в директории мода.
Наполнить содержимым: Connect 192.168.0.1:27016
II. Установить параметры запуска игры:
+Connect 192.168.0.1:27016
Альтернативным вариантом могу назвать возможность запуска сервера не через hlds.exe, а с помощью клиенто-сервера (просто на клиенте установить metamod, amxmodx и запускать как новую игру)
I. Создать файл конфигурации autoexec.cfg в директории мода.
Наполнить содержимым: Connect 192.168.0.1:27016
II. Установить параметры запуска игры:
+Connect 192.168.0.1:27016
Альтернативным вариантом могу назвать возможность запуска сервера не через hlds.exe, а с помощью клиенто-сервера (просто на клиенте установить metamod, amxmodx и запускать как новую игру)
Приложенный мною admin_nolog.amxx – то же, что и admin.amxx с amxmodx 1.8.2, только без функции логирования администраторов, входящих на сервер. Зачем? Функцией log_amx я часто пользуюсь для записи отладочной информации плагинов, и желаю чтобы ничего лишнего в журналах (логах) не было. На локальном тестовом сервере ведь все равно кроме вас никого с админов не будет.
Смотрите приложение 6: admin_nolog.sma
P.S. - я просто закомментировал все строки log_amx в плагине admin.sma
Если вы используете amxmodx новой версии, можете сделать то же самое.
P.S.2 – Надеюсь, вы внимательны и не забудете заменить в amxmodx/configs/plugins.ini строку admin.amxx на admin_nolog.amxx
Смотрите приложение 6: admin_nolog.sma
P.S. - я просто закомментировал все строки log_amx в плагине admin.sma
Если вы используете amxmodx новой версии, можете сделать то же самое.
P.S.2 – Надеюсь, вы внимательны и не забудете заменить в amxmodx/configs/plugins.ini строку admin.amxx на admin_nolog.amxx
Один из простейших, но в то же время полезнейших плагинов, которые я когда-либо делал. Загрузили новую карту на сервер, а прописывать её в maps.ini благодаря больше плагину не нужно.
Смотрите приложение 7: mapslist_generator.sma или загрузите плагин отсюда
Описание плагина: Плагин считывает все файлы c расширением .bsp в директории maps и вставляет их названия в текстовый файл карт сервера, то есть в maps.ini | Это снимает с вас задачу ручной прописи названия каждой карты в maps.ini | Как результат, установка новых карт на ваш сервер станет быстрее и проще.
Смотрите приложение 7: mapslist_generator.sma или загрузите плагин отсюда
Описание плагина: Плагин считывает все файлы c расширением .bsp в директории maps и вставляет их названия в текстовый файл карт сервера, то есть в maps.ini | Это снимает с вас задачу ручной прописи названия каждой карты в maps.ini | Как результат, установка новых карт на ваш сервер станет быстрее и проще.
mp_freezetime 0
mp_startmoney 16000
Это не требует объяснений, но все-равно напомню, что для тест сервера есть смысл убрать freeze time вовсе, а стартовое количество денег увеличить до максимума (в большинстве случаев). В остальном руководитесь правилом: лучше настроить один раз server.cfg, чем постоянно менять переменные.
P.S. - на ReGameDll настройка ведется в файле game.cfg, а не server.cfg
mp_startmoney 16000
Это не требует объяснений, но все-равно напомню, что для тест сервера есть смысл убрать freeze time вовсе, а стартовое количество денег увеличить до максимума (в большинстве случаев). В остальном руководитесь правилом: лучше настроить один раз server.cfg, чем постоянно менять переменные.
P.S. - на ReGameDll настройка ведется в файле game.cfg, а не server.cfg
Смысл плагина - показать вам такие данные как ваш ник, ip, steamid и права доступа сразу после входа на сервер. Главное здесь, права доступа. Ведь иногда требуется проверить кое-что с правами админа или без них. Плагин напомнит вам,не забыли ли вы отключить себе привилегии для специальной проверки, а потом снова их включить. Чтобы вы не теряли драгоценные минуты, пытаясь понять, а «почему же оно не работает?».
Смотрите приложение 9: status_me.sma
Альтернатива: консольная команда, бинд команды amx_who
Смотрите приложение 9: status_me.sma
Альтернатива: консольная команда, бинд команды amx_who
Это уже классика тестов в играх. Напишите себе плагин на бессмертие, неуязвимость или огромное количество ХП. Поунижайте ботов XD
Альтернатива: sv_cheats 1
Альтернатива: sv_cheats 1
Подберите одну или несколько карт, которые отлично бы подошли для тестов.
Мне идеально подошла карта aim_2stories
Прозрачные стены позволяют не напрягаться на сражения с ботами, а компактность карты позволяет проводить тесты быстро
Конечно, если вам нужно тестировать что-то с бомбой или заложниками, вы будете использовать другую карту
Мне идеально подошла карта aim_2stories
Прозрачные стены позволяют не напрягаться на сражения с ботами, а компактность карты позволяет проводить тесты быстро
Конечно, если вам нужно тестировать что-то с бомбой или заложниками, вы будете использовать другую карту
Я уже научился чуть ли на автомате вводить такие комбинации клавиш, как:
~ qq ► ~
~ rr ► ~
~ q ↑ ►
Подробнее:
~ qq ► ~
тильда qq Enter тильда — убить всех
~ rr ► ~
тильда rr Enter тильда — рестарт раунда
~ q ↑ ►
тильда q стрелка_вверх Enter — выбор команды quit в консоле и выход с игры
Знаете, а ведь комбинация ~ q ↑ ► быстрее чем навести мышью на «Quit» в меню…
Но ускорить такие мелочи можно еще больше. Можно создать в игровом меню «быстрые команды». Можно сделать бинды, дабы нажатий всего одной клавиши исполнять то или иное действие. Может у вас многокнопочная мышь, и это станет еще проще. Идей по автоматизации исполнения однородный действий довольно много, можете делиться своими.
~ qq ► ~
~ rr ► ~
~ q ↑ ►
Подробнее:
~ qq ► ~
тильда qq Enter тильда — убить всех
~ rr ► ~
тильда rr Enter тильда — рестарт раунда
~ q ↑ ►
тильда q стрелка_вверх Enter — выбор команды quit в консоле и выход с игры
Знаете, а ведь комбинация ~ q ↑ ► быстрее чем навести мышью на «Quit» в меню…
Но ускорить такие мелочи можно еще больше. Можно создать в игровом меню «быстрые команды». Можно сделать бинды, дабы нажатий всего одной клавиши исполнять то или иное действие. Может у вас многокнопочная мышь, и это станет еще проще. Идей по автоматизации исполнения однородный действий довольно много, можете делиться своими.
Компиляция плагинов по одному на горячую клавишу через NotePad++ прямо в директорию plugins тестового сервера банально сэкономят вам время на «вырезать/вставить». Как настроить NotePad++ на быстрое компилирование плагинов, описано в статье:
https://c-s.net.ua/forum/topic68457.html
http://amx-x.ru/viewtopic.php?f=9&t=11916
Этот подход очень хорош, когда работаете с плагинами по одному. Но имейте ввиду, что когда вам нужно скомпилировать сразу большое количество плагинов, лучше их закинуть у scripting и запустить compile.exe
https://c-s.net.ua/forum/topic68457.html
http://amx-x.ru/viewtopic.php?f=9&t=11916
Этот подход очень хорош, когда работаете с плагинами по одному. Но имейте ввиду, что когда вам нужно скомпилировать сразу большое количество плагинов, лучше их закинуть у scripting и запустить compile.exe
Leo_[BH]Everything — наше всё.
Это волшебная программа. Не могу передать словами, сколько времени она мне сэкономила и продолжает экономить каждый день. Она у меня на горячую клавишу Win+1 стоит. Это не просто так. Моё личное мнение — это самая полезная программа в мире для работы на ПК.
Everything – поисковый движок, который индексирует все файлы на накопителях т позволяет производить "живой поиск" по всем вашим файлам. Забудьте о такой схеме доступа к файлу, как [Мой компьютер — Диск X – выбор директории — выбор субдиректории]. Вы знаете имя файла. Вы владеете навыком печати на клавиатуре. Программа предоставит вам всё за мгновение. После знакомства в программой, я не представляю возможным работу за компьютером без Everything. Здесь я говорю о работе за ПК вообще, выходя далеко за границы этой статьи.
Загрузить программу Everything бесплатно с официального сайта разработчика: https://www.voidtools.com/
Потратив много времени на тестирование каждой мелочи с мимимальным толком (особенно много я занимался сборками зомби-модов), я понял, что с таким подходом моя эффективность крайне низка. По этому хочу посоветовать не повторять моих ошибок, а организовывать для себя список, куда записывать «Всё, что нужно проверить» в порядке нумерации. Это можно делать на бумаге, или в электронном виде — на ваше усмотрение. Советую проводить только глобальные тесты, когда накопился солидный список того, что требуется протестировать.
Этот подход стоить применять к разработке чего-то крупного, например, сборок или больших модов.
Этот подход стоить применять к разработке чего-то крупного, например, сборок или больших модов.
В конце концов, можно передать ответственность за проверку плагинов другим людям, которые заинтересованы в этом. Но это больше подходит для крупных плагинов и модов. Главное: составляйте чёткий и обширный список всего того, что нужно проверить. Как это организовать, уже думайте сами.
- Есть такой интересный плагин как Potti - a controllable fakeplayer - контролируемые фейковые игроки, вроде ботов, только их можно заставить повторять действия за вами
- Если нужно запустить несколько окон клиента с под Windows можно использовать билд 4554 нон-стим с модифицированным hl.exe или использовать SteamChangerByOstrogAndKotik
- Используйте xFakePlayers для удобного тестирование на ботах
Ну, надеюсь вы умеете пользоваться ботами, командами bot_stop, bot_zombie, bot_knives_only и т. п. Знаете, как включать режим отладки плагинов (debug) и зачем он нужен. Знаете, что RegisterHam на ботов просто так не действовал до amxmodx 1.9 (например, можно использовать cs_ham_bots_api, или лучше функционал reapi). Умеете запускать rehlds-сервер с параметром -bots и знаете за что отвечает liblist.gam
В целом, я поделился своим опытом, и не против увидеть в комментариях насколько полезной для вас была эта статья, а также практические советы, которыми можно расширить эту статью.
В целом, я поделился своим опытом, и не против увидеть в комментариях насколько полезной для вас была эта статья, а также практические советы, которыми можно расширить эту статью.
Цените своё время.
С уважением, Leo_[BH].
С уважением, Leo_[BH].
Вложения
-
61.8 KB Просмотры: 37
Последнее редактирование: