示例#1
0
    public NpcMgr GetNpcMgr(NpcActionStatus npcActionStatus)
    {
        NpcMgr npcMgr = null;

        m_npcMgrDict.TryGetValue(npcActionStatus, out npcMgr);
        return(npcMgr);
    }
 protected override void Process()
 {
     if (NpcMgr.HasChanges)
     {
         string npc_filename = Paths.GetNPCData();
         setStatus("Saving NPC Data...", false);
         BackupHelper.Create(npc_filename);
         NpcMgr.Save(npc_filename, npc_Progress);
     }
     //
     if (ItemMgr.HasChanges)
     {
         string item_filename = Paths.GetItemData();
         setStatus("Saving Item Data...", false);
         BackupHelper.Create(item_filename);
         ItemMgr.Save(item_filename, item_Progress);
     }
     //
     if (ScriptMgr.HasChanges)
     {
         string ai_filename = Paths.GetAIData();
         setStatus("Compiling AI Scripts...", true);
         BackupHelper.Create(ai_filename);
         is_compiled    = false;
         CompilerResult = ScriptMgr.Compile(ai_Progress);
     }
 }
示例#3
0
        /// <summary>
        /// 玩家断链接
        /// </summary>
        public override void OnMessage(NetPeer peer, NetDataReader reader)
        {
            var npcId   = peer.ConnectId;
            var npcView = NpcMgr.GetNpc(npcId);

            NpcMgr.RemoveNpc(npcId);

            var npcs = NpcMgr.mNpcs.Where(r => r.Key != npcId);

            if (npcs.Count() > 0)
            {
                var dw = new NetDataWriter();
                dw.Put((ushort)Protocal.Disconnect);
                dw.Put(npcId);

                foreach (var de in npcs)
                {
                    var mPeer = de.Value.mPeer;
                    if (mPeer != null && mPeer.ConnectionState == ConnectionState.Connected)
                    {
                        mPeer.Send(dw, DeliveryMethod.ReliableOrdered);
                    }
                }
            }
        }
示例#4
0
    //lz-2016.08.15 增加基地NPC召回按钮
    void OnCallBtn(GameObject go)
    {
        if (null != m_RefNpc && null != m_RefNpc.NPC)
        {
            //m_RefNpc.NPC
            ECsNpcState state;
            if (!NpcMgr.CallBackColonyNpcToPlayer(m_RefNpc.NPC, out state))
            {
                switch (state)
                {
                case ECsNpcState.None:
                    break;

                case ECsNpcState.Working:
                    CSUI_MainWndCtrl.ShowStatusBar(CSUtils.GetNoFormatString(PELocalization.GetString(82201077), m_RefNpc.FullName));
                    break;

                case ECsNpcState.InMission:
                    CSUI_MainWndCtrl.ShowStatusBar(CSUtils.GetNoFormatString(PELocalization.GetString(82201078), m_RefNpc.FullName));
                    break;

                case ECsNpcState.OutOfRadiu:
                    CSUI_MainWndCtrl.ShowStatusBar(PELocalization.GetString(82201079));
                    break;
                }
            }
            else
            {
                CSUI_MainWndCtrl.ShowStatusBar(PELocalization.GetString(82201080));
            }
        }
    }
示例#5
0
    public void RemoveNpcAction(NpcActionStatus npcActionStatus, int npcId)
    {
        NpcMgr npcMgr = GetNpcMgr(npcActionStatus);

        if (npcMgr == null)
        {
            return;
        }
        npcMgr.RemoveNpcAction(npcId);
    }
示例#6
0
    public int GetNpcCount(NpcActionStatus npcActionStatus)
    {
        NpcMgr npcMgr = GetNpcMgr(npcActionStatus);

        if (npcMgr == null)
        {
            return(0);
        }
        return(npcMgr.Count);
    }
示例#7
0
    public Transform GetNpcParentTransform(NpcActionStatus npcActionStatus)
    {
        NpcMgr npcMgr = GetNpcMgr(npcActionStatus);

        if (npcMgr == null)
        {
            return(null);
        }
        return(npcMgr.NpcParentTransform);
    }
