Пример #1
0
    public CTripperObject_Resource NewTripperResource(int idServer)
    {
        CTripperObject_Resource newTripperResource = new CTripperObject_Resource();

        add(newTripperResource, idServer);
        mPlayerNPC.AddChild(newTripperResource);
        return(newTripperResource);
    }
Пример #2
0
 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());
         }
     }
 }
Пример #3
0
 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);
        }
Пример #5
0
    //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, "传送点" );
            //          }
        }
    }