Exemplo n.º 1
0
    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);
    }
Exemplo n.º 3
0
    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;
    }
Exemplo n.º 4
0
        //    // 通过编号去查该配方,共需要几个材料
        //    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);
        }
Exemplo n.º 5
0
    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);
    }