private static async void Process() { if (VerifyJob(Job) && VerifyModel(Model) && VerifyName(CharName) && NameAvailable) { var character = CreateCharacter(); character.GameSocket = Player.GameSocket; character.GameSocket.Ref = character; character.AccountId = Player.AccountId; character.Password = Player.Password; Player = character; Player.LoginType = LoginType.Login; SelectorSystem.AddCharacterTo(Player.AccountId, Player); Player.ForceSend(MsgText.Create(Constants.System, Constants.Allusers, Constants.AnswerOk, MsgTextType.Dialog), 29 + Constants.System.Length + Constants.Allusers.Length + Constants.AnswerOk.Length); } else { Player.ForceSend(MsgText.Create(Constants.System, Constants.Allusers, "Taken or invalid name. (A-Y | 0-9)", MsgTextType.Dialog), 29 + Constants.System.Length + Constants.Allusers.Length + "Taken or invalid name. (A-Y | 0-9)".Length); } }
private static void Process() { Player.GameSocket.Crypto.SetKeys(UniqueId, UniqueId); var characters = SelectorSystem.GetPlayersFor(Player.AccountId).ToList(); if (characters.Any(c => c.LoginType == LoginType.Create)) { if (!Player.GameSocket.Socket.Connected) { return; } Player.ForceSend(MsgText.Create(Constants.System, Constants.Allusers, "NEW_ROLE", MsgTextType.LoginInformation), 29 + Constants.System.Length + Constants.Allusers.Length + "NEW_ROLE".Length); } else { var availableChars = characters.Where(c => c.Online == false).ToList(); if (availableChars.Count == 0) { characters[0].Disconnect(); characters[0].GameSocket = Player.GameSocket; characters[0].GameSocket.Ref = characters[0]; Player = characters[0]; } else { availableChars[0].GameSocket = Player.GameSocket; availableChars[0].GameSocket.Ref = availableChars[0]; Player = availableChars[0]; } Player.ForceSend(MsgText.Create(Constants.System, Constants.Allusers, Constants.AnswerOk, MsgTextType.LoginInformation), 29 + Constants.System.Length + Constants.Allusers.Length + Constants.AnswerOk.Length); var p = LegacyPackets.CharacterInformation(Player); Player.ForceSend(p, BitConverter.ToUInt16(p, 0)); } }
public static void Handle(Player player, byte[] buffer) { try { fixed(byte *p = buffer) { var packet = *(MsgSyndicate *)p; BufferPool.RecycleBuffer(buffer); switch (packet.Type) { case GuildRequest.ApplyJoin: if (GameWorld.Find(packet.Param, out Player found)) { if (found.Guild != null) { player.JoinGuildRequest = found.UniqueId; packet.Param = player.UniqueId; found.Send(packet); } } break; case GuildRequest.InviteJoin: if (GameWorld.Find(packet.Param, out Player found2)) { if (found2.JoinGuildRequest == player.UniqueId) { player.Guild.Add(found2); } } break; case GuildRequest.LeaveSyn: player.Guild.Leave(player); break; case GuildRequest.KickOutMember: if (GameWorld.Find(packet.Param, out Player found3)) { found3.Guild.Leave(found3); } break; case GuildRequest.QuerySynName: if (Collections.Guilds.TryGetValue(packet.Param, out var guild)) { player.Send(MsgName.Create(packet.Param, guild.Name, (byte)MsgNameType.Syndicate)); } break; //case GuildRequest.SetAlly: // break; //case GuildRequest.ClearAlly: // break; //case GuildRequest.SetEnemy: // break; //case GuildRequest.ClearAntagonize: // break; case GuildRequest.DonateMoney: if (player.Money >= packet.Param) { player.GuildDonation += packet.Param; player.Guild.Funds += packet.Param; player.Money -= packet.Param; player.Send(packet); } break; case GuildRequest.QuerySynAttr: if (player.UniqueId == packet.Param) { if (player.Guild == null) { return; } player.Send(MsgName.Create(player.Guild.UniqueId, player.Guild.Name, (byte)MsgNameType.Syndicate)); player.Send(MsgSyndicateSpawn.Create(player)); player.Send(MsgText.Create(Constants.System, Constants.Allusers, player.Guild.Bulletin, MsgTextType.GuildBulletin)); } break; //case GuildRequest.SetSyn: // break; //case GuildRequest.UniteSubSyn: // break; //case GuildRequest.UniteSyn: // break; //case GuildRequest.SetWhiteSyn: // break; //case GuildRequest.SetBlackSyn: // break; //case GuildRequest.DestroySyn: // break; //case GuildRequest.SetMantle: // break; default: Output.WriteLine(((byte[])packet).HexDump()); break; } } } catch (Exception e) { Output.WriteLine(e); } }