GoldSrc Monitor

GoldSrc Monitor 3.0

Нет прав для скачивания
Сообщения
105
Реакции
194
SNMetamorph добавил(а) новый ресурс:

GoldSrc Monitor - Небольшая утилита для скриптинга/маппинга или изучения устройства игр на движке GoldSrc

Инструмент дает возможность смотреть некоторую информацию о локальном игроке/энтити на карте, измерять объекты/расстояния на карте, замедлять или ускорять время (из-за особенностей устройства движка, это исправно работает только на локальном сервере или в синглплеере).
Поддерживает стимовские билды движка, а также билд 4554.
Также, инструмент содержит определённые режимы работы:

1. Режим полного отображения (gsm_mode 0)
Отображает большое...
Узнать больше об этом ресурсе...
 
Сообщения
3,561
Реакции
1,559
Помог
131 раз(а)
SNMetamorph, можно ли в режиме информации об энтити выводить полную инфу об энтити, наподобие как, например, в BSPEdit, или BSPViewer?

1610444374462.png

1610444429063.png
 
Сообщения
105
Реакции
194
SNMetamorph, можно ли в режиме информации об энтити выводить полную инфу об энтити, наподобие как, например, в BSPEdit, или BSPViewer?

Да, но не всю, к сожалению. По крайней мере, если подключаться к удалённому серверу. Но если же запускать listen-сервер, то костылями можно и остальную информацию получать и выводить. Хотелось бы знать, какую конкретно информацию нужно отображать, ибо на самом деле еще много что можно вывести (rendercolor, renderfx, и т.д.)
 
Сообщения
3,561
Реакции
1,559
Помог
131 раз(а)
SNMetamorph, ну как минимум хотя бы класснейм энтити. Ну а как максимум, полные параметры энтити, как на скринах.
 
