public void AsGem(_DBC_ITEM_GEM gemDefine) { if (gemDefine == null) { throw new NullReferenceException("Gem define is null in CObject_Item_Gem.AsGem()"); } m_theBaseDef = gemDefine; m_nParticularID = (((((m_theBaseDef.nClass * 100) + m_theBaseDef.nQuality) * 100) + m_theBaseDef.nType) * 1000) + m_theBaseDef.nGemIndex; }
// 得到宝石的附加功能 public void GetGemExtAttr(int iGemIndex, ref string strGemAttr) { //搜索纪录 int iGemTableIndex = GetGemTableId(iGemIndex); _DBC_ITEM_GEM pGem = ObjectSystem.GemDBC.Search_Index_EQU(iGemTableIndex); if (pGem == null) { return; } strGemAttr = string.Format("#{{{0}}} +{1}\n", g_szAttachAttName[pGem.m_GemAttrType], pGem.m_GemAttrValue); }
void itemRule(_DBC_ITEM_GEM pDefine, CObject_Item pItem) { _DBC_ITEM_RULE pItemRule = ItemRuleDBC.Search_Index_EQU(pDefine.nRule); if (pItemRule == null) { return; } pItem.RULE.bCanDrop = pItemRule.bCanDrop == 1; pItem.RULE.bCanOverLay = pItemRule.bCanOverLay == 1; pItem.RULE.bCanQuick = pItemRule.bCanQuick == 1; pItem.RULE.bCanSale = pItemRule.bCanSale == 1; pItem.RULE.bCanExchange = pItemRule.bCanExchange == 1; pItem.RULE.bCanUse = pItemRule.bCanUse == 1; pItem.RULE.bPickBind = pItemRule.bPickBind == 1; pItem.RULE.bEquipBind = pItemRule.bEquipBind == 1; pItem.RULE.bUnique = pItemRule.bUnique == 1; }
// // 通过编号去查该配方,共需要几个材料 // INT GetPrescr_Material_Number(INT nPrescrID); // INT GetPrescrMaterialNumberNew(INT nPrescrID); // // 通过材料的编号,查询材料的详细信息,返回图标和名称。 // Lua_ICON_INFO GetPrescr_Material(INT nItemID); // // 通过序号去查第几个配方的编号 // INT GetPrescrList_Item_FromNum(INT nIndex); // INT GetPrescrList_Item_FromNum(INT nIndex, INT nLifeAbility); // // 计算身上原料总共可以合成多少个这个配方。 // INT GetPrescr_Item_Maximum(INT nIndex); // INT GetPrescrItemMaximumNew(INT nIndex, INT nMaterial);// [10/8/2011 Sun] // string GetPrescription_Kind(INT nPrescrKind); // // 计算原料数量。 // INT GetPrescr_Material_Hold_Count(INT nIndex,INT nMaterial); // INT GetPrescrMaterialCountInPackage(INT nIndex, INT nMaterial);// 根据新需求 [10/8/2011 Sun] // // 刷新合成界面 // INT Update_Synthesize( INT nAbility ); // // 打开宝石合成/镶嵌界面 // INT Open_Compose_Gem_Page( INT nPage ); // // 开始镶嵌 // INT Do_Enchase( INT nIndexEquip, INT nIndexGem, INT nIndexMat1 = -1, INT nIndexMat2 = -1 ); // // 开始合成 // INT Do_Combine(INT nIndexGem1, INT nIndexGem2, INT nIndexGem3, INT nIndexGem4, INT nIndexGem5, INT nIndexGem6 ); // // 宝石摘除 [7/16/2011 ivan edit] // INT Do_SeparateGem(INT nIndexEquip, INT nIndexGem, INT nIndexMat); // // 返回装备上,第i颗宝石的图标信息 // string GetEquip_Gem( INT nIndexEquip , UINT nIndexGem ); // 获取装备上的宝石数据 [7/16/2011 ivan edit] public string GetEquipGemInfo(CObject_Item_Equip equip, int nIndexGem, string dataType) { if (equip == null) { return(""); } int nGemType = equip.GetGemTableId(nIndexGem); _DBC_ITEM_GEM pGem = ObjectSystem.GemDBC.Search_Index_EQU(nGemType); if (pGem == null) { return(""); } string gemData = ""; if (dataType == "icon") { gemData = pGem.szIcon; } else if (dataType == "level") { gemData = pGem.nQuality.ToString(); } else if (dataType == "type") { gemData = pGem.nType.ToString(); } else if (dataType == "id") { gemData = pGem.nID.ToString(); } else if (dataType == "name") { gemData = pGem.szName; } else if (dataType == "attribute") { equip.GetGemExtAttr(nIndexGem, ref gemData); } return(gemData); }
public CObject_Item NewItem(uint idTable) { CObject_Item newItem = null; if (IsWhiteEquip(idTable)) { //搜索纪录 _DBC_ITEM_EQUIP_BASE pEquip = EquipDBC.Search_Index_EQU((int)idTable); if (pEquip == null) { return(null); } newItem = new CObject_Item_Equip(CreateID()); ((CObject_Item_Equip)newItem).AsWhiteEquip(ref pEquip); //物品规则 itemRule(pEquip, newItem); } else if (IsGreenEquip(idTable)) { //搜索纪录 _DBC_ITEM_EQUIP_BASE pEquip = EquipDBC.Search_Index_EQU((int)idTable); if (pEquip == null) { return(null); } newItem = new CObject_Item_Equip(CreateID()); ((CObject_Item_Equip)newItem).AsGreenEquip(ref pEquip); //物品规则 itemRule(pEquip, newItem); } else if (IsBlueEquip(idTable)) { //搜索纪录 _DBC_ITEM_EQUIP_BASE pEquip = EquipDBC.Search_Index_EQU((int)idTable); if (pEquip == null) { return(null); } newItem = new CObject_Item_Equip(CreateID()); ((CObject_Item_Equip)newItem).AsBlueEquip(ref pEquip); //物品规则 itemRule(pEquip, newItem); } else if (IsPurpleEquip(idTable)) { //搜索纪录 _DBC_ITEM_EQUIP_BASE pEquip = EquipDBC.Search_Index_EQU((int)idTable); if (pEquip == null) { return(null); } newItem = new CObject_Item_Equip(CreateID()); ((CObject_Item_Equip)newItem).AsPurpleEquip(ref pEquip); //物品规则 itemRule(pEquip, newItem); } else if (IsMedicItem(idTable)) { COMMON_DBC <_DBC_ITEM_MEDIC> allMedic = CDataBaseSystem.Instance.GetDataBase <_DBC_ITEM_MEDIC>((int)DataBaseStruct.DBC_ITEM_MEDIC); if (allMedic != null) { _DBC_ITEM_MEDIC pMedic = allMedic.Search_Index_EQU((int)idTable); newItem = new CObject_Item_Medicine(CreateID()); ((CObject_Item_Medicine)newItem).AsMedicine(pMedic); itemRule(pMedic, newItem); } else { throw new Exception("_DBC_ITEM_MEDIC database not found"); } } else if (IsGemItem((int)idTable)) { //搜索纪录 _DBC_ITEM_GEM pGem = GemDBC.Search_Index_EQU((int)idTable); if (pGem == null) { return(null); } newItem = new CObject_Item_Gem(CreateID()); ((CObject_Item_Gem)newItem).AsGem(pGem); //物品规则 itemRule(pGem, newItem); } else if (isSymbolItem(idTable)) //是符印 { _DBC_ITEM_SYMBOL pSymbol = SymbolDBC.Search_Index_EQU((int)idTable); if (pSymbol == null) { return(null); } newItem = new CObject_Item_Symbol(CreateID()); ((CObject_Item_Symbol)newItem).AsSymbol(pSymbol); //物品规则 itemRule(pSymbol, newItem); } else if (isTalismanItem(idTable)) //是法宝 { _DBC_ITEM_TALISMAN dbItem = CDataBaseSystem.Instance.GetDataBase <_DBC_ITEM_TALISMAN>((int)DataBaseStruct.DBC_ITEM_TALISMAN).Search_Index_EQU((int)idTable); if (dbItem == null) { return(null); } newItem = new CTalisman_Item(CreateID()); CTalisman_Item curItem = newItem as CTalisman_Item; curItem.Define = dbItem; //物品规则 itemRule(dbItem, newItem); } if (newItem == null) { LogManager.LogError("物品编号填写错误!,ID:" + idTable); } else { newItem.m_idTable = (int)idTable; allItems[newItem.GetID()] = newItem; } return(newItem); }