mirror of
https://github.com/Mr-X-GTA/YimMenu.git
synced 2024-12-22 20:17:24 +08:00
add lua api: script.execute_as_script (#2824)
Co-authored-by: xiaoxiao921 <xiaoxiao921@hotmail.fr>
This commit is contained in:
parent
f50d0f2c9d
commit
540ff21b05
@ -2,7 +2,7 @@
|
|||||||
|
|
||||||
Table containing helper functions related to gta scripts.
|
Table containing helper functions related to gta scripts.
|
||||||
|
|
||||||
## Functions (2)
|
## Functions (3)
|
||||||
|
|
||||||
### `register_looped(name, func)`
|
### `register_looped(name, func)`
|
||||||
|
|
||||||
@ -75,4 +75,15 @@ end)
|
|||||||
script.run_in_fiber(func)
|
script.run_in_fiber(func)
|
||||||
```
|
```
|
||||||
|
|
||||||
|
### `execute_as_script(script_name, func)`
|
||||||
|
|
||||||
|
- **Parameters:**
|
||||||
|
- `script_name` (string): target script thread.
|
||||||
|
- `func` (function): function that will be executed once in the script thread.
|
||||||
|
|
||||||
|
**Example Usage:**
|
||||||
|
```lua
|
||||||
|
script.execute_as_script(script_name, func)
|
||||||
|
```
|
||||||
|
|
||||||
|
|
||||||
|
@ -3,6 +3,7 @@
|
|||||||
|
|
||||||
#include "lua/lua_manager.hpp"
|
#include "lua/lua_manager.hpp"
|
||||||
#include "script_mgr.hpp"
|
#include "script_mgr.hpp"
|
||||||
|
#include "gta_util.hpp"
|
||||||
|
|
||||||
namespace lua::script
|
namespace lua::script
|
||||||
{
|
{
|
||||||
@ -151,15 +152,26 @@ namespace lua::script
|
|||||||
module->m_registered_scripts.push_back(std::move(lua_script));
|
module->m_registered_scripts.push_back(std::move(lua_script));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// Lua API: function
|
||||||
|
// Table: script
|
||||||
|
// Name: execute_as_script
|
||||||
|
// Param: script_name: string: target script thread.
|
||||||
|
// Param: func: function: function that will be executed once in the script thread.
|
||||||
|
static void execute_as_script(const std::string& script_name, sol::protected_function func)
|
||||||
|
{
|
||||||
|
big::gta_util::execute_as_script(rage::joaat(script_name), func);
|
||||||
|
}
|
||||||
|
|
||||||
void bind(sol::state& state)
|
void bind(sol::state& state)
|
||||||
{
|
{
|
||||||
auto ns = state["script"].get_or_create<sol::table>();
|
auto ns = state["script"].get_or_create<sol::table>();
|
||||||
ns["register_looped"] = register_looped;
|
ns["register_looped"] = register_looped;
|
||||||
ns["run_in_fiber"] = run_in_fiber;
|
ns["run_in_fiber"] = run_in_fiber;
|
||||||
|
ns["execute_as_script"] = execute_as_script;
|
||||||
|
|
||||||
auto usertype = state.new_usertype<script_util>("script_util");
|
auto usertype = state.new_usertype<script_util>("script_util");
|
||||||
|
|
||||||
usertype["yield"] = sol::yielding(&script_util::yield);
|
usertype["yield"] = sol::yielding(&script_util::yield);
|
||||||
usertype["sleep"] = sol::yielding(&script_util::sleep);
|
usertype["sleep"] = sol::yielding(&script_util::sleep);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
Loading…
Reference in New Issue
Block a user