Ejemplo n.º 1
0
    //克隆详细信息
    public virtual void Clone(CObject_Item pItemSource)
    {
        //克隆GUID
        ushort idWorld  = 0;
        ushort idServer = 0;
        uint   idSerail = 0;

        pItemSource.GetGUID(ref idWorld, ref idServer, ref idSerail);
        SetGUID(idWorld, idServer, idSerail);
        //克隆制造者
        string pManufacturer = pItemSource.GetManufacturer();

        //  [11/8/2010 Sun]
        if (pManufacturer != null)
        {
            m_Creator = System.Text.Encoding.ASCII.GetBytes(pManufacturer);
        }

        //克隆物品的额外信息
        if (pItemSource.GetItemExtraInfoItem() != null)
        {
            if (m_ExtraInfoItem != null)
            {
                m_ExtraInfoItem = null;
            }
            m_ExtraInfoItem = pItemSource.m_ExtraInfoItem;
        }
    }
Ejemplo n.º 2
0
 //设置详细解释
 public virtual void SetExtraInfo(ref _ITEM pItemInfo)
 {
     if (pItemInfo != null)
     {
         m_ExtraInfoItem = pItemInfo;
     }
 }
Ejemplo n.º 3
0
        public override bool readFromBuff(ref NetInputBuffer buff)
        {
            buff.ReadUint(ref objId);

            int tempMode = 0;

            buff.ReadInt(ref tempMode);
            m_Mode = (ASK_EQUIP_MODE)tempMode;

            buff.ReadUint(ref m_wPartFlags);
            for (int i = 0; i < (int)HUMAN_EQUIP.HEQUIP_NUMBER; i++)
            {
                if ((m_wPartFlags & (1 << i)) != 0)
                {
                    m_ItemList[i] = new _ITEM();
                    m_ItemList[i].readFromBuff(ref buff);

                    if (((ITEM_CLASS)(m_ItemList[i].ItemClass()) != ITEM_CLASS.ICLASS_EQUIP) &&
                        (!m_ItemList[i].IsNullType()))
                    {
                        LogManager.LogError("equip type error");
                    }
                }
            }
            return(true);
        }
Ejemplo n.º 4
0
    public void SetItemInfo(int nBagIndex, bool bEmpty, ref _ITEM pItem)
    {
        if (nBagIndex < 0 || nBagIndex >= MAX_TALISMAN_ITEM_NUMBER)
        {
            return;
        }

        //物品消失
        if (bEmpty)
        {
            if (mItems[nBagIndex] != null)
            {
                ObjectSystem.Instance.DestroyItem(mItems[nBagIndex]);
                mItems[nBagIndex] = null;
            }
        }
        else//设置物品详细信息
        {
            if (mItems[nBagIndex] != null)
            {
                if (mItems[nBagIndex].GetIdTable() != pItem.m_ItemIndex)
                {
                    mItems[nBagIndex].Define = CDataBaseSystem.Instance.GetDataBase <_DBC_ITEM_TALISMAN>((int)DataBaseStruct.DBC_ITEM_TALISMAN).Search_Index_EQU((int)pItem.m_ItemIndex);
                }
                mItems[nBagIndex].SetExtraInfo(ref pItem);
                CEventSystem.Instance.PushEvent(GAME_EVENT_ID.GE_NEW_TALISMANITEM, nBagIndex);
            }
        }
    }
Ejemplo n.º 5
0
 //设置物品的制作者
 public virtual void SetManufacturer(ref _ITEM pItemInfo)
 {
     if (pItemInfo != null && pItemInfo.GetCreatorVar())
     {
         Array.Copy(pItemInfo.m_Creator, m_Creator, ItemDefine.MAX_ITEM_CREATOR_NAME);
     }
 }
Ejemplo n.º 6
0
 public int getSize()
 {
     if (item_data == null)
     {
         item_data = new _ITEM();
     }
     return(sizeof(uint) + item_data.getSize());
 }
Ejemplo n.º 7
0
 public override void SetExtraInfo(ref _ITEM pItemInfo)
 {
     base.SetExtraInfo(ref pItemInfo);
     if (pItemInfo.m_Talisman == null)
     {
         return;
     }
     curExp_ = pItemInfo.m_Talisman.m_uCurExp;
 }
Ejemplo n.º 8
0
 public bool readFromBuff(ref NetInputBuffer buff)
 {
     if (item_data == null)
     {
         item_data = new _ITEM();
     }
     item_data.readFromBuff(ref buff);
     buff.ReadUint(ref iPrice);
     return(true);
 }
