public async void SelectCharacter(Client client, object[] args) { uint characterId = (uint)(int)args[0]; CharacterData characterData = await CharacterDatabase.GetCharacterData(characterId); Vector3 position = characterData.GetPosition(); float heading = characterData.Heading.HasValue ? characterData.Heading.Value : 0; if (position == null) { GamePosition spawnPoint = ServerUtilities.GetRandomSpawnPoint(); position = spawnPoint.GetPosition(); heading = spawnPoint.GetHeading(); } client.SetData(CharacterData.CHARACTER_DATA_KEY, characterData); PlayerData playerData = client.GetData(PlayerData.PLAYER_DATA_KEY); GroupData highestRankedGroup = await GroupDatabase.GetPlayerHighestRankingGroup(playerData.Id); if (highestRankedGroup == null) { return; } if (characterData == null) { return; } ServerUtilities.SetPlayerNametag(client); ServerUtilities.SwitchPlayerPosition(client, position, heading); }
public async void OnPlayerConnected(Client client) { PlayerData playerData = null; playerData = await Data.PlayerDatabase.GetPlayerData(client.Address); if (playerData != null) { Main.Logger.Log($"Last login was at {playerData.LastLogin.ToString()}"); } if (playerData == null) { playerData = new PlayerData() { PlayerHash = client.Address, LastLogin = DateTime.Now }; playerData = await Data.PlayerDatabase.CreatePlayer(playerData); } client.SetData(PlayerData.PLAYER_DATA_KEY, playerData); PlayerTempData playerTempData = new PlayerTempData() { LoginIndex = ServerUtilities.GetPlayerLoginIndex() }; client.SetData(PlayerTempData.PLAYER_TEMP_DATA_KEY, playerTempData); ServerUtilities.SetPlayerNametag(client); ShowCharacterSelectScreen(client); }