예제 #1
0
        public override NET_RESULT_DEFINE.PACKET_EXE Execute(PacketBase pPacket, ref Peer pPlayer)
        {
            GCDetailSkillList Packet = (GCDetailSkillList)pPacket;

            if (GameProcedure.GetActiveProcedure() == GameProcedure.s_ProcMain)
            {
                //  CUIDataPool* pDataPool = (CUIDataPool*)(CGameProcedure::s_pDataPool);
                //确认是自己的数据

                CObject_PlayerMySelf pMySelf = CObjectManager.Instance.getPlayerMySelf();
                if (pMySelf.ServerID != Packet.ObjectID)
                {
                    return(NET_RESULT_DEFINE.PACKET_EXE.PACKET_EXE_CONTINUE);
                }

                //清空所有技能
                pMySelf.GetCharacterData().Skill_CleanAll();

                //刷新到用户数据
                _OWN_SKILL[] pOwnerSkill = Packet.Skill;
                byte[]       nLevel      = Packet.SkillLevel;
                for (short i = 0; i < Packet.numSkill; i++)
                {
                    //LogManager.LogWarning("GCDetailSkillList " + i + " skillID " + pOwnerSkill[i].m_nSkillID + " level " + nLevel[i]);
                    pMySelf.GetCharacterData().Set_Skill(pOwnerSkill[i].m_nSkillID, nLevel[i], true);
                }

                //刷新到UI
                CEventSystem.Instance.PushEvent(GAME_EVENT_ID.GE_SKILL_UPDATE);
                //LogManager.Log("RECV GCDetailSkillList");
            }
            return(NET_RESULT_DEFINE.PACKET_EXE.PACKET_EXE_CONTINUE);
        }
        public override NET_RESULT_DEFINE.PACKET_EXE Execute(PacketBase pPacket, ref Peer pPlayer)
        {
            GCSkillClass Packet = (GCSkillClass)pPacket;

            if (GameProcedure.GetActiveProcedure() == GameProcedure.s_ProcMain)
            {
                //CUIDataPool* pDataPool = (CUIDataPool*)(CGameProcedure::s_pDataPool);

                //确认是自己的数据
                CObject_PlayerMySelf pMySelf = CObjectManager.Instance.getPlayerMySelf();
                if (pMySelf.ServerID != Packet.ObjectID)
                {
                    return(NET_RESULT_DEFINE.PACKET_EXE.PACKET_EXE_CONTINUE);
                }

                //刷新到用户数据
                _OWN_XINFA[] xinFa = Packet.XinFa;
                for (short i = 0; i < Packet.numXinFa; i++)
                {
                    pMySelf.GetCharacterData().Set_SkillClass(xinFa[i].m_nXinFaID, xinFa[i].m_nXinFaLevel);
                }

                CActionSystem.Instance.SkillClass_Update();

                CEventSystem.Instance.PushEvent(GAME_EVENT_ID.GE_SKILL_UPDATE);
                LogManager.Log("RECV GCDetailXinFaClass");
            }
            return(NET_RESULT_DEFINE.PACKET_EXE.PACKET_EXE_CONTINUE);
        }
예제 #3
0
    // 解散队伍
    public void DismissTeam()
    {
        switch (m_Type)
        {
        case TEAM_OR_GROUP_TYPE.TEAM_TYPE:
        {         // 队伍的情况
            for (int i = 0; i < m_TeamMembers.Count; i++)
            {
                // 更新队员头顶信息颜色 [10/9/2011 Ivan edit]
                CObject_Character player = CObjectManager.Instance.FindServerObject((int)m_TeamMembers[i].m_OjbID) as CObject_Character;
                if (player != null)
                {
                    player.GetCharacterData().RefreshName();
                }
            }
            m_TeamMembers.Clear();
        }
        break;

        case TEAM_OR_GROUP_TYPE.GROUP_TYPE:
        {
            m_TeamInfo.Clear();
        }
        break;

        default:
            return;
        }

        CleanUp();

        //设置角色层数据
        CObject_PlayerMySelf self = CObjectManager.Instance.getPlayerMySelf();

        if (self != null)
        {
            self.GetCharacterData().Set_HaveTeamFlag(false);
            self.GetCharacterData().Set_TeamLeaderFlag(false);
            self.GetCharacterData().Set_TeamFullFlag(false);
            self.GetCharacterData().Set_TeamFollowFlag(false);
        }
    }
