Внедрение своей Lua функции в сценарий карты без десинхронизации, Миссия невыполнима 30К |
Здравствуйте, гость ( Авторизация | Регистрация )
Форумы работают на сервере |
Внедрение своей Lua функции в сценарий карты без десинхронизации, Миссия невыполнима 30К |
17.04.2021, 13:32
Сообщение
#1
|
|
Neophyte Группа: Пользователь Сообщений: 28 Регистрация: 03.04.2021 Пользователь №: 78 019 Репутация: 8 |
Хочу сделать интерфейс для зрителя наподобие этого https://www.youtube.com/watch?v=xYKAhiOE9xw
Вот как выглядит на данный момент: "Вжух" Работает так: 1)В корень игры вставляется autoexec.lua в котором каждый тик собираются данные с помощью функций Player_GetResource(), Entity_GetProductionQueueItemName() и т.д. После эти данные пакуются в строку(и находятся в памяти игры). 2)В процесс игры внедряется dll хук который шарится по памяти игры и находит эту строку с данными, распаковывает ее, подменяет directX ф-ию отрисовки и дорисовывает уже нужный мне интерфейс на основе данных из строки. Проблема в том что таким образом можно просматривать только реплеи, т.к. без -dev мода autoexec.lua не запустится. Нужно при старте карты внедрить этот код в нее, но не вызывая десинхронизации. Есть идеи как это сделать? Сообщение отредактировал jONES - 17.08.2021, 15:18 |
|
|
17.04.2021, 14:27
Сообщение
#2
|
|
Ordo Malleus Inquisitor Lord Раса: Daemon Hunters Армия: Ordo Malleus Группа: Куратор Сообщений: 4 153 Регистрация: 23.07.2009 Пользователь №: 19 252 Репутация: 1166 |
Проблема в том что таким образом можно просматривать только реплеи, т.к. без -dev мода autoexec.lua не запустится. Нужно при старте карты внедрить этот код в нее, но не вызывая десинхронизации. Есть идеи как это сделать? Не знаю как помочь, но интересно что будет отражаться в реплее на 8 игроков? Ещё более интересный мне вопрос: Как написать и как внедрять DLL которая что-нибудь на что-нибудь в игре заменяет. -------------------- |
|
|
17.04.2021, 14:35
Сообщение
#3
|
|
Neophyte Группа: Пользователь Сообщений: 28 Регистрация: 03.04.2021 Пользователь №: 78 019 Репутация: 8 |
Не знаю как помочь, но интересно что будет отражаться в реплее на 8 игроков? Пока что делается только на дуэль, но на большее кол-во игроков можно сделать так https://youtu.be/nn90HRGcpZY?t=3054 Сообщение отредактировал VenerateTheImmortalLenin - 17.04.2021, 14:39 |
|
|
18.09.2021, 20:43
Сообщение
#4
|
|
Neophyte Группа: Пользователь Сообщений: 28 Регистрация: 03.04.2021 Пользователь №: 78 019 Репутация: 8 |
На время подзабил, но решил все-таки доделать, если у кого есть идеи - пишите.
Возможно у кого-то есть исходники самой игры или dow online |
|
|
19.09.2021, 13:47
Сообщение
#5
|
|
Ordo Malleus Inquisitor Lord Раса: Daemon Hunters Армия: Ordo Malleus Группа: Куратор Сообщений: 4 153 Регистрация: 23.07.2009 Пользователь №: 19 252 Репутация: 1166 |
1)В корень игры вставляется autoexec.lua в котором каждый тик собираются данные с помощью функций Player_GetResource(), Entity_GetProductionQueueItemName() и т.д. После эти данные пакуются в строку(и находятся в памяти игры). Не обязательно использовать autoexec.lua , можно сделать опциональное условие победы, по типу timer, игрок создающий игру(карту) - должен будет просто включить его. Сообщение отредактировал jONES - 21.09.2021, 11:41 -------------------- |
|
|
20.09.2021, 13:33
Сообщение
#6
|
|
Master Flooder Группа: Пользователь Сообщений: 715 Регистрация: 02.12.2010 Пользователь №: 26 099 Репутация: 276 |
Довстатс оверлей как раз работают через хук DirectX.
А нет других редактируемых скриптов Lua, которые вызываются при каждой игре? -------------------- |
|
|
Текстовая версия | Сейчас: 20.04.2024 - 04:16 |
Написать письмо администратору |