public int?SendMessageToCharacter(SCSCharacterMessage message) { if (!MsManager.Instance.AuthentificatedClients.Any(s => s.Equals(CurrentClient.ClientId))) { return(null); } WorldServer sourceWorld = MsManager.Instance.WorldServers.FirstOrDefault(s => s.Id.Equals(message.SourceWorldId)); if (message?.Message == null || sourceWorld == null) { return(null); } switch (message.Type) { case MessageType.Family: case MessageType.FamilyChat: foreach (WorldServer world in MsManager.Instance.WorldServers.Where(w => w.WorldGroup.Equals(sourceWorld.WorldGroup))) { world.ServiceClient.GetClientProxy <ICommunicationClient>().SendMessageToCharacter(message); } return(-1); case MessageType.PrivateChat: case MessageType.Whisper: case MessageType.WhisperGM: if (message.DestinationCharacterId.HasValue) { AccountSession account = MsManager.Instance.ConnectedAccounts.FirstOrDefault(a => a.CharacterId.Equals(message.DestinationCharacterId.Value)); if (account?.ConnectedWorld != null) { account.ConnectedWorld.ServiceClient.GetClientProxy <ICommunicationClient>().SendMessageToCharacter(message); return(account.ConnectedWorld.ChannelId); } } break; case MessageType.Shout: foreach (WorldServer world in MsManager.Instance.WorldServers) { world.ServiceClient.GetClientProxy <ICommunicationClient>().SendMessageToCharacter(message); } return(-1); } return(null); }
public void Shout(Guid destChannelId, string message) { if (!MSManager.Instance.AuthentificatedAdmins.ContainsKey(CurrentClient.ClientId) || MSManager.Instance.AuthentificatedAdmins[CurrentClient.ClientId].Authority != AuthorityType.GameMaster) { return; } long charId = DAOFactory.CharacterDAO.LoadByAccount(MSManager.Instance.AuthentificatedAdmins[CurrentClient.ClientId].AccountId).FirstOrDefault().CharacterId; SCSCharacterMessage scsMessage = new SCSCharacterMessage() { DestinationCharacterId = null, SourceCharacterId = charId, SourceWorldId = MSManager.Instance.WorldServers.First().Id, Message = message, Type = MessageType.Shout }; MSManager.Instance.WorldServers.Where(s => s.Id.Equals(destChannelId)).First().ServiceClient.GetClientProxy <ICommunicationClient>().SendMessageToCharacter(scsMessage); }
public void SendPacket(string packet, long characterId) { if (!MSManager.Instance.AuthentificatedAdmins.ContainsKey(CurrentClient.ClientId) || MSManager.Instance.AuthentificatedAdmins[CurrentClient.ClientId].Authority != AuthorityType.GameMaster) { return; } long charId = DAOFactory.CharacterDAO.LoadByAccount(MSManager.Instance.AuthentificatedAdmins[CurrentClient.ClientId].AccountId).FirstOrDefault().CharacterId; AccountConnection account = MSManager.Instance.ConnectedAccounts.FirstOrDefault(a => a.CharacterId.Equals(characterId)); if (account != null && account.ConnectedWorld != null) { SCSCharacterMessage message = new SCSCharacterMessage() { SourceCharacterId = charId, SourceWorldId = MSManager.Instance.WorldServers.First().Id, DestinationCharacterId = characterId, Type = MessageType.PrivateChat, Message = packet }; account.ConnectedWorld.ServiceClient.GetClientProxy <ICommunicationClient>().SendMessageToCharacter(message); } }
public void SendMessageToCharacter(SCSCharacterMessage message) => Task.Run(() => CommunicationServiceClient.Instance.OnSendMessageToCharacter(message));
internal void OnSendMessageToCharacter(SCSCharacterMessage message) => MessageSentToCharacter?.Invoke(message, null);
public int?SendMessageToCharacter(SCSCharacterMessage message) => _client.ServiceProxy.SendMessageToCharacter(message);
public int?SendMessageToCharacter(SCSCharacterMessage message) { if (!MSManager.Instance.AuthentificatedClients.Any(s => s.Equals(CurrentClient.ClientId))) { return(null); } WorldServer sourceWorld = MSManager.Instance.WorldServers.Find(s => s.Id.Equals(message.SourceWorldId)); if (message == null || message.Message == null || sourceWorld == null) { return(null); } switch (message.Type) { case MessageType.Family: case MessageType.FamilyChat: case MessageType.Broadcast: foreach (WorldServer world in MSManager.Instance.WorldServers.Where(w => w.WorldGroup.Equals(sourceWorld.WorldGroup))) { world.CommunicationServiceClient.GetClientProxy <ICommunicationClient>().SendMessageToCharacter(message); } return(-1); case MessageType.PrivateChat: if (message.DestinationCharacterId.HasValue) { AccountConnection receiverAccount = MSManager.Instance.ConnectedAccounts.Find(a => a.CharacterId.Equals(message.DestinationCharacterId.Value)); if (receiverAccount?.ConnectedWorld != null) { if (sourceWorld.ChannelId == 51 && receiverAccount.ConnectedWorld.ChannelId == 51 && DAOFactory.CharacterDAO.LoadById(message.SourceCharacterId).Faction != DAOFactory.CharacterDAO.LoadById((long)message.DestinationCharacterId).Faction) { AccountConnection SenderAccount = MSManager.Instance.ConnectedAccounts.Find(a => a.CharacterId.Equals(message.SourceCharacterId)); message.Message = $"talk {message.DestinationCharacterId} " + Language.Instance.GetMessageFromKey("CANT_TALK_OPPOSITE_FACTION"); message.DestinationCharacterId = message.SourceCharacterId; SenderAccount.ConnectedWorld.CommunicationServiceClient.GetClientProxy <ICommunicationClient>().SendMessageToCharacter(message); return(-1); } else { receiverAccount.ConnectedWorld.CommunicationServiceClient.GetClientProxy <ICommunicationClient>().SendMessageToCharacter(message); return(receiverAccount.ConnectedWorld.ChannelId); } } } break; case MessageType.Whisper: if (message.DestinationCharacterId.HasValue) { AccountConnection receiverAccount = MSManager.Instance.ConnectedAccounts.Find(a => a.CharacterId.Equals(message.DestinationCharacterId.Value)); if (receiverAccount?.ConnectedWorld != null) { if (sourceWorld.ChannelId == 51 && receiverAccount.ConnectedWorld.ChannelId == 51 && DAOFactory.CharacterDAO.LoadById(message.SourceCharacterId).Faction != DAOFactory.CharacterDAO.LoadById((long)message.DestinationCharacterId).Faction) { AccountConnection SenderAccount = MSManager.Instance.ConnectedAccounts.Find(a => a.CharacterId.Equals(message.SourceCharacterId)); message.Message = $"say 1 {message.SourceCharacterId} 11 {Language.Instance.GetMessageFromKey("CANT_TALK_OPPOSITE_FACTION")}"; message.DestinationCharacterId = message.SourceCharacterId; message.Type = MessageType.Other; receiverAccount.ConnectedWorld.CommunicationServiceClient.GetClientProxy <ICommunicationClient>().SendMessageToCharacter(message); return(-1); } else { receiverAccount.ConnectedWorld.CommunicationServiceClient.GetClientProxy <ICommunicationClient>().SendMessageToCharacter(message); return(receiverAccount.ConnectedWorld.ChannelId); } } } break; case MessageType.WhisperSupport: case MessageType.WhisperGM: if (message.DestinationCharacterId.HasValue) { AccountConnection account = MSManager.Instance.ConnectedAccounts.Find(a => a.CharacterId.Equals(message.DestinationCharacterId.Value)); if (account?.ConnectedWorld != null) { account.ConnectedWorld.CommunicationServiceClient.GetClientProxy <ICommunicationClient>().SendMessageToCharacter(message); return(account.ConnectedWorld.ChannelId); } } break; case MessageType.Shout: foreach (WorldServer world in MSManager.Instance.WorldServers) { world.CommunicationServiceClient.GetClientProxy <ICommunicationClient>().SendMessageToCharacter(message); } return(-1); case MessageType.Other: AccountConnection receiverAcc = MSManager.Instance.ConnectedAccounts.Find(a => a.CharacterId.Equals(message.DestinationCharacterId.Value)); if (receiverAcc?.ConnectedWorld != null) { receiverAcc.ConnectedWorld.CommunicationServiceClient.GetClientProxy <ICommunicationClient>().SendMessageToCharacter(message); return(receiverAcc.ConnectedWorld.ChannelId); } break; } return(null); }
public int?SendMessageToCharacter(SCSCharacterMessage message) { return(_client.ServiceProxy.SendMessageToCharacter(message)); }