예제 #4
0
    // 得到自己的队伍信息(从自己的数据池获取)
    void FillMyInfo(TeamMemberInfo member)
    {
        if (member == null)
        {
            throw new NullReferenceException("team member in FillMyInfo(member)");
        }

        CObject_PlayerMySelf pMe = CObjectManager.Instance.getPlayerMySelf();

        CCharacterData pMyData = pMe.GetCharacterData();

        if (null == pMyData)
        {
            return;
        }
        member.m_szNick        = pMyData.Get_Name();
        member.m_uFamily       = pMyData.Get_MenPai();
        member.m_uDataID       = pMyData.Get_RaceID();
        member.m_uLevel        = pMyData.Get_Level();
        member.m_nPortrait     = pMyData.Get_PortraitID();
        member.m_WorldPos.m_fX = pMe.GetPosition().x;
        member.m_WorldPos.m_fZ = pMe.GetPosition().z;
        member.m_nHP           = pMyData.Get_HP();
        member.m_dwMaxHP       = pMyData.Get_MaxHP();
        member.m_nMP           = pMyData.Get_MP();
        member.m_dwMaxMP       = pMyData.Get_MaxMP();
        member.m_nAnger        = 100; // 客户端没有
        member.m_WeaponID      = pMyData.Get_Equip(HUMAN_EQUIP.HEQUIP_WEAPON);
        member.m_CapID         = pMyData.Get_Equip(HUMAN_EQUIP.HEQUIP_CAP);
        member.m_ArmourID      = pMyData.Get_Equip(HUMAN_EQUIP.HEQUIP_ARMOR);
        member.m_CuffID        = pMyData.Get_Equip(HUMAN_EQUIP.HEQUIP_CUFF);
        member.m_FootID        = pMyData.Get_Equip(HUMAN_EQUIP.HEQUIP_BOOT);
        member.m_uBackID       = pMyData.Get_Equip(HUMAN_EQUIP.HEQUIP_BACK);//  [8/30/2010 Sun]
        member.m_bDead         = (pMe.CharacterLogic_Get() == ENUM_CHARACTER_LOGIC.CHARACTER_LOGIC_DEAD);

        member.m_uFaceMeshID = pMyData.Get_FaceMesh();
        member.m_uHairMeshID = pMyData.Get_HairMesh();
        member.m_uHairColor  = pMyData.Get_HairColor();
    }
예제 #5
0
    public void UpdateFuncEnable()
    {
        if (funcList.Count == 0)
        {
            UnRegistConditions();
            return;
        }

        CObject_PlayerMySelf mySelf = CObjectManager.Instance.getPlayerMySelf();
        CDetailAttrib_Player myData = CDetailAttrib_Player.Instance;

        if (mySelf == null || myData == null)
        {
            return;
        }
        //////////////////////////////////////////////////////////////////////////
        // 由于界面表现要有特殊标示,所以特殊对待
        int x1Pos = 0;
        int y2Pos = 45;
        int index = -1;

        //////////////////////////////////////////////////////////////////////////
        foreach (_DBC_FUNC_OPEN_LIST enumerator in funcList)
        {
            index++;
            bool showEnable          = true;
            _DBC_FUNC_OPEN_LIST func = enumerator;
            if (func.needLevel != MacroDefine.INVALID_ID && mySelf.GetCharacterData().Get_Level() < func.needLevel)
            {
                showEnable = false;
            }
            else if (func.receiveMission != MacroDefine.INVALID_ID)
            {
                if ((myData.GetMissionIndexByID(func.receiveMission) == MacroDefine.INVALID_ID) &&
                    !myData.IsMissionHaveDone((uint)func.receiveMission))
                {
                    showEnable = false;
                }
            }
            else if (func.finishMission != MacroDefine.INVALID_ID)
            {
                if (!myData.IsMissionHaveDone((uint)func.finishMission))
                {
                    showEnable = false;
                }
            }

            if (uiGoList[index] == null)
            {
                uiGoList[index] = GameObject.Find(enumerator.uiName);
            }

            if (uiGoList[index] != null)
            {
                if (showEnable)
                {
                    if (uiGoList[index].layer != LayerManager.UILayer)
                    {
                        uiGoList[index].layer = LayerManager.UILayer;
                    }

                    //////////////////////////////////////////////////////////////////////////
                    Vector3 pos = uiGoList[index].transform.localPosition;
                    switch (enumerator.specialTag)
                    {
                    case 1:
                        pos.x  = x1Pos;
                        x1Pos -= 45;
                        break;

                    case 2:
                        pos.y  = y2Pos;
                        y2Pos += 45;
                        break;

                    default:
                        break;
                    }
                    uiGoList[index].transform.localPosition = pos;
                    //////////////////////////////////////////////////////////////////////////

                    //                 funcList.Remove(enumerator.Current.Key);
                    //                 enumerator = funcList.GetEnumerator();
                }
                else
                {
                    if (uiGoList[index].layer == LayerManager.UILayer)
                    {
                        uiGoList[index].layer = LayerManager.DefaultLayer;
                    }
                }
            }
        }
    }
