static void OnLoginRes(object data) { CSLoginRes rsp = NetworkManager.Deserialize <CSLoginRes>(data); Debug.Log("OnLoginRes,retcode=" + rsp.RetCode); if (rsp.RetCode == 0) { DataCenter.playerID = rsp.PlayerData.PlayerID; DataCenter.name = rsp.PlayerData.Name; DataCenter.spawnPosition = rsp.PlayerData.Position.ToVector3(); DataCenter.spawnRotation = rsp.PlayerData.Rotation.ToVector3(); ItemSelectPanel.Init(rsp.PlayerData.SelectIndex, rsp.PlayerData.SelectItems); DataCenter.state = ClientState.InRoom; ChunkManager.blockAttrs = rsp.BlockAttrs; LoginPanel.Close(); MainMenu.Close(); LoadingUI.Show(); SceneManager.LoadScene("GameScene"); ChatPanel.AddLine(DataCenter.name + ", welcome!"); } else { FastTips.Show(rsp.RetCode); } }
static void Single_OnLoginReq(object obj, Action <object> callback) { CSLoginReq req = obj as CSLoginReq; Vector3 pos = NBTHelper.GetPlayerPos(); Vector3 rot = NBTHelper.GetPlayerRot(); CSLoginRes rsp = new CSLoginRes() { RetCode = 0, PlayerData = new CSPlayer { PlayerID = 0, Name = "Steve", Position = pos.ToCSVector3(), Rotation = rot.ToCSVector3(), SelectIndex = playerData.SelectIndex, } }; for (int i = 0; i < 18; i++) { rsp.PlayerData.BagItems.Add(new CSItem { Type = playerData.BagItems[i].type, Count = playerData.BagItems[i].count }); } for (int i = 0; i < 9; i++) { rsp.PlayerData.SelectItems.Add(new CSItem { Type = playerData.SelectItems[i].type, Count = playerData.SelectItems[i].count }); } foreach (KeyValuePair <Vector3Int, Vector3Int> kvPair in dependenceDict) { rsp.BlockAttrs.Add(new CSBlockAttrs { pos = kvPair.Key.ToCSVector3Int(), depentPos = kvPair.Value.ToCSVector3Int(), }); } foreach (KeyValuePair <Vector3Int, CSBlockOrientation> kvPair in orientationDict) { rsp.BlockAttrs.Add(new CSBlockAttrs { pos = kvPair.Key.ToCSVector3Int(), orient = kvPair.Value, }); } callback(rsp); }
public static void OnLoginReq(Player player, MemoryStream stream) { CSLoginReq req = NetworkManager.Deserialize <CSLoginReq>(stream); Ultilities.Print($"CSLoginReq,account={req.Account}"); //检测是否已注册 bool bAccountExist = Redis.GetAccountData(req.Account, out AccountData accountData); //Ultilities.Print($"bAccountExist={bAccountExist}"); if (!bAccountExist) { CSLoginRes res = new CSLoginRes { RetCode = 6 }; NetworkManager.Enqueue(player.socket, ENUM_CMD.CS_LOGIN_RES, res); } else { //检测是否已登录,防止顶号 bool hasLoggedIn = players.ContainsKey(accountData.playerID); //Ultilities.Print($"hasLoggedIn={hasLoggedIn}"); if (hasLoggedIn) { CSLoginRes res = new CSLoginRes { RetCode = 5 }; NetworkManager.Enqueue(player.socket, ENUM_CMD.CS_LOGIN_RES, res); } else { //检查密码是否正确 bool bCorrect = req.Password.Equals(accountData.password); //Ultilities.Print($"req.Password={req.Password},accountData.password={accountData.password},bCorrect={bCorrect}"); if (!bCorrect) { CSLoginRes res = new CSLoginRes { RetCode = 7 }; NetworkManager.Enqueue(player.socket, ENUM_CMD.CS_LOGIN_RES, res); } else { bool hasData = Redis.GetPlayerData(accountData.playerID, out CSPlayer playerData); //Ultilities.Print($"hasData={hasData}"); if (!hasData) { //如果是第一次登陆,则写数据库 playerData = new CSPlayer { PlayerID = accountData.playerID, Name = accountData.name, Position = new CSVector3 { x = 0, y = 30, z = 0 }, Rotation = new CSVector3 { x = 0, y = 0, z = 0 } }; Redis.SetPlayerData(playerData.PlayerID, playerData); } AddPlayer(player, playerData); //Ultilities.Print($"playerData,playerID={accountData.playerID},account={accountData.account},password={accountData.password},name={accountData.name}"); //Ultilities.Print($"player,id={player.id},name={player.name}"); CSLoginRes res = new CSLoginRes { RetCode = 0, PlayerData = playerData }; NetworkManager.Enqueue(player.socket, ENUM_CMD.CS_LOGIN_RES, res); MessageNotify("system", "player " + player.name + " has logged in, current number of player : " + players.Count); } } } }