示例#1
0
        //存储私聊信息
        public IEnumerator SaveMessage(Coroutine coroutine,
                                       ChatManager _this,
                                       int chatType,
                                       ulong fromCharacterId,
                                       string characterName,
                                       ChatMessageContent content,
                                       ulong ToCharacterId)
        {
            var msg = new DBChatMsg
            {
                FromId    = fromCharacterId,
                Type      = chatType,
                Content   = content.Content,
                ToId      = ToCharacterId,
                Name      = characterName,
                SoundData = content.SoundData,
                Vip       = content.Vip
            };

            //缓存私聊
            CharacterManager.Instance.ModifyVolatileData(ToCharacterId, DataCategory.ChatCharacter, oldData =>
            {
                oldData.Chats.Add(msg);
                if (oldData.Chats.Count > 50)
                {
                    oldData.Chats.RemoveAt(0);
                }
                return(oldData);
            });
            yield break;
        }
示例#2
0
        //缓存世界频道内容
        public void CacheWorldMessage(uint serverId,
                                      int chatType,
                                      ulong characterId,
                                      string characterName,
                                      ChatMessageContent content)
        {
            var Horn = new HornMessage
            {
                ServerId      = serverId,
                ChatType      = chatType,
                CharacterId   = characterId,
                CharacterName = characterName,
                Content       = content
            };
            List <HornMessage> tempList;

            if (ChatManager.mCacheWorlds.TryGetValue(serverId, out tempList))
            {
                if (tempList.Count > 20)
                {
                    tempList.RemoveAt(0);
                }
                tempList.Add(Horn);
            }
            else
            {
                tempList = new List <HornMessage>();
                ChatManager.mCacheWorlds[serverId] = tempList;
                tempList.Add(Horn);
            }
        }
示例#3
0
 public void SyncAllianceChatMessage(int chatType,
                                     ulong characterId,
                                     string characterName,
                                     ChatMessageContent content)
 {
     GameUtils.OnReceiveChatMsg(chatType, characterId, characterName, content);
 }
示例#4
0
 public static bool ToClinetMessage(ulong toCharacterId,
                                    int chatType,
                                    ulong fromCharacterId,
                                    string characterName,
                                    ChatMessageContent content)
 {
     return(mImpl.ToClinetMessage(toCharacterId, chatType, fromCharacterId, characterName, content));
 }
示例#5
0
 //缓存世界频道内容
 public static void CacheWorldMessage(uint serverId,
                                      int chatType,
                                      ulong characterId,
                                      string characterName,
                                      ChatMessageContent content)
 {
     mImpl.CacheWorldMessage(serverId, chatType, characterId, characterName, content);
 }
示例#6
0
 //世界聊天广播
 public static void BroadcastServerIdMessage(uint ServerId,
                                             int chatType,
                                             ulong CharacterId,
                                             string characterName,
                                             ChatMessageContent content)
 {
     mImpl.BroadcastServerIdMessage(ServerId, chatType, CharacterId, characterName, content);
 }
示例#7
0
 public static void PushHornMessage(uint serverId,
                                    int chatType,
                                    ulong characterId,
                                    string characterName,
                                    ChatMessageContent content)
 {
     mImpl.PushHornMessage(serverId, chatType, characterId, characterName, content);
 }
示例#8
0
 public void SyncToListCityChatMessage(int chatType,
                                       ulong characterId,
                                       string characterName,
                                       ChatMessageContent content,
                                       string channelName)
 {
     GameUtils.OnReceiveChatMsg(chatType, characterId, characterName, content, channelName);
 }
示例#9
0
 public ChatChatMessageOutMessage(IAgentBase sender, int chatType, ChatMessageContent Content, ulong characterId)
     : base(sender, ServiceType.Chat, 5042)
 {
     Request             = new __RPC_Chat_ChatChatMessage_ARG_int32_chatType_ChatMessageContent_Content_uint64_characterId__();
     Request.ChatType    = chatType;
     Request.Content     = Content;
     Request.CharacterId = characterId;
 }
示例#10
0
 //存储私聊信息
 public IEnumerator SaveMessage(Coroutine coroutine,
                                int chatType,
                                ulong fromCharacterId,
                                string characterName,
                                ChatMessageContent content,
                                ulong ToCharacterId)
 {
     return(mImpl.SaveMessage(coroutine, this, chatType, fromCharacterId, characterName, content, ToCharacterId));
 }
示例#11
0
        public ErrorCodes BroadcastAllServerMessage(int chatType, ulong characterId, string characterName,
                                                    ChatMessageContent content)
        {
            foreach (var serverId in ChatManager.OpenedServerIdList)
            {
                ChatManager.BroadcastServerIdMessage((uint)serverId, chatType,
                                                     characterId, characterName, content);
            }

            return(ErrorCodes.OK);
        }
