public override void Initialize(ModGameAPI dediAPI) { GameAPI = dediAPI; LogLevel = EmpyrionNetAPIDefinitions.LogLevel.Debug; TaskTools.Intervall(60, CheckTimetable); }
private void Application_OnPlayfieldLoaded(IPlayfield playfield) { PlayfieldScriptData data = null; InitGameDependedData(ModApi.Application.Mode == ApplicationMode.SinglePlayer); PlayfieldData.TryAdd(playfield.Name, data = new PlayfieldScriptData(this) { PlayfieldName = playfield.Name, Playfield = playfield, }); UpdateScriptingModInfoData(); ModApi.Log($"StartScripts for {playfield.Name} pending"); TaskTools.Delay(Configuration.Current.DelayStartForNSecondsOnPlayfieldLoad, () => { ModApi.Log($"StartScripts for {playfield.Name}"); data.PauseScripts = false; if (ModApi.Application.Mode == ApplicationMode.SinglePlayer) { ModApi.Log(playfield.Entities?.Aggregate($"Player:{playfield.Players.FirstOrDefault().Value?.Name} PlayerDriving:{playfield.Players.FirstOrDefault().Value?.DrivingEntity?.Name}", (L, E) => L + $" {E.Key}:{E.Value.Name}")); data.AddEntity(playfield.Players.FirstOrDefault().Value?.DrivingEntity); playfield.Entities?.ForEach(E => data.AddEntity(E.Value)); } }); data.Playfield.OnEntityLoaded += data.Playfield_OnEntityLoaded; data.Playfield.OnEntityUnloaded += data.Playfield_OnEntityUnloaded; }
public bool ModsStarted() { if (!CheckModHostStatusStarted) { CheckModHostStatusStarted = true; TaskTools.Intervall(1000, CheckModHostStatus); } Process EGSProcess = null; try { if (SysteminfoManager.Value.ProcessInformation == null) { return(false); } EGSProcess = Process.GetProcessById(SysteminfoManager.Value.ProcessInformation.Id); var AllChilds = EGSProcess?.GetChildProcesses().ToList(); // Fallback falls die Processinfos nicht existieren if (AllChilds == null || AllChilds.Count == 0) { return(!File.Exists(StopFileName)); } var ESGChildProcesses = AllChilds.Where(P => P.ProcessName.StartsWith("EmpyrionModHost", StringComparison.InvariantCultureIgnoreCase)).ToArray(); return(ESGChildProcesses?.FirstOrDefault() != null); } catch { // Fallback falls die Processinfos nicht existieren return(!File.Exists(StopFileName)); } }
public override void Initialize(ModGameAPI dediAPI) { GameAPI = dediAPI; try { Log($"**EmpyrionGalaxyNavigator loaded: {string.Join(" ", Environment.GetCommandLineArgs())}", LogLevel.Message); LoadConfiguration(); LogLevel = Configuration.Current.LogLevel; ChatCommandManager.CommandPrefix = Configuration.Current.ChatCommandPrefix; GalaxyMap = new GalaxyMap { GalaxyAutoUpdateMinutes = Configuration.Current.GalaxyAutoUpdateMinutes }; GalaxyMap.ReadDbData(Path.Combine(EmpyrionConfiguration.SaveGamePath, "global.db")); ChatCommands.Add(new ChatCommand(@"nav help", (I, A) => DisplayHelp(I.playerId), "display help")); ChatCommands.Add(new ChatCommand(@"nav stop", (I, A) => StopNavigation(I.playerId), "stops navigation")); ChatCommands.Add(new ChatCommand(@"nav updategalaxy", (I, A) => UpdateGalayMap(I.playerId), "force update the galaxy db")); ChatCommands.Add(new ChatCommand(@"nav setwarp (?<LY>.*)", (I, A) => SetWarpDistance(I.playerId, A), "set the warp distance for navigation to (LY)")); ChatCommands.Add(new ChatCommand(@"nav (?<target>.*)", (I, A) => StartNavigation(I.playerId, A), "start a navigation to (target)")); Event_Player_ChangedPlayfield += Navigator_Event_Player_ChangedPlayfield; TaskTools.Intervall(Configuration.Current.MessageLoopMS, () => { try { CheckPlayerNavMessages().Wait(); } catch { } }); } catch (Exception Error) { Log($"**EmpyrionGalaxyNavigator Error: {Error} {string.Join(" ", Environment.GetCommandLineArgs())}", LogLevel.Error); } }
private static bool init = false;//是否已经初始化 public static void Init() { if (!init) { init = true; _mSocket = new SocketControl(); _mMySql = new MySQL(); _mStools = new SimpleTools(); _mTaskTools = new TaskTools(); _mHttpServer = new HttpServerControl(); _mHttp = new HttpControl(); _mNDCControl = new NDCControl(); _mTaskControler = new TaskControler(); _mRunTask = new RunTask(); _mForAGVControl = new ForAGVControl(); _mNDCControl.NoticeWcsMagic += _mForAGVControl.SubmitAgvMagic; _mNDCControl.NoticeWcsOnLoad += _mForAGVControl.SubmitAgvLoading; _mForWmsControl = new ForWMSControl(); _mHttpServer.WmsModelAdd += _mForWmsControl.WriteTaskToWCS; } }
public override void Initialize(ModGameAPI dediAPI) { GameAPI = dediAPI; LogLevel = EmpyrionNetAPIDefinitions.LogLevel.Debug; PlayerManager = Program.GetManager <PlayerManager>(); TaskTools.Intervall(2000, () => SysteminfoHub?.Clients.All.SendAsync("UPC", JsonConvert.SerializeObject(new { o = CurrentSysteminfo.online, ap = CurrentSysteminfo.activePlayers, apf = CurrentSysteminfo.activePlayfields, c = CurrentSysteminfo.cpuTotalLoad, r = CurrentSysteminfo.ramAvailableMB, tpf = CurrentSysteminfo.totalPlayfieldserver, tpfm = CurrentSysteminfo.totalPlayfieldserverRamMB, })).Wait(1000)); TaskTools.Intervall(30000, () => SysteminfoHub?.Clients.All.SendAsync("Update", JsonConvert.SerializeObject(CurrentSysteminfo)).Wait(1000)); TaskTools.Intervall(5000, UpdateEmpyrionInfos); TaskTools.Intervall(5000, UpdateComputerInfos); TaskTools.Intervall(2000, UpdatePerformanceInfos); CpuTotalLoad = new PerformanceCounter { CategoryName = "Processor", CounterName = "% Processor Time", InstanceName = "_Total" }; RamAvailable = new PerformanceCounter("Memory", "Available MBytes"); }
public override void Initialize(ModGameAPI dediAPI) { GameAPI = dediAPI; API_Exit += () => { try { System.IO.File.Delete(CurrentEBPFile); } catch { } }; TaskTools.Intervall(Math.Max(1, Program.AppSettings.GlobalStructureUpdateInSeconds) * 1000, () => GlobalStructureList()); }
public void Start() { Instance = this; taskDic = new Dictionary <int, RunTaskStruct>(); taskHandleDic = new Dictionary <RunTaskStruct, RunTaskStruct.RunTaskStructHandle>(); taskList = new List <RunTaskStruct>(); removeTaskList = new List <RunTaskStruct>(); }
private void Application_OnPlayfieldLoaded(string playfieldName) { ModApi.Log($"StartScripts for {playfieldName} pending"); TaskTools.Delay(Configuration.Current.DelayStartForNSecondsOnPlayfieldLoad, () => { ModApi.Log($"StartScripts for {playfieldName}"); PauseScripts = false; }); }
private void GameplayManager_Event_Player_Connected(Id player) { if (OfflineWarpPlayer.Current.TryRemove(player.id, out var warpData)) { OfflineWarpPlayer.Save(); TaskTools.Delay(Program.AppSettings.PlayerOfflineWarpDelay, () => WarpTo(player.id, warpData.WarpToData)); } }
public override void Initialize(ModGameAPI dediAPI) { GameAPI = dediAPI; LogLevel = EmpyrionNetAPIDefinitions.LogLevel.Debug; Event_Faction_Changed += F => UpdateFactions().Wait(); TaskTools.IntervallAsync(10000, UpdateFactions); }
private void SendWelcomeMessage(Player aPlayer) { if (string.IsNullOrEmpty(SysteminfoManager.Value.SystemConfig.Current.WelcomeMessage)) { return; } TaskTools.Delay(60, () => ChatManager.Value.ChatMessageADM(string.Format(SysteminfoManager.Value.SystemConfig.Current.WelcomeMessage, aPlayer.PlayerName))); }
public void UpdateBackpack(string aPlayerSteamId, ItemStack[] aToolbar, ItemStack[] aBag) { Backpack backpack = TaskTools.Retry(() => backpack = ExecUpdate(aPlayerSteamId, aToolbar, aBag)); if (backpack != null) { BackpackHub?.Clients.All.SendAsync("UpdateBackpack", JsonConvert.SerializeObject(backpack)).Wait(); } }
//do it by invoking method protected override bool OnCheck() { if (checkSet.selectedType == typeof(float) || checkSet.selectedType == typeof(int)) { return(TaskTools.Compare((System.IComparable)method.Invoke(agent, null), (System.IComparable)checkSet.objectValue, comparison)); } return(Equals(method.Invoke(agent, null), checkSet.objectValue)); }
public SectorsManager() { PlayfieldsWatcher = new FileSystemWatcher(Path.Combine(EmpyrionConfiguration.SaveGamePath, "Sectors"), "Sectors.yaml"); PlayfieldsWatcher.Created += (S, A) => TaskTools.Delay(10, ReadSectors); PlayfieldsWatcher.Deleted += (S, A) => TaskTools.Delay(10, ReadSectors); PlayfieldsWatcher.Changed += (S, A) => TaskTools.Delay(10, ReadSectors); PlayfieldsWatcher.EnableRaisingEvents = true; TaskTools.Delay(1, ReadSectors); }
public override void Initialize(ModGameAPI dediAPI) { GameAPI = dediAPI; LogLevel = EmpyrionNetAPIDefinitions.LogLevel.Debug; TaskTools.Intervall(Math.Max(1, Program.AppSettings.StructureDataUpdateCheckInSeconds) * 1000, () => BackupStructureData()); Event_Playfield_Loaded += P => ActivePlayfields.TryAdd(P.playfield, P.playfield); Event_Playfield_Unloaded += P => ActivePlayfields.TryRemove(P.playfield, out _); }
public Player GetPlayer(string aSteamId) { return(TaskTools.Retry(() => { using (var DB = new PlayerContext()) { return DB.Players.FirstOrDefault(P => P.SteamId == aSteamId); } })); }
public Player GetPlayer(int aPlayerId) { return(TaskTools.Retry(() => { using (var DB = new PlayerContext()) { return DB.Players.FirstOrDefault(P => P.EntityId == aPlayerId); } })); }
public GlobalStructureList GlobalStructureList() { try { LastGlobalStructureList.Current = Request_GlobalStructure_List().Result; TaskTools.Delay(0, () => LastGlobalStructureList.Save()); } catch { } return(LastGlobalStructureList.Current); }
private void StartScriptIntervall(int intervall, Action action, string name) { if (intervall <= 0) { return; } var exec = TaskTools.Intervall(intervall, action, name); StopScriptsEvent += (S, E) => exec.Set(); }
public override void Initialize(ModGameAPI dediAPI) { DediAPI = dediAPI; LogLevel = LogLevel.Message; Log($"**EmpyrionForbiddenPlayfields: loaded"); LoadConfiuration(); LogLevel = Configuration.Current.LogLevel; TaskTools.Intervall(30000, () => UpdateFactionData().Wait()); TaskTools.Intervall(1000, () => TestNextPlayer()); }
public PlayerManager( ILogger <PlayerManager> aLogger, IRoleHubContext <PlayerHub> aPlayerHub, IProvider <IUserService> aUserService) { Logger = aLogger; PlayerHub = aPlayerHub; UserService = aUserService; SysteminfoManager = new Lazy <SysteminfoManager>(() => Program.GetManager <SysteminfoManager>()); ChatManager = new Lazy <ChatManager>(() => Program.GetManager <ChatManager>()); UserManager = new Lazy <UserManager>(() => Program.GetManager <UserManager>()); TaskTools.Intervall(10000, SendPlayerUpdates); }
//do it by invoking method protected override bool OnCheck() { object[] args = null; if (paramValue1.selectedType != null) { args = new object[] { paramValue1.objectValue } } ; if (checkSet.selectedType == typeof(float) || checkSet.selectedType == typeof(int)) { return(TaskTools.Compare((System.IComparable)method.Invoke(agent, args), (System.IComparable)checkSet.objectValue, comparison)); } return(Equals(method.Invoke(agent, args), checkSet.objectValue)); }
/// <summary> /// Создаёт новую задачу (вызывается из кнопки добавления задач) /// </summary> public void CreateNewTask() { var placeForTasks = transform.parent; var newTask = Instantiate(taskPrefab, placeForTasks).GetComponent <Task>(); newTask.Create(TaskTools.GetStatCategory(), TaskTools.GetKey(), TaskTools.GetAmountToComplete(), TaskTools.GetCharacter()); newTask.UpdateView(); var trueTaskController = placeForTasks.GetComponent <TaskController>(); trueTaskController.cooldownEnd = DateTime.Now.AddSeconds(CooldownTimeSeconds); trueTaskController.SaveCooldownTime(); trueTaskController.taskAddBtnIsRendered = false; Destroy(gameObject); }
public AdminconfigYamlStruct(string aFilename) { if (!File.Exists(aFilename)) { return; } Load(aFilename); mAdminconfigYamlFileWatcher = new FileSystemWatcher { Path = Path.GetDirectoryName(aFilename), NotifyFilter = NotifyFilters.LastWrite, Filter = Path.GetFileName(aFilename) }; mAdminconfigYamlFileWatcher.Changed += (s, e) => TaskTools.Delay(10, () => Load(aFilename)); mAdminconfigYamlFileWatcher.EnableRaisingEvents = true; }
public override void Initialize(ModGameAPI dediAPI) { DediAPI = dediAPI; LogLevel = LogLevel.Message; Log($"**EmpyrionBackpackExtender: loaded"); LoadConfiuration(); LogLevel = Configuration.Current.LogLevel; ChatCommandManager.CommandPrefix = Configuration.Current.ChatCommandPrefix; TaskTools.Intervall(60000, () => CurrentFactions = Request_Get_Factions(0.ToId()).Result); AddCommandsFor(Configuration.Current.PersonalBackpack, "personal", P => P.steamId); AddCommandsFor(Configuration.Current.FactionBackpack, "faction", P => P.factionId.ToString()); AddCommandsFor(Configuration.Current.OriginBackpack, "origin", P => P.origin.ToString()); AddCommandsFor(Configuration.Current.GlobalBackpack, "global", P => "global"); }
/// <summary> /// Запускает конечный диалог и выдаёт награды /// </summary> public void ApplyAwards() { var placeForTasks = transform.parent; placeForTasks.gameObject.GetComponent <Scenario>().FirstCharacterSprite = CharacterSpritePlace.sprite; placeForTasks.GetComponent <Scenario>() .CreateTaskEndDialog(TaskTools.GetPhrase(), new Award(AwardType.Money, money: Details.AmountToComplete * 10), new Award(AwardType.Reputation, reputation: Details.AmountToComplete * 15) ); var writer = QuickSaveWriter.Create("Tasks"); writer.Delete(Details.ID.ToString()); writer.Commit(); Destroy(gameObject); }
private void SyncronizePlayersWithSaveGameDirectory() { TaskTools.Delay(1, () => { var KnownPlayers = Directory .GetFiles(PlayersDirectory) .Select(F => Path.GetFileNameWithoutExtension(F)); using (var DB = new PlayerContext()) { DB.Players .Where(P => !KnownPlayers.Contains(P.SteamId)) .ForEach(P => DB.Players.Remove(P)); DB.SaveChangesAsync(); } }); }
public void EGSStop(int aWaitMinutes) { try { Logger.Log(Microsoft.Extensions.Logging.LogLevel.Information, "EGSStop"); EGSRunState(true); Program.Host.ExposeShutdownHost(); var stoptime = DateTime.Now.AddMinutes(aWaitMinutes); var exit = aWaitMinutes == 0 ? null : TaskTools.Intervall(10000, () => { Request_InGameMessage_AllPlayers(Timeouts.NoResponse, $"Server shutdown in {(stoptime - DateTime.Now).ToString(@"mm\:ss")}".ToIdMsgPrio(0, MessagePriorityType.Alarm)); }); try { Process EGSProcess = null; try { EGSProcess = ProcessInformation == null ? null : Process.GetProcessById(ProcessInformation.Id); } catch { } Logger.Log(Microsoft.Extensions.Logging.LogLevel.Information, "EGSStop: saveandexit:" + aWaitMinutes); Request_ConsoleCommand(new PString("saveandexit " + aWaitMinutes)).Wait(10000); Thread.Sleep(10000); if (EGSProcess != null && !EGSProcess.HasExited) { Logger.Log(Microsoft.Extensions.Logging.LogLevel.Information, "EGSStop: Wait:" + aWaitMinutes); EGSProcess?.WaitForExit((aWaitMinutes + 1) * 60000); } exit?.Set(); CurrentSysteminfo.online = SetState(CurrentSysteminfo.online, "o", false); } catch (Exception Error) { exit?.Set(); Logger.LogError(Error, "EGSStop: WaitForExit"); Thread.Sleep(10000); } UpdateClient(); } catch (Exception Error) { Logger.LogError(Error, "EGSStop"); } }
private void UpdateOnlinePlayers() { TaskTools.Intervall(10000, () => { var onlinePlayers = Request_Player_List().Result; if (onlinePlayers == null) { return; } if (onlinePlayers.list == null) { UpdatePlayer(DB => DB.Players.Where(P => P.Online), PlayerDisconnect); } else { UpdatePlayer(DB => DB.Players.Where(P => onlinePlayers.list.Contains(P.EntityId) && !P.Online), PlayerConnect); UpdatePlayer(DB => DB.Players.Where(P => !onlinePlayers.list.Contains(P.EntityId) && P.Online), PlayerDisconnect); } onlinePlayers.list?.AsParallel().ForEach(I => Request_Player_Info(new Id(I))); }); }