Исправить вывод сообщений на русском в игре - C#
Формулировка задачи:
Здравствуйте..
Мне нужна помощь, для того чтобы перевести на UTF8, чтоб показывало на русском..
Я поставил на UTF-8, в игре показывается вот так:
Изображение:
using System; private static Encoding _defaultEncoding; public static CultureInfo CultureInfo; private static Game _game; private static ConfigurationData _configuration; private static ConnectionHandling _connectionManager; private static LanguageManager _languageManager; private static SettingsManager _settingsManager; private static DatabaseManager _manager; private static RCONSocket _rcon; private static FigureDataManager _figureManager; // TODO: Get rid? public static bool Event = false; public static DateTime lastEvent; public static DateTime ServerStarted; private static readonly List<char> Allowedchars = new List<char>(new[] { 'a', 'b', 'c', 'd', 'e', 'f', 'g', 'h', 'i', 'j', 'k', 'l', 'm', 'n', 'o', 'p', 'q', 'r', 's', 't', 'u', 'v', 'w', 'x', 'y', 'z', '1', '2', '3', '4', '5', '6', '7', '8', '9', '0', '-', '.' }); private static ConcurrentDictionary<int, Habbo> _usersCached = new ConcurrentDictionary<int, Habbo>(); public static string SWFRevision = ""; public static void Initialize() { ServerStarted = DateTime.Now; Console.ForegroundColor = ConsoleColor.DarkGreen; Console.WriteLine(); Console.WriteLine(" ____ __ ________ _____ __"); Console.WriteLine(@" / __ \/ /_ _______/ ____/ |/ / / / /"); Console.WriteLine(" / /_/ / / / / / ___/ __/ / /|_/ / / / / "); Console.WriteLine(" / ____/ / /_/ (__ ) /___/ / / / /_/ / "); Console.WriteLine(@" /_/ /_/\__,_/____/_____/_/ /_/\____/ "); Console.ForegroundColor = ConsoleColor.Green; Console.WriteLine(" " + PrettyVersion + " <Build " + PrettyBuild + ">"); Console.WriteLine(" http://PlusIndustry.com"); Console.WriteLine(""); Console.Title = "Loading Plus Emulator"; _defaultEncoding = Encoding.UTF8; Console.WriteLine(""); Console.WriteLine(""); CultureInfo = CultureInfo.CreateSpecificCulture("en-GB"); try { _configuration = new ConfigurationData(Path.Combine(Application.StartupPath, @"config.ini")); var connectionString = new MySqlConnectionStringBuilder { ConnectionTimeout = 10, Database = GetConfig().data["db.name"], DefaultCommandTimeout = 30, Logging = false, MaximumPoolSize = uint.Parse(GetConfig().data["db.pool.maxsize"]), MinimumPoolSize = uint.Parse(GetConfig().data["db.pool.minsize"]), Password = GetConfig().data["db.password"], Pooling = true, Port = uint.Parse(GetConfig().data["db.port"]), Server = GetConfig().data["db.hostname"], UserID = GetConfig().data["db.username"], AllowZeroDateTime = true, ConvertZeroDateTime = true, }; _manager = new DatabaseManager(connectionString.ToString()); if (!_manager.IsConnected()) { log.Error("Failed to connect to the specified MySQL server."); Console.ReadKey(true); Environment.Exit(1); return; } log.Info("Connected to Database!"); //Reset our statistics first. using (IQueryAdapter dbClient = GetDatabaseManager().GetQueryReactor()) { dbClient.RunQuery("TRUNCATE `catalog_marketplace_data`"); dbClient.RunQuery("UPDATE `rooms` SET `users_now` = '0' WHERE `users_now` > '0';"); dbClient.RunQuery("UPDATE `users` SET `online` = '0' WHERE `online` = '1'"); dbClient.RunQuery("UPDATE `server_status` SET `users_online` = '0', `loaded_rooms` = '0'"); } //Get the configuration & Game set. _languageManager = new LanguageManager(); _languageManager.Init(); _settingsManager = new SettingsManager(); _settingsManager.Init(); _figureManager = new FigureDataManager(); _figureManager.Init(); //Have our encryption ready. HabboEncryptionV2.Initialize(new RSAKeys()); //Make sure RCON is connected before we allow clients to connect. _rcon = new RCONSocket(GetConfig().data["rcon.tcp.bindip"], int.Parse(GetConfig().data["rcon.tcp.port"]), GetConfig().data["rcon.tcp.allowedaddr"].Split(Convert.ToChar(";"))); //Accept connections. _connectionManager = new ConnectionHandling(int.Parse(GetConfig().data["game.tcp.port"]), int.Parse(GetConfig().data["game.tcp.conlimit"]), int.Parse(GetConfig().data["game.tcp.conperip"]), GetConfig().data["game.tcp.enablenagles"].ToLower() == "true"); _connectionManager.init(); _game = new Game(); _game.StartGameLoop(); TimeSpan TimeUsed = DateTime.Now - ServerStarted; Console.WriteLine(); log.Info("EMULATOR -> READY! (" + TimeUsed.Seconds + " s, " + TimeUsed.Milliseconds + " ms)"); } catch (KeyNotFoundException e) { log.Error("Please check your configuration file - some values appear to be missing."); log.Error("Press any key to shut down ..."); Console.ReadKey(true); Environment.Exit(1); return; } catch (InvalidOperationException e) { log.Error("Failed to initialize PlusEmulator: " + e.Message); log.Error("Press any key to shut down ..."); Console.ReadKey(true); Environment.Exit(1); return; } catch (Exception e) { log.Error("Fatal error during startup: " + e); log.Error("Press a key to exit"); Console.ReadKey(); Environment.Exit(1); } } public static bool EnumToBool(string Enum) { return (Enum == "1"); } public static string BoolToEnum(bool Bool) { return (Bool == true ? "1" : "0"); } public static int GetRandomNumber(int Min, int Max) { return RandomNumber.GenerateNewRandom(Min, Max); } public static double GetUnixTimestamp() { TimeSpan ts = (DateTime.UtcNow - new DateTime(1970, 1, 1, 0, 0, 0)); return ts.TotalSeconds; } public static long Now() { TimeSpan ts = (DateTime.UtcNow - new DateTime(1970, 1, 1, 0, 0, 0)); double unixTime = ts.TotalMilliseconds; return (long)unixTime; } public static string FilterFigure(string figure) { foreach (char character in figure) { if (!isValid(character)) return "sh-3338-93.ea-1406-62.hr-831-49.ha-3331-92.hd-180-7.ch-3334-93-1408.lg-3337-92.ca-1813-62"; } return figure; } private static bool isValid(char character) { return Allowedchars.Contains(character); } public static bool IsValidAlphaNumeric(string inputStr) { inputStr = inputStr.ToLower(); if (string.IsNullOrEmpty(inputStr)) { return false; } for (int i = 0; i < inputStr.Length; i++) { if (!isValid(inputStr[i])) { return false; } } return true; } public static string GetUsernameById(int UserId) { string Name = "Unknown User"; GameClient Client = GetGame().GetClientManager().GetClientByUserID(UserId); if (Client != null && Client.GetHabbo() != null) return Client.GetHabbo().Username; UserCache User = PlusEnvironment.GetGame().GetCacheManager().GenerateUser(UserId); if (User != null) return User.Username; using (IQueryAdapter dbClient = PlusEnvironment.GetDatabaseManager().GetQueryReactor()) { dbClient.SetQuery("SELECT `username` FROM `users` WHERE `id` = @id LIMIT 1"); dbClient.AddParameter("id", UserId); Name = dbClient.GetString(); } if (string.IsNullOrEmpty(Name)) Name = "Unknown User"; return Name; } public static Habbo GetHabboById(int UserId) { try { GameClient Client = GetGame().GetClientManager().GetClientByUserID(UserId); if (Client != null) { Habbo User = Client.GetHabbo(); if (User != null && User.Id > 0) { if (_usersCached.ContainsKey(UserId)) _usersCached.TryRemove(UserId, out User); return User; } } else { try { if (_usersCached.ContainsKey(UserId)) return _usersCached[UserId]; else { UserData data = UserDataFactory.GetUserData(UserId); if (data != null) { Habbo Generated = data.user; if (Generated != null) { Generated.InitInformation(data); _usersCached.TryAdd(UserId, Generated); return Generated; } } } } catch { return null; } } return null; } catch { return null; } } public static Habbo GetHabboByUsername(String UserName) { try { using (IQueryAdapter dbClient = GetDatabaseManager().GetQueryReactor()) { dbClient.SetQuery("SELECT `id` FROM `users` WHERE `username` = @user LIMIT 1"); dbClient.AddParameter("user", UserName); int id = dbClient.GetInteger(); if (id > 0) return GetHabboById(Convert.ToInt32(id)); } return null; } catch { return null; } } public static void PerformShutDown() { Console.Clear(); log.Info("Server shutting down..."); Console.Title = "PLUS EMULATOR: SHUTTING DOWN!"; PlusEnvironment.GetGame().GetClientManager().SendPacket(new BroadcastMessageAlertComposer(GetLanguageManager().TryGetValue("server.shutdown.message"))); GetGame().StopGameLoop(); Thread.Sleep(2500); GetConnectionManager().Destroy();//Stop listening. GetGame().GetPacketManager().UnregisterAll();//Unregister the packets. GetGame().GetPacketManager().WaitForAllToComplete(); GetGame().GetClientManager().CloseAll();//Close all connections GetGame().GetRoomManager().Dispose();//Stop the game loop. using (IQueryAdapter dbClient = _manager.GetQueryReactor()) { dbClient.RunQuery("TRUNCATE `catalog_marketplace_data`"); dbClient.RunQuery("UPDATE `users` SET `online` = '0', `auth_ticket` = NULL"); dbClient.RunQuery("UPDATE `rooms` SET `users_now` = '0' WHERE `users_now` > '0'"); dbClient.RunQuery("UPDATE `server_status` SET `users_online` = '0', `loaded_rooms` = '0'"); } log.Info("Plus Emulator has successfully shutdown."); Thread.Sleep(1000); Environment.Exit(0); } public static ConfigurationData GetConfig() { return _configuration; } public static Encoding GetDefaultEncoding() { return _defaultEncoding; } public static ConnectionHandling GetConnectionManager() { return _connectionManager; } public static Game GetGame() { return _game; } public static RCONSocket GetRCONSocket() { return _rcon; } public static FigureDataManager GetFigureManager() { return _figureManager; } public static DatabaseManager GetDatabaseManager() { return _manager; } public static LanguageManager GetLanguageManager() { return _languageManager; } public static SettingsManager GetSettingsManager() { return _settingsManager; } public static ICollection<Habbo> GetUsersCached() { return _usersCached.Values; } public static bool RemoveFromCache(int Id, out Habbo Data) { return _usersCached.TryRemove(Id, out Data); } } }
Решение задачи: «Исправить вывод сообщений на русском в игре»
textual
Листинг программы
Encoding.Default; Encoding.GetEncoding("windows-1251");
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д