Как реализовать вызов из unreal script

Maksim

Легендарный
Местный
Знаток Lineage2
Любитель реакций
Неукротимое пламя
Старожил I степени
Сообщения
982
Розыгрыши
0
Решения
6
Репутация
596
Реакции
843
Баллы
1 708
Всем доброго утра, дня, вечера, ночи.
Задался вопросом как реализовать из unreal script передачу параметра в кастомную dll которую прикрепляешь через cff explorer к fire.dll например.
Банально передать текст из unreal script и чтобы эта DLL вывела сообщение в окне.

Просто пытаюсь сделать минимальное, если кто может помогите разобраться с этим вопросом.
Это поможет не только мне, но и всем. 🍻🤗
 
Всем доброго утра, дня, вечера, ночи.
Задался вопросом как реализовать из unreal script передачу параметра в кастомную dll которую прикрепляешь через cff explorer к fire.dll например.
Банально передать текст из unreal script и чтобы эта DLL вывела сообщение в окне.

Просто пытаюсь сделать минимальное, если кто может помогите разобраться с этим вопросом.
Это поможет не только мне, но и всем. 🍻🤗
не эксперт, но предположу, что будет что-то типа:
шли ивент в uc коде с параметрами
экстом нужно встроиться в диспатчер ивентов в dll и добавить свой обработчик на конкретный тип ивента
в этом же месте можно подсовывать свои кастомные ивенты от dll идущие к uc коду

Как там что называется я хз - без помощи ленюсь преодолеть порог входа в реверс. А так как по классике видимо: Найти обработчик, встроиться патчем и сидеть радоваться
 
не эксперт, но предположу, что будет что-то типа:
шли ивент в uc коде с параметрами
экстом нужно встроиться в диспатчер ивентов в dll и добавить свой обработчик на конкретный тип ивента
в этом же месте можно подсовывать свои кастомные ивенты от dll идущие к uc коду
Именно так и пытался сделать, но при вызове через кнопку в интерфейсе клиент вылетает с крашем что нет такой функции.
Может не правильно делаю, хорошо бы разобраться в этом вопросе.
Не думаю что это большой секрет, в отличии от того как в dll запихнуть интерфейс. :Hot:

Хотя банальную функцию получения ID процесса из kernel32 через unreal script из нативной функции по индексу выдает когда добавил.
Но это системная dll и не подходит, как бы сделать похожее с своей.
 
Именно так и пытался сделать, но при вызове через кнопку в интерфейсе клиент вылетает с крашем что нет такой функции.
Может не правильно делаю, хорошо бы разобраться в этом вопросе.
Не думаю что это большой секрет, в отличии от того как в dll запихнуть интерфейс. :Hot:
Конечно секрет) тут до сих пор нет ни одного гайда как отловить место, где патчить дальность некст таргета на клиенте) или как включить ctrl+c/ctrl+v для html инпутов
 
Конечно секрет) тут до сих пор нет ни одного гайда как отловить место, где патчить дальность некст таргета на клиенте)
Этот вопрос решен на стороне сервера давно уже, только на явах )
 
Этот вопрос решен на стороне сервера давно уже, только на явах )
ну ты же понимаешь, что это дичь?) заставлять сервер обходить цели вокруг, сортировать по дальности и на каждом игроке так
 
Конечно секрет) тут до сих пор нет ни одного гайда как отловить место, где патчить дальность некст таргета на клиенте) или как включить ctrl+c/ctrl+v для html инпутов
в могилу это унесут в своём сундуке лишь бы не делиться не с кем
 
попробуй пошариться по интерфейсам на серваках с 166-196 протоколом у которых есть переключение языка в лобби, например как у дрима, там по идее как раз из длл вызывается обновление графики при смене языка
 
попробуй пошариться по интерфейсам на серваках с 166-196 протоколом у которых есть переключение языка в лобби, например как у дрима, там по идее как раз из длл вызывается обновление графики при смене языка
Попробую найти решение, спасибо. Хоть какая зацепка. :Coffee:
 
