added on_inventory_interact

This commit is contained in:
Xertis 2026-02-28 20:41:40 +03:00
parent fc04284b34
commit 2cec6c3f9a
4 changed files with 29 additions and 0 deletions

View file

@ -540,6 +540,22 @@ void scripting::on_inventory_closed(const Player* player, const Inventory& inven
}
}
void scripting::on_inventory_interact(int invid, int slot, int action) {
auto args = [invid, slot, action](lua::State* L) {
lua::pushinteger(L, invid);
lua::pushinteger(L, slot);
lua::pushinteger(L, action);
return 3;
};
for (auto& [packid, pack] : content->getPacks()) {
if (pack->worldfuncsset.oninventoryinteract) {
lua::emit_event(
lua::get_main_state(), packid + ":.inventoryinteract", args
);
}
}
}
void scripting::on_player_tick(Player* player, int tps) {
auto args = [=](lua::State* L) {
lua::pushinteger(L, player ? player->getId() : -1);
@ -761,6 +777,8 @@ void scripting::load_world_script(
register_event(env, "on_inventory_open", prefix + ":.inventoryopen");
funcsset.oninventoryclosed =
register_event(env, "on_inventory_closed", prefix + ":.inventoryclosed");
funcsset.oninventoryinteract =
register_event(env, "on_inventory_interact", prefix + ":.inventoryinteract");
}
void scripting::load_layout_script(

View file

@ -108,6 +108,7 @@ namespace scripting {
void on_inventory_open(const Player* player, const Inventory& inventory);
void on_inventory_closed(const Player* player, const Inventory& inventory);
void on_inventory_interact(int invid, int slot, int action);
void on_player_tick(Player* player, int tps);