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); }
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); }