Example #1
0
    // 寻路找怪处理
    void FindEnamyTick()
    {
        if (m_bNotEnamyNpcFlag != 0)
        {
            return;
        }
        //如果有目标名字则寻找该目标,进行交互
        if (m_Path.AutoSearchTargetName != "")
        {
            Obj_Character obj = Singleton <ObjManager> .GetInstance().FindObjCharacterInSceneByName(m_Path.AutoSearchTargetName);

            if (obj && obj.ObjType == Games.GlobeDefine.GameDefine_Globe.OBJ_TYPE.OBJ_NPC)
            {
                Obj_NPC objNpc = obj as Obj_NPC;
                //根据目标NPC的势力确认是对话还是攻击
                if (Reputation.IsEnemy(objNpc) || Reputation.IsNeutral(objNpc))
                {
                    Singleton <ObjManager> .GetInstance().MainPlayer.StopMove();

                    m_Path.AutoSearchPosCache.Clear();
                    m_Path.ResetPath();
                    IsAutoSearching = false;
                    m_EndPointCache.Clean();

                    //如果是地方NPC,则开始攻击
                    Singleton <ObjManager> .GetInstance().MainPlayer.OnSelectTarget(objNpc.gameObject);

                    Singleton <ObjManager> .GetInstance().MainPlayer.OnEnterCombat(objNpc.GetComponent <Obj_Character>());

                    m_bNotEnamyNpcFlag = 1;

                    // 杀怪任务寻路结束,如果没在自动战斗状态,则进入自动战斗
                    Obj_MainPlayer mainPlayer = Singleton <ObjManager> .GetInstance().MainPlayer;

                    if (null != mainPlayer && !mainPlayer.GetAutoCombatState() && Singleton <ObjManager> .Instance.MainPlayer.IsOpenCabalAuto)
                    {
                        mainPlayer.EnterAutoCombat();
                        GameManager.gameManager.MissionManager.MissionAutoCombat = true;
                    }
                }
                else
                {
                    m_bNotEnamyNpcFlag = 2;
                    return;
                }
            }
        }
    }
        public uint Execute(PacketDistributed ipacket)
        {
            GC_JOIN_TEAM_REQUEST packet = (GC_JOIN_TEAM_REQUEST)ipacket;

            if (null == packet)
            {
                return((uint)PACKET_EXE.PACKET_EXE_ERROR);
            }

            //enter your logic
            if (packet.RequesterGuid == GlobeVar.INVALID_GUID)
            {
                return((uint)PACKET_EXE.PACKET_EXE_CONTINUE);
            }

            m_RequesterGuid = packet.RequesterGuid;
            m_RequesterName = packet.RequesterName;
            Obj_MainPlayer mainPlayer = Singleton <ObjManager> .Instance.MainPlayer;

            if (null != mainPlayer)
            {
                if (mainPlayer.GetAutoCombatState() && mainPlayer.AutoJoinTeamAccept)
                {
                    //挂机中
                    AgreeTeamJoin();
                }
                else
                {
                    //发送MessageBox确认邀请
                    //"玩家XXX申请加入队伍,是否同意?"
                    string dicStr = StrDictionary.GetClientDictionaryString("#{1174}",
                                                                            packet.RequesterName,
                                                                            packet.Requesterlevel);
                    MessageBoxLogic.OpenOKCancelBox(dicStr, "", AgreeTeamJoin, DisagreeTeamJoin);
                }
            }

            return((uint)PACKET_EXE.PACKET_EXE_CONTINUE);
        }
        public uint Execute(PacketDistributed ipacket)
        {
            //先重置缓存数据
            m_InviterGuid = GlobeVar.INVALID_GUID;

            //处理消息包
            GC_JOIN_TEAM_INVITE packet = (GC_JOIN_TEAM_INVITE)ipacket;

            if (null == packet)
            {
                return((uint)PACKET_EXE.PACKET_EXE_ERROR);
            }

            if (packet.InviterGuid == GlobeVar.INVALID_GUID)
            {
                return((uint)PACKET_EXE.PACKET_EXE_CONTINUE);
            }

            m_InviterGuid = packet.InviterGuid;
            Obj_MainPlayer mainPlayer = Singleton <ObjManager> .Instance.MainPlayer;

            if (null != mainPlayer)
            {
                if (mainPlayer.GetAutoCombatState() && mainPlayer.AutoInviteTeamAccept)
                {
                    //挂机中
                    AgreeTeamInvite();
                }
                else
                {
                    //发送MessageBox确认邀请
                    //"玩家XXX邀请您加入队伍,是否同意?"
                    string dicStr = StrDictionary.GetClientDictionaryString("#{1173}", packet.InviterName);
                    MessageBoxLogic.OpenOKCancelBox(dicStr, "", AgreeTeamInvite, DisagreeTeamInvite);
                }
            }
            return((uint)PACKET_EXE.PACKET_EXE_CONTINUE);
        }