コード例 #1
0
        public void Dome(int nPetNum)
        {
            SDATA_PET My_Pet = CDataPool.Instance.Pet_GetPet(nPetNum);

            if ((My_Pet == null) || (MacroDefine.INVALID_ID == My_Pet.IsPresent))
            {
                throw new Exception("LUA:Pet Dome parameter error");
            }

            int          idxPackage = -1;
            CObject_Item pFind      = (CObject_Item)CDataPool.Instance.Pet_GetLowestLevel_Dome_From_Package(My_Pet.GUID, ref idxPackage);

            if (My_Pet.Happiness == 100)
            {
                //    STRING strMsg = "你的宠物无需驯养";//COLORMSGFUNC("GMGameInterface_Script_Pet_NoNeedDemo");
                //    ADDNEWDEBUGMSG(strMsg);
                //    return;
            }

            if (pFind != null || idxPackage < 0)
            {
                //    STRING strMsg = "你没有驯养道具";//COLORMSGFUNC("GMGameInterface_Script_Pet_NoDemoFood");
                //    ADDNEWDEBUGMSG(strMsg);
                //    return;
            }

            CGUseItem pi = new CGUseItem();

            pi.BagIndex      = (byte)idxPackage;
            pi.TargetPetGUID = My_Pet.GUID;
            NetManager.GetNetManager().SendPacket(pi);
        }
コード例 #2
0
        internal void PacketItem_UserItem(CActionItem_Item pActionItem, int targetServerID, Vector2 fvPos)
        {
            //空物品
            if (pActionItem == null || pActionItem.GetType() != ACTION_OPTYPE.AOT_ITEM)
            {
                return;
            }
            CObject_Item pItem = pActionItem.ItemImpl;

            if (pItem == null)
            {
                return;
            }
            //必须是能够使用的物品
            if (pItem.GetItemClass() != ITEM_CLASS.ICLASS_COMITEM && pItem.GetItemClass() != ITEM_CLASS.ICLASS_TASKITEM)
            {
                return;
            }

            //特殊物品不能在背包中直接使用,例如,宠物技能书
//          STRING strTemp;
//          if(!CObject_Item::CheckUseInPackage(pItem, strTemp))
//          {
//              if(!strTemp.empty()) CGameProcedure::s_pEventSystem->PushEvent(GE_INFO_SELF, strTemp.c_str());
//              return;
//          }
            //组队跟随中...
            //if(CObjectManager::GetMe()->GetMySelf()->GetCharacterData()->Get_TeamFollowFlag()) return;

            //检查目前选中的目标
            CObject pObj = CObjectManager.Instance.FindServerObject(targetServerID);

            //检查物品是否能够直接使用
            int        objID = 0;
            PET_GUID_t petID = new PET_GUID_t();
            fVector2   pos;

            pos.x = fvPos.x;
            pos.y = fvPos.y;
            bool bCanuseDir = ((CObject_Item_Medicine)pItem).IsValidTarget(pObj, ref pos, ref objID, ref petID);

            if (bCanuseDir)
            {
                WORLD_POS posTarget;
                posTarget.m_fX = pos.x;
                posTarget.m_fZ = pos.y;

                //能够直接使用
                CGUseItem msg = new CGUseItem();
                msg.BagIndex      = (byte)pItem.GetPosIndex();
                msg.Target        = (uint)objID;
                msg.TargetPetGUID = petID;
                msg.PosTarget     = posTarget;
                NetManager.GetNetManager().SendPacket(msg);
                return;
            }

            //如果已经选中目标,说明目标不合适,如果是用在自己宠物上的物品,说明宠物没有释放
            if (pObj != null || ((CObject_Item_Medicine)pItem).IsTargetOne())
            {
                CEventSystem.Instance.PushEvent(GAME_EVENT_ID.GE_INFO_SELF, "无效目标");
                return;
            }

            //需要选中目标,在鼠标上挂上物品
            CActionSystem.Instance.SetDefaultAction(pActionItem);
        }