Exemplo n.º 1
0
        public static void On_InterClient_GuildMemberRankUpdate(WorldConnector pConnector, InterPacket pPacket)
        {
            int  guildID, characterID;
            byte newRank;

            if (!pPacket.TryReadInt(out guildID) ||
                !pPacket.TryReadInt(out characterID) ||
                !pPacket.TryReadByte(out newRank))
            {
                return;
            }


            Guild guild;

            if (GetGuildByID(guildID, out guild))
            {
                lock (guild.ThreadLocker)
                {
                    GuildMember member;
                    if (guild.GetMember(characterID, out member))
                    {
                        member.Rank = (GuildRank)newRank;
                    }
                }
            }
        }
Exemplo n.º 2
0
        public static void On_InterClient_GuildMessageUpdate(WorldConnector pConnector, InterPacket pPacket)
        {
            int      guildID, characterID;
            DateTime createTime;
            ushort   length;
            string   message;

            if (!pPacket.TryReadInt(out guildID) ||
                !pPacket.TryReadInt(out characterID) ||
                !pPacket.TryReadDateTime(out createTime) ||
                !pPacket.TryReadUShort(out length) ||
                !pPacket.TryReadString(out message, length))
            {
                return;
            }


            Guild guild;

            if (GetGuildByID(guildID, out guild))
            {
                //update guild
                guild.Message           = message;
                guild.MessageCreateTime = createTime;
                guild.MessageCreaterID  = characterID;
            }
        }
Exemplo n.º 3
0
        public static void On_InterClient_GuildMemberLogin(WorldConnector pConnector, InterPacket pPacket)
        {
            int guildID, characterID;

            if (!pPacket.TryReadInt(out guildID) ||
                !pPacket.TryReadInt(out characterID))
            {
                return;
            }

            Guild guild;

            if (GetGuildByID(guildID, out guild))
            {
                GuildMember member;
                if (guild.GetMember(characterID, out member))
                {
                    member.IsOnline = true;


                    ZoneCharacter character;
                    if (CharacterManager.GetLoggedInCharacter(characterID, out character))
                    {
                        character.Guild        = guild;
                        character.GuildAcademy = guild.Academy;
                        character.GuildMember  = member;
                        member.Character       = character;
                    }
                }
            }
        }
Exemplo n.º 4
0
        public static void On_WorldClient_AcademyMemberLeft(WorldConnector pConnector, InterPacket pPacket)
        {
            int guildID, characterID;

            if (!pPacket.TryReadInt(out guildID) ||
                !pPacket.TryReadInt(out characterID))
            {
                return;
            }


            Guild guild;

            if (GuildManager.GetGuildByID(guildID, out guild))
            {
                GuildAcademyMember member;
                if (guild.Academy.GetMember(characterID, out member))
                {
                    guild.Academy.Members.Remove(member);
                    member.Dispose();


                    ZoneCharacter character;
                    if (CharacterManager.GetLoggedInCharacter(characterID, out character))
                    {
                        character.Guild              = null;
                        character.GuildAcademy       = null;
                        character.GuildAcademyMember = null;


                        GuildManager.RemoveGuildBuff(character);
                    }
                }
            }
        }
Exemplo n.º 5
0
        public static void On_InterClient_GuildCreated(WorldConnector pConnector, InterPacket pPacket)
        {
            int guildID, characterID;

            if (!pPacket.TryReadInt(out guildID) ||
                !pPacket.TryReadInt(out characterID))
            {
                return;
            }


            Guild guild;

            if (GetGuildByID(guildID, out guild))
            {
                //check if character is on local zone, if so assign guild to him
                ZoneCharacter character;
                if (CharacterManager.GetLoggedInCharacter(characterID, out character))
                {
                    character.Guild        = guild;
                    character.GuildAcademy = guild.Academy;


                    GuildMember member;
                    if (guild.GetMember(characterID, out member))
                    {
                        member.Character      = character;
                        character.GuildMember = member;
                    }
                }
            }
        }
Exemplo n.º 6
0
        public static void On_WorldClient_AcademyMemberOffline(WorldConnector pConnector, InterPacket pPacket)
        {
            int guildID, characterID;

            if (!pPacket.TryReadInt(out guildID) ||
                !pPacket.TryReadInt(out characterID))
            {
                return;
            }


            Guild guild;

            if (GuildManager.GetGuildByID(guildID, out guild))
            {
                GuildAcademyMember member;
                if (guild.Academy.GetMember(characterID, out member))
                {
                    member.IsOnline = false;


                    ZoneCharacter character;
                    if (CharacterManager.GetLoggedInCharacter(characterID, out character))
                    {
                        character.Guild              = null;
                        character.GuildAcademy       = null;
                        character.GuildAcademyMember = null;

                        member.Character = null;
                    }
                }
            }
        }
