//生成一件绿色装备
 public void AsGreenEquip(ref _DBC_ITEM_EQUIP_BASE pDefine)
 {
     this.AsEquipBase(pDefine, EQUIP_QUALITY.GREEN_EQUIP);
 }
 //生成一件白色装备
 public void AsWhiteEquip(ref _DBC_ITEM_EQUIP_BASE pDefine)
 {
     this.AsEquipBase(pDefine, EQUIP_QUALITY.WHITE_EQUIP);
 }
示例#3
0
    protected void UpdateEquip(HUMAN_EQUIP point)
    {
        CCharacterData pCharacterData = GetCharacterData();

        if (pCharacterData == null)
        {
            return;
        }

        //生成一个临时的Item对象
        int nID = pCharacterData.Get_Equip(point);

//          CObject_Item_Equip pTempEquip = null;
//
//          if(nID != MacroDefine.INVALID_ID)
//          {
//              pTempEquip = (CObject_Item_Equip)CObject_Item.NewItem(nID);
//               visualID = pTempEquip.GetVisualID();
//          }
        //因为和物品相关的代码还没有完成,暂时直接访问数据库  [1/4/2012 ZZY]
        DBC.COMMON_DBC <_DBC_ITEM_EQUIP_BASE> equipBaseDBC = CDataBaseSystem.Instance.GetDataBase <_DBC_ITEM_EQUIP_BASE>((int)DataBaseStruct.DBC_ITEM_EQUIP_BASE);

        _DBC_ITEM_EQUIP_BASE pEquip = equipBaseDBC.Search_Index_EQU(nID);
        //如果是装备根据装配点装备物品
        bool result = false;

        if (/*pTempEquip != null && ITEM_CLASS.ICLASS_EQUIP == pTempEquip.GetItemClass()*/ pEquip != null && pEquip.nVisualID != MacroDefine.INVALID_ID)
        {
            if (point == HUMAN_EQUIP.HEQUIP_WEAPON)
            {
                if (m_bHideWeapon == true && mRenderInterface != null)               //如果当前正隐藏武器,那么不装备武器 [2012/4/18 ZZY]
                {
                    mRenderInterface.changeRightWeapon("");
                    mRenderInterface.changeLeftWeapon("");
                    SetWeaponType(ENUM_WEAPON_TYPE.WEAPON_TYPE_NONE);
                }
                else
                {
                    result = EquipItem_BodyLocator(/*pTempEquip.GetItemType()*/ point, pEquip.nVisualID);
                    SetWeaponType((ENUM_WEAPON_TYPE)pEquip.nType);
                }
            }
            else
            {
                result = EquipItem_BodyPart(point, pEquip.nVisualID);
            }
        }
        else
        {
            //卸载装备
            UnEquipItem(point);
        }
        //  [5/6/2011 ivan edit]
        if (result == false)
        {
            UnEquipItem(point);
        }


        //CObject_Item.DestroyItem(pTempEquip);
    }
    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);
    }
    // 能否可以开采资源
    public bool Resource_CanOperation()
    {
        if (m_pResourceDef == null)
        {
            return(false);
        }

        SCLIENT_LIFEABILITY pSclientAbilityDef = (CObjectManager.Instance.getPlayerMySelf().GetCharacterData().Get_LifeAbility(m_pResourceDef.nLifeAbility));

        if (pSclientAbilityDef == null)
        {
            _DBC_LIFEABILITY_DEFINE pAbilityDef = DBSystem.CDataBaseSystem.Instance.GetDataBase <_DBC_LIFEABILITY_DEFINE>((int)DataBaseStruct.DBC_LIFEABILITY_DEFINE).Search_Index_EQU(m_pResourceDef.nLifeAbility);

            if (pAbilityDef == null)
            {
                return(false);
            }
            string szMsg = "Ability_Requiement" + pAbilityDef.szName;
            GameProcedure.s_pEventSystem.PushEvent(GAME_EVENT_ID.GE_INFO_SELF, szMsg);

            return(false);
        }

        int my_level = CObjectManager.Instance.getPlayerMySelf().GetCharacterData().Get_Level();

        if (my_level < pSclientAbilityDef.m_pDefine.nLevelNeed)
        {
            GameProcedure.s_pEventSystem.PushEvent(GAME_EVENT_ID.GE_INFO_SELF, "等级不够");
            return(false);
        }
        int idNeedFacility = pSclientAbilityDef.m_pDefine.nToolNeed;

        if (idNeedFacility >= 0)
        {
            bool bHaveTool = false;

            CObject_Item Facility;
            Facility = CDataPool.Instance.UserEquip_GetItem(HUMAN_EQUIP.HEQUIP_WEAPON);
            if (Facility == null || idNeedFacility != Facility.GetParticularID())
            {
                for (int i = 0; i < GAMEDEFINE.MAX_BAG_SIZE; i++)
                {
                    if ((Facility = CDataPool.Instance.UserBag_GetItem(i)) != null)
                    {
                        if (idNeedFacility == Facility.GetParticularID())
                        {
                            bHaveTool = true;
                            break;
                        }
                    }
                }

                string szTemp = "";
                //从资源表中去查找工具名称
                DBC.COMMON_DBC <_DBC_ITEM_EQUIP_BASE> equipBaseDBC = DBSystem.CDataBaseSystem.Instance.GetDataBase <_DBC_ITEM_EQUIP_BASE>((int)DataBaseStruct.DBC_ITEM_EQUIP_BASE);

                _DBC_ITEM_EQUIP_BASE pWhiteEquip = equipBaseDBC.Search_Index_EQU(idNeedFacility);

                if (pWhiteEquip != null)
                {
                    if (bHaveTool)
                    {
                        szTemp = "你需要先将" + pWhiteEquip.szName + "装备上";
                    }
                    else
                    {
                        szTemp = "你还没有" + pWhiteEquip.szName;
                    }
                }
                else
                {
                    szTemp = "你需要装备工具。";
                }
                GameProcedure.s_pEventSystem.PushEvent(GAME_EVENT_ID.GE_INFO_SELF, szTemp);

                //todo
                // ADDTALKMSG(szTemp);
                return(false);
            }
        }
        return(true);
    }