Ejemplo n.º 9
0
    public override void SetExtraInfo(ref _ITEM pItemInfo)
    {
        if (pItemInfo == null)
        {
            return;
        }

        base.SetExtraInfo(ref pItemInfo);
        MEDIC_INFO infoMedic = pItemInfo.m_Medic;

        SetNumber(pItemInfo.GetItemCount());
        SetManufacturer(ref pItemInfo);
    }
Ejemplo n.º 10
0
    public override void SetExtraInfo(ref _ITEM pItemInfo)
    {
        if (pItemInfo == null)
        {
            throw new NullReferenceException("iteminfo is null in CObject_Item_Gem.SetExtraInfo()");
        }

        //调用基类函数,保存_ITEM结构
        base.SetExtraInfo(ref pItemInfo);

        SetNumber(pItemInfo.GetItemCount());
        SetManufacturer(ref pItemInfo);
    }
Ejemplo n.º 11
0
    //重新设置物品属性
    public void SetItemInfo(int nBagIndex, bool bEmpty, ref _ITEM pItem)
    {
        if (nBagIndex >= GAMEDEFINE.MAX_BAG_SIZE)
        {
            return;
        }

        //物品消失
        if (bEmpty)
        {
            if (mItems[nBagIndex] != null)
            {
                ObjectSystem.Instance.DestroyItem(mItems[nBagIndex]);
                mItems[nBagIndex] = null;
            }
        }
        else//设置物品详细信息
        {
            if (mItems[nBagIndex] != null)
            {
                if (mItems[nBagIndex].TypeOwner == ITEM_OWNER.IO_MYSELF_PACKET)
                {
                    CObject_Item Item = mItems[nBagIndex];
                    Item.ItemSaveStatus = SAVE_ITEM_STATUS.GET_MORE_INFO;
                }
                // 判断是否增加item [9/20/2011 Sun]
                if (pItem.GetItemCount() > mItems[nBagIndex].GetNumber())
                {
                    CObject_Item_Equip item = mItems[nBagIndex] as CObject_Item_Equip;
                    if (item != null)
                    {
                        int point = (int)item.GetItemType();
                        if (point == 8)
                        {
                            CEventSystem.Instance.PushEvent(GAME_EVENT_ID.GE_NEW_ITEM, mItems[nBagIndex].GetID());
                        }
                    }
                    if (mItems[nBagIndex].GetIdTable() == 30001001)
                    {
                        CEventSystem.Instance.PushEvent(GAME_EVENT_ID.GE_NEW_ITEM, mItems[nBagIndex].GetID());
                    }
                }
                mItems[nBagIndex].SetExtraInfo(ref pItem);
            }

            mSetAskExtra.Remove(nBagIndex);
        }
    }
Ejemplo n.º 12
0
        public override bool readFromBuff(ref NetInputBuffer buff)
        {
            buff.ReadUint(ref m_ItemBoxID);
            buff.ReadByte(ref m_ItemNumber);
            buff.ReadUShort(ref m_ItemBoxType);
            if (m_ItemNumber > GAMEDEFINE.MAX_BOXITEM_NUMBER)
            {
                m_ItemNumber = GAMEDEFINE.MAX_BOXITEM_NUMBER;
            }

            for (int i = 0; i < m_ItemNumber; i++)
            {
                m_ItemList[i] = new _ITEM();
                m_ItemList[i].readFromBuff(ref buff);
            }
            return(true);
        }
Ejemplo n.º 13
0
 public override bool readFromBuff(ref NetInputBuffer buff)
 {
     if (buff.ReadShort(ref m_BankIndex) != sizeof(byte))
     {
         return(false);
     }
     if (buff.ReadInt(ref m_nsNull) != sizeof(uint))
     {
         return(false);
     }
     if (m_ITEM == null)
     {
         m_ITEM = new _ITEM();
     }
     m_ITEM.readFromBuff(ref buff);
     return(true);
 }
Ejemplo n.º 14
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);
        }
