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

Maksim

Бессмертный
Местный
Сообщения
637
Розыгрыши
0
Решения
3
Репутация
492
Реакции
636
Баллы
1 643
Всем доброго утра, дня, вечера, ночи.
Задался вопросом как реализовать из unreal script передачу параметра в кастомную dll которую прикрепляешь через cff explorer к fire.dll например.
Банально передать текст из unreal script и чтобы эта DLL вывела сообщение в окне.

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

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

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

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

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

Вложения

  • interface.zip
    1,1 МБ · Просмотры: 11
Нужно передать ид и адрес функции в 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 (добавляя свой скрипт) файл ибо видимость его только и только в этом файле.
 
Последнее редактирование:
Спасибо за подсказку, подскажите как это будет выглядить в динамической dll с dllexport и unreal script с отправкой в эту функцию обычного текста через кнопку например в интерфейсе?


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

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

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

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