Exemplo n.º 1
0
    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);
    }
Exemplo n.º 2
0
    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);
    }