示例#8
0
        protected override void InitOnceInfo()
        {
            base.InitOnceInfo();
            m_RedHeartPickRecord = gameObject.AddComponent <RedHeartPickRecord>();
            m_NpcMgr             = Global.gApp.gSystemMgr.GetNpcMgr();
            m_EnemyTypeCount     = m_EnemyPath.Length;
            m_ShowNode           = GameObject.Find("binansuo_03");
            m_ControllerNode     = m_ShowNode.transform.Find("ControllerNode").gameObject;
            m_ControllerNode.SetActive(true);
            m_FightNode = m_ControllerNode.transform.Find("FightNode");
            m_FightNode.gameObject.SetActive(true);
            m_MainCamera = Camera.main;
            Global.gApp.gGameAdapter.AdaptCamera(ref m_MainCamera);
            m_NoTaskNpcBornNode = m_ControllerNode.transform.Find("FightNode/NPCBornNode/Dynamic");
            m_TaskNpcBronNode   = m_ControllerNode.transform.Find("FightNode/NPCBornNode/Static");
            m_NpcNode           = m_ControllerNode.transform.Find("FightNode/NpcNode");
            m_DrstrangeIconBtn.button.onClick.AddListener(OpenWeaponRaiseUi);
            m_RecycleIconBtn.button.onClick.AddListener(OpenMatBg);

            Transform adFollowNode = m_ControllerNode.transform.Find("FightNode/AdNode");

            AdIconBtn.button.onClick.AddListener(RespondBillboardClick);
            AdIcon.gameObject.GetComponent <FollowNode>().SetFloowNode(adFollowNode);

            m_NameBg.button.onClick.AddListener(OpenDetail);
            m_ResourceBtn.button.onClick.AddListener(OpenResourceDetail);
            m_OldWamonIconBtn.button.onClick.AddListener(OpenCampTaskDetails);
            m_Buff.button.onClick.AddListener(OpenCampBuff);
            m_BadgeIconBtn.button.onClick.AddListener(OpenBadge);

            //检测npc是否离开
            m_NpcMgr.NpcLeave();

            //获取营地点位配置list
            var campsitePoints = m_FightNode.GetComponentsInChildren <CampsiteNpcPoint>(true);

            for (int i = 0; i < campsitePoints.Length; i++)
            {
                var point         = campsitePoints[i];
                int linkDataIndex = point.PointId - 1;
                if (CampsiteMgr.singleton.HasPoint(linkDataIndex))
                {
                    point.SetValid(linkDataIndex);
                }
                else
                {
                    point.SetInvalid();
                }
            }

            DelayCallBack delayCallBack = gameObject.AddComponent <DelayCallBack>();

            delayCallBack.SetCallTimes(9999999);
            delayCallBack.SetAction(FreshDropRedHeartData, 30, true);
        }
示例#9
0
 public void AddNpcMgr(NpcMgr npcMgr)
 {
     if (npcMgr == null)
     {
         return;
     }
     if (m_npcMgrDict.ContainsKey(npcMgr.NpcActionStatus) == false)
     {
         m_npcMgrDict.Add(npcMgr.NpcActionStatus, npcMgr);
     }
 }
示例#10
0
 public SystemMgr()
 {
     m_WeaponMgr      = new WeaponMgr();
     m_AttrMgr        = new BaseAttrMgr();
     m_PassMgr        = new PassMgr();
     m_QuestMgr       = new QuestMgr();
     m_MiscMgr        = new MiscMgr();
     m_SkillMgr       = new SkillMgr();
     m_NewbieGuideMgr = new NewbieGuideMgr();
     m_NpcMgr         = new NpcMgr();
     m_CampGuidMgr    = new CampGuidMgr();
 }
示例#11
0
 void CheckMoveNPCByName(string msg)
 {
     string[] subStr = msg.Split(',');
     if (subStr.Length > 1 && subStr[1].Contains("come here"))
     {
         PeEntity entity = EntityMgr.Instance.Get(subStr[0]);
         if (null != entity)
         {
             NpcMgr.CallBackNpcToMainPlayer(entity);
         }
     }
 }
