Example #1
0
 internal static void OnServerInfo(LunarSession session, LunarRequestInfo requestInfo)
 {
     var Req = new G2D_Game_Server(requestInfo.Body);
     var Rsp = new D2G_Game_Server();
     //Rsp.Data = RedisGame.KvGet($"{RdsServerData}:{Req.ServerID}");
     //Send(session,Rsp);
 }
Example #2
0
        internal static void OnLogin(LunarSession session, LunarRequestInfo requestInfo)
        {
            var Req = new L2E_Game_LoginServer(requestInfo.Body);

            var player = new Player(Req.Puid);

            if (!player.Load())
            {
            }
            player.XY.Uid = player.Id;

            DictPlayerOnline[Req.Puid] = player;

            var rsp = new G2E_Game_MapIn();

            rsp.PlayerXY = player.XY;
            SendAll(session, rsp, player.Id);

            var rsp2 = new G2E_Game_MapInOther();

            foreach (var item in DictPlayerOnline.Values)
            {
                if (item.Id == player.Id)
                {
                    continue;
                }
                item.XY.Uid = item.Id;
                rsp2.ListPlayerXY.Add(item.XY);
                //rsp.Shuttle = Req.Shuttle;
            }
            rsp2.Puid = player.Id;
            session.Send(rsp2);
        }
Example #3
0
 internal static void OnBaseServer(LunarSession session, LunarRequestInfo requestInfo)
 {
     //var rsp = new S2C_Server_Connect()
     //{
     //    SessionType = (short)BaseServerInfo.SessionType
     //};
     //Dispatcher.SendByServerID(((S2C_Server_Connect)objMsg).ServerID, rsp);
 }
Example #4
0
        public static void OnBasePing(LunarSession session, LunarRequestInfo requestInfo)
        {
            var Rsp = new All_Base_Ping()
            {
                ServerTime = DateTime.Now,
            };

            BaseDispatch.Send(session, Rsp);
        }
Example #5
0
 /// <summary>
 /// 消息分发
 /// </summary>
 /// <param name="session"></param>
 /// <param name="requestInfo"></param>
 public static void OnDispatch(LunarSession session, LunarRequestInfo requestInfo)
 {
     if (requestInfo.ProtocolID == 0)
     {
         loger.Warn("收到空消息");
         return;
     }
     loger.Info($"收到消息 {(EProtocolId)requestInfo.ProtocolID}");
     //ProcessMessage(session, requestInfo);
     session.ListReq.Enqueue(requestInfo);
 }
Example #6
0
        private static void Server_NewRequestReceived(LunarSession session, LunarRequestInfo requestInfo)
        {
            Reload();
            // 发送消息Event_01
            Event evt1 = new Event();

            evt1.EventID = (int)EventDefines.Event_01;
            evt1.PushUserData <string>("SomeData For Event01");

            ThisSession = session;

            ety.DispatchEvent(evt1);
        }
Example #7
0
 internal static void OnDispatch(LunarSession session, LunarRequestInfo requestInfo)
 {
     if (!session.Connected)
     {
         loger.Warn("收到断开连接的客户端消息");
         return;
     }
     if (requestInfo.ProtocolID <= 0)
     {
         loger.Warn("收到空消息");
         return;
     }
     session.ListReq.Enqueue(requestInfo);
     //ProcessMessage(session,requestInfo);
 }
Example #8
0
        private void button1_Click(object sender, EventArgs e)
        {
            string ss  = "发消息#7#6#7#ss";
            var    msg = new StringBuilder();

            msg.Append(1 + "#");
            msg.Append(12 + "#" + 2);

            msg.Append('#' + 1);
            msg.Append('#' + "2121");
            LunarRequestInfo s = new LunarRequestInfo(Encoding.UTF8.GetBytes(ss));

            s.ProtocolID = 1;

            Client.Send(Encoding.Default.GetBytes(s.ToString()));
        }
Example #9
0
        /// <summary>
        /// 处理消息立即
        /// </summary>
        /// <param name="session"></param>
        /// <param name="requestInfo"></param>
        public static void ProcessMessage(LunarSession session, LunarRequestInfo requestInfo)
        {
            EProtocolId id = (EProtocolId)requestInfo.ProtocolID;

            if (id == EProtocolId.C2S_SERVER_CONNECT)
            {
                var sessiontemp = GetSession(session.SessionID);
                if (sessiontemp != null)
                {
                    var Req = new C2S_Server_Connect(requestInfo.Body);
                    sessiontemp.SessionType = Req.SessionType;
                    loger.Debug($"连接类型:{(EServerType)sessiontemp.SessionType}");
                }
                else
                {
                    loger.Error($"连接不存在:{session.SessionUuid}");
                }
                return;
            }

            if (DictProtocolEvent.TryGetValue(id, out DispatcherEventHandler handle))
            {
                try
                {
                    var StopwatchProcess = Stopwatch.StartNew();
                    handle(session, requestInfo);
                    StopwatchProcess.Stop();
                    var UseMs = StopwatchProcess.ElapsedMilliseconds;
                    if (UseMs > 500)
                    {
                        loger.Error($"消息处理超时,消息:{id} 玩家ID:{session.SessionUuid} 耗时:{UseMs} Ms__{CountMsgs}");
                    }
                }
                catch (Exception e)
                {
                    loger.Fatal($"处理协议->  {id} -> {(int)id}出错 玩家ID:{session.SessionUuid}", e);
                    Result(session, EProtocolResult.失败);
                    return;
                }
            }
            else
            {
                loger.Fatal($"处理协议->  {id} -> {(int)id} 未注册");
                Result(session, EProtocolResult.失败);
                return;
            }
        }
