public CTripperObject_Resource NewTripperResource(int idServer) { CTripperObject_Resource newTripperResource = new CTripperObject_Resource(); add(newTripperResource, idServer); mPlayerNPC.AddChild(newTripperResource); return(newTripperResource); }
public void FlashAllTripperObjs() { foreach (int k in mServerObjects.Keys) { if (mServerObjects[k] is CTripperObject_Resource) { CTripperObject_Resource tripper = (CTripperObject_Resource)mServerObjects[k]; tripper.Flash(tripper.Tripper_CanOperation()); } } }
public CTripperObject_Resource FindTripperResource(int resourceId) { foreach (int k in mServerObjects.Keys) { if (mServerObjects[k] is CTripperObject_Resource) { CTripperObject_Resource tripper = (CTripperObject_Resource)mServerObjects[k]; if (tripper.GetTableId() == resourceId) { return(tripper); } } } return(null); }
public override NET_RESULT_DEFINE.PACKET_EXE Execute(PacketBase packet, ref Peer pPlayer) { GCNewItemBox pPacket = (GCNewItemBox)packet; //当前流程是主流程 if (GameProcedure.GetActiveProcedure() == (GameProcedure)GameProcedure.s_ProcMain) { CObjectManager pObjectManager = CObjectManager.Instance; //检查位置是否合法 fVector2 pos = new fVector2(pPacket.Position.m_fX, pPacket.Position.m_fZ); if (!WorldManager.Instance.ActiveScene.IsValidPosition(ref pos)) { LogManager.LogError("Valid Position @GCNewItemBoxHandler.Execute"); return(NET_RESULT_DEFINE.PACKET_EXE.PACKET_EXE_ERROR); } if ((int)ITEMBOX_TYPE.ITYPE_DROPBOX == pPacket.ObjectType) { bool bMustCreater = true; CObject pObj = (CObject)(pObjectManager.FindServerObject((int)pPacket.MonsterID)); if (pObj != null && pObj is CObject_Character) { CObject_Character pCharacter = (CObject_Character)pObj; if (!pCharacter.IsDie()) { uint idItemBox = (uint)pPacket.ObjectID; uint idOwner = (uint)pPacket.OwnerID; WORLD_POS posCreate = pPacket.Position; pCharacter.AddDropBoxEvent(idItemBox, idOwner, ref posCreate); bMustCreater = false; } } if (bMustCreater) { //创建ItemBox CTripperObject_ItemBox pBox = (CTripperObject_ItemBox)CObjectManager.Instance.NewTripperItemBox((int)pPacket.ObjectID); pBox.Initial(null); //设置位置 pBox.SetMapPosition(pPacket.Position.m_fX, pPacket.Position.m_fZ); //设置掉落箱的归属 pBox.SetOwnerGUID((uint)pPacket.OwnerID); CEventSystem.Instance.PushEvent(GAME_EVENT_ID.GE_DROP_ITEMBOX); } } else { //创建矿物生长点 CTripperObject_Resource pResource = (CTripperObject_Resource)CObjectManager.Instance.NewTripperResource((int)pPacket.ObjectID); if (!(pResource.SetResourceID((int)pPacket.ObjectType))) { //非法的资源ID CObjectManager.Instance.DestroyObject(pResource); return(NET_RESULT_DEFINE.PACKET_EXE.PACKET_EXE_CONTINUE); } pResource.Initial(null); //设置位置 pResource.SetMapPosition(pPacket.Position.m_fX, pPacket.Position.m_fZ); jhCount++; } } return(NET_RESULT_DEFINE.PACKET_EXE.PACKET_EXE_CONTINUE); }
//private void AddFriend( CObject_PlayerOther* pObj ); //创建轨迹特效 //private void CreateMoveTrackProjTex(); //private void Tick_MoveTrack(); //CObject_ProjTex_MoveTrack* GetFreeProjTex(); //void FreeMoveTrackProjTex(CObject_ProjTex_MoveTrack* pMoveTrack); //private void FreeAllMoveTrackProjTex(); //private void ClearAllFreeProjTex(); // 刷新地图信息 [3/19/2012 Ivan] public void UpdateMinimapData() { ClearMapData(); // 更新队友列表 //if(CUIDataPool::GetMe()->GetTeamOrGroup()) //{ // for( int i = 0; i < CUIDataPool::GetMe()->GetTeamOrGroup()->GetTeamMemberCount(); i ++ ) // { // const TeamMemberInfo* pInfo = CUIDataPool::GetMe()->GetTeamOrGroup()->GetMemberByIndex( i ); // if( pInfo ) // { // /*if( pInfo->m_SceneID != m_pActiveScene->GetSceneDefine()->nID ) // continue;*/ // if( pInfo->m_OjbID == CObjectManager::GetMe()->GetMySelf()->GetServerID() ) // continue; // data.pos.x = pInfo->m_WorldPos.m_fX; // data.pos.z = pInfo->m_WorldPos.m_fZ; // _snprintf( data.name, 128, "%s", pInfo->m_szNick ); // data.nServerID = pInfo->m_OjbID; // data.dwSceneID = pInfo->m_SceneID; // m_FriendlistObj.push_back( data ); // } // } //} MAP_POS_DEFINE data; CObject_PlayerMySelf mySelf = CObjectManager.Instance.getPlayerMySelf(); // 遍历所有的对象 [3/19/2012 Ivan] foreach (KeyValuePair <int, CObject> obj in CObjectManager.Instance.ServerObjects) { data = new MAP_POS_DEFINE(); // 如果是角色 [3/19/2012 Ivan] if (obj.Value is CObject_Character) { CObject curObj = obj.Value; if (curObj == mySelf) { continue; } ENUM_RELATION sCamp = GameInterface.Instance.GetCampType(curObj, mySelf); // 如果已经死了,就不加如列表了。 if (((CObject_Character)curObj).CharacterLogic_Get() == ENUM_CHARACTER_LOGIC.CHARACTER_LOGIC_DEAD) { continue; } if (((CObject_Character)curObj).GetFakeObjectFlag() == true) { continue; } // 判断是不是宠物 // 此处还有判断m_FlashlistObj和m_ActivelistObj的逻辑,没有使用,屏蔽 [3/19/2012 Ivan] data.pos.x = curObj.GetPosition().x; data.pos.y = curObj.GetPosition().z; data.name = ((CObject_Character)curObj).GetCharacterData().Get_Name(); data.nServerID = ((CObject_PlayerNPC)curObj).ServerID; if (curObj is CObject_PlayerOther) // 如果是玩家 { if (sCamp == ENUM_RELATION.RELATION_FRIEND) // 如果是同一阵营的 { // 如果是队友,就替掉本来已经存在的位置 // if( CheckIsFriend( pCurObj->GetServerID() ) ) // { // AddFriend( (CObject_PlayerOther*)pCurObj ); // continue; // } m_PlayerlistObj.Add(data); } else if (sCamp == ENUM_RELATION.RELATION_ENEMY) // 敌人 { m_AnimylistObj.Add(data); } } else if (curObj is CObject_PlayerNPC) // 如果是npc { //data.nServerID = ((CObject_PlayerNPC)curObj).GetCharacterData().Get_RaceID(); if (((CObject_PlayerNPC)curObj).IsDisplayBoard() == false) { continue; } // 如果是宠物 if (((CObject_PlayerNPC)curObj).GetNpcType() == ENUM_NPC_TYPE.NPC_TYPE_PET) { if (((CObject_PlayerNPC)curObj).GetOwnerId() == -1) // 还没有主人 { m_PetlistObj.Add(data); } } else if (sCamp == ENUM_RELATION.RELATION_FRIEND) // 如果是同阵营的,是npc,否则是敌人 { // TODO 以后要判断该npc身上是否带了任务,有的话需要放到任务列表里面去 [3/19/2012 Ivan] m_ExpNPClistObj.Add(data); } else if (sCamp == ENUM_RELATION.RELATION_ENEMY) { m_AnimylistObj.Add(data); } } } else if (obj.Value is CTripperObject_Resource) { CTripperObject_Resource resource = obj.Value as CTripperObject_Resource; data.pos.x = resource.GetPosition().x; data.pos.y = resource.GetPosition().z; data.name = resource.GetLifeAbility().szName; data.nServerID = resource.ServerID; m_ExpObjlistObj.Add(data); } // else if( obj.Value is CTripperObject_Transport ) // { // data.pos.x = (( CObject*)pCurObj)->GetPosition().x; // data.pos.z = (( CObject*)pCurObj)->GetPosition().z; // _snprintf( data.name, 128, "传送点" ); // } } }