示例#12
0
        private void InitCampBuff()
        {
            NpcMgr npcMgr = Global.gApp.gSystemMgr.GetNpcMgr();

            CampIncAtkA                  = npcMgr.GetBuffParam(BuffType.buff_atkNpc.ToString())[0] - 1;
            CampIncAtkB                  = npcMgr.GetBuffParam(BuffType.buff_atk.ToString())[0] - 1;;
            CampIncAtkSpeed              = npcMgr.GetBuffParam(BuffType.buff_fireSpeed.ToString())[0] - 1;;
            CampSecondWpnIncAtk          = npcMgr.GetBuffParam(BuffType.buff_second.ToString())[0] - 1;;
            CampPetIncAtk                = npcMgr.GetBuffParam(BuffType.buff_robot.ToString())[0] - 1;
            CampCritExplodDamageParam    = npcMgr.GetBuffParam(BuffType.buff_critBoom.ToString())[0] / 100.0f;
            CampCritFiredBuffDamageParam = npcMgr.GetBuffParam(BuffType.buff_critIgnition.ToString())[0] / 100.0f;
            CampKillARate                = npcMgr.GetBuffParam(BuffType.buff_Beheading.ToString())[0];;
            CampKillBRate                = npcMgr.GetBuffParam(BuffType.buff_seckill.ToString())[0];;
        }
示例#13
0
    public void SyncNpcInfo()
    {
        var enumerator = m_npcMgrDict.GetEnumerator();

        while (enumerator.MoveNext())
        {
            NpcMgr mgr = enumerator.Current.Value;
            if (mgr != null)
            {
                mgr.SyncNpcInfo();
            }
        }
        enumerator.Dispose();
    }
示例#14
0
    public void AddNpcAction(NpcAction npcAction)
    {
        if (System.Object.ReferenceEquals(npcAction, null))
        {
            return;
        }
        NpcMgr npcMgr = GetNpcMgr(npcAction.NpcActionStatus);

        if (System.Object.ReferenceEquals(npcMgr, null))
        {
            return;
        }
        npcMgr.AddNpcAction(npcAction);
    }
    private static void VVV(Station station, Transform stationTrans, System.UInt16 stationIndex)
    {
        NpcMgr npcMgr = null;
        int    npcActionStatusCount = stationTrans.childCount;

        for (int i = 0; i < npcActionStatusCount; ++i)
        {
            npcMgr = new NpcMgr();
            Transform       npcActionStatusTrans = stationTrans.GetChild(i);
            NpcActionStatus npcActionStatus      = (NpcActionStatus)System.Enum.Parse(typeof(NpcActionStatus), npcActionStatusTrans.gameObject.name);
            npcMgr.NpcActionStatus    = npcActionStatus;
            npcMgr.NpcParentTransform = npcActionStatusTrans;
            station.AddNpcMgr(npcMgr);
            NNN(npcMgr, npcActionStatusTrans, stationIndex);
        }
    }
    private static void NNN(NpcMgr npcMgr, Transform npcActionStatusTrans, System.UInt16 stationIndex)
    {
        int npcCount = npcActionStatusTrans.childCount;

        for (int i = 0; i < npcCount; ++i)
        {
            Transform npcTrans  = npcActionStatusTrans.GetChild(i);
            NpcAction npcAction = npcTrans.GetComponent <NpcAction> ();
            if (npcAction == null)
            {
                continue;
            }
            // int npcId = Interlocked.Increment(ref StationEngine.StartNpcId); //原子操作
            // npcAction.NpcId = npcId;
            npcAction.StationIndex = stationIndex;
            npcMgr.AddNpcAction(npcAction);
        }
    }
示例#17
0
        public override void OnMessage(NetPeer peer, NetDataReader reader)
        {
            var npcid = reader.GetLong();

            reader.GetBytes(_readDirtyFlags, 1);
            var npcView = NpcMgr.GetNpc(npcid);

            if (npcView != null)
            {
                if ((0x1 & _readDirtyFlags[0]) != 0)
                {
                    npcView.position = reader.GetVector3();
                }
                if ((0x2 & _readDirtyFlags[0]) != 0)
                {
                    npcView.rotation = reader.GetQuaternion();
                }
            }
            base.IntactTransterMessage(peer, reader);
        }
