private static void HandleInviteResponse(GameSession session, PacketReader packet) { long guildId = packet.ReadLong(); string guildName = packet.ReadUnicodeString(); packet.ReadShort(); string inviterName = packet.ReadUnicodeString(); string inviteeName = packet.ReadUnicodeString(); byte response = packet.ReadByte(); // 01 accept Guild guild = GameServer.GuildManager.GetGuildById(guildId); if (guild == null) { return; } Player inviter = GameServer.PlayerManager.GetPlayerByName(inviterName); if (inviter == null) { return; } if (response == 00) { inviter.Session.Send(GuildPacket.InviteNotification(inviteeName, 256)); session.Send(GuildPacket.InviteResponseConfirm(inviter, session.Player, guild, response)); return; } guild.AddMember(session.Player); GuildMember member = guild.Members.FirstOrDefault(x => x.Player == session.Player); if (member == null) { return; } inviter.Session.Send(GuildPacket.InviteNotification(inviteeName, response)); session.Send(GuildPacket.InviteResponseConfirm(inviter, session.Player, guild, response)); session.FieldManager.BroadcastPacket(GuildPacket.UpdateGuildTag2(session.Player, guildName)); guild.BroadcastPacketGuild(GuildPacket.MemberBroadcastJoinNotice(member, inviterName, true)); guild.BroadcastPacketGuild(GuildPacket.MemberJoin(session.Player), session); session.Send(GuildPacket.UpdateGuild(guild)); TrophyManager.OnGuildJoin(session.Player); }
private static void HandleCreate(GameSession session, PacketReader packet) { string guildName = packet.ReadUnicodeString(); if (session.Player.Guild != null) { return; } if (!session.Player.Wallet.Meso.Modify(-2000)) { session.Send(GuildPacket.ErrorNotice((byte)GuildErrorNotice.NotEnoughMesos)); return; } if (DatabaseManager.Guilds.NameExists(guildName)) { session.Send(GuildPacket.ErrorNotice((byte)GuildErrorNotice.GuildWithSameNameExists)); return; } Guild newGuild = new(guildName, session.Player); GameServer.GuildManager.AddGuild(newGuild); session.FieldManager.BroadcastPacket(GuildPacket.UpdateGuildTag2(session.Player, guildName)); session.Send(GuildPacket.Create(guildName)); string inviter = ""; // nobody because nobody invited the guild leader GuildMember member = newGuild.Members.FirstOrDefault(x => x.Player == session.Player); session.Send(GuildPacket.UpdateGuild(newGuild)); session.Send(GuildPacket.MemberBroadcastJoinNotice(member, inviter, false)); session.Send(GuildPacket.MemberJoin(session.Player)); // Remove any applications foreach (GuildApplication application in session.Player.GuildApplications) { Guild guild = GameServer.GuildManager.GetGuildById(application.GuildId); application.Remove(session.Player, guild); } DatabaseManager.Characters.Update(session.Player); TrophyManager.OnGuildJoin(session.Player); }