Ejemplo n.º 15
0
    public void setItem(int index, ref _ITEM item)
    {
        if (index < 0 || index >= MAX_TALISMAN_EQUIPT_NUMBER)
        {
            return;
        }
        if (mItems[index] != null)
        {
            ObjectSystem.Instance.DestroyItem(mItems[index]);
            mItems[index] = null;
        }
        CTalisman_Item newItem = ObjectSystem.Instance.NewItem(item.m_ItemIndex) as CTalisman_Item;

        mItems[index]     = newItem;
        newItem.PosIndex  = (short)index;
        newItem.TypeOwner = ITEM_OWNER.IO_TALISMAN_EQUIPT;
        newItem.SetGUID(item.m_ItemGUID.m_World, item.m_ItemGUID.m_Server, (uint)item.m_ItemGUID.m_Serial);
        newItem.SetExtraInfo(ref item);
    }
        public override bool readFromBuff(ref NetInputBuffer buff)
        {
            if (buff.ReadInt(ref m_ObjID) != sizeof(int))
            {
                return(false);
            }
            if (!m_PetGUID.readFromBuff(ref buff))
            {
                return(false);
            }
            if (buff.ReadUint(ref m_wPartFlags) != sizeof(uint))
            {
                return(false);
            }

            for (int i = 0; i < (int)PET_EQUIP.PEQUIP_NUMBER; i++)
            {
                if (((1 << i & m_wPartFlags) != 0))
                {
                    if (m_ItemList[i] == null)
                    {
                        m_ItemList[i] = new _ITEM();
                    }

                    if (!m_ItemList[i].readFromBuff(ref buff))
                    {
                        return(false);
                    }
                    if ((m_ItemList[i].ItemClass() != (byte)ITEM_CLASS.ICLASS_EQUIP) &&
                        (!m_ItemList[i].IsNullType()))
                    {
                        LogManager.LogError("GCDetailPetEquipList " + i + "is incorrect");
                        return(false);
                    }
                }
            }
            return(true);
        }
        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);
        }
Ejemplo n.º 18
0
 public void TalismanEquip_SetItem(int index, ref _ITEM item)
 {
     mTalismanEquip.setItem(index, ref item);
 }
Ejemplo n.º 19
0
 void                            SetItemExtraInfo(int nExBoxIndex, bool bEmpty, ref _ITEM pItem)
 {
 }
Ejemplo n.º 20
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);
        }
        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);
        }
Ejemplo n.º 22
0
 public void SetEquipData(HUMAN_EQUIP Point, _ITEM pEquip)
 {
     m_ItemList[(int)Point] = pEquip;
     m_wPartFlags          |= (uint)(1 << (int)Point);
 }
