public override NET_RESULT_DEFINE.PACKET_EXE Execute(PacketBase pPacket, ref Peer pPlayer)
        {
            if (GameProcedure.GetActiveProcedure() == GameProcedure.s_ProcMain)
            {
                GCShopSoldList packet = pPacket as GCShopSoldList;

                int nNum = packet.MerchadiseNum;
                if (nNum == 0)
                {//空的没东西
                    if (CDataPool.Instance.Booth_GetSoldNumber() != 0)
                    {
                        CDataPool.Instance.Booth_Sold_Clear();
                    }
                }
                else
                {
                    //清空原有商品列表
                    CDataPool.Instance.Booth_Sold_Clear();

                    //CSoundSystemFMod::_PlayUISoundFunc(25+59);

                    //添加到数据池中
                    for (short i = 0; i < nNum; i++)
                    {
                        GCShopSoldList._MERCHANDISE_ITEM pNewItem = packet.MerchadiseList[i];
                        CObject_Item pItem = null;

                        pItem = ObjectSystem.Instance.NewItem(pNewItem.item_data.m_ItemIndex);
                        pItem.SetGUID(
                            (ushort)pNewItem.item_data.m_ItemGUID.m_World,
                            (ushort)pNewItem.item_data.m_ItemGUID.m_Server,
                            (uint)pNewItem.item_data.m_ItemGUID.m_Serial);

                        pItem.SetExtraInfo(ref pNewItem.item_data);


                        //设置该物品在货架上的位置因为是回购物品它的位置应该是200
                        pItem.PosIndex = i;
                        //AxTrace(0,0,"pItem->SetPosIndex = %d",i);
                        //设置该物品的数量(每一组的数量)
                        pItem.SetNumber(pNewItem.item_data.GetItemCount());
                        //回购物品当然只有一个
                        pItem.SetMax(1);
                        //加入数据池
                        CDataPool.Instance.Booth_SetSoldItem(i, pItem);
                        CDataPool.Instance.Booth_SetSoldPrice(i, pNewItem.iPrice);
                    }
                    //设置回购商品的数量
                    CDataPool.Instance.Booth_SetSoldNumber(nNum);
                }

                //更新到ActionSystem
                CActionSystem.Instance.Booth_Update();
                //通知UI
                CEventSystem.Instance.PushEvent(GAME_EVENT_ID.GE_UPDATE_BOOTH);
            }

            return(NET_RESULT_DEFINE.PACKET_EXE.PACKET_EXE_CONTINUE);
        }
