diff --git a/README.md b/README.md index bedf849..b6863f7 100644 --- a/README.md +++ b/README.md @@ -99,7 +99,12 @@ Eluna API for AC: ### Object - Added `Object:IsPlayer()`: https://github.com/azerothcore/mod-eluna/pull/42 +### Item +- Added `Item:GetItemTemplate()`: https://github.com/azerothcore/mod-eluna/pull/84 + ### Misc - Added `HttpRequest()`: https://github.com/azerothcore/mod-eluna/pull/2 +- Added `GetItemTemplate(itemEntry)`: https://github.com/azerothcore/mod-eluna/pull/84 - Added `ChatHandler` methods: https://github.com/azerothcore/mod-eluna/pull/23 +- Added `ItemTemplate` methods: https://github.com/azerothcore/mod-eluna/pull/84 - Added logging with `ELUNA_LOG_INFO` for `RunCommand()`: https://github.com/azerothcore/mod-eluna/pull/75 diff --git a/src/LuaEngine/GlobalMethods.h b/src/LuaEngine/GlobalMethods.h index a1779e8..bd213ad 100644 --- a/src/LuaEngine/GlobalMethods.h +++ b/src/LuaEngine/GlobalMethods.h @@ -324,6 +324,13 @@ namespace LuaGlobalFunctions return 1; } + int GetItemTemplate(lua_State* L) + { + uint32 entry = Eluna::CHECKVAL(L, 1); + Eluna::Push(L, eObjectMgr->GetItemTemplate(entry)); + return 1; + } + /** * Builds a [GameObject]'s GUID. * diff --git a/src/LuaEngine/ItemMethods.h b/src/LuaEngine/ItemMethods.h index ca45c63..336dcd6 100644 --- a/src/LuaEngine/ItemMethods.h +++ b/src/LuaEngine/ItemMethods.h @@ -642,6 +642,17 @@ namespace LuaItem return 1; } + /** + * Returns the [ItemTemplate] for this [Item]. + * + * @return ItemTemplate itemTemplate + */ + int GetItemTemplate(lua_State* L, Item* item) + { + Eluna::Push(L, item->GetTemplate()); + return 1; + } + /** * Sets the [Player] specified as the owner of the [Item] * diff --git a/src/LuaEngine/ItemTemplateMethods.h b/src/LuaEngine/ItemTemplateMethods.h new file mode 100644 index 0000000..401572c --- /dev/null +++ b/src/LuaEngine/ItemTemplateMethods.h @@ -0,0 +1,191 @@ +/* +* Copyright (C) 2010 - 2016 Eluna Lua Engine +* This program is free software licensed under GPL version 3 +* Please see the included DOCS/LICENSE.md for more information +*/ + +#ifndef ITEMTEMPLATEMETHODS_H +#define ITEMTEMPLATEMETHODS_H + +#include "Chat.h" + +namespace LuaItemTemplate +{ + /** + * Returns the [ItemTemplate]'s ID. + * + * @return uint32 itemId + */ + int GetItemId(lua_State* L, ItemTemplate* itemTemplate) + { + Eluna::Push(L, itemTemplate->ItemId); + return 1; + } + + /** + * Returns the [ItemTemplate]'s class. + * + * @return uint32 class + */ + int GetClass(lua_State* L, ItemTemplate* itemTemplate) + { + Eluna::Push(L, itemTemplate->Class); + return 1; + } + + /** + * Returns the [ItemTemplate]'s subclass. + * + * @return uint32 subClass + */ + int GetSubClass(lua_State* L, ItemTemplate* itemTemplate) + { + Eluna::Push(L, itemTemplate->SubClass); + return 1; + } + + /** + * Returns the [ItemTemplate]'s name. + * + * @return string name + */ + int GetName(lua_State* L, ItemTemplate* itemTemplate) + { + Eluna::Push(L, itemTemplate->Name1); + return 1; + } + + /** + * Returns the [ItemTemplate]'s display ID. + * + * @return uint32 displayId + */ + int GetDisplayId(lua_State* L, ItemTemplate* itemTemplate) + { + Eluna::Push(L, itemTemplate->DisplayInfoID); + return 1; + } + + /** + * Returns the [ItemTemplate]'s quality. + * + * @return uint32 quality + */ + int GetQuality(lua_State* L, ItemTemplate* itemTemplate) + { + Eluna::Push(L, itemTemplate->Quality); + return 1; + } + + /** + * Returns the [ItemTemplate]'s flags. + * + * @return uint32 flags + */ + int GetFlags(lua_State* L, ItemTemplate* itemTemplate) + { + Eluna::Push(L, itemTemplate->Flags); + return 1; + } + + /** + * Returns the [ItemTemplate]'s extra flags. + * + * @return uint32 flags + */ + int GetExtraFlags(lua_State* L, ItemTemplate* itemTemplate) + { + Eluna::Push(L, itemTemplate->Flags2); + return 1; + } + + /** + * Returns the [ItemTemplate]'s default purchase count. + * + * @return uint32 buyCount + */ + int GetBuyCount(lua_State* L, ItemTemplate* itemTemplate) + { + Eluna::Push(L, itemTemplate->BuyCount); + return 1; + } + + /** + * Returns the [ItemTemplate]'s purchase price. + * + * @return int32 buyPrice + */ + int GetBuyPrice(lua_State* L, ItemTemplate* itemTemplate) + { + Eluna::Push(L, itemTemplate->BuyPrice); + return 1; + } + + /** + * Returns the [ItemTemplate]'s sell price. + * + * @return uint32 sellPrice + */ + int GetSellPrice(lua_State* L, ItemTemplate* itemTemplate) + { + Eluna::Push(L, itemTemplate->SellPrice); + return 1; + } + + /** + * Returns the [ItemTemplate]'s inventory type. + * + * @return uint32 inventoryType + */ + int GetInventoryType(lua_State* L, ItemTemplate* itemTemplate) + { + Eluna::Push(L, itemTemplate->InventoryType); + return 1; + } + + /** + * Returns the [Player] classes allowed to use this [ItemTemplate]. + * + * @return uint32 allowableClass + */ + int GetAllowableClass(lua_State* L, ItemTemplate* itemTemplate) + { + Eluna::Push(L, itemTemplate->AllowableClass); + return 1; + } + + /** + * Returns the [Player] races allowed to use this [ItemTemplate]. + * + * @return uint32 allowableRace + */ + int GetAllowableRace(lua_State* L, ItemTemplate* itemTemplate) + { + Eluna::Push(L, itemTemplate->AllowableRace); + return 1; + } + + /** + * Returns the [ItemTemplate]'s item level. + * + * @return uint32 itemLevel + */ + int GetItemLevel(lua_State* L, ItemTemplate* itemTemplate) + { + Eluna::Push(L, itemTemplate->ItemLevel); + return 1; + } + + /** + * Returns the minimum level required to use this [ItemTemplate]. + * + * @return uint32 requiredLevel + */ + int GetRequiredLevel(lua_State* L, ItemTemplate* itemTemplate) + { + Eluna::Push(L, itemTemplate->RequiredLevel); + return 1; + } +} + +#endif diff --git a/src/LuaEngine/LuaFunctions.cpp b/src/LuaEngine/LuaFunctions.cpp index 0ff5110..2dbbb6e 100644 --- a/src/LuaEngine/LuaFunctions.cpp +++ b/src/LuaEngine/LuaFunctions.cpp @@ -38,6 +38,7 @@ extern "C" #include "BattleGroundMethods.h" #include "ChatHandlerMethods.h" #include "AchievementMethods.h" +#include "ItemTemplateMethods.h" luaL_Reg GlobalMethods[] = { @@ -92,6 +93,7 @@ luaL_Reg GlobalMethods[] = { "GetPlayerCount", &LuaGlobalFunctions::GetPlayerCount }, { "GetPlayerGUID", &LuaGlobalFunctions::GetPlayerGUID }, { "GetItemGUID", &LuaGlobalFunctions::GetItemGUID }, + { "GetItemTemplate", &LuaGlobalFunctions::GetItemTemplate }, { "GetObjectGUID", &LuaGlobalFunctions::GetObjectGUID }, { "GetUnitGUID", &LuaGlobalFunctions::GetUnitGUID }, { "GetGUIDLow", &LuaGlobalFunctions::GetGUIDLow }, @@ -961,6 +963,7 @@ ElunaRegister ItemMethods[] = #endif { "GetItemSet", &LuaItem::GetItemSet }, { "GetBagSize", &LuaItem::GetBagSize }, + { "GetItemTemplate", &LuaItem::GetItemTemplate }, // Setters { "SetOwner", &LuaItem::SetOwner }, @@ -1002,6 +1005,27 @@ ElunaRegister ItemMethods[] = { NULL, NULL } }; +ElunaRegister ItemTemplateMethods[] = +{ + { "GetItemId", &LuaItemTemplate::GetItemId }, + { "GetClass", &LuaItemTemplate::GetClass }, + { "GetSubClass", &LuaItemTemplate::GetSubClass }, + { "GetName", &LuaItemTemplate::GetName }, + { "GetDisplayId", &LuaItemTemplate::GetDisplayId }, + { "GetQuality", &LuaItemTemplate::GetQuality }, + { "GetFlags", &LuaItemTemplate::GetFlags }, + { "GetExtraFlags", &LuaItemTemplate::GetExtraFlags }, + { "GetBuyCount", &LuaItemTemplate::GetBuyCount }, + { "GetBuyPrice", &LuaItemTemplate::GetBuyPrice }, + { "GetSellPrice", &LuaItemTemplate::GetSellPrice }, + { "GetInventoryType", &LuaItemTemplate::GetInventoryType }, + { "GetAllowableClass", &LuaItemTemplate::GetAllowableClass }, + { "GetAllowableRace", &LuaItemTemplate::GetAllowableRace }, + { "GetItemLevel", &LuaItemTemplate::GetItemLevel }, + { "GetRequiredLevel", &LuaItemTemplate::GetRequiredLevel }, + { NULL, NULL } +}; + ElunaRegister AuraMethods[] = { // Getters @@ -1436,6 +1460,9 @@ void RegisterFunctions(Eluna* E) ElunaTemplate::SetMethods(E, ObjectMethods); ElunaTemplate::SetMethods(E, ItemMethods); + ElunaTemplate::Register(E, "ItemTemplate"); + ElunaTemplate::SetMethods(E, ItemTemplateMethods); + #ifndef CLASSIC #ifndef TBC ElunaTemplate::Register(E, "Vehicle");