Ejemplo n.º 23
0
    //设置详细解释
    public override void SetExtraInfo(ref _ITEM pItemInfo)
    {
        if (m_pExtraDefine == null)
        {
            m_pExtraDefine = new EXTRA_DEFINE();
        }

        m_pExtraDefine.m_CurDurPoint = pItemInfo.GetEquipData().m_CurDurPoint;
        m_pExtraDefine.m_MaxDurPoint = pItemInfo.GetEquipData().m_MaxDurPoint;
        m_pExtraDefine.m_nLevelNeed  = pItemInfo.GetEquipData().m_NeedLevel;
        //	m_pExtraDefine.m_nFrogLevel  = pItemInfo.GetEquipData().m_Level;
        m_pExtraDefine.m_nRepairFailureTimes = pItemInfo.GetEquipData().m_FaileTimes;
        m_pExtraDefine.m_nSellPrice          = (int)pItemInfo.GetEquipData().m_BasePrice;
        // 可以镶嵌的宝石个数
        m_pExtraDefine.m_EnableGemCount = pItemInfo.GetEquipData().m_GemMax;
        // 物品强化等级/品级属性/魂印属性[10/10/2011 edit by ZL]
        m_pExtraDefine.m_EquipEnhanceLevel = pItemInfo.GetEquipData().m_EquipEnhanceLevel;
        m_pExtraDefine.m_PrintSoulType     = pItemInfo.GetEquipData().m_CurSoulType;

        // 得到鉴定信息。
        if (pItemInfo.GetItemIdent())
        {
            // 已经鉴定
            m_EquipAttrib = EQUIP_ATTRIB.EQUIP_ATTRIB_IDENTIFY;
        }
        else
        {
            // 未鉴定
            m_EquipAttrib = EQUIP_ATTRIB.EQUIP_ATTRIB_UNIDENTIFY;
        }

        // 得到绑定信息。
        if (pItemInfo.GetItemBind())
        {
            m_pExtraDefine.M_nEquipBindInfo = EQUIP_BIND_INFO.BINDED;
        }
        else
        {
            if (Rule(ITEM_RULE.RULE_PICKBIND))
            {
                m_pExtraDefine.M_nEquipBindInfo = EQUIP_BIND_INFO.GETUP_BIND;
            }
            else if (Rule(ITEM_RULE.RULE_EQUIPBIND))
            {
                m_pExtraDefine.M_nEquipBindInfo = EQUIP_BIND_INFO.EQUIP_BIND;
            }
        }

        // m_vEquipAttributes存放6个的基础属性, m_vBlueEquipAttributes存放所有的扩展属性 [9/22/2011 edit by ZL]
        m_pExtraDefine.m_vBlueEquipAttributes.Clear();
        m_pExtraDefine.m_vEquipAttributes.Clear();

        // 临时将属性划分  0-5基础属性  6-20扩展属性  21-27魂印属性 [10/10/2011 edit by ZL]
        int BASE_ATTR_START       = 0;
        int EXTER_ATTR_START      = DBC_DEFINE.MAX_BASE_ATTR;
        int PRINT_SOUL_ATTR_START = DBC_DEFINE.MAX_BASE_ATTR + DBC_DEFINE.MAX_ADD_ATTR - DBC_DEFINE.MAX_SOUL_ATTR;
        int MAX_ATTR_NUM          = DBC_DEFINE.MAX_BASE_ATTR + DBC_DEFINE.MAX_ADD_ATTR;

        for (int i = 0; i < pItemInfo.GetEquipData().m_AttrCount; i++)
        {
            _ITEM_ATTR att = pItemInfo.GetEquipData().m_pAttr[i];
            //if(att.m_AttrType >= BASE_ATTR_START && att.m_AttrType < EXTER_ATTR_START) {
            //    m_pExtraDefine.m_vEquipAttributes.Add(att);
            //}
            //else if(att.m_AttrType >= EXTER_ATTR_START && att.m_AttrType < PRINT_SOUL_ATTR_START){
            //    m_pExtraDefine.m_vBlueEquipAttributes.Add(att);
            //}
            //else if(att.m_AttrType >= PRINT_SOUL_ATTR_START && att.m_AttrType < MAX_ATTR_NUM){
            //    m_pExtraDefine.m_PrintSoulAttribute = att;
            //}

            // 装备属性不再区分对待,统一放在一个地方 [3/29/2012 Ivan]
            if (att.m_AttrType >= BASE_ATTR_START && att.m_AttrType < MAX_ATTR_NUM)
            {
                m_pExtraDefine.m_vEquipAttributes.Add(att);
            }
        }

        // 清空宝石信息
        m_pExtraDefine.m_vEquipAttachGem.Clear();
        // 宝石信息设置 [9/28/2011 edit by ZL]
        for (int i = 0; i < GAMEDEFINE.MAX_ITEM_GEM; i++)
        {
            m_pExtraDefine.m_vEquipAttachGem.Add(pItemInfo.GetEquipData().m_pGemInfo[i]);
        }

        SetNumber(pItemInfo.GetItemCount());
        SetManufacturer(ref pItemInfo);

        // 因为服务器在发送装备属性的时候,把宝石的附加属性也加在了里面,所以需要删除掉 [10/25/2011 Ivan edit]
        ClearGemAttrInBlueAttrs();
    }
Ejemplo n.º 24
0
 public void UserBank_SetItemExtraInfo(int nBankIndex, bool bEmpty, _ITEM pItem)
 {
     mBank.SetItemExtraInfo(nBankIndex, bEmpty, ref pItem);
 }
Ejemplo n.º 25
0
 //重新设置物品属性
 public void UserBag_SetItemInfo(int nBagIndex, bool bEmpty, _ITEM pItem)
 {
     mUserInventory.SetItemInfo(nBagIndex, bEmpty, ref pItem);
 }
Ejemplo n.º 26
0
 public void TalismanInventory_SetItemInfo(int nBagIndex, bool bEmpty, _ITEM pItem)
 {
     mTalismanInventory.SetItemInfo(nBagIndex, bEmpty, ref pItem);
 }
Ejemplo n.º 27
0
 public void TalismanInventory_SetItem(int index, ref _ITEM item)
 {
     mTalismanInventory.setItem(index, ref item);
 }
Ejemplo n.º 28
0
    public void                            SetItemExtraInfo(int nBankIndex, bool bEmpty, ref _ITEM pItem)
    {
        if (nBankIndex >= GAMEDEFINE.MAX_BANK_SIZE)
        {
            return;
        }

        if (bEmpty)
        {
            if (m_listUserBank[nBankIndex] != null)
            {
                ObjectSystem.Instance.DestroyItem(m_listUserBank[nBankIndex]);
                m_listUserBank[nBankIndex] = null;
            }
        }
        else
        {
            if (m_listUserBank[nBankIndex] != null)
            {
                m_listUserBank[nBankIndex].SetExtraInfo(ref pItem);
            }
        }
    }