aboutsummaryrefslogtreecommitdiff
path: root/src/script
diff options
context:
space:
mode:
authorLoïc Blot <nerzhul@users.noreply.github.com>2017-05-07 12:13:15 +0200
committerGitHub <noreply@github.com>2017-05-07 12:13:15 +0200
commitc1b3ed4180dea16e2fa77663a7d2bf155595dd60 (patch)
tree2cb74486cb3a493716be611ca4cf44d666dec3bf /src/script
parent0d7c37943bf29b2c4956576c15efa796d5b5f2d4 (diff)
downloadminetest-c1b3ed4180dea16e2fa77663a7d2bf155595dd60.tar.gz
minetest-c1b3ed4180dea16e2fa77663a7d2bf155595dd60.tar.bz2
minetest-c1b3ed4180dea16e2fa77663a7d2bf155595dd60.zip
Player attrs: permits to remove an attribute by setting value to nil (#5716)
* Player attrs: permits to remove an attribute by setting value to nil When doing player:set_attribute("attr", nil) remove attribute Also remove a useless check on C++ API part (already done by checkplayer) Fix #5709
Diffstat (limited to 'src/script')
-rw-r--r--src/script/lua_api/l_object.cpp7
1 files changed, 4 insertions, 3 deletions
diff --git a/src/script/lua_api/l_object.cpp b/src/script/lua_api/l_object.cpp
index 6f61ab55c..c7a31d048 100644
--- a/src/script/lua_api/l_object.cpp
+++ b/src/script/lua_api/l_object.cpp
@@ -1202,9 +1202,10 @@ int ObjectRef::l_set_attribute(lua_State *L)
}
std::string attr = luaL_checkstring(L, 2);
- std::string value = luaL_checkstring(L, 3);
-
- if (co->getType() == ACTIVEOBJECT_TYPE_PLAYER) {
+ if (lua_isnil(L, 3)) {
+ co->removeExtendedAttribute(attr);
+ } else {
+ std::string value = luaL_checkstring(L, 3);
co->setExtendedAttribute(attr, value);
}
return 1;