Сообщения
105
Реакции
194
SNMetamorph, ну как минимум хотя бы класснейм энтити. Ну а как максимум, полные параметры энтити, как на скринах.
Вот как раз с класснеймом и есть самые сложности :( Сервер в принципе его не отправляет клиентам. И тут есть два варианта: либо на стороне сервера подкрутить delta.lst, чтобы сервер отправлял classname клиентам, либо как-то парсить BSP-файл на стороне клиента, получать список энтитей, и на базе этого уже сопоставлять полученный список энтить с тем что находится в игре, и определять что есть что. А ну ещё, конечно, через listen-server можно всю эту инфу несложно получать, но это наверное бесполезный метод.

P.S:
Ещё, конечно, по идее все эти параметры из FGD, которые для каждой энтити свои, можно получить только парсингом файла карты. Так как клиент вообще ничего не знает о таких подробностях энтить.

P.S #2:
А ещё можно сделать AMXX bridge-плагин, который с сервера будет отправлять клиенту с запущеной утилитой всю инфу, которую клиент не имеет на своей стороне. Достаточно удобно, но использовать такое можно только если есть возможность поставить плагин на сервер. Что вы думаете насчёт такого варианта? Nordic Warrior
 
Последнее редактирование:
Сообщения
3,561
Реакции
1,559
Помог
131 раз(а)
SNMetamorph, идея с плагином конечно хорошая, я за.
Вот только преимущество этой утилиты как раз в том, что можно было зайти на любой сервер и непосредственно там смотреть нужную информацию.

Я вообще с клиентской частью гораздо хуже знаком, чем с северной, поэтому спорить не берусь. Однако, если рассуждать логически, какую-то инфу сервер по-любому отправляет на клиент, например энтити "туман". Он же рисуется на клиентсайде. Следовательно, клиент должен как-то узнать, что на сервере существует такая энтити...
 
Сообщения
105
Реакции
194
SNMetamorph, идея с плагином конечно хорошая, я за.
Вот только преимущество этой утилиты как раз в том, что можно было зайти на любой сервер и непосредственно там смотреть нужную информацию.

Я вообще с клиентской частью гораздо хуже знаком, чем с северной, поэтому спорить не берусь. Однако, если рассуждать логически, какую-то инфу сервер по-любому отправляет на клиент, например энтити "туман". Он же рисуется на клиентсайде. Следовательно, клиент должен как-то узнать, что на сервере существует такая энтити...
Специально для тумана есть message под названием Fog, при изменении параметров сервер просто отправляет это сообщение клиентам со всей необходимой инфой, и уже на стороне клиентов включение тумана происходит.
17 Янв 2021
SNMetamorph, идея с плагином конечно хорошая, я за.
Вот только преимущество этой утилиты как раз в том, что можно было зайти на любой сервер и непосредственно там смотреть нужную информацию.

Я вообще с клиентской частью гораздо хуже знаком, чем с северной, поэтому спорить не берусь. Однако, если рассуждать логически, какую-то инфу сервер по-любому отправляет на клиент, например энтити "туман". Он же рисуется на клиентсайде. Следовательно, клиент должен как-то узнать, что на сервере существует такая энтити...
Nordic Warrior, да, из-за этого портативность ломается. Но у подхода с парсингом карты тоже есть минус. Так как клиент будет знать только о тех энтитях, которые изначально есть на карте, то не будет возможности видеть дополнительную инфу у энтить, которые были созданы в ходе игры при помощи плагина, или же самой игрой. И вот я не знаю, насколько это вообще критично, т.к. не занимаюсь скриптингом на серьезном уровне.
 
Последнее редактирование:
Сообщения
3,561
Реакции
1,559
Помог
131 раз(а)
SNMetamorph, в таком случае предлагаю сделать и так и так.
На серверах с плагином утилита будет получать данные от него, а на серверах без него - парсить bsp.
 
Сообщения
105
Реакции
194
Сообщения
3,561
Реакции
1,559
Помог
131 раз(а)
Мной была протестирована данная утилита на Steam клиенте на серверах с VAC-защитой. VAC не был получен.

SNMetamorph, далее инфа, предложения, багрепорты (и вопросы) для тебя:
  1. Неплохо было бы сделать как в читах - запуск утилиты не после запуска кс, а чтобы утилита ждала запуска игры, и уже тогда инжектилась.
    Для чего? Тогда бы можно было написать простой батник для запуска КС с этой утилитой в один клик. Ну и просто удобство - запустил утилиту, потом игру. А сейчас надо запустить игру, подождать её загрузки, свернуть её, запустить утилиту, развернуть...

  2. Так же неплохо было бы позаимствовать из читов фичу указания названия процесса, куда будет инжектиться утилита.
    Для чего? Сейчас, например, невозможно запустить одновременно данную утилиту и HitBoxTracker | Dev-CS.ru (dev-cs.ru), поскольку он имеет свой процесс со своим названием для запуска.
    Пример такого инжектора:
    Скрытое содержимое для пользователей: SNMetamorph
  3. Почему определяются не все энтити в режиме информации об энтити?
    Примеры:
    Вода (func_water):
    GoldSRCMonitor_2.jpg
    Лестницы (func_ladder):
    20210213144001_1.jpg

    При этом на другой карте лестница определяется: (Однако: она имеет класснейм func_wall, но при этом по ней можно лазить)

    20210213143930_1.jpg
    func_illusionary: (карта 35hp_2_cslig [Counter-Strike 1.6] [Maps] (gamebanana.com) )
    GoldSRCMonitor_3.jpg
    func_door func_door_rotating) определяется, но почему-то без границ, обозначенных зелёным:
    20210213145145_1.jpg
    func_pushasble:
    20210213145126_1.jpg
    func_vehicle: ( 35hp_cars [Counter-Strike 1.6] [Maps] (gamebanana.com) ) определяется, но обводка показывает, что объект вообще в другом месте почему-то: (вероятно, в предыдущем пункте может быть то же самое)
    GoldSRCMonitor_4.jpg

  4. После дисконнекта с сервера неплохо было бы обнулять режим измерения, поскольку координаты у точек остаются прежние.
    20210213140656_1.jpg

  5. В режиме информации об энтити не определяются энтити игроков на серверах, где используется ReSemiClip. (предполагаю, что это из-за того, что игроки становятся не солидные)
    20210213140857_1.jpg

  6. В том же режиме, при наблюдении за игроком от первого лица, ловится именно он, как энтити, что не очень удобно.
    20210213141503_1.jpg

  7. В том же режиме, в режиме Freelook, неплохо было бы сдвигать информацию под чёрную рамку, иначе ничего не видно.
    20210213144947_1.jpg

  8. В режиме спидометра, при наблюдении за игроком, продолжает определяться своя скорость. Предлагаю, либо убирать спидометр в такие моменты, либо, если возможно измерять скорость того, за кем следишь.
    GoldSRCMonitor_5.jpg

  9. В режиме информации об энтити неверно определяются кастомные модели игроков, заданные плагинами.
    GoldSRCMonitor_1.jpg
    Можно сделать как у Shel в ExtraMirror, у него модели определяются верно:
    GoldSRCMonitor_6.jpg
    Скрытое содержимое для пользователей: SNMetamorph

  10. В качестве альтернативы пункту 2, можно попробовать перенести функционал клиентского приложения HitBoxTracker в твою утилиту.
    s1lentq/hitboxtracker: Dev-tool that demonstrates on client-side true position of the hitboxes calculated by server (github.com)

  11. Неплохо было бы сделать что-то вроде Sound ESP, но не только для игроков, а для всех звуков, в том числе звуков карты. Я имею в виду показ Origin звука. (если возможно)

  12. Было бы неплохо добавить отображение триггеров, если это возможно. Например, сделать новый режим gsm_mode 4, при котором будут показываться хотя бы бомбплейсы (именно вся зона, где можно заложить бомбу). Ну и если возможно, остальное: байзоны, зоны спасения заложников, зоны эвакуации на es_ и as_ картах.

    Похожий функционал есть в ReGameDLL, но во-первых, он требует, собственно, доступа к серверу, во-вторых, он визуально не очень хорошо сделан: подсветка триггеров снаружи непрозрачная, а внутри него, триггера вообще не видно.
    20210213161435_1.jpg
  13. Так же неплохо было бы добавить (например, так же отдельным режимом) отображение и подсветку спавнов игроков. (info_player_start, info_player_deathmath)
 