Exemplo n.º 2
0
        public override NET_RESULT_DEFINE.PACKET_EXE Execute(PacketBase packet, ref Peer pPlayer)
        {
            if (GameProcedure.GetActiveProcedure() == (GameProcedure)GameProcedure.s_ProcMain)
            {
                LogManager.Log("Receive GCBoxItemList Packet");
                CObjectManager pObjectManager = CObjectManager.Instance;
                GCBoxItemList  pPacket        = (GCBoxItemList)packet;
                // 清空
                CDataPool.Instance.ItemBox_Clear();
                // 记录箱子id
                CDataPool.Instance.ItemBox_SetID((int)pPacket.getItemBoxId());

                // 放置每一个物品
                for (int i = 0; i < pPacket.getItemNum(); i++)
                {
                    CObject_Item pItemObj = ObjectSystem.Instance.NewItem(pPacket.getItemList()[i].m_ItemIndex);
                    if (pItemObj == null)
                    {
                        continue;
                    }

                    pItemObj.SetGUID(
                        (ushort)((pPacket.getItemList())[i].m_ItemGUID.m_World),
                        (ushort)((pPacket.getItemList())[i].m_ItemGUID.m_Server),
                        (uint)((pPacket.getItemList())[i].m_ItemGUID.m_Serial));

                    pItemObj.SetExtraInfo(ref (pPacket.getItemList()[i]));
                    pItemObj.SetTypeOwner(ITEM_OWNER.IO_ITEMBOX);
                    pItemObj.SetPosIndex((short)i);

                    CDataPool.Instance.ItemBox_SetItem(i, pItemObj, true);

                    _ITEM pItem = (pPacket.getItemList())[i];
                    GameProcedure.s_pGameInterface.ItemBox_PickItem(pItem.m_ItemGUID, pPacket.getItemBoxId());
                }

                // 自动拾取,不再产生actionItem [3/29/2012 SUN]
                //int nObjId = CObjectManager.Instance.FindServerObject((int)pPacket.getItemBoxId()).ID;

                ////产生事件
                //CActionSystem.Instance.ItemBox_Created(nObjId);
            }
            return(NET_RESULT_DEFINE.PACKET_EXE.PACKET_EXE_CONTINUE);
        }
        public override NET_RESULT_DEFINE.PACKET_EXE Execute(PacketBase pPacket, ref Peer pPlayer)
        {
            if (GameProcedure.GetActiveProcedure() == GameProcedure.s_ProcMain)
            {
                //LogManager.Log("RECV GCNotifyEquip");
                GCNotifyEquip packet = (GCNotifyEquip)pPacket;

                short wBagIndex = packet.BagIndex;
                _ITEM pItem     = packet.Item;

                CObject_Item pItemObj = ObjectSystem.Instance.NewItem(pItem.m_ItemIndex);
                if (pItemObj == null)
                {
                    return(NET_RESULT_DEFINE.PACKET_EXE.PACKET_EXE_CONTINUE);
                }

                pItemObj.SetGUID(pItem.m_ItemGUID.m_World, pItem.m_ItemGUID.m_Server, (uint)pItem.m_ItemGUID.m_Serial);

                pItemObj.SetExtraInfo(ref pItem);
                if (pItem.m_Talisman == null)
                {
                    CDataPool.Instance.UserBag_SetItem(wBagIndex, pItemObj, true, true);
                    CActionSystem.Instance.UserBag_Update();
                    //CEventSystem.Instance.PushEvent(GAME_EVENT_ID.GE_GET_NEWEQUIP, pItemObj.GetID());
                    CEventSystem.Instance.PushEvent(GAME_EVENT_ID.GE_PACKAGE_ITEM_CHANGED, wBagIndex);
                }
                else
                {
                    short talismanIndex = (short)(wBagIndex - GAMEDEFINE.MAX_BAG_SIZE);
                    CDataPool.Instance.TalismanInventory_SetItem(talismanIndex, pItemObj, true, true);
                    CActionSystem.Instance.UserTalismanBag_Update();
                    CEventSystem.Instance.PushEvent(GAME_EVENT_ID.GE_NEW_TALISMANITEM, talismanIndex);
                }
            }

            return(NET_RESULT_DEFINE.PACKET_EXE.PACKET_EXE_CONTINUE);
        }
        public override NET_RESULT_DEFINE.PACKET_EXE Execute(PacketBase packet, ref Peer pPlayer)
        {
            if (GameProcedure.GetActiveProcedure() == (GameProcedure)GameProcedure.s_ProcMain)
            {
                GCDetailEquipList pPacket = packet as GCDetailEquipList;
                CObject           pObj    = CObjectManager.Instance.FindServerObject((int)pPacket.ObjId);
                if (pObj == null || !(pObj is CObject_Character))
                {
                    LogManager.LogError("找不到对应的NPC, ID:" + pPacket.ObjId);
                    return(NET_RESULT_DEFINE.PACKET_EXE.PACKET_EXE_CONTINUE);
                }

                CCharacterData pCharacterData = ((CObject_Character)pObj).GetCharacterData();

                //刷入数据池
                uint dwEquipMask = pPacket.PartFlags;
                if (pObj != (CObject)CObjectManager.Instance.getPlayerMySelf())
                {
                    for (int i = 0; i < (int)HUMAN_EQUIP.HEQUIP_NUMBER; i++)
                    {
                        if ((dwEquipMask & (1 << i)) != 0)
                        {
                            _ITEM        item     = pPacket.GetEquipData((HUMAN_EQUIP)i);
                            CObject_Item pItemObj = ObjectSystem.Instance.NewItem(item.m_ItemIndex);
                            if (pItemObj == null)
                            {
                                CDataPool.Instance.OtherPlayerEquip_SetItem((HUMAN_EQUIP)i, null, true);
                            }
                            else
                            {
                                pItemObj.SetGUID((ushort)item.m_ItemGUID.m_World,
                                                 (ushort)item.m_ItemGUID.m_Server,
                                                 (uint)item.m_ItemGUID.m_Serial);
                                pItemObj.SetExtraInfo(ref item);
                                pItemObj.SetTypeOwner(ITEM_OWNER.IO_PLAYEROTHER_EQUIP);
                                pItemObj.PosIndex = (short)i;

                                CDataPool.Instance.OtherPlayerEquip_SetItem((HUMAN_EQUIP)i, pItemObj, true);
                            }
                        }
                        else
                        {
                            CDataPool.Instance.OtherPlayerEquip_SetItem((HUMAN_EQUIP)i, null, true);
                        }
                    }

//                  CObject_PlayerOther* TargetAvatar = CObjectManager::GetMe()->GetTarget_Avatar();
//
//                  TargetAvatar->GetCharacterData()->Set_RaceID( ((CObject_Character*)pObj)->GetCharacterData()->Get_RaceID() );
//                  for(INT i=0; i<HEQUIP_NUMBER; i++)
//                  {
//                      TargetAvatar->GetCharacterData()->Set_Equip((HUMAN_EQUIP)i,((CObject_Character*)pObj)->GetCharacterData()->Get_Equip((HUMAN_EQUIP)i));
//                  }
//                  TargetAvatar->SetFaceDir(0.0f);
//
//                  CDataPool::GetMe()->Copy_To_TargetEquip(pObj);

                    // 更新其他玩家身上的装备到ActionSystem
                    CActionSystem.Instance.OtherPlayerEquip_Update();

                    // 通知界面事件
                    CEventSystem.Instance.PushEvent(GAME_EVENT_ID.GE_OTHERPLAYER_UPDATE_EQUIP);
                }
                else
                {
                    for (int i = 0; i < (int)HUMAN_EQUIP.HEQUIP_NUMBER; i++)
                    {
                        if ((dwEquipMask & (1 << i)) != 0)
                        {
                            _ITEM        item     = pPacket.GetEquipData((HUMAN_EQUIP)i);
                            CObject_Item pItemObj = ObjectSystem.Instance.NewItem(item.m_ItemIndex);
                            if (pItemObj == null)
                            {
                                continue;
                            }

                            pItemObj.SetGUID((ushort)item.m_ItemGUID.m_World,
                                             (ushort)item.m_ItemGUID.m_Server,
                                             (uint)item.m_ItemGUID.m_Serial);
                            pItemObj.SetExtraInfo(ref item);
                            pItemObj.SetTypeOwner(ITEM_OWNER.IO_MYSELF_EQUIP);
                            pItemObj.PosIndex = (short)i;

                            CDataPool.Instance.UserEquip_SetItem((HUMAN_EQUIP)i, pItemObj, true);
                        }
                    }

                    // 更新主角身上的装备到ActionSystem
                    CActionSystem.Instance.UserEquip_Update();

                    // 通知界面事件
                    CEventSystem.Instance.PushEvent(GAME_EVENT_ID.GE_UPDATE_EQUIP);
                }
            }
            return(NET_RESULT_DEFINE.PACKET_EXE.PACKET_EXE_CONTINUE);
        }
