Exemplo n.º 1
0
    public int GetItemLevel()
    {
        CObject_Item pItem = GetImpl() as CObject_Item;

        if (pItem != null)
        {
            return(pItem.GetNeedLevel());
        }
        return(-1);
    }
Exemplo n.º 2
0
        internal void PacketItem_UserEquip(CObject_Item item)
        {
            if (item == null)
            {
                return;
            }
            //摆摊时不可以随便换装
            //...TODO

            //验证是否可以使用
            if (!item.Rule(ITEM_RULE.RULE_USE))
            {
                CEventSystem.Instance.PushEvent(GAME_EVENT_ID.GE_INFO_SELF, item.RuleFailMessage(ITEM_RULE.RULE_USE));
                return;
            }

            CCharacterData pCharData = CObjectManager.Instance.getPlayerMySelf().GetCharacterData();

            if (pCharData == null)
            {
                LogManager.LogError("playerMyself's charData is null.");
                return;
            }
            int needLevel   = item.GetNeedLevel();
            int playerLevel = pCharData.Get_Level();

            if (playerLevel < needLevel)
            {
                CEventSystem.Instance.PushEvent(GAME_EVENT_ID.GE_INFO_SELF, "等级不够");

                return;
            }
            //是否鉴定
            if (((CObject_Item_Equip)item).GetEquipQuantity() == EQUIP_QUALITY.BLUE_EQUIP &&
                ((CObject_Item_Equip)item).GetEquipAttrib() == EQUIP_ATTRIB.EQUIP_ATTRIB_UNIDENTIFY)
            {
                CEventSystem.Instance.PushEvent(GAME_EVENT_ID.GE_INFO_SELF, "此物品需要鉴定");
                return;
            }

            //取得详细信息
            string szExtraInfo = item.GetExtraDesc();

            //如果没有详细信息,从服务器上请求详细信息
            if (szExtraInfo == "")
            {
                CDataPool.Instance.UserBag_AskExtraInfo(item.PosIndex);
            }

            CGUseEquip msg = new CGUseEquip();

            msg.BagIndex = (byte)item.PosIndex;
            NetManager.GetNetManager().SendPacket(msg);
        }
Exemplo n.º 3
0
    public CObject_Item Pet_GetLowestLevel_Dome_From_Package(PET_GUID_t pg, ref int idxPackage) //从背包获得驯养所需最低级的食物
    {
        CObject_Item pFind = null;

        idxPackage = -1;

        //获取食物类型
        int idTableMin = -1, idTableMax = -1, mod = 1000, modold = 0;
        int nFoodType = CDataPool.Instance.Pet_GetPetFoodType(pg);

        int k = (int)ENUM_PET_FOOD_TYPE.PET_FOOD_TYPE_MEAT;

        //根据食物类型来判断循环范围
        if (nFoodType >= 1000)
        {
            k   = (int)ENUM_PET_FOOD_TYPE.PET_FOOD_TYPE_MEAT;
            mod = 1000;
        }
        else if (nFoodType >= 100)
        {
            k   = (int)ENUM_PET_FOOD_TYPE.PET_FOOD_TYPE_GRASS;
            mod = 100;
        }
        else if (nFoodType >= 10)
        {
            k   = (int)ENUM_PET_FOOD_TYPE.PET_FOOD_TYPE_WORM;
            mod = 10;
        }
        else
        {
            k   = (int)ENUM_PET_FOOD_TYPE.PET_FOOD_TYPE_PADDY;
            mod = 1;
        }

        //开始查找物品
        for (; k < (int)ENUM_PET_FOOD_TYPE.PET_FOOD_TYPE_NUMBER; ++k)
        {
            if (0 == mod)
            {
                break;                  //keep loop safe.
            }
            //calculate food type enum
            int q = (nFoodType - modold) / mod;
            idTableMin = -1; idTableMax = -1;
            if (1 == q)
            {
                Pet_GetPetFoodTypeMinMax(k, ref idTableMin, ref idTableMax);
            }
            if (idTableMin < 0 || idTableMax < 0)
            {
                continue;
            }

            //检查背包里等级最低的食物
            for (int i = GAMEDEFINE.BASE_CONTAINER_OFFSET; i < GAMEDEFINE.MAX_BAG_SIZE; ++i)
            {
                CObject_Item pItem = (CObject_Item)CDataPool.Instance.UserBag_GetItemByIndex(i);
                if (pItem != null)
                {
                    int id = pItem.GetIdTable();
                    //id是否是食物
                    if (id > idTableMax || id < idTableMin)
                    {
                        continue;
                    }
                    //道具的使用等级是否合法
                    if (pItem.GetNeedLevel() > Pet_GetPet(pg).Level)
                    {
                        continue;
                    }

                    if (pFind != null)
                    {
                        CObject_Item pOldFind = pFind;
                        pFind = (pItem.GetNeedLevel() > pFind.GetNeedLevel())?pFind:pItem;
                        if (pFind != pOldFind)
                        {
                            idxPackage = i;
                        }
                    }
                    else
                    {
                        pFind      = pItem;
                        idxPackage = i;
                    }
                }            // end of if(pItem)
            }

            //change mod
            modold += mod;
            mod    /= 10;
        }

        return(pFind);
    }