Подписывайтесь на наш Telegram и не пропускайте важные новости! Перейти

Вопрос RunScript returns value

Начинающий
Начинающий
Статус
Оффлайн
Регистрация
5 Мар 2022
Сообщения
216
Реакции
17
ключевой вопрос ребята
как вернуть в луа значение, которое вернул RunScript?
например я делаю вот так
code_language.lua:
Expand Collapse Copy
enginePanorama.RunScript([[
    var name = MyPersonaAPI.GetName();
    $.Msg("name: " + name);
]])
этот скрипт выводит мой ник в консоль игры, но я не могу в луа взять и юзать этот ник.

дело в том, что в ida RunScript вообще не возвращает значение. например в том же фаталити, в луа апи прописано

Returns
The evaluated code's return value, if any.

у них Eval возвращает значение, которое вернул джс скрипт. так как сделать возврат значение из джс? может Eval это вообще другая функа, а не RunScript?

Код:
Expand Collapse Copy
    void run_script(c_ui_panel* panel, const char* script) { memory::call_virtual<void>(this, 77, panel, script, nullptr, 0); }

у меня есть догадка что делать конечно. ребилдить runscript. или можно проще?
 
Последнее редактирование:
все, проблема решена.
нужно ребилднуть runscript так, что бы он возвращал значение.
лично я сделал это при помощи библиотеки, скомпиленной из v8.def, где все экспорты, нужные для RunScript.

и просто изменить ребилд вот так
Код:
Expand Collapse Copy
                 if (!try_catch.HasCaught()) {
                     v8::Local<v8::Value> local_result;
                     if (maybe_result.ToLocal(&local_result)) {
                         v8::String::Utf8Value utf8(isolate, local_result);
                         if (*utf8)
                             result_ptr = _strdup(*utf8);
                     }
                 }

1773507807695.png
1773507829151.png
 
Назад
Сверху Снизу