示例#18
0
    //同步Npc信息
    public void SyncNpcInfo(PlayerActor[] stationPlayerActor)
    {
        NpcMgr mgr = m_npcMgrDict[NpcActionStatus.EnterStationTrainUp_NpcActionStatus];

        if (mgr != null)
        {
            mgr.SyncNpcInfo(stationPlayerActor[0]);
        }
        mgr = m_npcMgrDict[NpcActionStatus.EnterStationTrainDown_NpcActionStatus];
        if (mgr != null)
        {
            mgr.SyncNpcInfo(stationPlayerActor[1]);
        }
        mgr = m_npcMgrDict[NpcActionStatus.ExitStationTrainUp_NpcActionStatus];
        if (mgr != null)
        {
            mgr.SyncNpcInfo(stationPlayerActor[2]);
        }
        mgr = m_npcMgrDict[NpcActionStatus.ExitStationTrainDown_NpcActionStatus];
        if (mgr != null)
        {
            mgr.SyncNpcInfo(stationPlayerActor[3]);
        }
    }
        public override void OnMessage(NetPeer peer, NetDataReader reader)
        {
            var npcid = peer.ConnectId;
            var list  = ConfigMgr.HeroSpawnPoints.Values.ToList();

            var index    = AppUtil.Random(0, list.Count);
            var spawnPos = list[index];

            var npcView = new NPCView(npcid, NpcType.Player);

            npcView.mPeer    = peer;
            npcView.position = spawnPos;
            Log.Warn("ReqUserInfoHandler Player:> " + npcid + " SpwanPos:> " + spawnPos);

            var dw = new NetDataWriter();

            FillInfo(ref dw, Protocal.RetNewPlayer, npcView);

            var npcs = NpcMgr.mNpcs;

            foreach (var de in npcs)
            {
                var mPeer = de.Value.mPeer;
                if (mPeer != null && mPeer.ConnectionState == ConnectionState.Connected)
                {
                    mPeer.Send(dw, DeliveryMethod.ReliableOrdered);
                }
            }
            //------------------------------------------------------------------------------------

            FillInfo(ref dw, Protocal.ReqUserInfo, npcView);
            peer.Send(dw, DeliveryMethod.ReliableOrdered);

            ///添加到NPC管理器
            NpcMgr.AddNpc(npcid, npcView);
        }
示例#20
0
 public NpcItemStrategy(NpcMgr mgr)
 {
     this.mgr = mgr;
 }
            protected override void Process()
            {
                string npc_filename  = Paths.GetNPCData();
                string item_filename = Paths.GetItemData();
                string ai_filename   = Paths.GetAIData();
                string geo_filename  = Paths.GetNpcPositionData();

                //
                LoadedNPC  = false;
                LoadedItem = false;
                LoadedAI   = false;
                LoadedGeo  = false;
                LoadedAll  = false;
                LoadedAny  = false;
                //
                if (cancelPending)
                {
                    return;
                }
                if (File.Exists(npc_filename))
                {
                    setStatus("Loading NPC Data...", false);
                    NpcMgr.Load(npc_filename, npc_Progress);
                    LoadedNPC = true;
                    LoadedAny = true;
                }
                //
                if (cancelPending)
                {
                    return;
                }
                if (File.Exists(item_filename))
                {
                    setStatus("Loading Item Data...", false);
                    ItemMgr.Load(item_filename, item_Progress);
                    LoadedItem = true;
                    LoadedAny  = true;
                }
                //
                if (cancelPending)
                {
                    return;
                }
                if (File.Exists(ai_filename))
                {
                    setStatus("Loading AI Scripts...", false);
                    ScriptParser parser = new ScriptParser();
                    parser.OnProgress += ai_Progress;
                    parser.Load(ai_filename);
                    ScriptMgr.Header = parser.Header;
                    ScriptMgr.Items  = parser.Items;
                    LoadedAI         = true;
                    LoadedAny        = true;
                }
                //
                if (cancelPending)
                {
                    return;
                }
                if (File.Exists(geo_filename))
                {
                    setStatus("Loading NPC Position Data...", false);
                    GeoMgr.Load(geo_filename, geo_Progress);
                    LoadedGeo = true;
                    LoadedAny = true;
                }
                //
                LoadedAll = (LoadedNPC && LoadedItem && LoadedAI && LoadedGeo);
            }