Exemplo n.º 5
0
        public override NET_RESULT_DEFINE.PACKET_EXE Execute(PacketBase pPacket, ref Peer pPlayer)
        {
            if (GameProcedure.GetActiveProcedure() == GameProcedure.s_ProcMain)
            {
                LogManager.Log("RECV GCDetailPetEquipList");
                GCDetailPetEquipList packet = pPacket as GCDetailPetEquipList;
                CObject pObj = CObjectManager.Instance.FindServerObject((int)packet.ObjID);
                //判定这个宠物是否是其他玩家,如果是,那么objid有效
                uint flags = packet.PartFlags;
                if (pObj != null)
                {
                    for (int i = 0; i < (int)PET_EQUIP.PEQUIP_NUMBER; i++)
                    {
                        if ((flags & (1 << i)) != 0)
                        {
                            _ITEM        item     = packet.Items[i];
                            CObject_Item pItemObj = ObjectSystem.Instance.NewItem(item.m_ItemIndex);
                            if (pItemObj == null)
                            {
                                CDataPool.Instance.OtherPlayerPetEquip_SetItem(packet.GUID, (PET_EQUIP)i, null, true);
                            }
                            else
                            {
                                pItemObj.SetGUID((ushort)item.m_ItemGUID.m_World,
                                                 (ushort)item.m_ItemGUID.m_Server,
                                                 (uint)item.m_ItemGUID.m_Serial);
                                pItemObj.SetExtraInfo(ref item);
                                pItemObj.SetTypeOwner(ITEM_OWNER.IO_PLAYEROTHER_EQUIP);
                                pItemObj.PosIndex = (short)i;
                                CDataPool.Instance.OtherPlayerPetEquip_SetItem(packet.GUID, (PET_EQUIP)i, pItemObj, true);
                            }
                        }
                        else
                        {
                            CDataPool.Instance.OtherPlayerPetEquip_SetItem(packet.GUID, (PET_EQUIP)i, null, true);
                        }
                    }
                    CActionSystem.Instance.OtherPlayerPetEquip_Update(packet.GUID);
                    CEventSystem.Instance.PushEvent(GAME_EVENT_ID.GE_OTHERPLAYER_UPDATE_PETEQUIP);
                    return(NET_RESULT_DEFINE.PACKET_EXE.PACKET_EXE_CONTINUE);
                }

                SDATA_PET curPet = CDataPool.Instance.Pet_GetPet(packet.GUID);
                if (curPet == null)
                {
                    LogManager.LogError("找不到对应的Pet, GUID:" + packet.GUID.m_uHighSelection + " " + packet.GUID.m_uLowSelection);
                    return(NET_RESULT_DEFINE.PACKET_EXE.PACKET_EXE_CONTINUE);
                }

                for (int i = 0; i < (int)(int)PET_EQUIP.PEQUIP_NUMBER; i++)
                {
                    if ((flags & (1 << i)) != 0)
                    {
                        _ITEM item = packet.Items[i];
                        LogManager.Log("GCDetailPetEquipList flags " + flags + " " + item.m_ItemIndex);
                        CObject_Item pItemObj = ObjectSystem.Instance.NewItem(item.m_ItemIndex);
                        pItemObj.SetGUID((ushort)item.m_ItemGUID.m_World,
                                         (ushort)item.m_ItemGUID.m_Server,
                                         (uint)item.m_ItemGUID.m_Serial);
                        pItemObj.SetExtraInfo(ref item);
                        pItemObj.SetTypeOwner(ITEM_OWNER.IO_PET_EQUIPT);
                        pItemObj.PosIndex = (short)i;
                        CDataPool.Instance.UserPetEquipt_SetItem(packet.GUID, (PET_EQUIP)i, pItemObj, true);
                    }
                }
                CActionSystem.Instance.UserPetEquiptItem_Update(packet.GUID);
                CEventSystem.Instance.PushEvent(GAME_EVENT_ID.GE_UPDATE_PETEQUIP);
            }

            return(NET_RESULT_DEFINE.PACKET_EXE.PACKET_EXE_CONTINUE);
        }