int LuaAura_GetVar(lua_State * L, Aura * aura) { TEST_AURA_RET_NULL(); const char* var = luaL_checkstring(L,1); int subindex = luaL_optint(L,2,0); if (!var || subindex < 0) RET_NIL(true); SpellEntry * proto = aura->m_spellProto; if(proto == NULL) RET_NIL(true); LuaSpellEntry l = GetLuaSpellEntryByName(var); if (!l.name) RET_NIL(true); switch (l.typeId) //0: int, 1: char*, 2: bool, 3: float { case 0: lua_pushinteger(L, GET_SPELLVAR_INT(proto,l.offset,subindex)); break; case 1: lua_pushstring(L, GET_SPELLVAR_CHAR(proto,l.offset,subindex)); break; case 2: lua_pushboolean(L, (GET_SPELLVAR_BOOL(proto,l.offset,subindex)) ? 1 : 0); break; case 3: lua_pushnumber(L, GET_SPELLVAR_FLOAT(proto,l.offset,subindex)); break; } return 1; }
int LuaGlobalFunctions_GetDBCSpellVar(lua_State * L) { uint32 entry = luaL_checkinteger(L,1); const char* var = luaL_checkstring(L,2); int subindex = luaL_optint(L,3,0); SpellEntry * proto = dbcSpell.LookupEntryForced(entry); if (!entry || !var || subindex < 0 || !proto) RET_NIL(true); LuaSpellEntry l = GetLuaSpellEntryByName(var); if (!l.name) RET_NIL(true); switch (l.typeId) //0: int, 1: char*, 2: bool, 3: float { case 0: lua_pushinteger(L, GET_SPELLVAR_INT(proto,l.offset,subindex)); break; case 1: lua_pushstring(L, GET_SPELLVAR_CHAR(proto,l.offset,subindex)); break; case 2: lua_pushboolean(L, (GET_SPELLVAR_BOOL(proto,l.offset,subindex)) ? 1 : 0); break; case 3: lua_pushnumber(L, GET_SPELLVAR_FLOAT(proto,l.offset,subindex)); break; } return 1; }
int LuaSpell_SetVar(lua_State * L, Spell * sp) { if(sp == NULL) RET_BOOL(false); const char* var = luaL_checkstring(L,1); if (var == NULL) RET_BOOL(false); int subindex = 0; if (lua_gettop(L) == 3) { subindex = luaL_optint(L,2,0); } if (subindex < 0) RET_BOOL(false); int valindex = 2; if (subindex) valindex++; // sp->InitProtoOverride(); SpellEntry * proto = sp->GetSpellProto(); if(proto == NULL) RET_BOOL(false); LuaSpellEntry l = GetLuaSpellEntryByName(var); if (!l.name) RET_BOOL(false); switch (l.typeId) //0: int, 1: char*, 2: bool, 3: float { case 0: GET_SPELLVAR_INT(proto,l.offset,subindex) = luaL_checkinteger(L, valindex); lua_pushboolean(L, 1); break; case 1: strcpy(GET_SPELLVAR_CHAR(proto,l.offset,subindex), luaL_checkstring(L, valindex)); lua_pushboolean(L, 1); break; case 2: GET_SPELLVAR_BOOL(proto,l.offset,subindex) = CHECK_BOOL(L, valindex); lua_pushboolean(L, 1); break; case 3: GET_SPELLVAR_FLOAT(proto,l.offset,subindex) = (float)luaL_checknumber(L, valindex); lua_pushboolean(L, 1); break; default: RET_BOOL(false); break; } return 1; }
int LuaSpell_ResetVar(lua_State * L, Spell * sp) { if (sp == NULL) RET_BOOL(false); const char* var = luaL_checkstring(L,1); if (var == NULL) RET_BOOL(false); int subindex = luaL_optint(L,2,0); if (subindex < 0) RET_BOOL(false); SpellEntry * proto = sp->GetSpellProto(); if (proto == NULL) RET_NIL(false); LuaSpellEntry l = GetLuaSpellEntryByName(var); if (!l.name) RET_BOOL(false); switch (l.typeId) //0: int, 1: char*, 2: bool, 3: float { case 0: GET_SPELLVAR_INT(proto, l.offset,subindex) = GET_SPELLVAR_INT(sp->m_spellInfo,l.offset,subindex); lua_pushboolean(L, 1); break; case 1: GET_SPELLVAR_CHAR(proto, l.offset,subindex) = GET_SPELLVAR_CHAR(sp->m_spellInfo,l.offset,subindex); lua_pushboolean(L, 1); break; case 2: GET_SPELLVAR_BOOL(proto, l.offset,subindex) = GET_SPELLVAR_BOOL(sp->m_spellInfo,l.offset,subindex); lua_pushboolean(L, 1); break; case 3: GET_SPELLVAR_FLOAT(proto, l.offset,subindex) = GET_SPELLVAR_FLOAT(sp->m_spellInfo,l.offset,subindex); lua_pushboolean(L, 1); break; default: RET_BOOL(false); break; } return 1; }
int LuaAura_SetVar(lua_State * L, Aura * aura) { TEST_AURA_RET(); const char* var = luaL_checkstring(L,1); int subindex = 0; if (lua_gettop(L) == 3) subindex = luaL_optint(L,2,0); if (!var || subindex < 0) RET_BOOL(false); int valindex = 2; if(subindex) valindex++; SpellEntry * proto = aura->m_spellProto; if(proto == NULL) RET_NIL(true); LuaSpellEntry l = GetLuaSpellEntryByName(var); if (!l.name) RET_BOOL(false); switch (l.typeId) //0: int, 1: char*, 2: bool, 3: float { case 0: GET_SPELLVAR_INT(proto,l.offset,subindex) = luaL_checkinteger(L, valindex); lua_pushboolean(L, 1); break; case 1: strcpy(GET_SPELLVAR_CHAR(proto,l.offset,subindex), luaL_checkstring(L, valindex)); lua_pushboolean(L, 1); break; case 2: GET_SPELLVAR_BOOL(proto,l.offset,subindex) = CHECK_BOOL(L, valindex); lua_pushboolean(L, 1); break; case 3: GET_SPELLVAR_FLOAT(proto,l.offset,subindex) = (float)luaL_checknumber(L, valindex); lua_pushboolean(L, 1); break; } return 1; }
int LuaGlobalFunctions_SetDBCSpellVar(lua_State * L) { uint32 entry = luaL_checkinteger(L,1); const char* var = luaL_checkstring(L,2); int subindex = 0; if (lua_gettop(L) == 4) subindex = luaL_optint(L,3,0); int valindex = 3; if (subindex) valindex++; SpellEntry * proto = dbcSpell.LookupEntryForced(entry); if (!entry || !var || subindex < 0 || !proto) RET_BOOL(false); LuaSpellEntry l = GetLuaSpellEntryByName(var); if (!l.name) RET_BOOL(false); switch (l.typeId) //0: int, 1: char*, 2: bool, 3: float { case 0: GET_SPELLVAR_INT(proto,l.offset,subindex) = luaL_checkinteger(L, valindex); lua_pushboolean(L, 1); break; case 1: strcpy(GET_SPELLVAR_CHAR(proto,l.offset,subindex), luaL_checkstring(L, valindex)); lua_pushboolean(L, 1); break; case 2: GET_SPELLVAR_BOOL(proto,l.offset,subindex) = CHECK_BOOL(L, valindex); lua_pushboolean(L, 1); break; case 3: GET_SPELLVAR_FLOAT(proto,l.offset,subindex) = (float)luaL_checknumber(L, valindex); lua_pushboolean(L, 1); break; } return 1; }