public void HandleErrorCode(ref PacketBufferReader p) { byte code = p.ReadByte(); PopupMessage = ServerErrorMessages.GetError(p.ID, code); CurrentLoginStep = LoginSteps.PopUpMessage; }
public void HandleErrorCode(ref StackDataReader p) { byte code = p.ReadUInt8(); PopupMessage = ServerErrorMessages.GetError(p[0], code); CurrentLoginStep = LoginSteps.PopUpMessage; }
private void NetClient_PacketReceived(object sender, Packet e) { e.MoveToData(); switch (e.ID) { case 0xA8: // ServerListReceived ParseServerList(e); // Save credentials to config file if (Engine.GlobalSettings.SaveAccount) { Engine.GlobalSettings.Username = Account; Engine.GlobalSettings.Password = Crypter.Encrypt(Password); Engine.GlobalSettings.Save(); } CurrentLoginStep = LoginStep.ServerSelection; if (Engine.GlobalSettings.AutoLogin && _isFirstLogin) { if (Servers.Length != 0) { SelectServer((byte)Servers[(Engine.GlobalSettings.LastServerNum - 1)].Index); } } break; case 0x8C: // ReceiveServerRelay // On OSI, upon receiving this packet, the client would disconnect and // log in to the specified server. Since emulated servers use the same // server for both shard selection and world, we don't need to disconnect. HandleRelayServerPacket(e); break; case 0x86: // UpdateCharacterList ParseCharacterList(e); Engine.UI.Remove <CharacterSelectionGump>(); _currentGump?.Dispose(); Engine.UI.Add(_currentGump = new CharacterSelectionGump()); break; case 0xA9: // ReceiveCharacterList ParseCharacterList(e); ParseCities(e); ParseFlags(e); CurrentLoginStep = LoginStep.CharacterSelection; if (Engine.GlobalSettings.AutoLogin && _isFirstLogin) { _isFirstLogin = false; bool haveAnyCharacter = false; for (byte i = 0; i < Characters.Length; i++) { if (Characters[i].Length > 0) { haveAnyCharacter = true; if (Characters[i] == Engine.GlobalSettings.LastCharacterName) { SelectCharacter(i); return; } } } if (haveAnyCharacter) { SelectCharacter(0); } } break; case 0xBD: // ReceiveVersionRequest NetClient.Socket.Send(new PClientVersion(Engine.GlobalSettings.ClientVersion)); break; case 0x82: // ReceiveLoginRejection case 0x85: // character list notification case 0x53: // Error Code byte code = e.ReadByte(); PopupMessage = ServerErrorMessages.GetError(e.ID, code); CurrentLoginStep = LoginStep.PopUpMessage; break; } }
private void NetClient_PacketReceived(object sender, Packet e) { e.MoveToData(); switch (e.ID) { case 0xA8: // ServerListReceived ParseServerList(e); CurrentLoginStep = LoginSteps.ServerSelection; if (Settings.GlobalSettings.AutoLogin || Reconnect) { if (Servers.Length != 0) { int index = Settings.GlobalSettings.LastServerNum; if (index <= 0 || index > Servers.Length) { Log.Warn($"Wrong server index: {index}"); index = 1; } SelectServer((byte)Servers[index - 1].Index); } } break; case 0x8C: // ReceiveServerRelay // On OSI, upon receiving this packet, the client would disconnect and // log in to the specified server. Since emulated servers use the same // server for both shard selection and world, we don't need to disconnect. HandleRelayServerPacket(e); break; case 0x86: // UpdateCharacterList ParseCharacterList(e); UIManager.GetGump <CharacterSelectionGump>()?.Dispose(); _currentGump?.Dispose(); UIManager.Add(_currentGump = new CharacterSelectionGump()); break; case 0xA9: // ReceiveCharacterList ParseCharacterList(e); ParseCities(e); ParseFlags(e); CurrentLoginStep = LoginSteps.CharacterSelection; uint charToSelect = 0; bool haveAnyCharacter = false; bool tryAutologin = Settings.GlobalSettings.AutoLogin || Reconnect; for (byte i = 0; i < Characters.Length; i++) { if (Characters[i].Length > 0) { haveAnyCharacter = true; if (Characters[i] == Settings.GlobalSettings.LastCharacterName) { charToSelect = i; break; } } } if (tryAutologin && haveAnyCharacter) { SelectCharacter(charToSelect); } else if (!haveAnyCharacter) { StartCharCreation(); } break; case 0xBD: // ReceiveVersionRequest NetClient.Socket.Send(new PClientVersion(Settings.GlobalSettings.ClientVersion)); break; case 0x82: // ReceiveLoginRejection case 0x85: // character list notification case 0x53: // Error Code byte code = e.ReadByte(); PopupMessage = ServerErrorMessages.GetError(e.ID, code); CurrentLoginStep = LoginSteps.PopUpMessage; break; case 0xB9: uint flags = 0; if (Client.Version >= ClientVersion.CV_60142) { flags = e.ReadUInt(); } else { flags = e.ReadUShort(); } World.ClientLockedFeatures.SetFlags((LockedFeatureFlags)flags); break; default: break; } }