示例#12
0
    public void BroadcastSceneChat(string content, int dictId)
    {
        string str = content;

        if (-1 != dictId)
        {
            str = GameUtils.GetDictionaryText(dictId);
            if (!string.IsNullOrEmpty(content))
            {
                str = string.Format(str, content.Split('|'));
            }
        }
        var c = new ChatMessageContent();

        c.Content = str;
        GameUtils.OnReceiveChatMsg((int)eChatChannel.Scene, 0uL, "", c);
    }
示例#13
0
        //世界聊天广播
        public void BroadcastServerIdMessage(uint serverId,
                                             int chatType,
                                             ulong characterId,
                                             string characterName,
                                             ChatMessageContent content)
        {
            var id = (int)serverId;
            var tb = Table.GetServerName(id);

            if (tb != null)
            {
                id = tb.LogicID;
            }

            ChatServer.Instance.ServerControl.BroadcastWorldMessage((uint)id, chatType, characterId, characterName,
                                                                    content);
        }
示例#14
0
        //发消息给玩家
        public bool ToClinetMessage(ulong toCharacterId,
                                    int chatType,
                                    ulong fromCharacterId,
                                    string characterName,
                                    ChatMessageContent content)
        {
            ChatCharacterProxy toCharacterProxy;

            if (ChatServer.Instance.ServerControl.Proxys.TryGetValue(toCharacterId, out toCharacterProxy))
            {
                var chattoCharacterProxy = toCharacterProxy as ChatProxy;
                if (chattoCharacterProxy != null)
                {
                    chattoCharacterProxy.SyncChatMessage(chatType, fromCharacterId, characterName, content);
                }
                return(true);
            }
            return(false);
        }
示例#15
0
 public void PushHornMessage(uint serverId,
                             int chatType,
                             ulong characterId,
                             string characterName,
                             ChatMessageContent content)
 {
     if (ChatManager.HornTrigger == null)
     {
         BroadcastServerIdMessage(serverId, chatType, characterId, characterName, content);
         CreateHornTrigger();
     }
     else
     {
         var Horn = new HornMessage
         {
             ServerId      = serverId,
             ChatType      = chatType,
             CharacterId   = characterId,
             CharacterName = characterName,
             Content       = content
         };
         ChatManager.Horns.Add(Horn);
     }
 }
示例#16
0
    private IEnumerator ConnectCoroutine(AsyncResult <int> result)
    {
        if (Instance.Connected)
        {
            IsReconnecting = false;
            Logger.Debug("Connect to [" + ServerAddress + "] succeed!");
        }
        else
        {
            yield return(Instance.StartAndWaitConnect(TimeSpan.FromSeconds(3)));

            if (Instance.Connected)
            {
                Logger.Debug("Connect to [" + ServerAddress + "] succeed!");
                IsReconnecting = false;
            }
            else
            {
                yield return(Instance.StartAndWaitConnect(TimeSpan.FromSeconds(3)));

                if (Instance.Connected)
                {
                    Logger.Debug("Connect to [" + ServerAddress + "] succeed!");
                    IsReconnecting = false;
                }
                else
                {
                    yield return(Instance.StartAndWaitConnect(TimeSpan.FromSeconds(3)));

                    if (Instance.Connected)
                    {
                        Logger.Debug("Connect to [" + ServerAddress + "] succeed!");
                        IsReconnecting = false;
                    }
                    else
                    {
                        Logger.Debug("Connect to [" + ServerAddress + "] failed!");
                        result.Result = 0;
                        yield return(0);

                        yield break;
                    }
                }
            }
        }

        //SendReconnectMessageToGate();

        var game = Game.Instance;
        var msg1 = Instance.QueryServerTimezone(0);

        yield return(msg1.SendAndWaitUntilDone());

        if (msg1.State == MessageState.Reply && msg1.ErrorCode == 0)
        {
            var now  = DateTime.Now;
            var diff = (int)Math.Round((now - DateTime.Now).TotalMinutes);
            game.ServerZoneDiff = TimeSpan.FromMinutes(msg1.Response - diff);
            if (TimeZone.CurrentTimeZone.IsDaylightSavingTime(now))
            {
                game.ServerZoneDiff = game.ServerZoneDiff.Add(TimeSpan.FromHours(1));
            }
        }

        var msg   = Instance.SyncTime(0);
        var watch = new Stopwatch();

        watch.Start();
        yield return(msg.SendAndWaitUntilDone());

        watch.Stop();

        if (msg.State == MessageState.Reply)
        {
            if (msg.ErrorCode == (int)ErrorCodes.OK)
            {
                game.ServerTimeDiff = (DateTime.Now - Extension.FromServerBinary((long)msg.Response)) -
                                      TimeSpan.FromMilliseconds(watch.ElapsedMilliseconds / 2);

                var now        = game.ServerTime;
                var targetTime = new DateTime(now.Year, now.Month, now.Day, 0, 0, 10).AddDays(1);

                //半夜十二点重置某些状态
                if (ZeroReplyTrigger != null)
                {
                    TimeManager.Instance.DeleteTrigger(ZeroReplyTrigger);
                    ZeroReplyTrigger = null;
                }
                ZeroReplyTrigger = TimeManager.Instance.CreateTrigger(targetTime, () =>
                {
                    game.LoginTime = game.ServerTime;
                    PlayerDataManager.Instance.ApplyAcitvityCompensate();
                    var cl = UIManager.Instance.GetController(UIConfig.PlayFrame);
                    if (cl != null)
                    {
                        cl.CallFromOtherClass("RefreshCells", null);
                    }
                }, TimeSpan.FromDays(1).Milliseconds);

                //战场双倍提示
                var time = Table.GetClientConfig(282).ToInt();
                var hour = time / 100;
                var min  = time % 100;
                targetTime = new DateTime(now.Year, now.Month, now.Day, hour, min, 0);
                if (targetTime < now)
                {
                    targetTime = targetTime.AddDays(1);
                }
                if (ZeroBattleReplyTrigger != null)
                {
                    TimeManager.Instance.DeleteTrigger(ZeroBattleReplyTrigger);
                    ZeroBattleReplyTrigger = null;
                }
                ZeroBattleReplyTrigger = TimeManager.Instance.CreateTrigger(targetTime, () =>
                {
                    TimeManager.Instance.DeleteTrigger(ZeroBattleReplyTrigger);
                    ZeroBattleReplyTrigger = null;
                    var content            = new ChatMessageContent();
                    content.Content        = GameUtils.GetDictionaryText(220455);
                    GameUtils.OnReceiveChatMsg((int)eChatChannel.SystemScroll, 0, string.Empty, content);
                }, TimeSpan.FromDays(1).Milliseconds);
                result.Result = 1;
                yield break;
            }
            UIManager.Instance.ShowNetError(msg.ErrorCode);
        }
        result.Result = 0;
        yield return(0);
    }
