public static PlayerDataFile GetPlayerDataFile(string _playerId) { PlayerDataFile _playerDatafile = new PlayerDataFile(); _playerDatafile.Load(GameUtils.GetPlayerDataDir(), _playerId.Trim()); if (_playerDatafile != null) { return(_playerDatafile); } return(null); }
public static PlayerDataFile GetPlayerDataFileFromUId(PlatformUserIdentifierAbs _uId) { PlayerDataFile playerDatafile = new PlayerDataFile(); playerDatafile.Load(GameIO.GetPlayerDataDir(), _uId.CombinedString.Trim()); if (playerDatafile != null) { return(playerDatafile); } return(null); }
public static PlayerDataFile GetPlayerDataFileFromEntityId(int _entityId) { PersistentPlayerData _persistentPlayerData = GetPersistentPlayerDataFromEntityId(_entityId); if (_persistentPlayerData != null) { PlayerDataFile _playerDatafile = new PlayerDataFile(); _playerDatafile.Load(GameUtils.GetPlayerDataDir(), _persistentPlayerData.PlayerId.Trim()); if (_playerDatafile != null) { return(_playerDatafile); } } return(null); }
public static PlayerDataFile GetPlayerDataFileFromEntityId(int _entityId) { PersistentPlayerData persistentPlayerData = GetPersistentPlayerDataFromEntityId(_entityId); if (persistentPlayerData != null) { PlayerDataFile playerDatafile = new PlayerDataFile(); playerDatafile.Load(GameIO.GetPlayerDataDir(), persistentPlayerData.UserIdentifier.CombinedString.Trim()); if (playerDatafile != null) { return(playerDatafile); } } return(null); }
public static void Exec() { try { if (GameManager.Instance.World.Players.dict.Count > 0) { List <EntityPlayer> EntityPlayerList = GameManager.Instance.World.Players.list; for (int i = 0; i < EntityPlayerList.Count; i++) { PlayerDataFile playerDataFile = new PlayerDataFile(); EntityPlayer _player = EntityPlayerList[i] as EntityPlayer; if (_player != null) { ClientInfo _cInfo = ConnectionManager.Instance.Clients.ForEntityId(_player.entityId); if (_cInfo != null) { if (_player.IsSpawned()) { var x = (int)_player.position.x; var y = (int)_player.position.y; var z = (int)_player.position.z; var region_x = x / 512; if (x < 0) { region_x--; } var region_z = z / 512; if (z < 0) { region_z--; } string _ip = _cInfo.ip; using (StreamWriter sw = new StreamWriter(Filepath, true)) { sw.WriteLine(string.Format("{0}: \"{1}\" SteamId {2}. IP Address {3} at Position: {4} X {5} Y {6} Z in RegionFile: r.{7}.{8}", DateTime.Now, _cInfo.playerName, _cInfo.playerId, _ip, x, y, z, region_x, region_z)); sw.WriteLine(); sw.Flush(); sw.Close(); } using (StreamWriter sw = new StreamWriter(Filepath, true)) { sw.WriteLine(string.Format("Stats: Health={0} Stamina={1} ZombieKills={2} PlayerKills={3} PlayerLevel={4}", (int)_player.Stats.Health.Value, (int)_player.Stats.Stamina.Value, _player.KilledZombies, _player.KilledPlayers, _player.Progression.GetLevel())); sw.WriteLine(); sw.Flush(); sw.Close(); } playerDataFile.Load(GameUtils.GetPlayerDataDir(), _cInfo.playerId.Trim()); if (playerDataFile != null) { using (StreamWriter sw = new StreamWriter(Filepath, true)) { sw.WriteLine(string.Format("Inventory of " + _cInfo.playerName + " steamId {0}", _cInfo.playerId)); sw.WriteLine("Belt:"); sw.Flush(); sw.Close(); } PrintInv(playerDataFile.inventory, _cInfo.entityId, "belt"); using (StreamWriter sw = new StreamWriter(Filepath, true)) { sw.WriteLine("Backpack:"); sw.Flush(); sw.Close(); } PrintInv(playerDataFile.bag, _cInfo.entityId, "backpack"); using (StreamWriter sw = new StreamWriter(Filepath, true)) { sw.WriteLine("Equipment:"); sw.Flush(); sw.Close(); } PrintEquipment(playerDataFile.equipment, _cInfo.entityId, "equipment"); using (StreamWriter sw = new StreamWriter(Filepath, true)) { sw.WriteLine("End of inventory"); sw.WriteLine(); sw.WriteLine("----------------"); sw.WriteLine(); sw.Flush(); sw.Close(); } } } else if (!_player.IsDead() && !_player.IsSpawned()) { using (StreamWriter sw = new StreamWriter(Filepath, true)) { sw.WriteLine(string.Format("{0}: \"{1}\" SteamId {2}. Player has not spawned", DateTime.Now, _cInfo.playerName, _cInfo.playerId)); sw.WriteLine(); sw.WriteLine("----------------"); sw.WriteLine(); sw.Flush(); sw.Close(); } } else if (_player.IsDead()) { using (StreamWriter sw = new StreamWriter(Filepath, true)) { sw.WriteLine(string.Format("{0}: \"{1}\" SteamId {2}. Player is currently dead", DateTime.Now, _cInfo.playerName, _cInfo.playerId)); sw.WriteLine(); sw.WriteLine("----------------"); sw.WriteLine(); sw.Flush(); sw.Close(); } } } } } using (StreamWriter sw = new StreamWriter(Filepath, true)) { sw.WriteLine("***********************************************************"); sw.Flush(); sw.Close(); } } } catch (Exception e) { Log.Out(string.Format("[SERVERTOOLS] Error in PlayerLogs.Exec: {0}.", e.Message)); } }
private static void SetSkillLevelOffline(string steamId, string skillName) { if (!int.TryParse(Params[Params.Count - 1], out var level)) { SendOutput("Level must be a number"); return; } var pdf = new PlayerDataFile(); pdf.Load(GameUtils.GetPlayerDataDir(), steamId); //todo: make backup var fieldInfo = typeof(PlayerDataFile).GetField("HH", BindingFlags.NonPublic | BindingFlags.Instance); if (fieldInfo == null) { return; } if (!(fieldInfo.GetValue(pdf) is MemoryStream curSkillStream)) { return; } var skills = new Skills(); if (curSkillStream.Length > 0L) { skills.Read(new BinaryReader(curSkillStream), 36u); } var skillOnPlayer = skills.GetSkillByName(skillName); if (skillOnPlayer == null) { SendOutput($"Skill {skillName} not found"); return; } if (!Skills.AllSkills.ContainsKey(skillOnPlayer.Id)) { return; } var skillFromXml = Skills.AllSkills[skillOnPlayer.Id]; if (level < skillFromXml.Level) { SendOutput("Level is below the mininmum level of " + skillFromXml.Level + " for " + skillName); return; } if (level > skillFromXml.MaxLevel) { SendOutput("Level is higher than the maximum level of " + skillFromXml.MaxLevel + " for " + skillName); return; } //todo: check requirements if (skillOnPlayer.IsLocked) { skillOnPlayer.IsLocked = false; } if (skillFromXml.IsPerk) { var fieldInfo2 = typeof(Skill).GetField("expToNextLevel", BindingFlags.NonPublic | BindingFlags.Instance); if (fieldInfo2 != null) { fieldInfo2.SetValue(skillOnPlayer, 0); } else { SendOutput("Unable to set skill 'expToNextLevel' for perk"); } } skillOnPlayer.Level = level; var newSkillStream = new MemoryStream(); skills.Write(new BinaryWriter(newSkillStream)); fieldInfo.SetValue(pdf, newSkillStream); pdf.Save(GameUtils.GetPlayerDataDir(), steamId); SendOutput($"Setting player '{steamId}' skill '{skillName}' to level: {level}"); }