Example #10
0
        internal static void OnLogin(LunarSession session, LunarRequestInfo requestInfo)
        {
            var Req = new E2L_Game_LoginServer(requestInfo.Body);
            var Rsp = new L2E_Game_LoginServer();

            Rsp.Shuttle = Req.Shuttle;
            if (!DataCache.TryGetValue(Req.Account, out var user))
            {
                Rsp.Result = EProtocolResult.账号不存在;
                BaseDispatch.Send(session, Rsp); return;
            }
            if (Req.Password != user.Password)
            {
                Rsp.Result = EProtocolResult.密码错误; BaseDispatch.Send(session, Rsp); return;
            }
            Rsp.Puid = user.Uuid;
            BaseDispatch.Send(session, Rsp);
        }
Example #11
0
        internal static void OnLoginOut(LunarSession session, LunarRequestInfo requestInfo)
        {
            var Req = new E2G_Game_LoginOut(requestInfo.Body);

            DictPlayerOnline.Remove(Req.Puid);


            foreach (var item in DictPlayerOnline.Values)
            {
                if (item.Id == Req.Puid)
                {
                    continue;
                }
                var rsp = new G2E_Game_LoginOut();
                rsp.Puid = item.Id;
                session.Send(rsp);
            }
        }
Example #12
0
        public static void ProcessMessage(LunarSession session, LunarRequestInfo requestInfo)
        {
            EProtocolId id = (EProtocolId)requestInfo.ProtocolID;

            loger.Info($"中转{(EServerType)session.SessionType} 协议->{id} -> {session.SessionUuid} 。");
            var objMsg = ProtocolDump.Dump(id, requestInfo.Body);

            if (objMsg == null)
            {
                loger.Warn("错误协议!");
                return;
            }

            //登录服务器消息
            if (id > EProtocolId.L2E_GAME_START && id < EProtocolId.L2E_GAME_END)
            {
                //检测连接状态
                ESessionState SessionState = (ESessionState)session.SessionState;
                if (SessionState == ESessionState.Logined)
                {
                    loger.Warn($"已登陆收到登陆协议->  {id} -> {(int)id} 。");
                    return;
                }
                else
                {   //后期人多则会添加登录服务器获取人少的服
                    ((ProtocolMsgBase)objMsg).Shuttle = session.SessionID;
                    SendToLogin(objMsg);
                }
            }
            else if (id > EProtocolId.B2T_GM_START && id < EProtocolId.B2T_GM_END)
            {
                if (session.SessionType != (short)EServerType.后台工具)
                {
                    loger.Warn($"错误的GM协议->  {id} -> {(int)id} 。");
                    return;
                }
            }
            //游戏服消息
            else
            {
                ((ProtocolMsgBase)objMsg).Puid = session.SessionUuid;
                SendToGame(objMsg);
            }
        }
Example #13
0
        //private static bool isMove = false;
        public static void OnPlayerXY(LunarSession session, LunarRequestInfo requestInfo)
        {
            var Req = new E2G_Game_PlayerXY(requestInfo.Body);

            DictPlayerOnline.TryGetValue(Req.Puid, out var player);
            Req.PlayerXY.Uid = player.XY.Uid;
            player.XY        = Req.PlayerXY;

            var rsp = new G2E_Game_PlayerXYOther();

            rsp.PlayerXY = Req.PlayerXY;
            SendAll(session, rsp, player.Id);

            var rspself = new G2E_Game_PlayerXY();

            rspself.PlayerXY = Req.PlayerXY;
            rspself.Puid     = Req.Puid;

            session.Send(rspself);
        }
Example #14
0
        internal static void OnRegister(LunarSession session, LunarRequestInfo requestInfo)
        {
            var Req = new E2L_Game_Register(requestInfo.Body);
            var Rsp = new L2E_Game_Register();

            Rsp.Shuttle = Req.Shuttle;
            if (DataCache.TryGetValue(Req.Account, out var user))
            {
                Rsp.Result = EProtocolResult.账号已存在;
                BaseDispatch.Send(session, Rsp); return;
            }

            Rsp.Puid = CreateUuid();

            user          = new User();
            user.Uuid     = Rsp.Puid;
            user.Account  = Req.Account;
            user.Password = Req.Password;

            DataCache[Req.Account] = user;
            user.Save();
            BaseDispatch.Send(session, Rsp);
        }
Example #15
0
 internal static void OnRegister(LunarSession session, LunarRequestInfo requestInfo)
 {
 }