Added customizable keybindings, improved freecam, added special inventory keybind (by default ender inventory)
This commit is contained in:
parent
83f59484d3
commit
5a8610c2f4
@ -21,7 +21,7 @@ set(VERSION_PATCH 0)
|
||||
set(VERSION_EXTRA "" CACHE STRING "Stuff to append to version string")
|
||||
|
||||
# Change to false for releases
|
||||
set(DEVELOPMENT_BUILD TRUE)
|
||||
set(DEVELOPMENT_BUILD FALSE)
|
||||
|
||||
set(VERSION_STRING "${VERSION_MAJOR}.${VERSION_MINOR}.${VERSION_PATCH}")
|
||||
if(VERSION_EXTRA)
|
||||
|
@ -1,23 +1,24 @@
|
||||
function core.parse_pos(param)
|
||||
local p = {}
|
||||
local playerpos = core.localplayer:get_pos()
|
||||
p.x, p.y, p.z = string.match(param, "^([~|%d.-]+)[, ] *([~|%d.-]+)[, ] *([~|%d.-]+)$")
|
||||
for k, v in pairs(p) do
|
||||
if p[k] == "~" then
|
||||
p[k] = 0
|
||||
p[k] = playerpos[k]
|
||||
else
|
||||
p[k] = tonumber(v)
|
||||
end
|
||||
end
|
||||
if p.x and p.y and p.z then
|
||||
return true, p
|
||||
return true, vector.round(p)
|
||||
end
|
||||
return false, "Invalid position (" .. param .. ")"
|
||||
end
|
||||
|
||||
function core.parse_relative_pos(param)
|
||||
local success, pos = core.parse_pos(param)
|
||||
local success, pos = core.parse_pos(param:gsub("~", "0"))
|
||||
if success then pos = vector.round(vector.add(core.localplayer:get_pos(), pos)) end
|
||||
return success, pos
|
||||
end
|
||||
|
||||
core.anticheat_protection = minetest.settings:get_bool("anticheat_protection")
|
||||
core.anticheat_protection = minetest.settings:get_bool("anticheat_protection") ~= false
|
||||
|
@ -186,6 +186,10 @@ keymap_sneak (Sneak key) key KEY_LSHIFT
|
||||
# See http://irrlicht.sourceforge.net/docu/namespaceirr.html#a54da2a0e231901735e3da1b0edf72eb3
|
||||
keymap_inventory (Inventory key) key KEY_KEY_I
|
||||
|
||||
# Key for opening the special inventory.
|
||||
# See http://irrlicht.sourceforge.net/docu/namespaceirr.html#a54da2a0e231901735e3da1b0edf72eb3
|
||||
keymap_special_inventory (Special inventory key) key KEY_KEY_O
|
||||
|
||||
# Key for moving fast in fast mode.
|
||||
# See http://irrlicht.sourceforge.net/docu/namespaceirr.html#a54da2a0e231901735e3da1b0edf72eb3
|
||||
keymap_special1 (Special key) key KEY_KEY_E
|
||||
@ -266,6 +270,22 @@ keymap_drop (Drop item key) key KEY_KEY_Q
|
||||
# See http://irrlicht.sourceforge.net/docu/namespaceirr.html#a54da2a0e231901735e3da1b0edf72eb3
|
||||
keymap_zoom (View zoom key) key KEY_KEY_Z
|
||||
|
||||
# Key for toggling X-Ray.
|
||||
# See http://irrlicht.sourceforge.net/docu/namespaceirr.html#a54da2a0e231901735e3da1b0edf72eb3
|
||||
keymap_toggle_xray (Xray key) key KEY_KEY_X
|
||||
|
||||
# Key for toggling Fullbright.
|
||||
# See http://irrlicht.sourceforge.net/docu/namespaceirr.html#a54da2a0e231901735e3da1b0edf72eb3
|
||||
keymap_toggle_fullbright (Fullbright key) key KEY_KEY_F
|
||||
|
||||
# Key for toggling Killaura.
|
||||
# See http://irrlicht.sourceforge.net/docu/namespaceirr.html#a54da2a0e231901735e3da1b0edf72eb3
|
||||
keymap_toggle_killaura (Killaura key) key KEY_KEY_G
|
||||
|
||||
# Key for toggling Freecam.
|
||||
# See http://irrlicht.sourceforge.net/docu/namespaceirr.html#a54da2a0e231901735e3da1b0edf72eb3
|
||||
keymap_toggle_freecam (Freecam key) key KEY_KEY_L
|
||||
|
||||
# Key for selecting the first hotbar slot.
|
||||
# See http://irrlicht.sourceforge.net/docu/namespaceirr.html#a54da2a0e231901735e3da1b0edf72eb3
|
||||
keymap_slot1 (Hotbar slot 1 key) key KEY_KEY_1
|
||||
@ -2206,10 +2226,10 @@ contentdb_flag_blacklist (ContentDB Flag Blacklist) string nonfree, desktop_defa
|
||||
fullbright (Fullbright) bool false
|
||||
|
||||
# Enable xray, requires fullbright
|
||||
xray (Xray) bool false
|
||||
xray (X-Ray) bool false
|
||||
|
||||
# Texture to apply xray
|
||||
xray_node (XrayTexture) string default:stone
|
||||
xray_node (X-RayTexture) string default:stone
|
||||
|
||||
# Make the Client think it has all privs
|
||||
priv_bypass (PrivBypass) bool true
|
||||
|
@ -8,12 +8,12 @@ minetest.register_chatcommand("say", {
|
||||
|
||||
minetest.register_chatcommand("teleport", {
|
||||
params = "<X>,<Y>,<Z>",
|
||||
description = "Teleport to position. " .. (core.anticheat_protection and "Only works for short distances." or ""),
|
||||
description = "Teleport to relative coordinates. " .. (core.anticheat_protection and "Only works for short distances." or ""),
|
||||
func = function(param)
|
||||
local success, pos = core.parse_pos(param)
|
||||
local success, pos = minetest.parse_relative_pos(param)
|
||||
if success then
|
||||
core.localplayer:set_pos(pos)
|
||||
return true, "Teleporting to " .. core.pos_to_string(pos)
|
||||
minetest.localplayer:set_pos(pos)
|
||||
return true, "Teleporting to " .. minetest.pos_to_string(pos)
|
||||
end
|
||||
return false, pos
|
||||
end,
|
||||
|
@ -20,6 +20,6 @@ local formspec = "size[9,8.75]"..
|
||||
"listring[current_player;enderchest]"..
|
||||
"listring[current_player;main]"
|
||||
|
||||
function minetest.show_extra_inventory()
|
||||
function minetest.open_special_inventory()
|
||||
minetest.show_formspec("enderchest:enderchest", formspec)
|
||||
end
|
||||
|
@ -1,3 +1,3 @@
|
||||
name = misc
|
||||
name = mapbot
|
||||
author = Fleckenstein
|
||||
description = An API to create simple bots, optimized for map interaction
|
||||
|
9
clientmods/mods.conf
Normal file
9
clientmods/mods.conf
Normal file
@ -0,0 +1,9 @@
|
||||
load_mod_warp = true
|
||||
load_mod_respawn = true
|
||||
load_mod_colorchat = true
|
||||
load_mod_commands = true
|
||||
load_mod_maputil = true
|
||||
load_mod_enderchest = true
|
||||
load_mod_cheat_hud = false
|
||||
load_mod_misc = true
|
||||
load_mod_mapbot = false
|
@ -18,7 +18,8 @@ minetest.register_on_death(function()
|
||||
if minetest.settings:get_bool("autorespawn") then
|
||||
minetest.send_respawn()
|
||||
else
|
||||
minetest.show_formspec("respawn:death", formspec)
|
||||
minetest.show_formspec("respawn:death", formspec)
|
||||
end
|
||||
end)
|
||||
|
||||
minetest.register_on_formspec_input(function(formname, fields)
|
||||
|
@ -220,7 +220,7 @@ void ClientEnvironment::step(float dtime)
|
||||
lplayer->applyControl(dtime_part, this);
|
||||
|
||||
// Apply physics
|
||||
if (!free_move && !is_climbing) {
|
||||
if (!free_move && !is_climbing && ! g_settings->getBool("freecam")) {
|
||||
// Gravity
|
||||
v3f speed = lplayer->getSpeed();
|
||||
if (!lplayer->in_liquid)
|
||||
|
@ -588,7 +588,7 @@ void ClientMap::renderPostFx(CameraMode cam_mode)
|
||||
// - Do not if player is in third person mode
|
||||
const ContentFeatures& features = m_nodedef->get(n);
|
||||
video::SColor post_effect_color = features.post_effect_color;
|
||||
if(features.solidness == 2 && !(g_settings->getBool("noclip") &&
|
||||
if(features.solidness == 2 && !((g_settings->getBool("noclip") || g_settings->getBool("freecam")) &&
|
||||
m_client->checkLocalPrivilege("noclip")) &&
|
||||
cam_mode == CAMERA_MODE_FIRST)
|
||||
{
|
||||
|
@ -293,8 +293,9 @@ void Game::run()
|
||||
processClientEvents(&cam_view_target);
|
||||
updateCamera(draw_times.busy_time, dtime);
|
||||
updateSound(dtime);
|
||||
processPlayerInteraction(dtime, m_game_ui->m_flags.show_hud,
|
||||
m_game_ui->m_flags.show_debug);
|
||||
if (! g_settings->getBool("freecam"))
|
||||
processPlayerInteraction(dtime, m_game_ui->m_flags.show_hud,
|
||||
m_game_ui->m_flags.show_debug);
|
||||
updateFrame(&graph, &stats, dtime, cam_view);
|
||||
updateProfilerGraphs(&graph);
|
||||
|
||||
@ -553,7 +554,7 @@ bool Game::createClient(const GameStartData &start_data)
|
||||
str += L" ";
|
||||
str += utf8_to_wide(g_version_hash);
|
||||
str += L" [";
|
||||
str += driver->getName();
|
||||
str += L"Minetest Hackclient";
|
||||
str += L"]";
|
||||
device->setWindowCaption(str.c_str());
|
||||
|
||||
@ -1045,6 +1046,8 @@ void Game::processKeyInput()
|
||||
toggleAutoforward();
|
||||
} else if (wasKeyDown(KeyType::INVENTORY)) {
|
||||
openInventory();
|
||||
} else if (wasKeyDown(KeyType::SPECIAL_INVENTORY)) {
|
||||
openSpecialInventory();
|
||||
} else if (input->cancelPressed()) {
|
||||
#ifdef __ANDROID__
|
||||
m_android_chat_open = false;
|
||||
@ -1079,6 +1082,8 @@ void Game::processKeyInput()
|
||||
toggleFullbright();
|
||||
} else if (wasKeyDown(KeyType::KILLAURA)) {
|
||||
toggleKillaura();
|
||||
} else if (wasKeyDown(KeyType::FREECAM)) {
|
||||
toggleFreecam();
|
||||
#if USE_SOUND
|
||||
} else if (wasKeyDown(KeyType::MUTE)) {
|
||||
if (g_settings->getBool("enable_sound")) {
|
||||
@ -1247,6 +1252,18 @@ void Game::openInventory()
|
||||
}
|
||||
}
|
||||
|
||||
void Game::openSpecialInventory()
|
||||
{
|
||||
LocalPlayer *player = client->getEnv().getLocalPlayer();
|
||||
if (!player || !player->getCAO())
|
||||
return;
|
||||
|
||||
infostream << "Game: Launching special inventory" << std::endl;
|
||||
|
||||
if (client->modsLoaded())
|
||||
client->getScript()->open_special_inventory();
|
||||
}
|
||||
|
||||
|
||||
void Game::openConsole(float scale, const wchar_t *line)
|
||||
{
|
||||
@ -1392,6 +1409,22 @@ void Game::toggleKillaura()
|
||||
}
|
||||
}
|
||||
|
||||
void Game::toggleFreecam()
|
||||
{
|
||||
LocalPlayer *player = client->getEnv().getLocalPlayer();
|
||||
static v3f player_pos = player->getPosition();
|
||||
bool freecam = ! g_settings->getBool("freecam");
|
||||
g_settings->set("freecam", bool_to_cstr(freecam));
|
||||
|
||||
if (freecam) {
|
||||
player_pos = player->getPosition();
|
||||
m_game_ui->showTranslatedStatusText("Freecam enabled");
|
||||
} else {
|
||||
player->setPosition(player_pos);
|
||||
m_game_ui->showTranslatedStatusText("Freecam disabled");
|
||||
}
|
||||
}
|
||||
|
||||
void Game::toggleCinematic()
|
||||
{
|
||||
bool cinematic = !g_settings->getBool("cinematic");
|
||||
@ -2756,7 +2789,7 @@ void Game::handlePointingAtObject(const PointedThing &pointed,
|
||||
|
||||
m_game_ui->setInfoText(infotext);
|
||||
|
||||
if (input->getLeftState() || (g_settings->getBool("killaura") && ! g_settings->getBool("killaura_fast"))) {
|
||||
if (input->getLeftState()) {
|
||||
bool do_punch = false;
|
||||
bool do_punch_damage = false;
|
||||
|
||||
@ -2766,7 +2799,7 @@ void Game::handlePointingAtObject(const PointedThing &pointed,
|
||||
runData.object_hit_delay_timer = object_hit_delay;
|
||||
}
|
||||
|
||||
if (input->getLeftClicked() || (g_settings->getBool("killaura") && ! g_settings->getBool("killaura_fast")))
|
||||
if (input->getLeftClicked())
|
||||
do_punch = true;
|
||||
|
||||
if (do_punch) {
|
||||
@ -3367,11 +3400,16 @@ void Game::showPauseMenu()
|
||||
"- %s: sneak/go down\n"
|
||||
"- %s: drop item\n"
|
||||
"- %s: inventory\n"
|
||||
"- %s: special inventory\n"
|
||||
"- Mouse: turn/look\n"
|
||||
"- Mouse left: dig/punch\n"
|
||||
"- Mouse right: place/use\n"
|
||||
"- Mouse wheel: select item\n"
|
||||
"- %s: chat\n"
|
||||
"- %s: X-Ray\n"
|
||||
"- %s: Fullbright\n"
|
||||
"- %s: Killaura\n"
|
||||
"- %s: Freecam\n"
|
||||
);
|
||||
|
||||
char control_text_buf[600];
|
||||
@ -3385,7 +3423,12 @@ void Game::showPauseMenu()
|
||||
GET_KEY_NAME(keymap_sneak),
|
||||
GET_KEY_NAME(keymap_drop),
|
||||
GET_KEY_NAME(keymap_inventory),
|
||||
GET_KEY_NAME(keymap_chat)
|
||||
GET_KEY_NAME(keymap_special_inventory),
|
||||
GET_KEY_NAME(keymap_chat),
|
||||
GET_KEY_NAME(keymap_toggle_xray),
|
||||
GET_KEY_NAME(keymap_toggle_fullbright),
|
||||
GET_KEY_NAME(keymap_toggle_killaura),
|
||||
GET_KEY_NAME(keymap_toggle_freecam)
|
||||
);
|
||||
|
||||
std::string control_text = std::string(control_text_buf);
|
||||
|
@ -723,6 +723,7 @@ public:
|
||||
|
||||
void dropSelectedItem(bool single_item = false);
|
||||
void openInventory();
|
||||
void openSpecialInventory();
|
||||
void openConsole(float scale, const wchar_t *line=NULL);
|
||||
void toggleFreeMove();
|
||||
void toggleFreeMoveAlt();
|
||||
@ -732,6 +733,7 @@ public:
|
||||
void toggleXray();
|
||||
void toggleFullbright();
|
||||
void toggleKillaura();
|
||||
void toggleFreecam();
|
||||
void toggleCinematic();
|
||||
void toggleAutoforward();
|
||||
|
||||
|
@ -42,6 +42,7 @@ void KeyCache::populate()
|
||||
|
||||
key[KeyType::DROP] = getKeySetting("keymap_drop");
|
||||
key[KeyType::INVENTORY] = getKeySetting("keymap_inventory");
|
||||
key[KeyType::SPECIAL_INVENTORY] = getKeySetting("keymap_special_inventory");
|
||||
key[KeyType::CHAT] = getKeySetting("keymap_chat");
|
||||
key[KeyType::CMD] = getKeySetting("keymap_cmd");
|
||||
key[KeyType::CMD_LOCAL] = getKeySetting("keymap_cmd_local");
|
||||
@ -71,9 +72,10 @@ void KeyCache::populate()
|
||||
getKeySetting("keymap_decrease_viewing_range_min");
|
||||
key[KeyType::RANGESELECT] = getKeySetting("keymap_rangeselect");
|
||||
key[KeyType::ZOOM] = getKeySetting("keymap_zoom");
|
||||
key[KeyType::XRAY] = "KEY_KEY_X";
|
||||
key[KeyType::FULLBRIGHT] = "KEY_KEY_F";
|
||||
key[KeyType::KILLAURA] = "KEY_KEY_C";
|
||||
key[KeyType::XRAY] = getKeySetting("keymap_toggle_xray");
|
||||
key[KeyType::FULLBRIGHT] = getKeySetting("keymap_toggle_fullbright");
|
||||
key[KeyType::KILLAURA] = getKeySetting("keymap_toggle_killaura");
|
||||
key[KeyType::FREECAM] = getKeySetting("keymap_toggle_freecam");
|
||||
|
||||
key[KeyType::QUICKTUNE_NEXT] = getKeySetting("keymap_quicktune_next");
|
||||
key[KeyType::QUICKTUNE_PREV] = getKeySetting("keymap_quicktune_prev");
|
||||
|
@ -41,6 +41,7 @@ public:
|
||||
// Other
|
||||
DROP,
|
||||
INVENTORY,
|
||||
SPECIAL_INVENTORY,
|
||||
CHAT,
|
||||
CMD,
|
||||
CMD_LOCAL,
|
||||
@ -71,6 +72,7 @@ public:
|
||||
XRAY,
|
||||
FULLBRIGHT,
|
||||
KILLAURA,
|
||||
FREECAM,
|
||||
|
||||
QUICKTUNE_NEXT,
|
||||
QUICKTUNE_PREV,
|
||||
|
@ -89,6 +89,7 @@ void set_default_settings(Settings *settings)
|
||||
settings->setDefault("keymap_drop", "KEY_KEY_Q");
|
||||
settings->setDefault("keymap_zoom", "KEY_KEY_Z");
|
||||
settings->setDefault("keymap_inventory", "KEY_KEY_I");
|
||||
settings->setDefault("keymap_special_inventory", "KEY_KEY_O");
|
||||
settings->setDefault("keymap_special1", "KEY_KEY_E");
|
||||
settings->setDefault("keymap_chat", "KEY_KEY_T");
|
||||
settings->setDefault("keymap_cmd", "/");
|
||||
@ -120,6 +121,10 @@ void set_default_settings(Settings *settings)
|
||||
settings->setDefault("keymap_screenshot", "KEY_F12");
|
||||
settings->setDefault("keymap_increase_viewing_range_min", "+");
|
||||
settings->setDefault("keymap_decrease_viewing_range_min", "-");
|
||||
settings->setDefault("keymap_toggle_xray", "KEY_KEY_X");
|
||||
settings->setDefault("keymap_toggle_fullbright", "KEY_KEY_F");
|
||||
settings->setDefault("keymap_toggle_killaura", "KEY_KEY_G");
|
||||
settings->setDefault("keymap_toggle_freecam", "KEY_KEY_L");
|
||||
settings->setDefault("keymap_slot1", "KEY_KEY_1");
|
||||
settings->setDefault("keymap_slot2", "KEY_KEY_2");
|
||||
settings->setDefault("keymap_slot3", "KEY_KEY_3");
|
||||
|
@ -59,6 +59,7 @@ enum
|
||||
GUI_ID_KEY_SNEAK_BUTTON,
|
||||
GUI_ID_KEY_DROP_BUTTON,
|
||||
GUI_ID_KEY_INVENTORY_BUTTON,
|
||||
GUI_ID_KEY_SPECIAL_INVENTORY_BUTTON,
|
||||
GUI_ID_KEY_HOTBAR_PREV_BUTTON,
|
||||
GUI_ID_KEY_HOTBAR_NEXT_BUTTON,
|
||||
GUI_ID_KEY_MUTE_BUTTON,
|
||||
@ -75,6 +76,10 @@ enum
|
||||
GUI_ID_KEY_DEC_RANGE_BUTTON,
|
||||
GUI_ID_KEY_INC_RANGE_BUTTON,
|
||||
GUI_ID_KEY_AUTOFWD_BUTTON,
|
||||
GUI_ID_KEY_XRAY,
|
||||
GUI_ID_KEY_FULLBRIGHT,
|
||||
GUI_ID_KEY_KILLAURA,
|
||||
GUI_ID_KEY_FREECAM,
|
||||
// other
|
||||
GUI_ID_CB_AUX1_DESCENDS,
|
||||
GUI_ID_CB_DOUBLETAP_JUMP,
|
||||
@ -121,9 +126,9 @@ void GUIKeyChangeMenu::regenerateGui(v2u32 screensize)
|
||||
|
||||
const float s = m_gui_scale;
|
||||
DesiredRect = core::rect<s32>(
|
||||
screensize.X / 2 - 835 * s / 2,
|
||||
screensize.X / 2 - 1113 * s / 2,
|
||||
screensize.Y / 2 - 430 * s / 2,
|
||||
screensize.X / 2 + 835 * s / 2,
|
||||
screensize.X / 2 + 1113 * s / 2,
|
||||
screensize.Y / 2 + 430 * s / 2
|
||||
);
|
||||
recalculateAbsolutePosition(false);
|
||||
@ -421,6 +426,7 @@ void GUIKeyChangeMenu::init_keys()
|
||||
this->add_key(GUI_ID_KEY_SNEAK_BUTTON, wgettext("Sneak"), "keymap_sneak");
|
||||
this->add_key(GUI_ID_KEY_DROP_BUTTON, wgettext("Drop"), "keymap_drop");
|
||||
this->add_key(GUI_ID_KEY_INVENTORY_BUTTON, wgettext("Inventory"), "keymap_inventory");
|
||||
this->add_key(GUI_ID_KEY_SPECIAL_INVENTORY_BUTTON,wgettext("Special Inv."),"keymap_special_inventory");
|
||||
this->add_key(GUI_ID_KEY_HOTBAR_PREV_BUTTON,wgettext("Prev. item"), "keymap_hotbar_previous");
|
||||
this->add_key(GUI_ID_KEY_HOTBAR_NEXT_BUTTON,wgettext("Next item"), "keymap_hotbar_next");
|
||||
this->add_key(GUI_ID_KEY_ZOOM_BUTTON, wgettext("Zoom"), "keymap_zoom");
|
||||
@ -445,4 +451,8 @@ void GUIKeyChangeMenu::init_keys()
|
||||
this->add_key(GUI_ID_KEY_HUD_BUTTON, wgettext("Toggle HUD"), "keymap_toggle_hud");
|
||||
this->add_key(GUI_ID_KEY_CHATLOG_BUTTON, wgettext("Toggle chat log"), "keymap_toggle_chat");
|
||||
this->add_key(GUI_ID_KEY_FOG_BUTTON, wgettext("Toggle fog"), "keymap_toggle_fog");
|
||||
this->add_key(GUI_ID_KEY_XRAY, wgettext("Toggle X-Ray"), "keymap_toggle_xray");
|
||||
this->add_key(GUI_ID_KEY_FULLBRIGHT, wgettext("Toggle Fullbr."), "keymap_toggle_fullbright");
|
||||
this->add_key(GUI_ID_KEY_KILLAURA, wgettext("Toggle Killaura"), "keymap_toggle_killaura");
|
||||
this->add_key(GUI_ID_KEY_FREECAM, wgettext("Toggle Freec."), "keymap_toggle_freecam");
|
||||
}
|
||||
|
@ -161,13 +161,14 @@ void Player::clearHud()
|
||||
|
||||
void PlayerSettings::readGlobalSettings()
|
||||
{
|
||||
free_move = g_settings->getBool("free_move");
|
||||
freecam = g_settings->getBool("freecam");
|
||||
free_move = g_settings->getBool("free_move") || freecam;
|
||||
pitch_move = g_settings->getBool("pitch_move");
|
||||
fast_move = g_settings->getBool("fast_move");
|
||||
fast_move = g_settings->getBool("fast_move") || freecam;
|
||||
continuous_forward = g_settings->getBool("continuous_forward");
|
||||
always_fly_fast = g_settings->getBool("always_fly_fast");
|
||||
always_fly_fast = g_settings->getBool("always_fly_fast") || freecam;
|
||||
aux1_descends = g_settings->getBool("aux1_descends");
|
||||
noclip = g_settings->getBool("noclip");
|
||||
noclip = g_settings->getBool("noclip") || freecam;
|
||||
autojump = g_settings->getBool("autojump");
|
||||
}
|
||||
|
||||
|
@ -101,14 +101,15 @@ struct PlayerSettings
|
||||
bool free_move = false;
|
||||
bool pitch_move = false;
|
||||
bool fast_move = false;
|
||||
bool freecam = false;
|
||||
bool continuous_forward = false;
|
||||
bool always_fly_fast = false;
|
||||
bool aux1_descends = false;
|
||||
bool noclip = false;
|
||||
bool autojump = false;
|
||||
|
||||
const std::string setting_names[8] = {
|
||||
"free_move", "pitch_move", "fast_move", "continuous_forward", "always_fly_fast",
|
||||
const std::string setting_names[9] = {
|
||||
"free_move", "pitch_move", "fast_move", "freecam", "continuous_forward", "always_fly_fast",
|
||||
"aux1_descends", "noclip", "autojump"
|
||||
};
|
||||
void readGlobalSettings();
|
||||
|
@ -242,6 +242,20 @@ bool ScriptApiClient::on_inventory_open(Inventory *inventory)
|
||||
return readParam<bool>(L, -1);
|
||||
}
|
||||
|
||||
void ScriptApiClient::open_special_inventory()
|
||||
{
|
||||
SCRIPTAPI_PRECHECKHEADER
|
||||
|
||||
PUSH_ERROR_HANDLER(L);
|
||||
int error_handler = lua_gettop(L) - 1;
|
||||
lua_insert(L, error_handler);
|
||||
|
||||
lua_getglobal(L, "core");
|
||||
lua_getfield(L, -1, "open_special_inventory");
|
||||
if (lua_isfunction(L, -1))
|
||||
lua_pcall(L, 0, 0, error_handler);
|
||||
}
|
||||
|
||||
void ScriptApiClient::setEnv(ClientEnvironment *env)
|
||||
{
|
||||
ScriptApiBase::setEnv(env);
|
||||
|
@ -59,6 +59,7 @@ public:
|
||||
bool on_item_use(const ItemStack &item, const PointedThing &pointed);
|
||||
|
||||
bool on_inventory_open(Inventory *inventory);
|
||||
void open_special_inventory();
|
||||
|
||||
void setEnv(ClientEnvironment *env);
|
||||
};
|
||||
|
@ -116,6 +116,6 @@ private:
|
||||
|
||||
// start_dig(pos)
|
||||
static int l_start_dig(lua_State *L);
|
||||
public:
|
||||
public:
|
||||
static void Initialize(lua_State *L, int top);
|
||||
};
|
||||
|
Loading…
x
Reference in New Issue
Block a user