Сообщения
105
Реакции
194
Nordic Warrior, спасибо огромное за столь подробный репорт, действительно есть что сказать, но пока нет времени все детально расписывать. Могу только сказать что в принципе можно легко разобраться с пунктами 1, 2, с 3 нужно подумать и поэкспериментировать, 4, насчет 5 пока не знаю ничего, с 6 думаю можно что-то придумать, насчет 7 мне кажется можно и нужно добавить квары которые позволят пользователю самому указывать нужный отступ от верхней и правой стороны экрана, насчет 8 тоже нужно подумать, аналогично с 9, с 10 сложно, насчет 11 тоже надо подумать, там придется хукать движковые функции, наверняка, а это не есть хорошо, по 12 и 13 думаю все разрешится, когда реализую парсинг BSP-файла, ибо например клиенту вообще не отправляется никакая инфа про невидимые энтити (всякие триггеры, хз что там еще есть)
 
Последнее редактирование:
Сообщения
105
Реакции
194
Nordic Warrior, поскольку у меня появилось немного свободного времени, я сейчас реализовал пункты 1 и 2. Еще добавил квары для установки отступа текста сверху/справа вручную, так что по идее это должно помочь с проблемами когда где-то что-то на экране загораживалось.
Теперь подробнее по первым двум пунктам. Теперь загрузчик будет ждать запуска игры, это работает, но появился один нюанс - чтобы библиотека нормально заинжектилась, нужно чтобы перед стартом игры и непосредственно инжектом прошло некоторое время, чтобы игра успела загрузиться. По умолчанию загрузчик будет ждать 3 секунды, но это время можно выставить вручную параметром запуска +inject_delay 9999, время прописывается в миллисекундах. Порой этого времени может не хватать для нормального инжекта, и загрузчик будет писать ошибки - это нормально. Нужно просто прописать подходящее время, за которое игра точно успеет полностью загрузиться в главное меню.
По поводу имени процесса, теперь его также можно выставить вручную через параметр запуска +process_name EXAMPLE.exe
Пока еще ничего нигде не релизил, постараюсь это сделать в ближайшее время, нужно еще там много расписывать.
Но коммиты на гитхабе уже можно посмотреть, или даже самому из исходников собрать.
По мере того как времени станет больше, я уже более масштабные пункты буду реализовывать, сейчас сделал только то, что можно было реализовать на скорую руку.
 
Сообщения
3,561
Реакции
1,559
Помог
131 раз(а)
SNMetamorph, рад слышать. ? Буду ждать обновлений.

Плюс, появилось ещё пару небольших идей, озвучу их позднее.
 

Garey

ninjaCow
Сообщения
417
Реакции
1,055
Помог
10 раз(а)
SNMetamorph, Парсер BSP-файла необязательно делать. Посмотри у энтити (0) что в структуре cl_entity_s после загрузки карты в (ent->model.entities) :-)
 
Сообщения
105
Реакции
194
SNMetamorph, Парсер BSP-файла необязательно делать. Посмотри у энтити (0) что в структуре cl_entity_s после загрузки карты в (ent->model.entities) :-)
Garey спасибо большое за инфу, гляну как нибудь. А ты видел мой сегодняшний вопрос про скрытие клиентской DLL в голдсурсе в Windows XP?
 
Сообщения
3,561
Реакции
1,559
Помог
131 раз(а)
SNMetamorph, спасибо за обновление, теперь HitBoxTracker запускается с этой утилитой.

Продолжу список предложений:

14. Флаги игрока в режиме полной информации было бы понятнее выводить набором констант, как в амхх.

15. Разблокировать игру от 3-го лица. Команды thirdperson, firstperson. Насколько я помню, в хл1 они есть, но заблокированы.
Если не получится разблокировать, то просто сделать вид от 3 лица и квар на него. (в читах есть примеры реализации)
Иногда бывает полезным при тестировании плагинов.
 
Сообщения
105
Реакции
194
14. Флаги игрока в режиме полной информации было бы понятнее выводить набором констант, как в амхх.
Вот мне тоже так кажется, только страшно представить сколько это всё займет места на экране, может быть есть идеи как это можно как-то более компактно оформить?

15. Разблокировать игру от 3-го лица. Команды thirdperson, firstperson. Насколько я помню, в хл1 они есть, но заблокированы.
Если не получится разблокировать, то просто сделать вид от 3 лица и квар на него. (в читах есть примеры реализации)
Иногда бывает полезным при тестировании плагинов.
Да, кажется я что-то такое давно ковырял и это сделать несложно, вроде бы.
 

Пользователи, просматривающие эту тему

Сейчас на форуме нет ни одного пользователя.
Сверху Снизу