public string Example3(IScriptModData g) { var S = g.E.S; return ("Player StructureData\n" + $"GetCurrentPlayfield: {S.DockedE}\n" + $"AllCustomDeviceNames: {S.AllCustomDeviceNames}\n" + $"ControlPanelSignals: {S.ControlPanelSignals}\n" + $"BlockSignals: {S.BlockSignals}\n" + $"ContainerSource: {S.ContainerSource}\n" + $"DamageLevel: {S.DamageLevel}\n" + $"GetDeviceTypeNames: {S.GetDeviceTypeNames}\n" + $"IsOfflineProtectable: {S.IsOfflineProtectable}\n" + $"IsPowerd: {S.IsPowerd}\n" + $"IsReady: {S.IsReady}\n" + $"E: {S.E}\n" + $"Items: {S.Items}\n" + $"OxygenTank: {S.OxygenTank}\n" + $"FuelTank: {S.FuelTank}\n" + $"PentaxidTank: {S.PentaxidTank}\n" + $"Passengers: {S.Passengers}\n" + $"Pilot: {S.Pilot}\n" ); }
public string Example2(IScriptModData g) { var E = g.E; return ($"GetCurrentPlayfield: {E.GetCurrentPlayfield().Name}\n" + $"GetCurrent: {E.GetCurrent()}\n" ); }
public string Example1(IScriptModData g) { var E = g.E; return ($"Name: {E.Name}" + $"Id: {E.Id}" + $"DeviceNames: " + string.Join(",", E.DeviceNames) + $"EntityType: {E.EntityType}" + $"Faction: Id:{E.Faction.Id} Group:{E.Faction.Group}" ); }
public string Example6(IScriptModData g) { var f = g.E.S.FuelTank; return ("Player StructureTank\n" + $"Capacity: {f.Capacity}\n" + $"Content: {f.Content}\n" + $"AllowedItem: {f.AllowedItem(2266)}\n" + $"ItemsNeededForFill: {f.ItemsNeededForFill(2266, 100)}\n" + "" ); }
public string Example4(IScriptModData g) { var I = g.E.S.Items.FirstOrDefault(); var s = I?.Source?.FirstOrDefault(); return ("Player ItemsData\n" + $"Id: {I?.Id}\n" + $"Key: {I?.Key}\n" + $"Name: {I?.Name}\n" + $"Count: {I?.Count}\n" + $"Source: {I?.Source?.FirstOrDefault()}\n" + $"CustomName: {s?.CustomName}\n" + $"Id: {s?.Id}\n" + $"Count: {s?.Count}\n" + $"E: {s?.E}\n" + $"Position: {s?.Position}\n" + "" ); }
public string Example5(IScriptModData g) { var p = g.E.S.Pilot; return ("Player PlayerData\n" + $"Id: {p.Id}\n" + $"Name: {p.Name}\n" + $"SteamId: {p.SteamId}\n" + $"Ping: {p.Ping}\n" + "\n" + $"BodyTemp: {p.BodyTemp}\n" + $"BodyTempMax: {p.BodyTempMax}\n" + $"Food: {p.Food}\n" + $"FoodMax: {p.FoodMax}\n" + $"Health: {p.Health}\n" + $"HealthMax: {p.HealthMax}\n" + $"Radiation: {p.Radiation}\n" + $"RadiationMax: {p.RadiationMax}\n" + $"Stamina: {p.Stamina}\n" + $"StaminaMax: {p.StaminaMax}\n" + $"Oxygen: {p.Oxygen}\n" + $"OxygenMax: {p.OxygenMax}\n" + "\n" + $"Bag: {p.Bag?.Count()}\n" + $"Toolbar: {p.Toolbar?.Count()}\n" + "\n" + $"Credits: {p.Credits}\n" + $"Died: {p.Died}\n" + $"ExperiencePoints: {p.ExperiencePoints}\n" + $"UpgradePoints: {p.UpgradePoints}\n" + $"FactionData: {p.FactionData}\n" + $"FactionRole: {p.FactionRole}\n" + $"Kills: {p.Kills}\n" + $"Origin: {p.Origin}\n" + $"StartPlayfield: {p.StartPlayfield}\n" + "" ); }
public string Example7(IScriptModData g) { var E = g.E; Console.WriteLine( $"BlockSignals: {E.S.BlockSignals.Count()}\n" + GetNames(E.S.BlockSignals) + ""); Console.WriteLine( $"ControlPanelSignals: " + $"{E.S.ControlPanelSignals.Count()}\n" + GetNames(E.S.ControlPanelSignals) + ""); string GetNames(IEnumerable <ISignalData> s) { return(string.Join(";", s.Select(i => i.Name))); } return(null); }
public static void Main(IScriptModData rootObject) { if (!(rootObject is IScriptSaveGameRootData root)) { return; } if (root.E.Faction.Id == 0) { return; } root.CsRoot.GetBlockDevices <ILcd> (root.E.S, "Floor*") .ForEach(l => { var output = new StringBuilder(); try { if (DateTime.TryParseExact(l.D.GetText().Split(new char[] { '\n' }, StringSplitOptions.RemoveEmptyEntries).LastOrDefault(), "dd.MM.yyyy HH:mm:ss", System.Globalization.CultureInfo.InvariantCulture, System.Globalization.DateTimeStyles.AssumeLocal, out var lastUpdate) && (DateTime.Now - lastUpdate).TotalSeconds < 60) { return; } } catch { } try { var posOff = l.B.CustomName.Split(':').Last().Split(';'); var lcdX = l.B.Position.x + GetInt(posOff, 0); var lcdY = l.B.Position.y + GetInt(posOff, 1); var lcdZ = l.B.Position.z + GetInt(posOff, 2); var size = Get(posOff, 3, "50%"); var flip = Get(posOff, 4) == "r"; var cspace = Get(posOff, 5); if (l.B.Id == 1400) { output.Append($"<mspace=3.8m>"); } else { output.Append($"<mspace=1.8m>"); } if (!string.IsNullOrEmpty(cspace)) { output.Append($"<cspace={cspace}>"); } output.Append($"<size={size}>"); output.Append("<line-height=70%>"); var min = root.E.S.MinPos; var max = root.E.S.MaxPos; if (blocks == null) { blocks = ToIntArray(root.Ids["BlockL"]); } if (devices == null) { devices = ToIntArray(root.Ids["DeviceL"]); } if (weapons == null) { weapons = ToIntArray(root.Ids["WeaponHV"] + root.Ids["WeaponSV"] + root.Ids["WeaponCV"] + root.Ids["WeaponBA"]); } var color = ""; var oldColor = ""; var blkChar = ""; for (int x = flip ? max.x : min.x; flip?x >= min.x : x <= max.x; x += flip ? -1 : +1) { for (int z = flip ? max.z : min.z; flip?z >= min.z : z <= max.z; z += flip ? -1 : +1) { var b = root.CsRoot.Block(root.E.S, x, lcdY, z); var bCfg = root.CsRoot.ConfigById(b.Id); var tn = bCfg?.Attr .FirstOrDefault(N => N.Name == "Id")? .AddOns["Name"].ToString() ?? string.Empty; var t = bCfg?.Attr .FirstOrDefault(N => N.Name == "TemplateRoot") ? .Value?.ToString() ?? string.Empty; var tg = bCfg?.Attr .FirstOrDefault(N => N.Name == "Group")? .Value?.ToString() ?? string.Empty; if (x == lcdX && z == lcdZ) { blkChar = "☻"; color = "red"; } else if (tn.Contains("Controller")) { blkChar = "▣"; color = "green"; } else if (tn.Contains("Constructor") || tn.Contains("Food")) { blkChar = "▣"; color = "#666600"; } else if (tn.Contains("OxygenStation")) { blkChar = "❂"; color = "blue"; } else if (t.Contains("Medical")) { blkChar = "♥"; color = "red"; } else if (t.Contains("Thrus")) { blkChar = "⛔"; color = "#606000"; } else if (t.Contains("Stairs")) { blkChar = "☷"; color = "#C0C0C0"; } else if (t.Contains("Door")) { blkChar = "♓"; color = "green"; } else if (t.Contains("Cockpit")) { blkChar = "☸"; color = "#101080"; } else if (t.Contains("Light") || t.Contains("Cons") || t.Contains("Force") || t.Contains("Door")) { blkChar = " "; } else if (b.Id == 0) { blkChar = " "; } else if (weapons.Contains(b.Id) || t.Contains("Turret")) { blkChar = "▣"; color = "#7f00ff"; } else if (devices.Contains(b.Id)) { blkChar = "▣"; color = "#99ccff"; } else if (blocks.Contains(b.Id)) { var hitPoints = b.HitPoints; var damage = b.Damage; color = "#606060"; if (damage > 0) { color = "yellow"; } if (damage > (hitPoints * 9 / 10)) { color = "red"; } blkChar = "■"; } else { blkChar = "▪"; color = "grey"; } if (oldColor != color) { output.Append($"</color><color={oldColor = color}>"); } output.Append(blkChar); } output.AppendLine(); } output.AppendLine($"<color=white><color=red>☻</color> = You are here X:{lcdX} Y:{lcdY} Z:{lcdZ}"); output.AppendLine($"<color=#99ccff>▣</color> = Device"); output.AppendLine($"<color=grey>▪</color> = Unkown"); output.AppendLine($"■ = Block"); output.AppendLine(); output.Append(DateTime.Now.ToString("dd.MM.yyyy HH:mm:ss")); } catch (Exception e) { output.Append(e); } l.D.SetText(output.ToString()); }); }
public static void Main(IScriptModData rootObject) { if (!(rootObject is IScriptSaveGameRootData root)) { return; } if (root.E.Faction.Id == 0) { return; } var infoOutLcds = root.CsRoot.GetDevices <ILcd>(root.CsRoot.Devices(root.E.S, "CargoOutInfo*")); root.E.S .AllCustomDeviceNames .GetUniqueNames("CargoOut@*") .ForEach(cargoOutContainerName => { var container = root.CsRoot.Devices(root.E.S, cargoOutContainerName).FirstOrDefault(); if (container == null) { return; } if (!int.TryParse(cargoOutContainerName.Substring("CargoOut@".Length), out var targetEntityId)) { WriteTo(infoOutLcds, $"CargoOut@[ID] id is not a number"); return; } var cargoTargetFileName = Path.Combine(root.MainScriptPath, "..", "CargoTeleport", root.E.Faction.Id.ToString(), $"Cargo-{targetEntityId}.json"); if (!File.Exists(cargoTargetFileName)) { WriteTo(infoOutLcds, $"CargoIn in [ID] not ready"); return; } root.CsRoot.WithLockedDevice(root.E.S, container, () => { var nativeContainer = ((ContainerData)container.Device).GetContainer() as IContainer; var items = nativeContainer.GetContent(); var failedItems = new List <ItemStack>(); items.ForEach(i => { try { File.AppendAllText(cargoTargetFileName, JsonConvert.SerializeObject(i) + "\n"); WriteTo(infoOutLcds, $"Transfer: Item:[{i.id}] {i.count} {root.CsRoot.I18n(i.id)}"); } catch { failedItems.Add(i); WriteTo(infoOutLcds, $"Transfer failed: Item:[{i.id}] {i.count} {root.CsRoot.I18n(i.id)}"); } }); nativeContainer.SetContent(failedItems); }); }); var infoInLcds = root.CsRoot.GetDevices <ILcd>(root.CsRoot.Devices(root.E.S, "CargoInInfo*")); root.E.S .AllCustomDeviceNames .GetUniqueNames("CargoIn") .ForEach(cargoInContainerName => { var container = root.CsRoot.Devices(root.E.S, cargoInContainerName).FirstOrDefault(); if (container == null) { return; } var nativeContainer = ((ContainerData)container.Device).GetContainer() as IContainer; if (nativeContainer == null) { return; } var cargoTargetFileName = Path.Combine(root.MainScriptPath, "..", "CargoTeleport", root.E.Faction.Id.ToString(), $"Cargo-{root.E.Id}.json"); Directory.CreateDirectory(Path.GetDirectoryName(cargoTargetFileName)); root.CsRoot.WithLockedDevice(root.E.S, container, () => { var items = nativeContainer.GetContent() ?? new List <ItemStack>(); bool itemsAdded = false; using (var lockFile = File.Open(cargoTargetFileName, FileMode.OpenOrCreate, FileAccess.ReadWrite, FileShare.None)) { using (var file = new StreamReader(lockFile)) { var remainLines = new List <string>(); while (true) { var itemLine = file.ReadLine(); if (string.IsNullOrEmpty(itemLine)) { break; } else if (items.Count < 64) { var item = JsonConvert.DeserializeObject <ItemStack>(itemLine); items.Add(item); itemsAdded = true; WriteTo(infoInLcds, $"Transfer: Item:[{item.id}] {item.count} {root.CsRoot.I18n(item.id)}"); } else { remainLines.Add(itemLine); } } lockFile.Seek(0, SeekOrigin.Begin); lockFile.SetLength(0); using (var fileWrite = new StreamWriter(lockFile)) { remainLines.ForEach(l => fileWrite.WriteLine(l)); } } } if (items.Count > 0 && itemsAdded) { byte index = 0; nativeContainer.SetContent(items .Select(i => new ItemStack(i.id, i.count) { slotIdx = index++, decay = i.decay, ammo = i.ammo }).ToList()); } }); }); }