Files
Main/Assets/GameAssets/Resources/Lua/Logic/Item/LuaItemBase.lua

286 lines
12 KiB
Lua
Raw Normal View History

2025-01-25 04:38:09 +08:00
------------------------------------------------
--作者: HJ
--日期: 2021-03-10
--文件: LuaItemBase.lua
--模块: LuaItemBase
--描述: 基础物品类,用于提供物品模型相应接口
------------------------------------------------
local L_PetEquip = require("Logic.Item.PetEquip")
local L_HorseEquip = require("Logic.Item.HorseEquip")
local L_DevilSoulEquip = require("Logic.Item.DevilSoulEquip")
local L_SoulPearl = require("Logic.Item.SoulPearl")
local L_UnrealEquip = require("Logic.Item.UnrealEquip")
local L_CItemBase = CS.Thousandto.Code.Logic.ItemBase
local LuaItemBase = {
EquipBaseAttDic = nil,
EquipSpecialAttDic = nil,
}
--判断物品类型
function LuaItemBase.GetItemTypeByModelID(cfgID)
if (cfgID >= 2000000 and cfgID < 3000000) then
return ItemType.Equip;
elseif (cfgID >= 4000000 and cfgID < 5000000) then
return ItemType.HolyEquip;
elseif (cfgID >= 5000000 and cfgID < 6000000) then
return ItemType.ImmortalEquip;
elseif (cfgID >= 6000000 and cfgID < 7000000) then
return ItemType.LingPo;
elseif (cfgID >= 7000000 and cfgID < 7010000) then
return ItemType.PetEquip;
elseif (cfgID >= 7010000 and cfgID < 8000000) then
return ItemType.SoulPearl;
elseif (cfgID >= 8000000 and cfgID < 8010000) then
return ItemType.HorseEquip;
elseif (cfgID >= 9000000 and cfgID < 9010000) then
return ItemType.DevilSoulEquip;
elseif (cfgID >= 10000000 and cfgID < 11000000) then
return ItemType.UnrealEquip;
end
local item = DataConfig.DataItem[cfgID]
if item then
return item.Type;
end
return ItemType.UnDefine;
end
--根据配置表ID生成模板数据
function LuaItemBase.CreateItemBase(cfgID)
local type = LuaItemBase.GetItemTypeByModelID(cfgID);
if (type == ItemType.PetEquip) then
return L_PetEquip:New(cfgID)
elseif (type == ItemType.SoulPearl) then
return L_SoulPearl:New(cfgID)
elseif (type == ItemType.HorseEquip) then
return L_HorseEquip:New(cfgID)
elseif (type == ItemType.DevilSoulEquip) then
return L_DevilSoulEquip:New(cfgID)
elseif (type == ItemType.UnrealEquip) then
return L_UnrealEquip:New(cfgID)
else
return L_CItemBase.CreateItemBase(cfgID)
end
end
--根据网络消息,生成模板数据
function LuaItemBase.CreateItemBaseByMsg(msg)
if msg then
local type = LuaItemBase.GetItemTypeByModelID(msg.itemModelId);
if (type == ItemType.PetEquip) then
return L_PetEquip:NewWithMsg(msg)
elseif (type == ItemType.SoulPearl) then
return L_SoulPearl:NewWithMsg(msg)
elseif (type == ItemType.HorseEquip) then
return L_HorseEquip:NewWithMsg(msg)
elseif (type == ItemType.DevilSoulEquip) then
return L_DevilSoulEquip:NewWithMsg(msg)
elseif (type == ItemType.UnrealEquip) then
return L_UnrealEquip:NewWithMsg(msg)
else
return L_CItemBase.CreateItemBaseByLuaMsg(msg)
end
end
return nil;
end
--根据装备类型获取装备部位名字
function LuaItemBase.GetEquipNameWithType(type)
local ret = nil;
if type == PetEquipType.Defalt then
ret = DataConfig.DataMessageString.Get("C_EQUIP_ALL");
elseif type == PetEquipType.Bell then
ret = DataConfig.DataMessageString.Get("C_PETEQUIP_TYPENAME1");
elseif type == PetEquipType.Necklace then
ret = DataConfig.DataMessageString.Get("C_MONSTERSOUL_XIANGQUAN");
elseif type == PetEquipType.ClawCover then
ret = DataConfig.DataMessageString.Get("C_PETEQUIP_TYPENAME2");
elseif type == PetEquipType.FuDai then
ret = DataConfig.DataMessageString.Get("C_PETEQUIP_TYPENAME3");
elseif type == 211 then
ret = DataConfig.DataMessageString.Get("C_SOULPEARL_TYPENAME1");
elseif type == 212 then
ret = DataConfig.DataMessageString.Get("C_SOULPEARL_TYPENAME2");
elseif type == 213 then
ret = DataConfig.DataMessageString.Get("C_SOULPEARL_TYPENAME3");
elseif type == 214 then
ret = DataConfig.DataMessageString.Get("C_SOULPEARL_TYPENAME4");
elseif type == 215 then
ret = DataConfig.DataMessageString.Get("C_SOULPEARL_TYPENAME5");
elseif type == 216 then
ret = DataConfig.DataMessageString.Get("C_SOULPEARL_TYPENAME6");
elseif type == 217 then
ret = DataConfig.DataMessageString.Get("C_SOULPEARL_TYPENAME7");
elseif type == 218 then
ret = DataConfig.DataMessageString.Get("C_SOULPEARL_TYPENAME8");
elseif type == 219 then
ret = DataConfig.DataMessageString.Get("C_SOULPEARL_TYPENAME9");
elseif type == 220 then
ret = DataConfig.DataMessageString.Get("C_SOULPEARL_TYPENAME10");
elseif type == MountEquipType.Face then
ret = DataConfig.DataMessageString.Get("C_MOUNT_EQUIP_TYPE_PART_FACE");
elseif type == MountEquipType.Heart then
ret = DataConfig.DataMessageString.Get("C_MOUNT_EQUIP_TYPE_PART_HEART");
elseif type == MountEquipType.Ring then
ret = DataConfig.DataMessageString.Get("C_MOUNT_EQUIP_TYPE_PART_RING");
elseif type == MountEquipType.Foot then
ret = DataConfig.DataMessageString.Get("C_MOUNT_EQUIP_TYPE_PART_FOOT");
elseif type == EquipmentType.Weapon then
ret = DataConfig.DataMessageString.Get("C_EQUIP_NAME_WEAPON");
elseif type == EquipmentType.Necklace then
ret = DataConfig.DataMessageString.Get("C_EQUIP_NAME_NECKLACE");
elseif type == EquipmentType.Helmet then
ret = DataConfig.DataMessageString.Get("C_EQUIP_NAME_HELMET");
elseif type == EquipmentType.Clothes then
ret = DataConfig.DataMessageString.Get("C_EQUIP_NAME_CLOTHES");
elseif type == EquipmentType.Belt then
ret = DataConfig.DataMessageString.Get("C_EQUIP_NAME_YAODAI");
elseif type == EquipmentType.LegGuard then
ret = DataConfig.DataMessageString.Get("C_EQUIP_NAME_BELT");
elseif type == EquipmentType.Shoe then
ret = DataConfig.DataMessageString.Get("C_EQUIP_NAME_SHOE");
elseif type == EquipmentType.FingerRing then
ret = DataConfig.DataMessageString.Get("C_EQUIP_NAME_FINGERRING");
elseif type == EquipmentType.Bracelet then
ret = DataConfig.DataMessageString.Get("C_EQUIP_NAME_Bracelet");
elseif type == EquipmentType.EarRings then
ret = DataConfig.DataMessageString.Get("C_EQUIP_NAME_EarRings");
elseif type == EquipmentType.Badge then
ret = DataConfig.DataMessageString.Get("C_EQUIP_NAME_Badge");
elseif type == UnreadEquipType.TouKui then--幻装头盔
ret = DataConfig.DataMessageString.Get("C_UNREAL_EQUIP_TYPE1");
elseif type == UnreadEquipType.ErHuan then--幻装耳环
ret = DataConfig.DataMessageString.Get("C_UNREAL_EQUIP_TYPE2");
elseif type == UnreadEquipType.XiangLian then--幻装项链
ret = DataConfig.DataMessageString.Get("C_UNREAL_EQUIP_TYPE3");
elseif type == UnreadEquipType.YiFu then--幻装衣服
ret = DataConfig.DataMessageString.Get("C_UNREAL_EQUIP_TYPE4");
elseif type == UnreadEquipType.KuZi then--幻装裤子
ret = DataConfig.DataMessageString.Get("C_UNREAL_EQUIP_TYPE5");
elseif type == UnreadEquipType.WuQi then--幻装武器
ret = DataConfig.DataMessageString.Get("C_UNREAL_EQUIP_TYPE6");
elseif type == UnreadEquipType.HuWan then--幻装护腕
ret = DataConfig.DataMessageString.Get("C_UNREAL_EQUIP_TYPE7");
elseif type == UnreadEquipType.XieZi then--幻装鞋子
ret = DataConfig.DataMessageString.Get("C_UNREAL_EQUIP_TYPE8");
elseif type == UnreadEquipType.JieZhi then--幻装戒指
ret = DataConfig.DataMessageString.Get("C_UNREAL_EQUIP_TYPE9");
elseif type == UnreadEquipType.ShouZHuo then--幻装手镯
ret = DataConfig.DataMessageString.Get("C_UNREAL_EQUIP_TYPE10");
end
return ret;
end
--获取物品类型名字
function LuaItemBase.GetTypeNameWitType(type)
local ret = nil;
if type == ItemType.Equip then
ret = DataConfig.DataMessageString.Get("C_ITEM_NAME_EQUIP")
elseif type == ItemType.Money then
ret = DataConfig.DataMessageString.Get("C_BACKPACKBAG_CURRENCY")
elseif type == ItemType.Effect then
ret = DataConfig.DataMessageString.Get("C_ITEMTYPE_EFFECTITEM");
elseif type == ItemType.Material then
ret = DataConfig.DataMessageString.Get("C_ITEM_NAME_MATERIAL");
elseif type == ItemType.GemStone then
ret = DataConfig.DataMessageString.Get("C_ITEMTYPE_DIAMAND");
elseif type == ItemType.GiftPack then
ret = DataConfig.DataMessageString.Get("C_ITEM_NAME_GIFT");
elseif type == ItemType.SpecialPingZiItem then
ret = DataConfig.DataMessageString.Get("C_ITEM_NAME_SUIPIAN");
elseif type == ItemType.Gift then
ret = DataConfig.DataMessageString.Get("C_ITEMTYPE_GIFT");
elseif type == ItemType.Normal then
ret = DataConfig.DataMessageString.Get("C_ITEM_NAME_NORMAL");
elseif type == ItemType.Special then
ret = DataConfig.DataMessageString.Get("C_ITEM_NAME_SPECIAL");
elseif type == ItemType.Title then
ret = DataConfig.DataMessageString.Get("TITLE_SYSTEM");
elseif type == ItemType.HolyEquip then
ret = DataConfig.DataMessageString.Get("ShenZhuang");
elseif type == ItemType.SpecialBox then
ret = DataConfig.DataMessageString.Get("C_ITEMTYPE_BOXS");
elseif type == ItemType.ChangeJob then
ret = DataConfig.DataMessageString.Get("C_ITEMTYPE_CHANGEJOB");
elseif type == ItemType.XiShui then
ret = DataConfig.DataMessageString.Get("C_ITEMTYPE_XISHUI");
elseif type == ItemType.VipExp then
ret = DataConfig.DataMessageString.Get("C_ITEMTYPE_VIPEXE");
elseif type == ItemType.LingPo then
ret = DataConfig.DataMessageString.Get("C_ITEMTYPE_LINGPO");
elseif type == ItemType.ImmortalEquip then
ret = DataConfig.DataMessageString.Get("C_XIANJIA");
elseif type == ItemType.PetEquip then
ret = DataConfig.DataMessageString.Get("C_ITEMTYPE_PETEQUIP");
elseif type == ItemType.HorseEquip then
ret = DataConfig.DataMessageString.Get("C_ITEMTYPE_HORSEEQUIP");
elseif type == ItemType.DevilSoulEquip then
ret = DataConfig.DataMessageString.Get("C_ITEMTYPE_DEVIL_SOUL_EQUIP");
elseif type == ItemType.DevilSoulChip then
ret = DataConfig.DataMessageString.Get("C_ITEMTYPE_DEVIL_SOUL_EQUIPCLIP");
elseif type == ItemType.UnrealEquip then
ret = DataConfig.DataMessageString.Get("C_UNREAL_EQUIP");
elseif type == ItemType.UnrealEquipChip then
ret = DataConfig.DataMessageString.Get("C_UNREAL_EQUIP_CHIP");
end
return ret;
end
--获取装备和物品的ICON
function LuaItemBase.GetItemIcon(id)
local retString = 0;
if (id >= 1000000) then
local item = DataConfig.DataEquip[id];
if item then
retString = item.Icon;
end
else
local item = DataConfig.DataItem[id];
if item then
retString = item.Icon;
end
end
return retString;
end
--获取装备和物品的名字
function LuaItemBase.GetItemName(id)
local retString = "";
if (id >= 1000000) then
local item = DataConfig.DataEquip[id];
if item then
retString = item.Name;
end
else
local item = DataConfig.DataItem[id];
if item then
retString = item.Name;
end
end
return retString;
end
function LuaItemBase.GetQualityStr(quality)
if quality == QualityCode.Green then
return DataConfig.DataMessageString.Get("C_GUILD_SORT_QUALITY_GREEN")
elseif quality == QualityCode.Blue then
return DataConfig.DataMessageString.Get("C_GUILD_SORT_QUALITY_BLUE")
elseif quality == QualityCode.Violet then
return DataConfig.DataMessageString.Get("C_GUILD_SORT_QUALITY_PURPLE")
elseif quality == QualityCode.Orange then
return DataConfig.DataMessageString.Get("C_GUILD_SORT_QUALITY_ORANGE")
elseif quality == QualityCode.Golden then
return DataConfig.DataMessageString.Get("C_GUILD_SORT_QUALITY_GOLD")
elseif quality == QualityCode.Red then
return DataConfig.DataMessageString.Get("C_GUILD_SORT_QUALITY_RED")
elseif quality == QualityCode.Pink then
return DataConfig.DataMessageString.Get("Pink_Color")
elseif quality == QualityCode.DarkGolden then
return DataConfig.DataMessageString.Get("C_COLOR_DARKGOLD")
elseif quality == QualityCode.Colorful then
return DataConfig.DataMessageString.Get("C_COLOR_HUANCAI")
end
return "";
end
return LuaItemBase