diff options
author | PilzAdam <pilzadam@minetest.net> | 2013-12-03 22:26:40 +0100 |
---|---|---|
committer | PilzAdam <pilzadam@minetest.net> | 2013-12-03 23:20:00 +0100 |
commit | e51ad5337f78060557d63de6407a2c6bce071aba (patch) | |
tree | 1036cc4adb72c49a335787f295746f6a23ee6607 | |
parent | 15be2659eae6da2c3807713eb6e068d8aa436423 (diff) | |
download | minetest-e51ad5337f78060557d63de6407a2c6bce071aba.tar.gz minetest-e51ad5337f78060557d63de6407a2c6bce071aba.tar.bz2 minetest-e51ad5337f78060557d63de6407a2c6bce071aba.zip |
Use a table in set_physics_override()
-rw-r--r-- | doc/lua_api.txt | 12 | ||||
-rw-r--r-- | src/script/lua_api/l_object.cpp | 38 |
2 files changed, 27 insertions, 23 deletions
diff --git a/doc/lua_api.txt b/doc/lua_api.txt index 410998cc6..3505b4635 100644 --- a/doc/lua_api.txt +++ b/doc/lua_api.txt @@ -1706,11 +1706,13 @@ Player-only: (no-op for other objects) {jump=bool,right=bool,left=bool,LMB=bool,RMB=bool,sneak=bool,aux1=bool,down=bool,up=bool} - get_player_control_bits(): returns integer with bit packed player pressed keys bit nr/meaning: 0/up ,1/down ,2/left ,3/right ,4/jump ,5/aux1 ,6/sneak ,7/LMB ,8/RMB -- set_physics_override(speed, jump, gravity, sneak, sneak_glitch) - modifies per-player walking speed, jump height, and gravity. - Values default to 1 and act as offsets to the physics settings - in minetest.conf. nil will keep the current setting. - sneak and sneak_glitch are booleans, default is true +- set_physics_override({ + speed = 1.0, -- multiplier to default value + jump = 1.0, -- multiplier to default value + gravity = 1.0, -- multiplier to default value + sneak = true, -- whether player can sneak + sneak_glitch = true, -- whether player can use the sneak glitch + }) - hud_add(hud definition): add a HUD element described by HUD def, returns ID number on success - hud_remove(id): remove the HUD element of the specified id - hud_change(id, stat, value): change a value of a previously added HUD element diff --git a/src/script/lua_api/l_object.cpp b/src/script/lua_api/l_object.cpp index 5e1517e46..3a990887b 100644 --- a/src/script/lua_api/l_object.cpp +++ b/src/script/lua_api/l_object.cpp @@ -357,25 +357,27 @@ int ObjectRef::l_set_physics_override(lua_State *L) PlayerSAO *co = (PlayerSAO *) getobject(ref); if(co == NULL) return 0; // Do it - if(!lua_isnil(L, 2)){ - co->m_physics_override_speed = lua_tonumber(L, 2); - co->m_physics_override_sent = false; - } - if(!lua_isnil(L, 3)){ - co->m_physics_override_jump = lua_tonumber(L, 3); - co->m_physics_override_sent = false; - } - if(!lua_isnil(L, 4)){ - co->m_physics_override_gravity = lua_tonumber(L, 4); - co->m_physics_override_sent = false; - } - if (lua_isboolean(L, 5)) { - co->m_physics_override_sneak = lua_toboolean(L, 5); - co->m_physics_override_sent = false; - } - if (lua_isboolean(L, 6)) { - co->m_physics_override_sneak_glitch = lua_toboolean(L, 6); + if (lua_istable(L, 2)) { + co->m_physics_override_speed = getfloatfield_default(L, 2, "speed", co->m_physics_override_speed); + co->m_physics_override_jump = getfloatfield_default(L, 2, "jump", co->m_physics_override_jump); + co->m_physics_override_gravity = getfloatfield_default(L, 2, "gravity", co->m_physics_override_gravity); + co->m_physics_override_sneak = getboolfield_default(L, 2, "sneak", co->m_physics_override_sneak); + co->m_physics_override_sneak_glitch = getboolfield_default(L, 2, "sneak_glitch", co->m_physics_override_sneak_glitch); co->m_physics_override_sent = false; + } else { + // old, non-table format + if(!lua_isnil(L, 2)){ + co->m_physics_override_speed = lua_tonumber(L, 2); + co->m_physics_override_sent = false; + } + if(!lua_isnil(L, 3)){ + co->m_physics_override_jump = lua_tonumber(L, 3); + co->m_physics_override_sent = false; + } + if(!lua_isnil(L, 4)){ + co->m_physics_override_gravity = lua_tonumber(L, 4); + co->m_physics_override_sent = false; + } } return 0; } |