Exemplo n.º 7
0
        public void OnRegisterClusterRequestSuccesful(RequestSuccesfulEventArgs args)
        {
            LoginConnector.OnClusterRequestSuccesful -= OnRegisterClusterRequestSuccesful;
            if (args.Accepted)
            {
                ClusterId = args.Id;

                LoginConnector.OnNewChannelRequestSuccesful += new LoginConnector.RequestSuccesfulHandler(OnRegisterNewChannelSuccesful);

                this.m_PlayerSocket = new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp);
                this.m_PlayerSocket.Bind(new IPEndPoint(IPAddress.Any, 28000));
                this.m_PlayerSocket.Listen(100);

                ClientManager  = new ClientManager();
                ChannelManager = new ChannelManager();
                WorldConnector = new WorldConnector(((int)Config.GetSetting("ClusterPort")).ToString());
                WorldConnector.StartListening();

                Thread acceptPlayerThread = new Thread(() => ClientManager.AcceptPlayers(this.m_PlayerSocket));
                acceptPlayerThread.Start();

                Thread processPlayerThread = new Thread(() => ClientManager.ProcessPlayers());
                processPlayerThread.Start();

                Console.WriteLine("Cluster request succesful!");
            }
            else
            {
                Console.WriteLine("Cluster request wasn't succesful!");
            }
        }
Exemplo n.º 8
0
        public static void On_InterClient_GuildMemberAdd(WorldConnector pConnector, InterPacket pPacket)
        {
            int    guildID, characterID;
            byte   rank;
            ushort corp;

            if (!pPacket.TryReadInt(out guildID) ||
                !pPacket.TryReadInt(out characterID) ||
                !pPacket.TryReadByte(out rank) ||
                !pPacket.TryReadUShort(out corp))
            {
                return;
            }

            Guild guild;

            if (GetGuildByID(guildID, out guild))
            {
                lock (guild.ThreadLocker)
                {
                    //create member
                    var member = new GuildMember(guild, characterID, (GuildRank)rank, corp)
                    {
                        IsOnline = true,
                    };

                    guild.Members.Add(member);



                    //check if member is on this zone, if so assign guild to him
                    ZoneCharacter character;
                    if (CharacterManager.GetLoggedInCharacter(characterID, out character))
                    {
                        character.Guild        = guild;
                        character.GuildAcademy = guild.Academy;
                        character.GuildMember  = member;

                        member.Character = character;


                        SetGuildBuff(character);
                    }
                }
            }
        }
Exemplo n.º 9
0
        public static void On_InterClient_GuildMemberRemove(WorldConnector pConnector, InterPacket pPacket)
        {
            int guildID, characterID;

            if (!pPacket.TryReadInt(out guildID) ||
                !pPacket.TryReadInt(out characterID))
            {
                return;
            }


            Guild guild;

            if (GetGuildByID(guildID, out guild))
            {
                lock (guild.ThreadLocker)
                {
                    GuildMember member;
                    if (guild.GetMember(characterID, out member))
                    {
                        //remove member and clean up
                        guild.Members.Remove(member);

                        member.Dispose();


                        //check if member is on this zone
                        ZoneCharacter character;
                        if (CharacterManager.GetLoggedInCharacter(characterID, out character))
                        {
                            character.Guild        = null;
                            character.GuildAcademy = null;
                            character.GuildMember  = null;


                            RemoveGuildBuff(character);
                        }
                    }
                }
            }
        }
Exemplo n.º 10
0
        public static void On_InterClient_GuildMemberLogout(WorldConnector pConnector, InterPacket pPacket)
        {
            int guildID, characterID;

            if (!pPacket.TryReadInt(out guildID) ||
                !pPacket.TryReadInt(out characterID))
            {
                return;
            }

            Guild guild;

            if (GetGuildByID(guildID, out guild))
            {
                GuildMember member;
                if (guild.GetMember(characterID, out member))
                {
                    member.Character = null;
                    member.IsOnline  = false;
                }
            }
        }
Exemplo n.º 11
0
        public static void On_WorldClient_AcademyMemberJoined(WorldConnector pConnector, InterPacket pPacket)
        {
            int      guildID, characterID;
            DateTime registerDate;

            if (!pPacket.TryReadInt(out guildID) ||
                !pPacket.TryReadInt(out characterID) ||
                !pPacket.TryReadDateTime(out registerDate))
            {
                return;
            }



            Guild guild;

            if (GuildManager.GetGuildByID(guildID, out guild))
            {
                var member = new GuildAcademyMember(guild.Academy, characterID, GuildAcademyRank.Member, registerDate)
                {
                    IsOnline = true,
                };
                guild.Academy.Members.Add(member);


                ZoneCharacter character;
                if (CharacterManager.GetLoggedInCharacter(characterID, out character))
                {
                    member.Character = character;

                    character.Guild              = guild;
                    character.GuildAcademy       = guild.Academy;
                    character.GuildAcademyMember = member;


                    GuildManager.SetGuildBuff(character);
                }
            }
        }
Exemplo n.º 12
0
        public static void On_WorldClient_AcademyBuffUpdate(WorldConnector pConnector, InterPacket pPacket)
        {
            int      guildID;
            DateTime updateTime;
            double   keepTime;

            if (!pPacket.TryReadInt(out guildID) ||
                !pPacket.TryReadDateTime(out updateTime) ||
                !pPacket.TryReadDouble(out keepTime))
            {
                //Client.Dispose();
                return;
            }


            Guild guild;

            if (GuildManager.GetGuildByID(guildID, out guild))
            {
                guild.Academy.GuildBuffUpdateTime = updateTime;
                guild.Academy.GuildBuffKeepTime   = TimeSpan.FromSeconds(keepTime);
            }
        }