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; } } } }
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; } }
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; } } } }
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); } } } }
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; } } } }
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; } } } }
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!"); } }
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); } } } }
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); } } } } }
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; } } }
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); } } }
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); } }