public override NetworkObject ToNetworkObject() { NetworkObject class2 = new NetworkObject(); class2.AddField(0, NetworkObjectField.CreateStringField(this.string_0)); return(class2); }
/// <summary> /// /// </summary> private void AddAccount(string account) { if (friendList.ContainsKey(account)) { return; } friendList.Add(account, new List <CharacterObject>()); IEnumerable <Session> sessions = NetworkManager.FindSession(account); foreach (Session session in sessions) { friendList[account].Add(session.Character); NetworkObject characterAdd = new NetworkObject(); characterAdd.AddField(0, NetworkObjectField.CreateIntField((int)ServerFriendAction.Add)); characterAdd.AddField(1, NetworkObjectField.CreateStringField(account)); characterAdd.AddField(2, NetworkObjectField.CreateBoolField(true)); characterAdd.AddField(3, NetworkObjectField.CreateObjectField(session.Character.ToNetworkObject())); owner.EnqueuePacket(new ServerObjectPacket(ObjectOpcode.FriendList, characterAdd, false)); } if (friendList[account].Count == 0) { NetworkObject accountAdd = new NetworkObject(); accountAdd.AddField(0, NetworkObjectField.CreateIntField((int)ServerFriendAction.Add)); accountAdd.AddField(1, NetworkObjectField.CreateStringField(account)); accountAdd.AddField(2, NetworkObjectField.CreateBoolField(false)); owner.EnqueuePacket(new ServerObjectPacket(ObjectOpcode.FriendList, accountAdd, false)); } }
public static void HandleChannel(Session session, NetworkObject networkObject) { string channelName = NetworkObjectField.ReadStringField(networkObject.GetField(1)); if (string.IsNullOrWhiteSpace(channelName)) { return; } ClientChannelAction action = (ClientChannelAction)NetworkObjectField.ReadIntField(networkObject.GetField(0)); switch (action) { case ClientChannelAction.Join: { Channel channel = ChannelManager.GetChannel(channelName); channel.AddMember(session.Character); break; } case ClientChannelAction.Leave: { Channel channel = ChannelManager.GetChannel(channelName); channel?.RemoveMember(session.Character); break; } case ClientChannelAction.Message: { Channel channel = ChannelManager.GetChannel(channelName); channel.BroadcastMessage(session.Character, NetworkObjectField.ReadStringField(networkObject.GetField(2))); break; } } }
/// <summary> /// /// </summary> public override void AddMember(Session member) { NetworkObject fellowshipJoin = new NetworkObject(); fellowshipJoin.AddField(0, NetworkObjectField.CreateIntField((int)FellowshipAction.Join)); fellowshipJoin.AddField(1, NetworkObjectField.CreateObjectField(Info.ToNetworkObject())); member.EnqueueMessage(ObjectOpcode.Fellowship, fellowshipJoin); // send existing members to new member foreach (CharacterObject character in members) { NetworkObject fellowshipMemberJoin2 = new NetworkObject(); fellowshipMemberJoin2.AddField(0, NetworkObjectField.CreateIntField((int)FellowshipAction.MemberJoin)); fellowshipMemberJoin2.AddField(1, NetworkObjectField.CreateObjectField(Info.ToNetworkObject())); fellowshipMemberJoin2.AddField(2, NetworkObjectField.CreateObjectField(character.ToNetworkObject())); member.EnqueueMessage(ObjectOpcode.Fellowship, fellowshipMemberJoin2); } base.AddMember(member); member.Fellowships.Add(this); // send new member to existing members NetworkObject fellowshipMemberJoin = new NetworkObject(); fellowshipMemberJoin.AddField(0, NetworkObjectField.CreateIntField((int)FellowshipAction.MemberJoin)); fellowshipMemberJoin.AddField(1, NetworkObjectField.CreateObjectField(Info.ToNetworkObject())); fellowshipMemberJoin.AddField(2, NetworkObjectField.CreateObjectField(member.Character.ToNetworkObject())); BroadcastMessage(ObjectOpcode.Fellowship, fellowshipMemberJoin); }
public static void SendMessage(Session sender, string recipient, string message) { List <Session> recipientSessions = NetworkManager.FindSession(recipient).ToList(); if (recipientSessions.Count == 0) { var conversationError = new NetworkObject(); conversationError.AddField(0, NetworkObjectField.CreateIntField((int)ConversationAction.NotOnline)); conversationError.AddField(1, NetworkObjectField.CreateStringField(recipient)); sender.EnqueueMessage(ObjectOpcode.Conversation, conversationError); return; } foreach (Session session in recipientSessions) { var receiveTell = new NetworkObject(); receiveTell.AddField(0, NetworkObjectField.CreateIntField((int)ConversationAction.ReceiveTell)); receiveTell.AddField(1, NetworkObjectField.CreateStringField(sender.Account.Username)); receiveTell.AddField(2, NetworkObjectField.CreateStringField(message)); session.EnqueueMessage(ObjectOpcode.Conversation, receiveTell); } List <Session> senderSessions = NetworkManager.FindSession(sender.Account.Username).ToList(); foreach (Session session in senderSessions) { var sendTell = new NetworkObject(); sendTell.AddField(0, NetworkObjectField.CreateIntField((int)ConversationAction.SendTell)); sendTell.AddField(1, NetworkObjectField.CreateStringField(recipient)); sendTell.AddField(2, NetworkObjectField.CreateStringField(message)); session.EnqueueMessage(ObjectOpcode.Conversation, sendTell); } }
public WorldLocationStructure(NetworkObject class63_0) { this.X = NetworkObjectField.ReadDoubleField(class63_0.GetField(0)); this.Y = NetworkObjectField.ReadDoubleField(class63_0.GetField(1)); this.Z = NetworkObjectField.ReadDoubleField(class63_0.GetField(2)); this.CellId = smethod_3(this.X, this.Y); this.bool_0 = false; }
public override NetworkObject ToNetworkObject() { var fellowship = new NetworkObject(); fellowship.AddField(0, NetworkObjectField.CreateStringField(Name)); fellowship.AddField(1, NetworkObjectField.CreateIntField((int)Unknown1)); return(fellowship); }
public static void Handle08(Session session, NetworkObject networkObject) { NetworkObjectField.ReadIntField(networkObject.GetField(0)); string recipient = NetworkObjectField.ReadStringField(networkObject.GetField(1)); string message = NetworkObjectField.ReadStringField(networkObject.GetField(2)); ConversationManager.SendMessage(session, recipient, message); }
public NetworkObject method_2() { NetworkObject class2 = new NetworkObject(); class2.AddField(0, NetworkObjectField.CreateDoubleField(this.X)); class2.AddField(1, NetworkObjectField.CreateDoubleField(this.Y)); class2.AddField(2, NetworkObjectField.CreateDoubleField(this.Z)); return(class2); }
public override void FromNetworkObject(NetworkObject networkObject) { Server = NetworkObjectField.ReadStringField(networkObject.GetField(0)); Name = NetworkObjectField.ReadStringField(networkObject.GetField(1)); Guid = (uint)NetworkObjectField.ReadIntField(networkObject.GetField(2)); Sequence = (uint)NetworkObjectField.ReadLongField(networkObject.GetField(3)); Unknown1 = NetworkObjectField.ReadStringField(networkObject.GetField(4)); Unknown1 = Name; // ?? }
public override NetworkObject ToNetworkObject() { NetworkObject networkObject = new NetworkObject(); networkObject.AddField(0, NetworkObjectField.CreateStringField(Server)); networkObject.AddField(1, NetworkObjectField.CreateStringField(Name)); networkObject.AddField(2, NetworkObjectField.CreateIntField((int)Guid)); networkObject.AddField(3, NetworkObjectField.CreateLongField(Sequence)); networkObject.AddField(4, NetworkObjectField.CreateStringField(Unknown1)); return(networkObject); }
/// <summary> /// /// </summary> public override void RemoveMember(Session member) { base.AddMember(member); member.Channels.Remove(this); var channelLeave = new NetworkObject(); channelLeave.AddField(0, NetworkObjectField.CreateIntField((int)ServerChannelAction.Leave)); channelLeave.AddField(1, NetworkObjectField.CreateStringField(name)); channelLeave.AddField(2, NetworkObjectField.CreateStringField(GetShortcut())); member.EnqueueMessage(ObjectOpcode.Channel, channelLeave); }
/// <summary> /// /// </summary> public override void AddMember(Session member) { base.AddMember(member); member.Channels.Add(this); var channelJoin = new NetworkObject(); channelJoin.AddField(0, NetworkObjectField.CreateIntField((int)ServerChannelAction.Join)); channelJoin.AddField(1, NetworkObjectField.CreateStringField(name)); channelJoin.AddField(2, NetworkObjectField.CreateStringField(GetShortcut())); member.EnqueuePacket(new ServerObjectPacket(ObjectOpcode.Channel, channelJoin, false)); }
/// <summary> /// /// </summary> public void RemoveAccount(string account) { if (!friendList.ContainsKey(account)) { return; } friendList.Remove(account); NetworkObject networkObject = new NetworkObject(); networkObject.AddField(0, NetworkObjectField.CreateIntField((int)ServerFriendAction.Remove)); networkObject.AddField(1, NetworkObjectField.CreateStringField(account)); owner.EnqueuePacket(new ServerObjectPacket(ObjectOpcode.FriendList, networkObject, false)); }
/// <summary> /// /// </summary> public void CharacterSignOut(string account, CharacterObject character) { if (!friendList.ContainsKey(account)) { return; } friendList[account].Remove(character); NetworkObject characterSignOut = new NetworkObject(); characterSignOut.AddField(0, NetworkObjectField.CreateIntField((int)ServerFriendAction.SignOut)); characterSignOut.AddField(1, NetworkObjectField.CreateStringField(account)); characterSignOut.AddField(2, NetworkObjectField.CreateObjectField(character.ToNetworkObject())); owner.EnqueuePacket(new ServerObjectPacket(ObjectOpcode.FriendList, characterSignOut, false)); }
/// <summary> /// /// </summary> public void CharacterSignIn(string account, CharacterObject character) { if (!friendList.ContainsKey(account)) { return; } friendList[account].Add(character); NetworkObject characterSignIn = new NetworkObject(); characterSignIn.AddField(0, NetworkObjectField.CreateIntField((int)ServerFriendAction.SignIn)); characterSignIn.AddField(1, NetworkObjectField.CreateStringField(account)); characterSignIn.AddField(2, NetworkObjectField.CreateObjectField(character.ToNetworkObject())); owner.EnqueueMessage(ObjectOpcode.FriendList, characterSignIn); }
/// <summary> /// Broadcast text message from <see cref="CharacterObject"/> to all members. /// </summary> public void BroadcastMessage(CharacterObject character, string message) { if (!HasMember(character)) { return; } var channelMessage = new NetworkObject(); channelMessage.AddField(0, NetworkObjectField.CreateIntField((int)ServerChannelAction.Message)); channelMessage.AddField(1, NetworkObjectField.CreateObjectField(character.ToNetworkObject())); channelMessage.AddField(2, NetworkObjectField.CreateStringField(name)); channelMessage.AddField(3, NetworkObjectField.CreateStringField(message)); channelMessage.AddField(4, NetworkObjectField.CreateStringField(GetShortcut())); BroadcastMessage(ObjectOpcode.Channel, channelMessage); }
protected override void OnRemoveMember(CharacterObject character) { Session session = NetworkManager.FindSessionByCharacter(character); if (session != null) { session.Channels.Remove(this); var channelLeave = new NetworkObject(); channelLeave.AddField(0, NetworkObjectField.CreateIntField((int)ServerChannelAction.Leave)); channelLeave.AddField(1, NetworkObjectField.CreateStringField(name)); channelLeave.AddField(2, NetworkObjectField.CreateStringField(GetShortcut())); session.EnqueueMessage(ObjectOpcode.Channel, channelLeave); } members.Remove(character.Sequence); }
/// <summary> /// /// </summary> public override void RemoveMember(Session member) { NetworkObject fellowshipMemberLeave = new NetworkObject(); fellowshipMemberLeave.AddField(0, NetworkObjectField.CreateIntField((int)FellowshipAction.MemberLeave)); fellowshipMemberLeave.AddField(1, NetworkObjectField.CreateObjectField(Info.ToNetworkObject())); fellowshipMemberLeave.AddField(2, NetworkObjectField.CreateUShortField((ushort)member.Character.Sequence)); BroadcastMessage(ObjectOpcode.Fellowship, fellowshipMemberLeave); base.RemoveMember(member); member.Fellowships.Remove(this); NetworkObject fellowshipLeave = new NetworkObject(); fellowshipLeave.AddField(0, NetworkObjectField.CreateIntField((int)FellowshipAction.Leave)); fellowshipLeave.AddField(1, NetworkObjectField.CreateObjectField(Info.ToNetworkObject())); member.EnqueueMessage(ObjectOpcode.Fellowship, fellowshipLeave); }
/// <summary> /// /// </summary> public void BroadcastMessage(Session member, string message) { if (!HasMember(member.Character)) { return; } DatabaseManager.Database.LogConversation(name, member.Account.Username, message, member.Remote.Address.ToString()); var channelMessage = new NetworkObject(); channelMessage.AddField(0, NetworkObjectField.CreateIntField((int)ServerChannelAction.Message)); channelMessage.AddField(1, NetworkObjectField.CreateObjectField(member.Character.ToNetworkObject())); channelMessage.AddField(2, NetworkObjectField.CreateStringField(name)); channelMessage.AddField(3, NetworkObjectField.CreateStringField(message)); channelMessage.AddField(4, NetworkObjectField.CreateStringField(GetShortcut())); BroadcastMessage(new ServerObjectPacket(ObjectOpcode.Channel, channelMessage, false)); }
public static void Handle0C(Session session, NetworkObject networkObject) { int action = NetworkObjectField.ReadIntField(networkObject.GetField(0)); switch (action) { case 7: { break; } case 9: { ushort landblockId = NetworkObjectField.ReadUShortField(networkObject.GetField(1)); break; } } }
public static void HandleFriendList(Session session, NetworkObject networkObject) { ClientFriendAction action = (ClientFriendAction)NetworkObjectField.ReadIntField(networkObject.GetField(0)); switch (action) { case ClientFriendAction.Create: session.FriendManager.AddAccountAll(NetworkObjectField.ReadStringField(networkObject.GetField(1))); break; case ClientFriendAction.Remove: session.FriendManager.RemoveAccountAll(NetworkObjectField.ReadStringField(networkObject.GetField(1))); break; default: log.Warn($"[{session.Account.Username}] Invalid FriendAction {action}!"); break; } }
protected override void OnAddMember(CharacterObject character) { Session session = NetworkManager.FindSessionByCharacter(character); if (session == null) { return; } session.Channels.Add(this); var channelJoin = new NetworkObject(); channelJoin.AddField(0, NetworkObjectField.CreateIntField((int)ServerChannelAction.Join)); channelJoin.AddField(1, NetworkObjectField.CreateStringField(name)); channelJoin.AddField(2, NetworkObjectField.CreateStringField(GetShortcut())); session.EnqueueMessage(ObjectOpcode.Channel, channelJoin); members.Add(character.Sequence, character); }
public static void SendMessage(Session sender, string recipient, string message) { List <Session> recipientSessions = NetworkManager.FindSession(recipient).ToList(); if (recipientSessions.Count == 0) { var conversationError = new NetworkObject(); conversationError.AddField(0, NetworkObjectField.CreateIntField((int)ConversationAction.NotOnline)); conversationError.AddField(1, NetworkObjectField.CreateStringField(recipient)); sender.EnqueuePacket(new ServerObjectPacket(ObjectOpcode.Conversation, conversationError, false)); return; } foreach (Session session in recipientSessions) { var receiveTell = new NetworkObject(); receiveTell.AddField(0, NetworkObjectField.CreateIntField((int)ConversationAction.ReceiveTell)); receiveTell.AddField(1, NetworkObjectField.CreateStringField(sender.Account.Username)); receiveTell.AddField(2, NetworkObjectField.CreateStringField(message)); session.EnqueuePacket(new ServerObjectPacket(ObjectOpcode.Conversation, receiveTell, false)); } List <Session> senderSessions = NetworkManager.FindSession(sender.Account.Username).ToList(); foreach (Session session in senderSessions) { var sendTell = new NetworkObject(); sendTell.AddField(0, NetworkObjectField.CreateIntField((int)ConversationAction.SendTell)); sendTell.AddField(1, NetworkObjectField.CreateStringField(recipient)); sendTell.AddField(2, NetworkObjectField.CreateStringField(message)); session.EnqueuePacket(new ServerObjectPacket(ObjectOpcode.Conversation, sendTell, false)); } if (!sender.Account.Username.Equals(recipient, StringComparison.InvariantCultureIgnoreCase)) { DatabaseManager.Database.LogConversation(sender.Account.Username, recipient, message, sender.Remote.Address.ToString(), recipientSessions[0].Remote.Address.ToString()); } }
public override byte[] Construct(PacketEncryptor encryptor) { var packet = new NetworkObject(); packet.AddField(0, NetworkObjectField.CreateIntField((int)opcode)); packet.AddField(1, NetworkObjectField.CreateObjectField(networkObject)); using (var stream = new MemoryStream()) { using (var writer = new BinaryWriter(stream)) { writer.Write(0u); writer.WritePackedUInt32((uint)flags); writer.Write(NetworkObject.Pack(packet)); int length = (int)stream.Length - sizeof(int); writer.Seek(0, SeekOrigin.Begin); writer.Write(length); return(stream.ToArray()); } } }
protected override void OnRemoveMember(CharacterObject character) { NetworkObject fellowshipMemberLeave = new NetworkObject(); fellowshipMemberLeave.AddField(0, NetworkObjectField.CreateIntField((int)FellowshipAction.MemberLeave)); fellowshipMemberLeave.AddField(1, NetworkObjectField.CreateObjectField(Info.ToNetworkObject())); fellowshipMemberLeave.AddField(2, NetworkObjectField.CreateUShortField((ushort)character.Sequence)); BroadcastMessage(ObjectOpcode.Fellowship, fellowshipMemberLeave); members.Remove(character.Sequence); Session session = NetworkManager.FindSessionByCharacter(character); if (session != null) { session.Fellowships.Remove(this); NetworkObject fellowshipLeave = new NetworkObject(); fellowshipLeave.AddField(0, NetworkObjectField.CreateIntField((int)FellowshipAction.Leave)); fellowshipLeave.AddField(1, NetworkObjectField.CreateObjectField(Info.ToNetworkObject())); session.EnqueueMessage(ObjectOpcode.Fellowship, fellowshipLeave); } }
protected override void OnAddMember(CharacterObject character) { Session session = NetworkManager.FindSessionByCharacter(character); if (session == null) { return; } NetworkObject fellowshipJoin = new NetworkObject(); fellowshipJoin.AddField(0, NetworkObjectField.CreateIntField((int)FellowshipAction.Join)); fellowshipJoin.AddField(1, NetworkObjectField.CreateObjectField(Info.ToNetworkObject())); session.EnqueueMessage(ObjectOpcode.Fellowship, fellowshipJoin); // send existing members to new member foreach (CharacterObject existingCharacter in members.Values) { NetworkObject fellowshipMemberJoinExisting = new NetworkObject(); fellowshipMemberJoinExisting.AddField(0, NetworkObjectField.CreateIntField((int)FellowshipAction.MemberJoin)); fellowshipMemberJoinExisting.AddField(1, NetworkObjectField.CreateObjectField(Info.ToNetworkObject())); fellowshipMemberJoinExisting.AddField(2, NetworkObjectField.CreateObjectField(existingCharacter.ToNetworkObject())); session.EnqueueMessage(ObjectOpcode.Fellowship, fellowshipMemberJoinExisting); } members.Add(character.Sequence, character); session.Fellowships.Add(this); // send new member to existing members NetworkObject fellowshipMemberJoin = new NetworkObject(); fellowshipMemberJoin.AddField(0, NetworkObjectField.CreateIntField((int)FellowshipAction.MemberJoin)); fellowshipMemberJoin.AddField(1, NetworkObjectField.CreateObjectField(Info.ToNetworkObject())); fellowshipMemberJoin.AddField(2, NetworkObjectField.CreateObjectField(character.ToNetworkObject())); BroadcastMessage(ObjectOpcode.Fellowship, fellowshipMemberJoin); }
public static void HandleFellowship(Session session, NetworkObject networkObject) { FellowshipAction action = (FellowshipAction)NetworkObjectField.ReadIntField(networkObject.GetField(0)); FellowshipObject fellowshipInfo = new FellowshipObject(); fellowshipInfo.FromNetworkObject(networkObject.GetField(1).ReadObject()); switch (action) { case FellowshipAction.Join: { Fellowship fellowship = FellowshipManager.GetFellowship(fellowshipInfo); fellowship.AddMember(session); break; } case FellowshipAction.Leave: { Fellowship fellowship = FellowshipManager.GetFellowship(fellowshipInfo); fellowship?.RemoveMember(session); break; } } }
public override void FromNetworkObject(NetworkObject class63_0) { this.string_0 = NetworkObjectField.ReadStringField(class63_0.GetField(0)); }
public override void FromNetworkObject(NetworkObject fellowship) { Name = NetworkObjectField.ReadStringField(fellowship.GetField(0)); Unknown1 = (Enum16)NetworkObjectField.ReadIntField(fellowship.GetField(1)); }