示例#17
0
 public BroadcastWorldMessageOutMessage(IAgentBase sender, int chatType, ulong characterId, string characterName, ChatMessageContent content)
     : base(sender, ServiceType.Chat, 5047)
 {
     Request               = new __RPC_Chat_BroadcastWorldMessage_ARG_int32_chatType_uint64_characterId_string_characterName_ChatMessageContent_content__();
     Request.ChatType      = chatType;
     Request.CharacterId   = characterId;
     Request.CharacterName = characterName;
     Request.Content       = content;
 }
示例#18
0
 public void BroadcastWorldMessage(int chatType, ulong characterId, string characterName, ChatMessageContent content)
 {
     GameUtils.OnReceiveChatMsg(chatType, characterId, characterName, content);
 }
示例#19
0
 public static ChatChatMessageOutMessage ChatChatMessage(this IChat9xServiceInterface agent, int chatType, ChatMessageContent Content, ulong characterId)
 {
     return(new ChatChatMessageOutMessage(agent, chatType, Content, characterId));
 }
示例#20
0
 public static ErrorCodes BroadcastAllServerMessage(int chatType, ulong characterId, string characterName,
                                                    ChatMessageContent content)
 {
     return(mImpl.BroadcastAllServerMessage(chatType, characterId, characterName, content));
 }
示例#21
0
 public static SendHornMessageOutMessage SendHornMessage(this IChat9xServiceInterface agent, uint serverId, int chatType, ulong characterId, string characterName, ChatMessageContent content)
 {
     return(new SendHornMessageOutMessage(agent, serverId, chatType, characterId, characterName, content));
 }
示例#22
0
 public SyncToListCityChatMessageOutMessage(IAgentBase sender, int chatType, ulong characterId, string characterName, ChatMessageContent Content, string ChannelName)
     : base(sender, ServiceType.Chat, 5056)
 {
     Request               = new __RPC_Chat_SyncToListCityChatMessage_ARG_int32_chatType_uint64_characterId_string_characterName_ChatMessageContent_Content_string_ChannelName__();
     Request.ChatType      = chatType;
     Request.CharacterId   = characterId;
     Request.CharacterName = characterName;
     Request.Content       = Content;
     Request.ChannelName   = ChannelName;
 }
示例#23
0
 public void ChatNotify(int chatType, ulong characterId, string characterName, ChatMessageContent content)
 {
     GameUtils.OnReceiveChatMsg(chatType, characterId, characterName, content);
 }
示例#24
0
 public SendHornMessageOutMessage(IAgentBase sender, uint serverId, int chatType, ulong characterId, string characterName, ChatMessageContent content)
     : base(sender, ServiceType.Chat, 5044)
 {
     Request               = new __RPC_Chat_SendHornMessage_ARG_uint32_serverId_int32_chatType_uint64_characterId_string_characterName_ChatMessageContent_content__();
     Request.ServerId      = serverId;
     Request.ChatType      = chatType;
     Request.CharacterId   = characterId;
     Request.CharacterName = characterName;
     Request.Content       = content;
 }