public void Update() { AutoReconnector.Update(); CallInvokes(); if (Game is null) { return; } if (Running != State.Started) { return; } if (PokemonEvolver.Update()) { return; } if (MoveTeacher.Update()) { return; } if (MiningAI != null) { if (MiningAI.Update()) { return; } } if (Game.IsInactive && Game.IsMapLoaded && Game.IsConnected) { ExecuteNextAction(); } }
public void Update() { AutoReconnector.Update(); if (_loginRequested) { LoginUpdate(); _loginRequested = false; return; } if (Running != State.Started) { return; } if (PokemonEvolver.Update()) { return; } if (MoveTeacher.Update()) { return; } if (Game.IsMapLoaded && Game.AreNpcReceived && Game.IsInactive) { ExecuteNextAction(); } }
public void Update() { if (_loginRequested) { LoginUpdate(); _loginRequested = false; return; } if (Game != null && Game.IsInBattle && Game.IsInactive && AI != null && AI.UseMandatoryAction()) { return; } AutoReconnector.Update(); AutoLootBoxOpener.Update(); QuestManager.Update(); if (_npcBattler != null && Game.DistanceFrom(_npcBattler.PositionX, _npcBattler.PositionY) > 1 && Game != null && Game.IsMapLoaded && Game.IsInactive && !Game.IsInBattle) { Game.ClearPath(); MoveToCell(_npcBattler.PositionX, _npcBattler.PositionY, 1); _npcBattler = null; return; } if (_npcBattler != null && Game != null && Game?.DistanceFrom(_npcBattler.PositionX, _npcBattler.PositionY) <= 1) { _npcBattler = null; } if (Script?.IsLoaded == true) { Script?.Update(); } if (Running != State.Started) { return; } if (PokemonEvolver.Update()) { return; } if (MoveTeacher.Update()) { return; } if (AI != null && AI.IsBusy) { return; } if (Game.IsMapLoaded && Game.AreNpcReceived && Game.IsInactive) { ExecuteNextAction(); } }
public BotClient() { AccountManager = new AccountManager("Account"); PokemonEvolver = new PokemonEvolver(this); MoveTeacher = new MoveTeacher(this); AutoReconnector = new AutoReconnector(this); Settings = new UserSettings(); Account = null; }
public void Update() { if (Script != null) { Script.Update(); } if (_teleportCheckRequested) { if (TeleportationCheck < DateTime.UtcNow) { if (!Game.IsInBattle) { PlayShoutNotification?.Invoke(); PauseScript(5.5f); LogMessage("Bot got teleported twice or more than twice please check. This can be a GM/Admin/Mod teleport.", Brushes.OrangeRed); countGMTele = 0; } _teleportCheckRequested = false; } } CallInvokes(); AutoReconnector.Update(); if (_loginRequested) { LoginUpdate(); _loginRequested = false; return; } if (StartScriptInstant && Running != State.Started && Game != null & Script != null) { if (Game.IsMapLoaded && Game.AreNpcReceived && Game.IsInactive) { Start(); StartScriptInstant = false; } } if (Running != State.Started) { return; } if (PokemonEvolver.Update()) { return; } if (MoveTeacher.Update()) { return; } if (Game.IsMapLoaded && Game.AreNpcReceived && Game.IsInactive) { ExecuteNextAction(); } }
public BotClient() { AccountManager = new AccountManager("Accounts"); PokemonEvolver = new PokemonEvolver(this); MoveTeacher = new MoveTeacher(this); StaffAvoider = new StaffAvoider(this); AutoReconnector = new AutoReconnector(this); MovementResynchronizer = new MovementResynchronizer(this); Rand = new Random(); }
public void Update() { if (_authenticationRequired) { if (Encryption.StateReady) { // TODO: Add an option to select the OS we want, it could be useful. Game.SendAuthentication(Account.Name, Account.Password, Account.DeviceId ?? Hardware.GenerateRandomHash(), Hardware.GenerateRandomOsInfo()); _authenticationRequired = false; } return; } AutoReconnector.Update(); if (_loginRequested) { LoginUpdate(); _loginRequested = false; return; } if (Game != null && Game.IsInBattle && Game.IsInactive && AI != null && AI.UseMandatoryAction()) { return; } if (Running != State.Started) { return; } if (Game.IsCreatingNewCharacter) { LogMessage("Creating a new character with a random skin..."); Game.CreateCharacter(Rand.Next(14), Rand.Next(28), Rand.Next(4), 695 + Rand.Next(6), Rand.Next(5)); return; } if (PokemonEvolver.Update()) { return; } if (MoveTeacher.Update()) { return; } if (Game.IsMapLoaded && Game.AreNpcReceived && Game.IsInactive) { ExecuteNextAction(); } }
public void Update() { if (_loginRequested) { LoginUpdate(); _loginRequested = false; return; } AutoReconnector.Update(); AutoLootBoxOpener.Update(); QuestManager.Update(); if (_npcBattler != null && Game != null && Game.IsMapLoaded && Game.IsInactive) { if (GameClient.DistanceBetween(Game.PlayerX, Game.PlayerY, _npcBattler.PositionX, _npcBattler.PositionY) == 1) { TalkToNpc(_npcBattler); _npcBattler = null; } else { TalkToNpc(_npcBattler); } return; } if (Script?.IsLoaded == true) { Script?.Update(); } if (Running != State.Started) { return; } if (PokemonEvolver.Update()) { return; } if (MoveTeacher.Update()) { return; } if (AI != null && AI.IsBusy) { return; } if (Game.IsMapLoaded && Game.AreNpcReceived && Game.IsInactive) { ExecuteNextAction(); } }
public BotClient() { AccountManager = new AccountManager("Accounts"); PokemonEvolver = new PokemonEvolver(this); MovementResynchronizer = new MovementResynchronizer(this); MoveTeacher = new MoveTeacher(this); AutoReconnector = new AutoReconnector(this); AutoLootBoxOpener = new AutoLootBoxOpener(this); QuestManager = new QuestManager(this); Settings = new UserSettings(); }
public BotClient() { AccountManager = new AccountManager("Accounts"); PokemonEvolver = new PokemonEvolver(this); MovementResynchronizer = new MovementResynchronizer(this); MoveTeacher = new MoveTeacher(this); AutoReconnector = new AutoReconnector(this); AutoLootBoxOpener = new AutoLootBoxOpener(this); QuestManager = new QuestManager(this); Settings = new UserSettings(); #if DEBUG byte[] bytes = new byte[] { 0x50, 0x6a, 0x03, 0xc2, 0xcf, 0x68, 0x90, 0xe6, 0xba, 0x32, 0x3c, 0x1a, 0x08, 0x00, 0x45, 0x00, 0x00, 0x28, 0x78, 0x91, 0x40, 0x00, 0x80, 0x06, 0x00, 0x00, 0xc0, 0xa8, 0x01, 0x0e, 0x5f, 0xb7, 0x30, 0x44, 0xed, 0x6f, 0x07, 0xdc, 0x54, 0x7f, 0x6b, 0x80, 0x7d, 0x82, 0x1a, 0x41, 0x50, 0x10, 0x01, 0x00, 0x51, 0xcc, 0x00, 0x00 }; var pc = Convert.ToBase64String(bytes); Console.WriteLine(pc); var packet = @"Battle Chp8LS1vbmxpbmV8cDF8MHxnaWJ1eWhpbHRvbioGeW93aXRhKgtnaWJ1eWhpbHRvbioLZ2lidXloaWx0b244WkgBUAFYAWBO"; var data = packet.Split(" ".ToCharArray()); byte[] array = Convert.FromBase64String(data[1]); var type = Type.GetType($"PSXAPI.Request.{data[0]}, PSXAPI"); if (type != null) { var proto = typeof(PSXAPI.Proto).GetMethod("Deserialize").MakeGenericMethod(new Type[] { type }).Invoke(null, new object[] { array }) as PSXAPI.IProto; Console.WriteLine(ToJsonString(proto)); //Console.WriteLine($"MapLoad: {(proto as PSXAPI.Request.BattleBroadcast).RequestID}, ID: {(proto as PSXAPI.Request.BattleBroadcast)._Name.ToString()}"); } else { type = Type.GetType($"PSXAPI.Response.{data[0]}, PSXAPI"); if (type != null) { var proto = typeof(PSXAPI.Proto).GetMethod("Deserialize").MakeGenericMethod(new Type[] { type }).Invoke(null, new object[] { array }) as PSXAPI.IProto; Console.WriteLine(ToJsonString(proto)); // Console.WriteLine($"MapLoad: {(proto as PSXAPI.Request.BattleBroadcast).RequestID}, ID: {(proto as PSXAPI.Request.BattleBroadcast)._Name.ToString()}"); } } #endif }
public BotClient() { AccountManager = new AccountManager("Accounts"); PokemonEvolver = new PokemonEvolver(this); MoveTeacher = new MoveTeacher(this); StaffAvoider = new StaffAvoider(this); AutoReconnector = new AutoReconnector(this); MovementResynchronizer = new MovementResynchronizer(this); Rand = new Random(); SliderOptions = new Dictionary <int, OptionSlider>(); TextOptions = new Dictionary <int, TextOption>(); }
public BotClient() { AccountManager = new AccountManager("Accounts"); PokemonEvolver = new PokemonEvolver(this); MoveTeacher = new MoveTeacher(this); StaffAvoider = new StaffAvoider(this); AutoReconnector = new AutoReconnector(this); IsTrainerBattlesActive = new IsTrainerBattlesActive(this); MovementResynchronizer = new MovementResynchronizer(this); Rand = new Random(); SliderOptions = new Dictionary <int, OptionSlider>(); TextOptions = new Dictionary <int, TextOption>(); countGMTele = 0; CallingPaueScript = false; }
public BotClient() { AccountManager = new AccountManager("Accounts"); PokemonEvolver = new PokemonEvolver(this); MoveTeacher = new MoveTeacher(this); StaffAvoider = new StaffAvoider(this); AutoReconnector = new AutoReconnector(this); MovementResynchronizer = new MovementResynchronizer(this); Rand = new Random(); Options = new OptionSlider[] { new OptionSlider("Option 1: ", "Custom option 1 for use in scripts", 1), new OptionSlider("Option 2: ", "Custom option 2 for use in scripts", 2), new OptionSlider("Option 3: ", "Custom option 3 for use in scripts", 3), new OptionSlider("Option 4: ", "Custom option 4 for use in scripts", 4), new OptionSlider("Option 5: ", "Custom option 5 for use in scripts", 5) }; }
public void Update() { AutoReconnector.Update(); CallInvokes(); if (_loginRequested) { _loginRequested = false; LoginUpdate(); return; } if (Game is null) { return; } if (Game.IsCreatingCharacter) { C_LogMessage("Creating a new character with a random skin...", Brushes.OrangeRed); Game.CreateCharacter(); return; } if (Running != State.Started) { return; } if (PokemonEvolver.Update()) { return; } if (MoveTeacher.Update()) { return; } if (MiningAI?.Update() == true) { return; } if (Game.IsMapLoaded && Game.IsConnected && Game.IsInactive) { ExecuteNextAction(); } }
public void Update() { AutoReconnector.Update(); if (_loginRequested) { LoginUpdate(); _loginRequested = false; return; } if (Game != null && Game.IsInBattle && Game.IsInactive && AI != null && AI.UseMandatoryAction()) { return; } if (Running != State.Started) { return; } if (Game.IsCreatingNewCharacter) { LogMessage("Creating a new character with a random skin..."); Game.CreateCharacter(Rand.Next(14), Rand.Next(28), Rand.Next(8), Rand.Next(6), Rand.Next(5)); return; } if (PokemonEvolver.Update()) { return; } if (MoveTeacher.Update()) { return; } if (Game.IsMapLoaded && Game.AreNpcReceived && Game.IsInactive) { ExecuteNextAction(); } }
public void Update() { AutoReconnector.Update(); CallInvokes(); if (Game is null) { return; } if (_loginUpdate && _gameConnection.IsLoggedInToWebsite) { _loginUpdate = false; LoginUpdate(); } if (Running != State.Started) { return; } if (PokemonEvolver.Update()) { return; } if (MoveTeacher.Update()) { return; } if (MiningAI != null) { if (MiningAI.Update()) { return; } } if (Game.IsInactive && Game.IsMapLoaded && Game.IsConnected) { ExecuteNextAction(); } }
public BotClient(string xmlFile = "") { PokemonEvolver = new PokemonEvolver(this); MoveTeacher = new MoveTeacher(this); StaffAvoider = new StaffAvoider(this); AutoReconnector = new AutoReconnector(this); IsTrainerBattlesActive = new IsTrainerBattlesActive(this); MovementResynchronizer = new MovementResynchronizer(this); Rand = new Random(); SliderOptions = new Dictionary <int, OptionSlider>(); TextOptions = new Dictionary <int, TextOption>(); countGMTele = 0; CallingPaueScript = false; messageProcess = false; BeAwareOfStaff = false; NeedResync = false; StartScriptInstant = false; LanguageXmlFile = ""; if (!string.IsNullOrEmpty(xmlFile)) { LanguageXmlFile = xmlFile; } }
public BotClient() { AccountManager = new AccountManager("Accounts"); PokemonEvolver = new PokemonEvolver(this); MovementResynchronizer = new MovementResynchronizer(this); MoveTeacher = new MoveTeacher(this); AutoReconnector = new AutoReconnector(this); AutoLootBoxOpener = new AutoLootBoxOpener(this); QuestManager = new QuestManager(this); Settings = new UserSettings(); #if DEBUG byte[] bytes = new byte[] { 0x50, 0x6a, 0x03, 0xc2, 0xcf, 0x68, 0x90, 0xe6, 0xba, 0x32, 0x3c, 0x1a, 0x08, 0x00, 0x45, 0x00, 0x00, 0x28, 0x78, 0x91, 0x40, 0x00, 0x80, 0x06, 0x00, 0x00, 0xc0, 0xa8, 0x01, 0x0e, 0x5f, 0xb7, 0x30, 0x44, 0xed, 0x6f, 0x07, 0xdc, 0x54, 0x7f, 0x6b, 0x80, 0x7d, 0x82, 0x1a, 0x41, 0x50, 0x10, 0x01, 0x00, 0x51, 0xcc, 0x00, 0x00 }; var pc = Convert.ToBase64String(bytes); Console.WriteLine(pc); var enc = Poke1Protocol.StringCipher.EncryptOrDecryptToBase64Byte("username;)", "db2a1b6e-34d9-46ae-b319-d58bfc71011d"); var s64 = new PSXAPI.Request.Ack { Data = enc }; Console.WriteLine(Encoding.UTF8.GetString(s64.Data)); //var packet = @"InventoryPokemon CtEBChIJ8TZvO060XkYRhk8er86fOWQSjgEIowEQCxjPCyAkKgYIXRAZGBkqBggtECgYKCoGCCEQIxgjKgYIXxAUGBQwAjhoQAtSDAgTEAQYHyAJKAEwDloAYAJqEgm/i6xDrmcMTxGCrF/kjgIhyXISCb+LrEOuZwxPEYKsX+SOAiHJgAEEkAHDruOwAaIBBhACIAEwBqoBCwi+8s/AlfvlNhAFsAEDGgwIJBAMGBAgCygRMBEiBXhjb2RlKgV4Y29kZTIIS2VlbiBFeWU4swpAwA0Q////////////ARj///////////8BIP///////////wE="; //var packet = @"Transfer CAESEgnxNm87TrReRhGGTx6vzp85ZA=="; //var packet = @"Reorder ChIJ8TZvO060XkYRhk8er86fOWQKEgkmzfVu9CvLSRGQRb3nB/7fDAoSCfYOcUXnX0tPEaMc+TIXvZ2yChIJYRN0DkiWxU0RgB2UOdBYu10KEgnc3Xc6Zt6VQRG0ts8aa5F9XQ=="; var packet = @"Battle CgZ8c3BsaXQKCXxjaG9pY2V8fAo3fGNob2ljZXxtb3ZlIGJpdGUgMywgbW92ZSB0YWNrbGUgMywgbW92ZSB0aHVuZGVyZmFuZyAxfApAfGNob2ljZXx8bW92ZSBjbGVhcnNtb2cgMywgbW92ZSBkcmFnb25icmVhdGggMSwgbW92ZSBkb3VibGVoaXQgMgpufGNob2ljZXxtb3ZlIGJpdGUgMywgbW92ZSB0YWNrbGUgMywgbW92ZSB0aHVuZGVyZmFuZyAxfG1vdmUgY2xlYXJzbW9nIDMsIG1vdmUgZHJhZ29uYnJlYXRoIDEsIG1vdmUgZG91YmxlaGl0IDIKAXwKLHxtb3ZlfHAyYjogT25peHxEcmFnb24gQnJlYXRofHAxYTogQmxhc3RvaXNlCgZ8c3BsaXQKHXwtZGFtYWdlfHAxYTogQmxhc3RvaXNlfDEzLzQ4Ch18LWRhbWFnZXxwMWE6IEJsYXN0b2lzZXwyNC84OAodfC1kYW1hZ2V8cDFhOiBCbGFzdG9pc2V8MTMvNDgKHXwtZGFtYWdlfHAxYTogQmxhc3RvaXNlfDI0Lzg4Cht8LXN0YXR1c3xwMWE6IEJsYXN0b2lzZXxwYXIKKXxtb3ZlfHAxYTogQmxhc3RvaXNlfEJpdGV8cDJjOiBLYW5nYXNraGFuCgZ8c3BsaXQKHnwtZGFtYWdlfHAyYzogS2FuZ2Fza2hhbnwzNS80OAoefC1kYW1hZ2V8cDJjOiBLYW5nYXNraGFufDM1LzQ4Ch58LWRhbWFnZXxwMmM6IEthbmdhc2toYW58NzMvOTkKHnwtZGFtYWdlfHAyYzogS2FuZ2Fza2hhbnw3My85OQotfG1vdmV8cDJjOiBLYW5nYXNraGFufERvdWJsZSBIaXR8cDFiOiBOb2N0b3dsCgZ8c3BsaXQKG3wtZGFtYWdlfHAxYjogTm9jdG93bHwwIGZudAobfC1kYW1hZ2V8cDFiOiBOb2N0b3dsfDAgZm50Cht8LWRhbWFnZXxwMWI6IE5vY3Rvd2x8MCBmbnQKG3wtZGFtYWdlfHAxYjogTm9jdG93bHwwIGZudAoZfC1oaXRjb3VudHxwMWI6IE5vY3Rvd2x8MQoTfGZhaW50fHAxYjogTm9jdG93bAorfG1vdmV8cDJhOiBLb2ZmaW5nfENsZWFyIFNtb2d8cDFjOiBTbnViYnVsbAoefC1zdXBlcmVmZmVjdGl2ZXxwMWM6IFNudWJidWxsCgZ8c3BsaXQKHHwtZGFtYWdlfHAxYzogU251YmJ1bGx8MCBmbnQKHHwtZGFtYWdlfHAxYzogU251YmJ1bGx8MCBmbnQKHHwtZGFtYWdlfHAxYzogU251YmJ1bGx8MCBmbnQKHHwtZGFtYWdlfHAxYzogU251YmJ1bGx8MCBmbnQKGnwtY2xlYXJib29zdHxwMWM6IFNudWJidWxsChR8ZmFpbnR8cDFjOiBTbnViYnVsbAoBfAoHfHVwa2VlcBKxDAoCcDEQCRqoDAgJEAEoACgBKAE6mwwKAnAxEgJwMRqEAgoNcDE6IEJsYXN0b2lzZRIRQmxhc3RvaXNlLCBMMjksIE0aCTI0Lzg4IHBhciABKgoIORBTGD8gRChGMgRiaXRlMgp3YXRlcnB1bHNlMgh3YXRlcmd1bjIIYXF1YXRhaWw6B3RvcnJlbnRCAEoIcG9rZWJhbGxSBmZpdmF0b1j1w92UBGIYCgRCaXRlEgRiaXRlGBYgGSoGbm9ybWFsYiAKC1dhdGVyIFB1bHNlEgp3YXRlcnB1bHNlIBQqA2FueWIhCglXYXRlciBHdW4SCHdhdGVyZ3VuGBkgGSoGbm9ybWFsYh8KCUFxdWEgVGFpbBIIYXF1YXRhaWwgCioGbm9ybWFsGooCCgtwMTogTm9jdG93bBIPTm9jdG93bCwgTDIyLCBNGgUwIGZudCABKgoIHxAbGDAgMCgiMgtwc3ljaG9zaGlmdDIFZ3Jvd2wyBnRhY2tsZTIIaHlwbm9zaXM6CGluc29tbmlhQgBKB3Bva2JhbGxSBmZpdmF0b1jJwNqiBGInCgxQc3ljaG8gU2hpZnQSC3BzeWNob3NoaWZ0GAogCioGbm9ybWFsYiMKBUdyb3dsEgVncm93bBgoICgqD2FsbEFkamFjZW50Rm9lc2IcCgZUYWNrbGUSBnRhY2tsZRgaICMqBm5vcm1hbGIgCghIeXBub3NpcxIIaHlwbm9zaXMYFCAUKgZub3JtYWwagwIKDHAxOiBTbnViYnVsbBIQU251YmJ1bGwsIEwxMywgRhoFMCBmbnQgASoKCB0QFBgPIBIoDzIIdGFpbHdoaXAyC3RodW5kZXJmYW5nMgRiaXRlMgRsaWNrOgdydW5hd2F5QgBKB3Bva2JhbGxSBmZpdmF0b1i5oJ/vAmIqCglUYWlsIFdoaXASCHRhaWx3aGlwGB4gHioPYWxsQWRqYWNlbnRGb2VzYicKDFRodW5kZXIgRmFuZxILdGh1bmRlcmZhbmcYDiAPKgZub3JtYWxiGAoEQml0ZRIEYml0ZRgZIBkqBm5vcm1hbGIYCgRMaWNrEgRsaWNrGB4gHioGbm9ybWFsGvkBCgtwMTogUmF0dGF0YRIPUmF0dGF0YSwgTDE3LCBGGgUwIGZudCoKCBwQERgPIA4oHjIEYml0ZTIDY3V0MgtxdWlja2F0dGFjazILZm9jdXNlbmVyZ3k6B3J1bmF3YXlCAEoHcG9rYmFsbFIGZml2YXRvWP2nimBiGAoEQml0ZRIEYml0ZRgZIBkqBm5vcm1hbGIWCgNDdXQSA2N1dBgdIB4qBm5vcm1hbGInCgxRdWljayBBdHRhY2sSC3F1aWNrYXR0YWNrGB4gHioGbm9ybWFsYiUKDEZvY3VzIEVuZXJneRILZm9jdXNlbmVyZ3kYHiAeKgRzZWxmGvYBCgpwMTogTWVvd3RoEg5NZW93dGgsIEwxNCwgTRoFMCBmbnQqCggVEBAYEiASKB4yB3NjcmF0Y2gyBGJpdGUyB2Zha2VvdXQyCmZ1cnlzd2lwZXM6BnBpY2t1cEIASgdwb2tiYWxsUgZmaXZhdG9Yl7+e9gZiHgoHU2NyYXRjaBIHc2NyYXRjaBgiICMqBm5vcm1hbGIYCgRCaXRlEgRiaXRlGBkgGSoGbm9ybWFsYh8KCEZha2UgT3V0EgdmYWtlb3V0GAogCioGbm9ybWFsYiUKC0Z1cnkgU3dpcGVzEgpmdXJ5c3dpcGVzGA8gDyoGbm9ybWFsGoECCg5wMTogQmVsbHNwcm91dBISQmVsbHNwcm91dCwgTDEzLCBGGgUzOS8zOSoKCBkQDxgZIBAoEDIIdmluZXdoaXAyBmdyb3d0aDIEd3JhcDILc2xlZXBwb3dkZXI6CGdsdXR0b255QgBKB3Bva2JhbGxSBmZpdmF0b1jNiLaWAmIhCglWaW5lIFdoaXASCHZpbmV3aGlwGBkgGSoGbm9ybWFsYhoKBkdyb3d0aBIGZ3Jvd3RoGBQgFCoEc2VsZmIYCgRXcmFwEgR3cmFwGBQgFCoGbm9ybWFsYicKDFNsZWVwIFBvd2RlchILc2xlZXBwb3dkZXIYDyAPKgZub3JtYWwarAwKAnAyEAkaowwgATqeDAoCcDISAnAyGpICCgtwMjogS29mZmluZxIPS29mZmluZywgTDI1LCBNGgU0NC81NSABKgoIIRA0GCMgHSgWMglhc3N1cmFuY2UyCWNsZWFyc21vZzIGc2x1ZGdlMgxzZWxmZGVzdHJ1Y3Q6CGxldml0YXRlQgBKCHBva2ViYWxsWOCEnK4BYiIKCUFzc3VyYW5jZRIJYXNzdXJhbmNlGAkgCioGbm9ybWFsYiMKCkNsZWFyIFNtb2cSCWNsZWFyc21vZxgMIA8qBm5vcm1hbGIcCgZTbHVkZ2USBnNsdWRnZRgTIBQqBm5vcm1hbGIuCg1TZWxmLURlc3RydWN0EgxzZWxmZGVzdHJ1Y3QYBSAFKgthbGxBZGphY2VudBqOAgoIcDI6IE9uaXgSDE9uaXgsIEwyNSwgTRoFNDkvNTIgASoKCB0QVRgUIBgoKDIKcm9ja3BvbGlzaDIIZ3lyb2JhbGwyCXNtYWNrZG93bjIMZHJhZ29uYnJlYXRoOgZzdHVyZHlCAEoIcG9rZWJhbGxY8PfuqQViIwoLUm9jayBQb2xpc2gSCnJvY2twb2xpc2gYEyAUKgRzZWxmYiEKCUd5cm8gQmFsbBIIZ3lyb2JhbGwYBCAFKgZub3JtYWxiIwoKU21hY2sgRG93bhIJc21hY2tkb3duGA8gDyoGbm9ybWFsYikKDURyYWdvbiBCcmVhdGgSDGRyYWdvbmJyZWF0aBgRIBQqBm5vcm1hbBr2AQoOcDI6IEthbmdhc2toYW4SEkthbmdhc2toYW4sIEwyOSwgRhoFNzMvOTkgASoKCDwQOBgcIDMoMzIEYml0ZTIJZG91YmxlaGl0MgRyYWdlMgltZWdhcHVuY2g6CWVhcmx5YmlyZEIASghwb2tlYmFsbFjQ2qmwBWIYCgRCaXRlEgRiaXRlGBkgGSoGbm9ybWFsYiMKCkRvdWJsZSBIaXQSCWRvdWJsZWhpdBgJIAoqBm5vcm1hbGIYCgRSYWdlEgRyYWdlGBQgFCoGbm9ybWFsYiMKCk1lZ2EgUHVuY2gSCW1lZ2FwdW5jaBgUIBQqBm5vcm1hbBr+AQoKcDI6IE1lb3d0aBIOTWVvd3RoLCBMMjUsIE0aBTAgZm50KgoIGBAWGBkgGSg3MgpmdXJ5c3dpcGVzMgdzY3JlZWNoMgtmZWludGF0dGFjazIFdGF1bnQ6BnBpY2t1cEIASghwb2tlYmFsbFjJreblBmIlCgtGdXJ5IFN3aXBlcxIKZnVyeXN3aXBlcxgPIA8qBm5vcm1hbGIeCgdTY3JlZWNoEgdzY3JlZWNoGCggKCoGbm9ybWFsYicKDEZlaW50IEF0dGFjaxILZmVpbnRhdHRhY2sYEyAUKgZub3JtYWxiGgoFVGF1bnQSBXRhdW50GBQgFCoGbm9ybWFsGu8BCglwMjogRWthbnMSDUVrYW5zLCBMMjUsIE0aBTAgZm50KgoIIxAbGBkgHCgjMgRhY2lkMgZzcGl0dXAyCXN0b2NrcGlsZTIHc3dhbGxvdzoKaW50aW1pZGF0ZUIASghwb2tlYmFsbFjeibWZAWIhCgRBY2lkEgRhY2lkGB4gHioPYWxsQWRqYWNlbnRGb2VzYh0KB1NwaXQgVXASBnNwaXR1cBgKIAoqBm5vcm1hbGIgCglTdG9ja3BpbGUSCXN0b2NrcGlsZRgUIBQqBHNlbGZiHAoHU3dhbGxvdxIHc3dhbGxvdxgKIAoqBHNlbGYagQIKC3AyOiBSaHlob3JuEg9SaHlob3JuLCBMMjQsIE0aBTAgZm50KgoIKBA3GBMgEygRMglzY2FyeWZhY2UyCXNtYWNrZG93bjIFc3RvbXAyCGJ1bGxkb3plOghyb2NraGVhZEIASghwb2tlYmFsbFjxlL2hBWIjCgpTY2FyeSBGYWNlEglzY2FyeWZhY2UYCiAKKgZub3JtYWxiIwoKU21hY2sgRG93bhIJc21hY2tkb3duGA8gDyoGbm9ybWFsYhoKBVN0b21wEgVzdG9tcBgUIBQqBm5vcm1hbGIlCghCdWxsZG96ZRIIYnVsbGRvemUYFCAUKgthbGxBZGphY2VudCoGZml2YXRvKgZmaXZhdG8qBmZpdmF0byoGZml2YXRvKgZmaXZhdG8qBmZpdmF0b0ADWAFgbw=="; var data = packet.Split(" ".ToCharArray()); byte[] array = Convert.FromBase64String(data[1]); var type = Type.GetType($"PSXAPI.Request.{data[0]}, PSXAPI"); //goto RESP; if (type != null) { var proto = typeof(PSXAPI.Proto).GetMethod("Deserialize").MakeGenericMethod(new Type[] { type }).Invoke(null, new object[] { array }) as PSXAPI.IProto; //var s = proto as PSXAPI.Request.Ack; //string decodedString = Encoding.UTF8.GetString(s.Data); //Console.WriteLine(decodedString); if (proto is null) { goto RESP; } Console.WriteLine(ToJsonString(proto)); return; //Console.WriteLine($"MapLoad: {(proto as PSXAPI.Request.BattleBroadcast).RequestID}, ID: {(proto as PSXAPI.Request.BattleBroadcast)._Name.ToString()}"); } RESP: type = Type.GetType($"PSXAPI.Response.{data[0]}, PSXAPI"); if (type != null) { var proto = typeof(PSXAPI.Proto).GetMethod("Deserialize").MakeGenericMethod(new Type[] { type }).Invoke(null, new object[] { array }) as PSXAPI.IProto; Console.WriteLine(ToJsonString(proto)); // Console.WriteLine($"MapLoad: {(proto as PSXAPI.Request.BattleBroadcast).RequestID}, ID: {(proto as PSXAPI.Request.BattleBroadcast)._Name.ToString()}"); } #endif }