Exemplo n.º 1
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.º 2
0
        // 卖出一个物品
        internal void Booth_SellItem(CObject_Item pItem)
        {
            //验证是否可以卖出
            if (!pItem.Rule(ITEM_RULE.RULE_SALE))
            {
                CEventSystem.Instance.PushEvent(GAME_EVENT_ID.GE_INFO_INTERCOURSE, pItem.RuleFailMessage(ITEM_RULE.RULE_SALE));
                return;
            }

            //判断当前的NPC是不是收购这类物品
            if (!CDataPool.Instance.Booth_IsCanBuy(pItem))
            {
                CEventSystem.Instance.PushEvent(GAME_EVENT_ID.GE_INFO_INTERCOURSE, "#{cannot sell}");
                return;
            }

            CGShopSell msg = new CGShopSell();

            // 先判断是否够钱买,
            msg.UniqueID = CDataPool.Instance.Booth_GetShopUniqueId();
            msg.Index    = (byte)pItem.PosIndex;
            NetManager.GetNetManager().SendPacket(msg);
        }
Exemplo n.º 3
0
        // 销毁物品
        public void DiscardItem()
        {
            //销毁物品,根据不同的物品来源,需要发送不同的销毁消息
            int nTypeOwner = CDataPool.Instance.DisCard_GetItemConta();
            int nItemPos   = CDataPool.Instance.DisCard_GetItemPos();

            switch ((ITEM_OWNER)nTypeOwner)
            {
            case ITEM_OWNER.IO_MYSELF_PACKET:                                   // 来自玩家的背包
            {
                CObject_Item pItem = CDataPool.Instance.UserBag_GetItem(nItemPos);

                if (pItem == null)
                {
                    break;
                }
                //验证是否可以丢弃
                if (!pItem.Rule(ITEM_RULE.RULE_DROP))
                {
                    CEventSystem.Instance.PushEvent(GAME_EVENT_ID.GE_INFO_SELF, pItem.RuleFailMessage(ITEM_RULE.RULE_DROP));
                    break;
                }

                CGDiscardItem msg = new CGDiscardItem();
                msg.Operate  = (byte)(CGDiscardItem.Operator.FromBag);
                msg.BagIndex = (byte)(nItemPos);

                NetManager.GetNetManager().SendPacket(msg);
            }
            break;

            case ITEM_OWNER.IO_MYSELF_EQUIP:                                            // 来自玩家身上的装备
            {
                //break;
                //tObject_Item* pItem = CDataPool::GetMe()->UserEquip_GetItem((HUMAN_EQUIP)nItemPos);

                //if(!pItem) break;
                ////验证是否可以丢弃
                //if(!pItem->Rule(tObject_Item::RULE_DROP))
                //{
                //    CEventSystem::GetMe()->PushEvent(GE_INFO_SELF, pItem->RuleFailMessage(tObject_Item::RULE_DROP).c_str());
                //    break;
                //}

                //CGDiscardEquip msg;
                //msg.SetEquipPoint(nItemPos);

                //CNetManager::GetMe()->SendPacket(&msg);
            }
            break;

            case ITEM_OWNER.IO_MYSELF_BANK:                                     // 玩家的银行
            {
                CObject_Item pItem = CDataPool.Instance.UserBank_GetItem(nItemPos);

                if (pItem == null)
                {
                    break;
                }
                //验证是否可以丢弃
                if (!pItem.Rule(ITEM_RULE.RULE_DROP))
                {
                    CEventSystem.Instance.PushEvent(GAME_EVENT_ID.GE_INFO_SELF, pItem.RuleFailMessage(ITEM_RULE.RULE_DROP));
                    break;
                }

                CGDiscardItem msg = new CGDiscardItem();
                msg.Operate  = (byte)(CGDiscardItem.Operator.FromBank);
                msg.BagIndex = (byte)(nItemPos);

                NetManager.GetNetManager().SendPacket(msg);
            }
            break;

            default:
                break;
            }
        }