- Статус
- Оффлайн
- Регистрация
- 14 Фев 2020
- Сообщения
- 73
- Реакции
- 21
Обратите внимание, пользователь заблокирован на форуме. Не рекомендуется проводить сделки.
при загрузке луа(смотреть сс) крашится игра
функция лоад скрипта:
Функции используемые в луа:
Получение скрипт ид:
функция лоад скрипта:
C++:
sol::state lua;
lua.open_libraries(sol::lib::base, sol::lib::string, sol::lib::table, sol::lib::math, sol::lib::debug);
lua.set_function("eventLogPrint", &eventLogPrint);
lua.set_function("registerCallback", ®isterCallbacks);
lua.set_function("getScreenSize", &getScreenSize);
lua.set_function("rect_fiiled", &rect_filled);
g_pLua.loaded.push_back(name);
lua.script_file("C:\\poxLua\\" + name + ".lua", [](lua_State*, sol::protected_function_result result) {
if (!result.valid()) {
sol::error err = result;
c_event_logs::get().add(err.what(), Color::Red());
}
return result;
});
C++:
void registerCallbacks(std::string scriptName, std::string eventName, sol::function func) {
int id = get_script_id(scriptName);
callbackManager.registerCallback(id, eventName, func);
}
std::tuple<int, int> getScreenSize() {
int w, h;
g_pEngine->GetScreenSize(w, h);
return std::make_tuple(w, h);
}
void rect_filled(int x, int y, int w, int h, int r, int g, int b, int a) {
g_pSurface->FilledRect(x, y, w, h, Color(r, g, b, a));
}
C++:
int get_script_id(std::string scriptName) {
for (size_t i = 0; i < g_pLua.loaded.size(); i++) {
if (g_pLua.loaded[i] == scriptName) {
return static_cast<int>(i);
}
}
}