void onLogin(NetworkMessage msg) { Log.i("LanClient onLogin", Log.Tag.Net); SCLogin m = msg.ReadMessage <SCLogin> (); unitMgr.accountId = m.accountId; EventMgr.single.SendEvent("Game.Login"); }
void onConnected(NetworkMessage msg) { msg.conn.SetMaxDelay(0.01f); //加载对应的账号数据 Client nc = getClient(msg.conn, ACCOUNTID++); nc.init(); Log.i("LanHost onConnected accountId=" + nc.accoundId + ",connecttionId=" + msg.conn.connectionId, Log.Tag.Net); //通知客户端登陆成功并返回账号ID SCLogin m = new SCLogin(); m.accountId = nc.accoundId; sendTo(msg.conn.connectionId, (short)MyMsgId.Login, m); }
private void SCLogin(IMessage data) { SCLogin protocol = data as SCLogin; this.Notice(protocol.ResultCode); if (protocol.ResultCode == NoticeCode.LoginSucc) { this.login_key = protocol.LoginKey; } else if (protocol.ResultCode == NoticeCode.NotExistAccount) { EventDispatcher.GetInstance().DispatchEvent(EventType.Register); } }
private void CSLogin(object data, int connect_id) { CSLogin protocol = data as CSLogin; string uid = protocol.Uid; if (this.common_data.UidToPlayerlist.ContainsKey(uid)) { SCPlayerList message = new SCPlayerList(); message.PlayerList = this.common_data.UidToPlayerlist[uid]; ServerSocket.Getinstance().SendMessage(message, connect_id); } else { SCLogin message = new SCLogin(); message.Code = NoticeCode.NotExistPlayer; ServerSocket.Getinstance().SendMessage(message, connect_id); } }
public void OnLogin(SCLogin ret) { if (UUID != 0) { DEBUG.Error("Invalid HandeLogin UUID = {0}", UUID); return; } if (ret == null) { DEBUG.Error("Invalid Proto"); return; } UUID = ret.UUID; PlayerManager.Instance.AddOne(this); DEBUG.Log("OnLogin:: UUID={0}", ret.UUID); }
void OnLogin(params object[] args) { MessageBody body = args[0] as MessageBody; if (body == null) { return; } SCLogin ret = ProtoSerialize.DeSerialize <SCLogin>(body.data); if (ret == null) { return; } Player instance = Instantiate <Player>(playerPrefab); instance.OnLogin(ret); }
public static void ConnectServerAndLogin() { lock (locker) { if (!IsConnected && !IsConnecting) { IsConnecting = true; Thread connectThread = new Thread(new ThreadStart(delegate() { if (ConnectServer()) { IsConnected = true; CSLogin node = new CSLogin(); node.AccountId = accountId; node.Url = "sdf"; node.Ip = ip; node.Localization = localization; // node.Ip = "10.0.2.2"; byte[] data = CSLogin.SerializeToBytes(node); byte[] loginData = SocketManager.SendMessageSync((int)AccountOpcode.CSLogin, data); SCLogin scLogin = SCLogin.Deserialize(loginData); Debug.Log("login success,sessionId = " + scLogin.SessionId); if (DateTime.Now.Ticks - scLogin.ServerTime < 3000) { Params.disFromServerTime = 0; } else { Params.disFromServerTime = (int)((Util.ConvertDateTimeToInt(DateTime.Now) - scLogin.ServerTime) / 1000); } Debug.Log("disFromServerTime = " + Params.disFromServerTime); IsLogin = true; } IsConnecting = false; })); connectThread.IsBackground = true; connectThread.Start(); } } }
void OnSCLogin(SCLogin msg) { GameMaster().SetMyId(msg.playerId); }
public override void Handle(IMessage data, int connect_id, int addition, List <int> player_id_list) { short msg_id = Protocol.GetMsgId(data); switch (msg_id) { //服务器注册到Route case MsgCode.SR_RegisterServer: { SRRegisterServer protocol = data as SRRegisterServer; List <int> scene_id_list = new List <int>(); foreach (int scene_id in protocol.SceneIdList) { scene_id_list.Add(scene_id); } Server.GetInstance().RegisterServer(connect_id, protocol.ServerId, protocol.ServerType, scene_id_list); Server.GetInstance().DispatchToServer(connect_id); } break; //客户端登陆 case MsgCode.CS_Login: { ServerInfo server_info = Server.GetInstance().GetServerInfoBySceneId(SceneId.LOGIN); if (server_info == null) { Log.Debug("CS_Login LoginScene Not Exist"); return; } RoutePlayer player = Server.GetInstance().GetService <RouteService>().GetUserMgr().GetPlayerByConnectId(connect_id); if (player != null) { if (!player.IsOriginState()) { Log.DebugFormat("CS_Login RouteRoleState Not OriginState UserId:{0} State:{1}", player.PlayerId, player.State); return; } } else { player = new RoutePlayer(connect_id); Server.GetInstance().GetService <RouteService>().GetUserMgr().AddPlayerByConnectId(player); } //转发到登陆服验证账号信息 player.AddState(RoutePlayerState.LOGINING); Server.GetInstance().GetSocket().SendToServer(data, server_info.ConnectId, connect_id, null); } break; //登陆服登陆结果返回 case MsgCode.LR_LoginResult: { LRLoginResult protocol = data as LRLoginResult; SCLogin message = new SCLogin(); RoutePlayer player = Server.GetInstance().GetService <RouteService>().GetUserMgr().GetPlayerByConnectId(addition); if (protocol.ResultCode == NoticeCode.LoginSucc) { //登陆成功 player.UserId = protocol.UserId; player.LoginKey = this.CreateLoginKey(); //切换成已登陆状态 player.CancelState(RoutePlayerState.LOGINING); player.AddState(RoutePlayerState.LOGINED); message.LoginKey = player.LoginKey; } else { //登陆失败重置状态 player.ResetState(); } //登陆返回 message.ResultCode = protocol.ResultCode; Server.GetInstance().GetSocket().SendToClient(message, addition); } break; //玩家列表返回 case MsgCode.SC_PlayerList: { RoutePlayer player = Server.GetInstance().GetService <RouteService>().GetUserMgr().GetPlayerByConnectId(addition); player.SendMsg(data); } break; //创建玩家 case MsgCode.CS_CreatePlayer: { CSCreatePlayer protocol = data as CSCreatePlayer; RoutePlayer player = Server.GetInstance().GetService <RouteService>().GetUserMgr().GetPlayerByConnectId(connect_id); if (player == null || !player.CheckState(RoutePlayerState.LOGINED) || player.CheckState(RoutePlayerState.LOADED)) { return; } protocol.UserId = player.UserId; ServerInfo server_info = Server.GetInstance().GetServerInfoBySceneId(SceneId.LOGIN); Server.GetInstance().GetSocket().SendToServer(protocol, server_info.ConnectId, connect_id, null); } break; //加载玩家 case MsgCode.CS_LoadPlayer: { CSLoadPlayer protocol = data as CSLoadPlayer; RoutePlayer player = Server.GetInstance().GetService <RouteService>().GetUserMgr().GetPlayerByConnectId(connect_id); if (player == null || !player.CheckState(RoutePlayerState.LOGINED) || player.CheckState(RoutePlayerState.LOADED)) { return; } protocol.UserId = player.UserId; player.LoadMsg = protocol; ServerInfo server_info = Server.GetInstance().GetServerInfoBySceneId(SceneId.LOGIN); Server.GetInstance().GetSocket().SendToServer(protocol, server_info.ConnectId, connect_id, null); } break; //玩家顶号 case MsgCode.LR_PlayerRepeat: { LRPlayerRepeat protocol = data as LRPlayerRepeat; RoutePlayer old_player = Server.GetInstance().GetService <RouteService>().GetUserMgr().GetPlayerByConnectId(protocol.PlayerId); old_player.Logout(); RoutePlayer player = Server.GetInstance().GetService <RouteService>().GetUserMgr().GetPlayerByConnectId(addition); ServerInfo server_info = Server.GetInstance().GetServerInfoBySceneId(SceneId.LOGIN); Server.GetInstance().GetSocket().SendToServer(player.LoadMsg, server_info.ConnectId, connect_id, null); } break; //场景加载玩家数据完成 case MsgCode.SR_LoadPlayerComplete: { SRLoadPlayerComplete protocol = data as SRLoadPlayerComplete; RoutePlayer player = Server.GetInstance().GetService <RouteService>().GetUserMgr().GetPlayerByConnectId(addition); player.PlayerId = protocol.PlayerId; player.CurServerId = protocol.ServerId; player.CurSceneId = protocol.SceneId; player.AddState(RoutePlayerState.LOADED); player.LoadMsg = null; Server.GetInstance().GetService <RouteService>().GetUserMgr().AddPlayerByPlayerId(player); } break; //客户端重连 case MsgCode.CS_Reconnect: { CSReconnect protocol = data as CSReconnect; SCReconnect message = new SCReconnect(); RoutePlayer player = Server.GetInstance().GetService <RouteService>().GetUserMgr().GetPlayerByPlayerId(protocol.PlayerId); if (player == null) { Log.DebugFormat("CS_Reconnect Not RoutePlayer Id:{0}", protocol.PlayerId); message.ResultCode = NoticeCode.ReConnectFail; Server.GetInstance().GetSocket().SendToClient(message, connect_id); return; } if (!player.CheckState(RoutePlayerState.LOADED)) { Log.DebugFormat("CS_Reconnect RouteUser Not Loaded Id:{0}", protocol.PlayerId); message.ResultCode = NoticeCode.ReConnectFail; Server.GetInstance().GetSocket().SendToClient(message, connect_id); return; } if (player.LoginKey != protocol.LoginKey) { Log.DebugFormat("CS_Reconnect LoginKey Not Equal {0} {1}", player.LoginKey, protocol.LoginKey); message.ResultCode = NoticeCode.ReConnectFail; Server.GetInstance().GetSocket().SendToClient(message, connect_id); return; } message.ResultCode = NoticeCode.ReconnectSucc; Server.GetInstance().GetSocket().SendToClient(message, connect_id); //重连更新用户连接 player.ConnectId = connect_id; Server.GetInstance().GetService <RouteService>().GetUserMgr().AddPlayerByConnectId(player); player.Reconnect(); } break; //服务器间远程调用 case MsgCode.SS_RemoteCall: { SSRemoteCall protocol = data as SSRemoteCall; ServerInfo from_server_info = Server.GetInstance().GetServerInfoByConnectId(connect_id); if (from_server_info != null) { protocol.FromServerId = from_server_info.ServerId; ServerInfo to_server_info = Server.GetInstance().GetServerInfoBySceneId(protocol.ToSceneId, protocol.ToServerId); if (to_server_info != null) { Server.GetInstance().GetSocket().SendToServer(protocol, to_server_info.ConnectId); } else { Log.Debug("SS_RemoteCall ToServerInfo Not Exist SceneId:" + protocol.ToSceneId + " ServerId:" + protocol.ToServerId); } } else { Log.Debug("SS_RemoteCall FromServerInfo Not Exist ConnectId:" + addition); } } break; //服务器间远程调用返回 case MsgCode.SS_RemoteResult: { SSRemoteResult protocol = data as SSRemoteResult; ServerInfo from_server_info = Server.GetInstance().GetServerInfoByConnectId(addition); if (from_server_info != null) { protocol.FromServerId = from_server_info.ServerId; ServerInfo to_server_info = Server.GetInstance().GetServerInfoByServerId(protocol.ToServerId); if (to_server_info != null) { Server.GetInstance().GetSocket().SendToServer(protocol, to_server_info.ConnectId); } } } break; //切出原场景 case MsgCode.SR_ChangeOutScene: { SRChangeOutScene protocol = data as SRChangeOutScene; ServerInfo to_server_info = Server.GetInstance().GetServerInfoBySceneId(protocol.ToSceneId, protocol.ToServerId); if (to_server_info != null) { RoutePlayer player = Server.GetInstance().GetService <RouteService>().GetUserMgr().GetPlayerByPlayerId(addition); player.CurServerId = protocol.ToServerId; player.CurSceneId = protocol.ToSceneId; RSChangeInScene message = new RSChangeInScene(); message.PlayerStruct = protocol.PlayerStruct; Server.GetInstance().GetSocket().SendToServer(message, to_server_info.ConnectId); } else { Log.Debug("SR_ChangeOutScene ToServerInfo Not Exist SceneId:" + protocol.ToSceneId + " ServerId:" + protocol.ToServerId); } } break; default: { ServerInfo server_info = Server.GetInstance().GetServerInfoByConnectId(connect_id); if (server_info != null) { //来自服务器的信息 switch (addition) { //转发给服务器 case TranType.ALL_SERVER: { Server.GetInstance().SendMsgToAllServer(data); } break; //转发给客户端 case TranType.ALL_PLAYER: { Server.GetInstance().GetService <RouteService>().GetUserMgr().DispatchToPlayer(data); } break; case TranType.ALL_PLAYER_EXCEPT_LIST: { Server.GetInstance().GetService <RouteService>().GetUserMgr().DispatchToPlayerExceptList(data, player_id_list); } break; case TranType.PLAYER_LIST: { Server.GetInstance().GetService <RouteService>().GetUserMgr().DispatchToPlayerList(data, player_id_list); } break; default: { if (addition > 0) { RoutePlayer player = Server.GetInstance().GetService <RouteService>().GetUserMgr().GetPlayerByPlayerId(addition); if (player != null) { player.SendMsg(data); } else { Log.Error("Transmit Protocol Not Player Id:{0}", addition); } } else { Log.Error("Transmit Protocol TranType:{0} Not Handle", addition); } } break; } } else { //来自客户端的信息,转发给服务器 RoutePlayer player = Server.GetInstance().GetService <RouteService>().GetUserMgr().GetPlayerByConnectId(connect_id); if (player == null || !player.CheckState(RoutePlayerState.LOADED)) { return; } if (msg_id == MsgCode.SC_HeartBeat) { player.SetActive(); SCHeartBeat message = new SCHeartBeat(); player.SendMsg(message); return; } //存在指定转发的场景ID if (MsgCode.ProtocolSceneId.ContainsKey(msg_id)) { int to_scene_id = MsgCode.ProtocolSceneId[msg_id]; ServerInfo to_server_info = Server.GetInstance().GetServerInfoBySceneId(to_scene_id); Server.GetInstance().GetSocket().SendToServer(data, to_server_info.ConnectId, player.PlayerId); } else { //默认转发到用户所在场景服 ServerInfo to_server_info = Server.GetInstance().GetServerInfoBySceneId(player.CurSceneId, player.CurServerId); Server.GetInstance().GetSocket().SendToServer(data, to_server_info.ConnectId, player.PlayerId); } } } break; } }
public static MSMessageBase GetEmptyMessageById(int id) { MSMessageBase msg = null; switch (id) { case 102: msg = new BVector2(); break; case 103: msg = new BVector3(); break; case 101: msg = new BPlayer(); break; case 1001: msg = new CSLogin(); break; case 1003: msg = new SCJoinGame(); break; case 1004: msg = new SCLogin(); break; case 1005: msg = new SCGameSync(); break; case 2001: msg = new CSMove(); break; case 2002: msg = new SCMove(); break; case 2003: msg = new CSJump(); break; case 2004: msg = new SCJump(); break; case 2005: msg = new CSDash(); break; case 2006: msg = new SCDashStart(); break; case 2007: msg = new SCDashStop(); break; default: break; } return(msg); }
public void SCLogin(object data, int connect_id) { SCLogin protocol = data as SCLogin; LogTool.Tip("Login RetCode:" + protocol.Code); }