From adabe781c5a627aa15e1cf1c63a9ea1c2f25e8cc Mon Sep 17 00:00:00 2001 From: MihailRis Date: Wed, 10 Jul 2024 10:12:07 +0300 Subject: [PATCH] add hud.is_paused and hud.is_inventory_open --- doc/en/scripting.md | 12 ++++++++++++ doc/ru/scripting.md | 12 ++++++++++++ res/content/base/scripts/hud.lua | 3 +++ src/logic/scripting/lua/libhud.cpp | 10 ++++++++++ 4 files changed, 37 insertions(+) diff --git a/doc/en/scripting.md b/doc/en/scripting.md index ce062577..5d4d8fc8 100644 --- a/doc/en/scripting.md +++ b/doc/en/scripting.md @@ -571,6 +571,18 @@ hud.resume() Closes the pause menu. +```python +hud.is_paused() -> bool +``` + +Returns true if pause menu is open. + +```python +hud.is_inventory_open() -> bool +``` + +Returns true if inventory is open or overlay is shown. + ### *time* library ```python diff --git a/doc/ru/scripting.md b/doc/ru/scripting.md index a648678e..50354335 100644 --- a/doc/ru/scripting.md +++ b/doc/ru/scripting.md @@ -582,6 +582,18 @@ hud.resume() Закрывает меню паузы. +```python +hud.is_paused() -> bool +``` + +Возвращает true если открыто меню паузы. + +```python +hud.is_inventory_open() -> bool +``` + +Возвращает true если открыт инвентарь или оверлей. + ## Библиотека time ```python diff --git a/res/content/base/scripts/hud.lua b/res/content/base/scripts/hud.lua index 010fec67..c72d808f 100644 --- a/res/content/base/scripts/hud.lua +++ b/res/content/base/scripts/hud.lua @@ -3,6 +3,9 @@ local DROP_INIT_VEL = {0, 3, 0} function on_hud_open() input.add_callback("player.drop", function () + if hud.is_paused() or hud.is_inventory_open() then + return + end local pid = hud.get_player() local invid, slot = player.get_inventory(pid) local itemid, itemcount = inventory.get(invid, slot) diff --git a/src/logic/scripting/lua/libhud.cpp b/src/logic/scripting/lua/libhud.cpp index b5731d1b..ecaa8947 100644 --- a/src/logic/scripting/lua/libhud.cpp +++ b/src/logic/scripting/lua/libhud.cpp @@ -124,6 +124,14 @@ static int l_hud_get_player(lua::State* L) { return lua::pushinteger(L, player->getId()); } +static int l_hud_is_paused(lua::State* L) { + return lua::pushboolean(L, hud->isPause()); +} + +static int l_hud_is_inventory_open(lua::State* L) { + return lua::pushboolean(L, hud->isInventoryOpen()); +} + const luaL_Reg hudlib [] = { {"open_inventory", lua::wrap}, {"close_inventory", lua::wrap}, @@ -134,6 +142,8 @@ const luaL_Reg hudlib [] = { {"close", lua::wrap}, {"pause", lua::wrap}, {"resume", lua::wrap}, + {"is_paused", lua::wrap}, + {"is_inventory_open", lua::wrap}, {"get_player", lua::wrap}, {NULL, NULL} };