Example #1
0
        public override NET_RESULT_DEFINE.PACKET_EXE Execute(PacketBase pPacket, ref Peer pPlayer)
        {
            //当前流程是主流程
            if (GameProcedure.GetActiveProcedure() == (GameProcedure)GameProcedure.s_ProcMain)
            {
                CObjectManager pObjectManager = CObjectManager.Instance;
                GCDelObject    delObjPacket   = (GCDelObject)pPacket;
                //判断是否是本场景
                // 将场景ID和资源ID分开,不再使用资源ID代替场景ID [10/24/2011 Sun]
                if (WorldManager.Instance.GetActiveSceneID() != delObjPacket.getSceneID())
                {
                    return(NET_RESULT_DEFINE.PACKET_EXE.PACKET_EXE_CONTINUE);
                }

                //寻找obj
                CObject           pDelObj = pObjectManager.FindServerObject((int)delObjPacket.getObjID());
                CObject_Character pObj    = pDelObj as CObject_Character;
                LogManager.Log("GCDelObjectHandler ObjID:" + delObjPacket.getObjID());
                if (pObj == null)
                {
                    CObjectManager.Instance.DestroyObject(pDelObj);
                    return(NET_RESULT_DEFINE.PACKET_EXE.PACKET_EXE_CONTINUE);
                }

                if (CObjectManager.Instance.GetMainTarget() != null && pObj == CObjectManager.Instance.GetMainTarget())
                {
                    CObjectManager.Instance.SetMainTarget(-1, CObjectManager.DESTROY_MAIN_TARGET_TYPE.DEL_OBJECT);
                }
                // 判断obj是否在载具上面,在的话需要删除掉 [8/29/2011 Ivan edit] //todo
                if (pObj.GetCharacterType() == CHARACTER_TYPE.CT_PLAYEROTHER ||
                    pObj.GetCharacterType() == CHARACTER_TYPE.CT_PLAYERMYSELF)
                {
                    if (pObj.GetCharacterData().Get_BusObjID() != MacroDefine.UINT_MAX)
                    {
                        CObject pBus = CObjectManager.Instance.FindServerObject((int)pObj.GetCharacterData().Get_BusObjID());
                        if (pBus != null)
                        {
                            SCommand_Object cmdTemp = new SCommand_Object();
                            cmdTemp.m_wID = (int)OBJECTCOMMANDDEF.OC_BUS_REMOVE_PASSENGER;
                            cmdTemp.SetValue <int>(0, pObj.ServerID);
                            pBus.PushCommand(cmdTemp);
                        }
                    }
                }

                //删除对象
                CObjectManager.Instance.DestroyObject(pObj);
                //之后不能执行任何代码
            }

            return(NET_RESULT_DEFINE.PACKET_EXE.PACKET_EXE_CONTINUE);
        }
Example #2
0
        internal string GetHeadIcon()
        {
            CObject_Character pCharObj = _GetTargetAsCharacter();

            if (pCharObj.GetCharacterType() == CHARACTER_TYPE.CT_MONSTER)
            {
                CObject_PlayerNPC npc = pCharObj as CObject_PlayerNPC;
                if (npc != null)
                {
                    return(npc.GetPortrait());
                }
                else
                {
                    return("");
                }
            }

            //得到玩家和自己的头像
            string pImageName = "";
            //打开生物定义表
            _DBC_CHAR_FACE pFaceImage = CDataBaseSystem.Instance.GetDataBase <_DBC_CHAR_FACE>(
                (int)DataBaseStruct.DBC_CHAR_FACE).Search_Index_EQU(pCharObj.GetCharacterData().Get_PortraitID());

            if (pFaceImage != null)
            {
                pImageName = pFaceImage.pImageSetName;
            }

            return(pImageName);
        }
    public int GetRelationOther(CObject_Character pCharObj)
    {
        if (pCharObj.GetCharacterType() != CHARACTER_TYPE.CT_PLAYEROTHER)
        {
            return(-1);
        }
        _CAMP_DATA playerCampData = GetCharacterData().Get_CampData();

        // 目前只有和平全体组队模式 [8/19/2011 edit by ZL]
        switch (playerCampData.m_nPKModeID)
        {
        case (byte)PK_MODE.PK_MODE_PEACE:
            return(1);

        case (byte)PK_MODE.PK_MODE_GOODBAD:
            return(0);

        case (byte)PK_MODE.PK_MODE_PERSONAL:
            return(0);

        case (byte)PK_MODE.PK_MODE_GUILD:
            //			return pCharObj->GetCharacterData()->Get_Guild() ==
            //				CObjectManager::GetMe()->GetMySelf()->GetCharacterData()->Get_Guild() ? 0 : 1;
            return(0);

        case (byte)PK_MODE.PK_MODE_TEAM:
            //todo
//                     CTeamOrGroup playerTeam = null;
//                     playerTeam = CUIDataPool::GetMe()->GetTeamOrGroup();
//                     for ( int i = 0; i < playerTeam->GetTeamMemberCount(1); ++i ) {
//                         if ( playerTeam->GetMemberByIndex(i, 1)->m_szNick && strcmp(playerTeam->GetMemberByIndex(i, 1)->m_szNick,
//                                     pCharObj->GetCharacterData()->Get_Name()) == 0 ) {
//                             return 1;
//                         }
//                     }
            return(0);

        case (byte)PK_MODE.PK_MODE_FAMILY:
            return(0);

        default: return(1);
        }
        return(-1);
    }