Перейти к содержанию
⚠️ Обновление форума - Feedback ⚠️ ×

Внедрение своей Lua функции в сценарий карты без десинхронизации


Рекомендуемые сообщения

Хочу сделать интерфейс для зрителя наподобие этого

Вот как выглядит на данный момент:

"Вжух"
scr1.png

Работает так:

1)В корень игры вставляется autoexec.lua в котором каждый тик собираются данные с помощью функций

Player_GetResource(), Entity_GetProductionQueueItemName() и т.д. После эти данные пакуются в строку(и [ну уж нет]одятся в памяти игры).

2)В процесс игры внедряется dll хук который шарится по памяти игры и [ну уж нет]одит эту строку с данными, распаковывает ее, подменяет directX ф-ию отрисовки и дорисовывает уже нужный мне интерфейс на основе данных из строки.

Проблема в том что таким образом можно просматривать только реплеи, т.к. без -dev мода autoexec.lua не запустится. Нужно при старте карты внедрить этот код в нее, но не вызывая десинхронизации. Есть идеи как это сделать?

Изменено пользователем jONES
Ссылка на комментарий
Поделиться на другие сайты

Проблема в том что таким образом можно просматривать только реплеи, т.к. без -dev мода autoexec.lua не запустится. Нужно при старте карты внедрить этот код в нее, но не вызывая десинхронизации. Есть идеи как это сделать?

Не знаю как помочь, но интересно что будет отражаться в реплее на 8 игроков?

Ещё более интересный мне вопрос: Как написать и как внедрять DLL которая что-нибудь на что-нибудь в игре заменяет.

Ссылка на комментарий
Поделиться на другие сайты

Не знаю как помочь, но интересно что будет отражаться в реплее на 8 игроков?

Пока что делается только на дуэль, но на большее кол-во игроков можно сделать так https://youtu.be/nn90HRGcpZY?t=3054

Изменено пользователем VenerateTheImmortalLenin
Ссылка на комментарий
Поделиться на другие сайты

  • 5 месяцев спустя...

На время подзабил, но решил все-таки доделать, если у кого есть идеи - пишите.

Возможно у кого-то есть исходники самой игры или dow online

Ссылка на комментарий
Поделиться на другие сайты

1)В корень игры вставляется autoexec.lua в котором каждый тик собираются данные с помощью функций

Player_GetResource(), Entity_GetProductionQueueItemName() и т.д. После эти данные пакуются в строку(и [ну уж нет]одятся в памяти игры).

Не обязательно использовать autoexec.lua , можно сделать опциональное условие победы, по типу timer, игрок создающий игру(карту) - должен будет просто включить его.

Изменено пользователем jONES
Ссылка на комментарий
Поделиться на другие сайты

Довстатс оверлей как раз работают через хук DirectX.

А нет других редактируемых скриптов Lua, которые вызываются при каждой игре?

Ссылка на комментарий
Поделиться на другие сайты

Присоединяйтесь к обсуждению

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

Гость
Ответить в этой теме...

×   Вставлено с форматированием.   Восстановить форматирование

  Разрешено использовать не более 75 эмодзи.

×   Ваша ссылка была автоматически встроена.   Отображать как обычную ссылку

×   Ваш предыдущий контент был восстановлен.   Очистить редактор

×   Вы не можете вставлять изображения напрямую. Загружайте или вставляйте изображения по ссылке.

Загрузка...
×
×
  • Создать...