public void OnCharacterListRequest(IncomingPacket packet) { CharacterListRequest request = new CharacterListRequest(packet); // Don't go back to character list, when you're already in there if (Authenticated) { return; } if (request.BuildDate != (string)ClusterServer.Config.GetSetting("ClientBuildDate")) { this.Dispose(); return; } this.Username = request.Username; Account account; if (ClusterServer.LoginDatabase.Accounts.ContainsKey(this.Username)) { account = ClusterServer.LoginDatabase.Accounts[this.Username]; } else { account = SharpFly_Utility_Library.Database.LoginDatabase.Queries.Account.Instance.GetAccount(this.Username); if (account == null) { this.Dispose(); return; } else { ClusterServer.LoginDatabase.Accounts.Add(account.Accountname, account); } } if (account.Password != request.Password) { this.Dispose(); return; } if (account.Banned) { this.Dispose(); return; } if (!account.Verified) { this.Dispose(); return; } Authenticated = true; SendServerIp(); SendCharacterList(0); }
public async Task CharacterList(CharacterListRequest packet, IRakConnection connection) { // Remove the player from the zone. var session = UchuServer.SessionCache.GetSession(connection.EndPoint); if (UchuServer is WorldUchuServer worldUchuServer) { var player = worldUchuServer.FindPlayer(connection); if (player != null) { await player.DestroyAsync(); } } // Send the character list. await SendCharacterList(connection, session.UserId); }
private async Task HandleCharacterList(CharacterListRequest request) { var response = new CharacterListResponse(); var characterList = await ShardSession.GetCharacterList(); // TODO: this equipment list obviously needs revisited once items are implemented var equipmentCount = Enum.GetValues(typeof(EquipmentSlot)).Length; var equipmentDisplayIds = new int[equipmentCount]; var equipmentInventoryTypes = new byte[equipmentCount]; foreach (var character in characterList) { response.AddCharacter(character.Id, character.Name, character.Race, character.Class, character.Sex, character.Skin, character.Face, character.HairStyle, character.HairColor, character.FacialHair, character.Level, character.ZoneId, character.MapId, character.Position, 0, 0, true, 0, 0, 0, 0, 0, equipmentDisplayIds, equipmentInventoryTypes); } ForwardPacket(response); }
protected virtual void RealmSocket_OnRealmStartupResponse(RealmStartupResponse Packet) { RealmStartupResult result = Packet.Result; checked { if (result == RealmStartupResult.Success) { this.Realm.WriteToLog("[0x" + Conversions.ToString((byte)Packet.PacketID) + "] Connection Successful", Color.Gray); MainForm.BotsConnected++; CharacterListRequest packet = new CharacterListRequest(8); this.Realm.SendPacket(packet); } else { this.Realm.WriteToLog("[0x" + Conversions.ToString((byte)Packet.PacketID) + "] Connection Failed, Reason: " + Packet.Result, Color.Red); this.Realm.Disconnect(); } } }
public async Task CharacterList(CharacterListRequest packet, IRakConnection connection) { var session = Server.SessionCache.GetSession(connection.EndPoint); await SendCharacterList(connection, session.UserId); }
public static void HandlePacket(byte[] Data, byte Module, PacketType Type, UInt32 Unk01, TORGameClient Client) { // TODO: Check for packet drop IPacket iPacket = null; ClientState State = Client.State; switch (State) { case ClientState.CONNECTING: switch (Type) { case PacketType.ConnectionHandshake: iPacket = new ConnectionHandshake(); break; default: Log.Write(LogLevel.Warning, "Received Unknown Packet [{0:X}] on State '{1}'\n{2}", Type, State.ToString(), Data.ToHEX()); break; } break; case ClientState.CONNECTED: switch (Type) { case PacketType.ObjectReply: iPacket = new ObjectReply(); break; case PacketType.Ping: iPacket = new Ping(); break; default: Log.Write(LogLevel.Warning, "Received Unknown Packet [{0:X}] on State '{1}'\n{2}", Type, State.ToString(), Data.ToHEX()); break; } break; case ClientState.AUTHED: switch (Type) { case PacketType.CreateCharacterRequest: Log.Write(LogLevel.Warning, "\n{0}", Data.ToHEX()); iPacket = new CreateCharacterRequest(); break; case PacketType.ObjectReply: iPacket = new ObjectReply(); break; case PacketType.ServiceRequest: iPacket = new ServiceRequest(); break; case PacketType.RequestClose: iPacket = new RequestClose(); break; case PacketType.TimeRequesterRequest: iPacket = new TimeRequesterRequest(); break; case PacketType.HackNotifyData: iPacket = new HackNotifyData(); break; case PacketType.CMsgC26464A9: iPacket = new CMsgC26464A9(); break; case PacketType.CMsg7CB9A193: iPacket = new CMsg7CB9A193(); break; case PacketType.ModulesList: iPacket = new ModulesList(); break; case PacketType.AreaModulesList: iPacket = new AreaModulesList(); break; case PacketType.SetTrackingInfo: iPacket = new SetTrackingInfo(); break; case PacketType.CharacterListRequest: iPacket = new CharacterListRequest(); break; case PacketType.SelectCharacterRequest: iPacket = new SelectCharacterRequest(); break; case PacketType.Ping: iPacket = new Ping(); break; default: Log.Write(LogLevel.Warning, "Received Unknown Packet [{0:X}] on State '{1}'\n{2}", Type, State.ToString(), Data.ToHEX()); break; } break; case ClientState.IN_GAME: switch (Type) { case PacketType.RequestClose: iPacket = new RequestClose(); break; case PacketType.SetTrackingInfo: iPacket = new SetTrackingInfo(); break; case PacketType.Ping: iPacket = new Ping(); break; // TODO: Implement Game Packets default: Log.Write(LogLevel.Warning, "Received Unknown Packet [{0:X}] on State '{1}'\n{2}", Type, State.ToString(), Data.ToHEX()); break; } break; } if (iPacket != null) { iPacket.SetClient(Client); iPacket.SetBuffers(Data); //Log.Write(LogLevel.EDebug, "{0}", Data.ToHEX()); iPacket.Read(); iPacket.Run(); } }