декриптнутый интерфейс дрима
Распаковал еще :Coffee:

Там смена языка происходит не через кастомную dll, через gfx.

Код:
CallGFxFunction("LogInMenu", "SendCurrLanguage", "language=" $ string(languageNum));
:Hot:
 

Вложения

  • interface.zip
    1,1 МБ · Просмотры: 19
Нужно передать ид и адрес функции в GRegisterNative ( Core.dll ). В клиент скриптах сделать нативную функцию с этим ид и все.
 
параметры ее должны быть обязательно такие

C++:
#define RESULT_DECL void*const Result
typedef void (UUIScript::*Native)(struct FFrame& TheStack, RESULT_DECL)

void ptrUUIScript::PRIVATE_OnCalled_execDebug(struct FFrame & Stack, RESULT_DECL)
{
    P_GET_STR(type);
    P_FINISH

    if (SETTINGS->isUiDebugLog)
        LOGGER->Log(L"ui: %s", *type);
}

структуру FFrame нужно будет взять с движка ue как и макросы P_GET_STR/P_FINISH и тд.
 
Еще как вариант - можно перенести нужный код, если хватает функционала Unreal Scripts, в файлик .u и при помощи getScript("nameOfClass") получать доступ к нему. В таком случае получать доступ к нему нужно будет как-то так
C#:
function NameOfClass AccessToClass()
{
  return NameOfClass(GetScript("NameOfClass"));
}
Ну надеюсь правильно обьяснил идею. Из минусов - если прыгаете между версиями - нужно будет пере-компилировать .u (добавляя свой скрипт) файл ибо видимость его только и только в этом файле.
 
Последнее редактирование:
параметры ее должны быть обязательно такие

C++:
#define RESULT_DECL void*const Result
typedef void (UUIScript::*Native)(struct FFrame& TheStack, RESULT_DECL)

void ptrUUIScript::PRIVATE_OnCalled_execDebug(struct FFrame & Stack, RESULT_DECL)
{
    P_GET_STR(type);
    P_FINISH

    if (SETTINGS->isUiDebugLog)
        LOGGER->Log(L"ui: %s", *type);
}

структуру FFrame нужно будет взять с движка ue как и макросы P_GET_STR/P_FINISH и тд.
Спасибо за подсказку, подскажите как это будет выглядить в динамической dll с dllexport и unreal script с отправкой в эту функцию обычного текста через кнопку например в интерфейсе?

Еще как вариант - можно перенести нужный код, если хватает функционала Unreal Scripts, в файлик .u и при помощи getScript("nameOfClass") получать доступ к нему. В таком случае получать доступ к нему нужно будет как-то так
C#:
function NameOfClass AccessToClass()
{
  return NameOfClass(GetScript("NameOfClass"));
}
Ну надеюсь правильно обьяснил идею. Из минусов - если прыгаете между версиями - нужно будет пере-компилировать .u (добавляя свой скрипт) файл ибо видимость его только и только в этом файле.

Спасибо, надо будет попробовать такой вариант.
 
Спасибо за подсказку, подскажите как это будет выглядить в динамической dll с dllexport и unreal script с отправкой в эту функцию обычного текста через кнопку например в интерфейсе?



Спасибо, надо будет попробовать такой вариант.
прям готовый код давать не буду. Но того что написал хватит сделать спокойно.

в скриптах это выглядит так ( можно добавить в любой класс ).

C++:
native(4002) final static function ItemExSort(out array<ItemInfo> List);
 
прям готовый код давать не буду. Но того что написал хватит сделать спокойно.

в скриптах это выглядит так ( можно добавить в любой класс ).

C++:
native(4002) final static function ItemExSort(out array<ItemInfo> List);
Попробую сделать, спасибо :Mlfy:

Не могу проверить с смарта, примерно так и цеплять через dllexport к core.dll?
Скрытое содержимое доступно для зарегистрированных пользователей!
 
нейросеть что ли попросил?)
код явно набор бредовых слов.
 
Назад
Сверху Снизу