/// <summary> /// List all the ships in the save file /// </summary> private static void ListShips() { ///Console.WriteLine(); ///Console.WriteLine("Please enter a filter to limit results."); ///string shipFilter = Console.ReadLine(); //TODO: Add the feature back to filter the ship list var ships = Ships.GetShips(); foreach (var ship in ships) { Console.WriteLine(ship); } ConsoleColorLine (String.Format ("{0} ships found", ships.Count), ConsoleColor.DarkGreen); }
public QueryResult LoadRecord() { var result = new QueryResult(); var urlName = HttpUtility.UrlEncode(Username); var zone = IsSouth ? "south" : "north"; var json = WebInteraction.GET(GET_LOGIN_URL + "name=" + urlName + "&zone=" + zone); // "account_db_id":"1837225125" if (json == @"{""errno"":2}") { throw new Exception("UserNotExits"); } Aid = Regex.Match(json, @"(?<=""account_db_id"":"")\d{10}(?="")").Value; var shipInfo = WebInteraction.GET(SHIP_INFO_URL + "aid=" + Aid); var ships = Ships.GetShips(); //var shipInfos = new Dictionary<int, ShipInfo>(); var shipCounts = new int[10]; var shipPov = new int[10]; var reader = new JsonTextReader(new StringReader(shipInfo)); string thisId = ""; while (reader.Read()) { var match = Regex.Match(reader.Path, @"\[(\d+?)]\.(.+)"); if (match.Groups[2].Value == "id.vehicleTypeCd") { thisId = reader.ReadAsString(); } if (match.Groups[2].Value == "battles") { var lvl = ships[thisId].Lvl; var type = ships[thisId].Type; var battles = reader.ReadAsInt32().Value; shipCounts[--lvl] += battles; switch (type) { case "Cruiser": result.CA += battles; break; case "AirCarrier": result.CV += battles; break; case "Destroyer": result.DD += battles; break; case "Battleship": result.BB += battles; break; } } if (match.Groups[2].Value == "wins") { var lvl = ships[thisId].Lvl; shipPov[--lvl] += reader.ReadAsInt32().Value; } } result.LvlShipCount = shipCounts; result.LvlShipVicPer = shipPov; return(result); }
public async Task Start() { _listener.Start(); while (true) { try { var ctx = await _listener.GetContextAsync(); //Console.Out.WriteLine("Client connected..."); //Console.Out.WriteLine("Serving file: '{0}'", ctx.Request.RawUrl); var url = ctx.Request.RawUrl; ctx.Response.Headers.Add("x-content-type-options: nosniff"); ctx.Response.Headers.Add("x-xss-protection:1; mode=block"); ctx.Response.Headers.Add("x-frame-options:DENY"); ctx.Response.Headers.Add("cache-control:no-store, no-cache, must-revalidate"); ctx.Response.Headers.Add("pragma:no-cache"); ctx.Response.Headers.Add("Server", "jl"); if (url.StartsWith("/api/kick/")) { var p = Players.GetBySteamId(url.Split('/')[3]); if (p != null) { p.Kick(); await SendSuccess(ctx); } else { await SendSuccess(ctx, false); } } else if (url.StartsWith("/api/kill/")) { var p = Players.GetBySteamId(url.Split('/')[3]); if (p != null) { p.Kill(); await SendSuccess(ctx); } else { await SendSuccess(ctx, false); } } else if (url == "/api/settings") { await WriteJson(ctx, ServerSettings.ToDict()); } else if (url.StartsWith("/api/add_ip_moderator/")) { ServerSettings.AddModerator(url.Split('/')[3]); await SendSuccess(ctx); } else if (url.StartsWith("/api/add_ip_admin/")) { ServerSettings.AddAdmin(url.Split('/')[3]); await SendSuccess(ctx); } else if (url.StartsWith("/api/add_ip_ban/")) { ServerSettings.AddBan(url.Split('/')[3]); await SendSuccess(ctx); } else if (url.StartsWith("/api/add_steam_moderator/")) { await SendSuccess(ctx, ServerSettings.AddSteamModerator(url.Split('/')[3])); } else if (url.StartsWith("/api/add_steam_admin/")) { await SendSuccess(ctx, ServerSettings.AddSteamAdmin(url.Split('/')[3])); } else if (url.StartsWith("/api/add_steam_ban/")) { await SendSuccess(ctx, ServerSettings.AddSteamBan(url.Split('/')[3])); } else if (url.StartsWith("/api/add_banned_part/")) { await SendSuccess(ctx, ServerSettings.AddBannedPart(url.Split('/')[3])); } else if (url.StartsWith("/api/remove_ip_moderator/")) { ServerSettings.RemoveModerator(url.Split('/')[3]); await SendSuccess(ctx); } else if (url.StartsWith("/api/remove_ip_admin/")) { ServerSettings.RemoveAdmin(url.Split('/')[3]); await SendSuccess(ctx); } else if (url.StartsWith("/api/remove_ip_ban/")) { ServerSettings.RemoveBan(url.Split('/')[3]); await SendSuccess(ctx); } else if (url.StartsWith("/api/remove_steam_moderator/")) { await SendSuccess(ctx, ServerSettings.RemoveSteamModerator(url.Split('/')[3])); } else if (url.StartsWith("/api/remove_steam_admin/")) { await SendSuccess(ctx, ServerSettings.RemoveSteamAdmin(url.Split('/')[3])); } else if (url.StartsWith("/api/remove_steam_ban/")) { await SendSuccess(ctx, ServerSettings.RemoveSteamBan(url.Split('/')[3])); } else if (url.StartsWith("/api/remove_banned_part/")) { await SendSuccess(ctx, ServerSettings.RemoveBannedPart(url.Split('/')[3])); } else if (url.StartsWith("/api/pteleport/")) { Vector json; using (var reader = new StreamReader(ctx.Request.InputStream, ctx.Request.ContentEncoding)) { var _json = reader.ReadToEnd(); json = JsonConvert.DeserializeObject <Vector>(_json); } var p = Players.GetBySteamId(url.Split('/')[3]); if (p != null) { p.Teleport(new Vector3(json.x, json.y, json.z)); await SendSuccess(ctx); } else { await SendSuccess(ctx, false); } } else if (url.StartsWith("/api/steleport/")) { Vector json; using (var reader = new StreamReader(ctx.Request.InputStream, ctx.Request.ContentEncoding)) { var _json = reader.ReadToEnd(); json = JsonConvert.DeserializeObject <Vector>(_json); } var s = Ships.GetShipById(url.Split('/')[3]); if (s != null) { s.Teleport(new Vector3(json.x, json.y, json.z)); await SendSuccess(ctx); } else { await SendSuccess(ctx, false); } } else if (url == "/api/send_chat_message") { Message json; using (var reader = new StreamReader(ctx.Request.InputStream, ctx.Request.ContentEncoding)) { var _json = reader.ReadToEnd(); json = JsonConvert.DeserializeObject <Message>(_json); } ChatMessages.SendServerMessage("Server: " + json.message, null, -1); WebAPI.ChatMessagesQueue.Enqueue(new ChatMessage { steamId = "69", message = json.message, timestamp = WebAPI.GetTimestamp(DateTime.Now), uid = WebAPI.ChatMessageUid++, alias = "Server", team = -1 }); await SendSuccess(ctx); } else if (url.StartsWith("/api/repair_ship/")) { var s = Ships.GetShipById(url.Split('/')[3]); if (s != null) { s.RepairShip(); await SendSuccess(ctx); } else { await SendSuccess(ctx, false); } } else if (url.StartsWith("/api/refill_tools/")) { var s = Ships.GetShipById(url.Split('/')[3]); if (s != null) { s.RefillTools(); await SendSuccess(ctx); } else { await SendSuccess(ctx, false); } } else if (url.StartsWith("/api/refill_scrap/")) { var s = Ships.GetShipById(url.Split('/')[3]); if (s != null) { s.RefillScrap(); await SendSuccess(ctx); } else { await SendSuccess(ctx, false); } } else if (url == "/api/refill_all_scrap") { foreach (var ship in Ships.GetShips()) { if (!ship.IsAi()) { ship.RefillScrap(); } } await SendSuccess(ctx); } else if (url == "/api/refill_all_tools") { foreach (var ship in Ships.GetShips()) { if (!ship.IsAi()) { ship.RefillTools(); } } await SendSuccess(ctx); } else if (url == "/api/repair_all") { foreach (var ship in Ships.GetShips()) { if (!ship.IsAi()) { ship.RepairShip(); } } await SendSuccess(ctx); } else if (url.StartsWith("/api/heal/")) { var p = Players.GetBySteamId(url.Split('/')[3]); if (p != null) { p.ResetHp(); await SendSuccess(ctx); } else { await SendSuccess(ctx, false); } } else if (url == "/api/heal_all") { foreach (var player in Players.GetPlayers()) { if (player.IsReady()) { player.ResetHp(); } } await SendSuccess(ctx); } else if (url.StartsWith("/api/teleport_all_players/")) { var players = Players.GetPlayers(); var p = Players.GetBySteamId(url.Split('/')[3]); if (players.Count() > 1 && p != null && p.IsReady()) { var points = GetCirclePoints(players.Count, 15, p.GetPosition(), 20); for (var i = 0; i < players.Count; i++) { if (players[i].IsReady() && players[i].GetSteamId() != p.GetSteamId()) { players[i].Teleport(points[i]); } } await SendSuccess(ctx); } else { await SendSuccess(ctx, false); } } else if (url.StartsWith("/api/teleport_all_ships/")) { var ships = Ships.GetShips(); var s = Ships.GetShipById(url.Split('/')[3]); if (ships.Count() > 1 && s != null) { var points = GetCirclePoints(ships.Count, 140, s.GetPosition(), 50); for (var i = 0; i < ships.Count; i++) { if (ships[i].IsAirship() && !ships[i].IsAi() && ships[i].GetId() != s.GetId()) { ships[i].Teleport(points[i]); } } await SendSuccess(ctx); } else { await SendSuccess(ctx, false); } } else if (url == "/api/players") { var response = new PlayersResponse(); foreach (var player in Players.GetPlayers()) { response.players.Add(player.ToDict()); } await WriteJson(ctx, response); } else if (url == "/api/chat_messages") { try { ctx.Response.Headers.Add("content-type: application/json; charset=UTF-8"); using (var sw = new StreamWriter(ctx.Response.OutputStream)) { var arr = WebAPI.ChatMessagesQueue.ToArray(); if (arr.Length == 0) { await sw.WriteAsync("[]"); } else { await sw.WriteAsync(JsonConvert.SerializeObject(arr)); } await sw.FlushAsync(); } } catch (Exception ex) { Console.WriteLine(ex.Message); Console.WriteLine(ex.Source); Console.WriteLine(ex.StackTrace); } } else if (url == "/api/ships") { var response = new ShipsResponse(); foreach (var ship in Ships.GetShips()) { response.ships.Add(ship.ToDict()); } await WriteJson(ctx, response); } else { ctx.Response.Headers.Add("content-type: application/json; charset=UTF-8"); using (var sw = new StreamWriter(ctx.Response.OutputStream)) { await sw.WriteAsync("{}"); await sw.FlushAsync(); } } } catch (Exception ex) { Console.WriteLine(ex.Message); Console.WriteLine(ex.Source); Console.WriteLine(ex.StackTrace); } } }