diff --git a/scripts/spells.lua b/scripts/spells.lua index 8269e72e6..29991376c 100644 --- a/scripts/spells.lua +++ b/scripts/spells.lua @@ -1,9 +1,14 @@ function creation_message(mage, type, number) local msg = message.create("item_create_spell") - msg:set_unit("mage", mage) - msg:set_int("number", number) - msg:set_resource("item", type) - return msg + local err = 0 + err = err + msg:set_unit("mage", mage) + err = err + msg:set_int("number", number) + err = err + msg:set_resource("item", type) + if err ~= 0 then + return nil + else + return msg + end end local function create_item(mage, level, name, number) diff --git a/src/bindings/bind_message.c b/src/bindings/bind_message.c index ae27573d9..6ff30e98a 100644 --- a/src/bindings/bind_message.c +++ b/src/bindings/bind_message.c @@ -72,6 +72,7 @@ int msg_set_resource(lua_message * msg, const char *param, const char *resname) { if (msg->mtype) { int i = mtype_get_param(msg->mtype, param); + const resource_type * rtype; if (i == msg->mtype->nparameters) { return E_INVALID_PARAMETER_NAME; } @@ -79,8 +80,12 @@ int msg_set_resource(lua_message * msg, const char *param, const char *resname) return E_INVALID_PARAMETER_TYPE; } - msg->args[i].v = (void *)rt_find(resname); - + rtype = rt_find(resname); + if (rtype) { + msg->args[i].v = (void *)rtype; + } else { + return E_INVALID_PARAMETER_VALUE; + } return E_OK; } return E_INVALID_MESSAGE;