using System.Collections.Generic; using UnityEngine; public class FakePlayerManager { public static bool Start = false; public static FuncConfigConfig gemTypeConfig = FuncConfigConfig.Get("FakePlayer"); // 等级限制 private static int m_LevelLimit = int.Parse(gemTypeConfig.Numerical1); // 创建间隔 private static float m_CraeteInterval = 2f; // 计算创建间隔 private static float m_CraeteCalcTime = 0; // 最大的玩家数量 private static int m_MaxPlayerCount = int.Parse(gemTypeConfig.Numerical3); // 每个的持续时间 public static float EachPlayerLastTime = 20f; // 开服天内 public static int ServerDayLimit = int.Parse(gemTypeConfig.Numerical2); // 装备配置 // 境界 | 职业 | [衣服,武器,副手] private static List>> m_Equip = new List>>() { new Dictionary>() { { 1,new List(){1011040,1011010, 1011020} }, { 2,new List(){2011040,2011010, 2011020} } } }; private static List m_ControllerList = new List(); public static void Update() { if (!Start) { return; } if (AdventureStage.Instance.IsInAdventureStage) { return; } for (int i = m_ControllerList.Count - 1; i >= 0; --i) { if (m_ControllerList[i] == null) { continue; } m_ControllerList[i].Update(); if (m_ControllerList[i].IsDone) { m_ControllerList[i].UnInit(); m_ControllerList.RemoveAt(i); } } if (TimeUtility.OpenDay > ServerDayLimit) return; if (PlayerDatas.Instance.baseData.LV > m_LevelLimit) { return; } if (Time.time - m_CraeteCalcTime < m_CraeteInterval) { return; } m_CraeteCalcTime = Time.time; int _curPlayerCount = 0; var _playerList = GAMgr.Instance.GetTypeList(E_ActorClassType.Player); if (_playerList != null) { _curPlayerCount = _playerList.Count; } _playerList = GAMgr.Instance.GetTypeList(E_ActorClassType.FakePlayer); if (_playerList != null) { _curPlayerCount += _playerList.Count; } if (_curPlayerCount >= m_MaxPlayerCount) { return; } int _ranJob = Random.Range(1, 3); // 随机类型 int _ran = Random.Range(0, (int)(FakePlayerController.E_BehaviourType.MaxType)); var _controller = new FakePlayerController(); _controller.Init(new FakePlayerController.FakePlayerData() { job = _ranJob, name = StringUtility.Contact(RandomNameConfig.GetFirstName(_ranJob), RandomNameConfig.GetSecondName(_ranJob)), clothes = m_Equip[PlayerDatas.Instance.baseData.realmLevel][_ranJob][0], weapon = m_Equip[PlayerDatas.Instance.baseData.realmLevel][_ranJob][1], sedcondary = m_Equip[PlayerDatas.Instance.baseData.realmLevel][_ranJob][2], behaviourType = (FakePlayerController.E_BehaviourType)_ran }); m_ControllerList.Add(_controller); } public static void UnInit() { for (int i = m_ControllerList.Count - 1; i >= 0; --i) { if (m_ControllerList[i] == null) { continue; } m_ControllerList[i].UnInit(); } m_ControllerList.Clear(); } }