예제 #6
0
    /// <summary>
    /// 过滤任务
    /// </summary>
    public void Sort()
    {
        oldNpcIds.Clear();
        foreach (_DBC_MISSION_DEMAND_LIST miss in sceneMissions)
        {
            if (!oldNpcIds.Contains(miss.n_AcceptNpcID))
            {
                oldNpcIds.Add(miss.n_AcceptNpcID);
            }
            if (!oldNpcIds.Contains(miss.n_FinishNpcID))
            {
                oldNpcIds.Add(miss.n_FinishNpcID);
            }
        }

        sortMissions.Clear();
        sceneMissions.Clear();

        CObject_PlayerMySelf mySelf = CObjectManager.Instance.getPlayerMySelf();
        CDetailAttrib_Player myData = CDetailAttrib_Player.Instance;

        // 没有玩家数据无法过滤 [6/14/2011 ivan edit]
        if (mySelf == null || myData == null)
        {
            return;
        }

        int currentScene = GameProcedure.s_pWorldManager.GetActiveSceneID();

        foreach (_DBC_MISSION_DEMAND_LIST miss in allMissions)
        {
            // 是否已经接了该任务
//             if (myData.GetMissionIndexByID(miss.n_MissionID) != MacroDefine.INVALID_ID)
//                 continue;
            // 是否已经完成
            if (myData.IsMissionHaveDone((uint)miss.n_MissionID))
            {
                continue;
            }
            // 最低等级
            if (miss.n_MinLevel != MacroDefine.INVALID_ID && !(mySelf.GetCharacterData().Get_Level() >= miss.n_MinLevel))
            {
                continue;
            }
            // 最高等级
            if (miss.n_MaxLevel != MacroDefine.INVALID_ID && !(mySelf.GetCharacterData().Get_Level() < miss.n_MaxLevel))
            {
                continue;
            }
            // 前置任务
            if (miss.n_PreMissionID != MacroDefine.INVALID_ID && !myData.IsMissionHaveDone((uint)miss.n_PreMissionID))
            {
                continue;
            }

            sortMissions.Add(miss);

            // 整理出当前场景相关的任务 [4/6/2012 Ivan]
            if (miss.n_AcceptSceneId == currentScene || miss.n_FinishSceneId == currentScene)
            {
                sceneMissions.Add(miss);
            }
        }

        UpdateNpcState();

        oldNpcIds.Clear();

        // 刷新地图和可接任务列表 [4/6/2012 Ivan]
        CEventSystem.Instance.PushEvent(GAME_EVENT_ID.GE_UI_INFOS, "SortMission");
    }
    bool IsMyPet(uint serverId)
    {
        CObject_PlayerMySelf mySelf = CObjectManager.Instance.getPlayerMySelf();

        return(mySelf.GetCharacterData().IsMyPet(serverId));
    }