From 14ba94ad6a0e2176106af08e41d99ad81b03e9e4 Mon Sep 17 00:00:00 2001 From: kwolekr Date: Sun, 21 Apr 2013 12:55:46 -0400 Subject: [PATCH] Fix hud_change stat argument retrieval --- src/scriptapi_object.cpp | 18 ++++++++++-------- 1 file changed, 10 insertions(+), 8 deletions(-) diff --git a/src/scriptapi_object.cpp b/src/scriptapi_object.cpp index 3d56aad2..9152c9eb 100644 --- a/src/scriptapi_object.cpp +++ b/src/scriptapi_object.cpp @@ -788,15 +788,17 @@ int ObjectRef::l_hud_change(lua_State *L) if (player == NULL) return 0; - u32 id = -1; - if (!lua_isnil(L, 2)) - id = lua_tonumber(L, 2); - - HudElementStat stat = (HudElementStat)getenumfield(L, 3, "stat", - es_HudElementStat, HUD_STAT_NUMBER); - + u32 id = !lua_isnil(L, 2) ? lua_tonumber(L, 2) : -1; if (id >= player->hud.size()) return 0; + + HudElementStat stat = HUD_STAT_NUMBER; + if (!lua_isnil(L, 3)) { + int statint; + std::string statstr = lua_tostring(L, 3); + stat = string_to_enum(es_HudElementStat, statint, statstr) ? + (HudElementStat)statint : HUD_STAT_NUMBER; + } void *value = NULL; HudElement *e = player->hud[id]; @@ -832,7 +834,7 @@ int ObjectRef::l_hud_change(lua_State *L) e->dir = lua_tonumber(L, 4); value = &e->dir; } - + get_server(L)->hudChange(player, id, stat, value); lua_pushboolean(L, true); -- 2.30.2