/* Utility Functions Created By: Daz */ #include "nw_inc_gff" #include "nw_inc_nui" string Util_GetIconResref(object oItem, json jItem, int nBaseItem); string Util_GetIconResref(object oItem, json jItem, int nBaseItem) { if (nBaseItem == BASE_ITEM_CLOAK) // Cloaks use PLTs so their default icon doesn't really work return "iit_cloak"; else if (nBaseItem == BASE_ITEM_SPELLSCROLL || nBaseItem == BASE_ITEM_ENCHANTED_SCROLL) {// Scrolls get their icon from the cast spell property if (GetItemHasItemProperty(oItem, ITEM_PROPERTY_CAST_SPELL)) { itemproperty ip = GetFirstItemProperty(oItem); while (GetIsItemPropertyValid(ip)) { if (GetItemPropertyType(ip) == ITEM_PROPERTY_CAST_SPELL) return Get2DAString("iprp_spells", "Icon", GetItemPropertySubType(ip)); ip = GetNextItemProperty(oItem); } } } else if (Get2DAString("baseitems", "ModelType", nBaseItem) == "0") {// Create the icon resref for simple modeltype items json jSimpleModel = GffGetByte(jItem, "ModelPart1"); if (JsonGetType(jSimpleModel) == JSON_TYPE_INTEGER) { string sSimpleModelId = IntToString(JsonGetInt(jSimpleModel)); while (GetStringLength(sSimpleModelId) < 3)// Padding... { sSimpleModelId = "0" + sSimpleModelId; } string sDefaultIcon = Get2DAString("baseitems", "DefaultIcon", nBaseItem); switch (nBaseItem) { case BASE_ITEM_MISCSMALL: case BASE_ITEM_CRAFTMATERIALSML: sDefaultIcon = "iit_smlmisc_" + sSimpleModelId; break; case BASE_ITEM_MISCMEDIUM: case BASE_ITEM_CRAFTMATERIALMED: case 112:/* Crafting Base Material */ sDefaultIcon = "iit_midmisc_" + sSimpleModelId; break; case BASE_ITEM_MISCLARGE: sDefaultIcon = "iit_talmisc_" + sSimpleModelId; break; case BASE_ITEM_MISCTHIN: sDefaultIcon = "iit_thnmisc_" + sSimpleModelId; break; } int nLength = GetStringLength(sDefaultIcon); if (GetSubString(sDefaultIcon, nLength - 4, 1) == "_")// Some items have a default icon of xx_yyy_001, we strip the last 4 symbols if that is the case sDefaultIcon = GetStringLeft(sDefaultIcon, nLength - 4); string sIcon = sDefaultIcon + "_" + sSimpleModelId; if (ResManGetAliasFor(sIcon, RESTYPE_TGA) != "")// Check if the icon actually exists, if not, we'll fall through and return the default icon return sIcon; } } // For everything else use the item's default icon return Get2DAString("baseitems", "DefaultIcon", nBaseItem); } json Util_GetModelPart(string sDefaultIcon, string sType, json jPart) { if (JsonGetType(jPart) == JSON_TYPE_INTEGER) { string sModelPart = IntToString(JsonGetInt(jPart)); while (GetStringLength(sModelPart) < 3) { sModelPart = "0" + sModelPart; } string sIcon = sDefaultIcon + sType + sModelPart; if (ResManGetAliasFor(sIcon, RESTYPE_TGA) != "") return JsonString(sIcon); } return JsonString(""); } json Util_GetComplexIconData(json jItem, int nBaseItem); json Util_GetComplexIconData(json jItem, int nBaseItem) { if (Get2DAString("baseitems", "ModelType", nBaseItem) == "2") { string sDefaultIcon = Get2DAString("baseitems", "DefaultIcon", nBaseItem); json jComplexIcon = JsonObject(); jComplexIcon = JsonObjectSet(jComplexIcon, "top", Util_GetModelPart(sDefaultIcon, "_t_", GffGetByte(jItem, "ModelPart3"))); jComplexIcon = JsonObjectSet(jComplexIcon, "middle", Util_GetModelPart(sDefaultIcon, "_m_", GffGetByte(jItem, "ModelPart2"))); jComplexIcon = JsonObjectSet(jComplexIcon, "bottom", Util_GetModelPart(sDefaultIcon, "_b_", GffGetByte(jItem, "ModelPart1"))); return jComplexIcon; } return JsonNull(); } string Util_Get2DAStringByStrRef(string s2DA, string sColumn, int nRow); string Util_Get2DAStringByStrRef(string s2DA, string sColumn, int nRow) { return GetStringByStrRef(StringToInt(Get2DAString(s2DA, sColumn, nRow))); } string Util_GetItemName(object oItem, int bIdentified); string Util_GetItemName(object oItem, int bIdentified) { return bIdentified ? GetName(oItem) : Util_Get2DAStringByStrRef("baseitems", "Name", GetBaseItemType(oItem)) + " (Unidentified)"; } void Util_SendDebugMessage(string sMessage); void Util_SendDebugMessage(string sMessage) { object oPlayer = GetFirstPC(); while (oPlayer != OBJECT_INVALID) { SendMessageToPC(oPlayer, sMessage); oPlayer = GetNextPC(); } }