public static PlayerDataFile GetPlayerDataFile(string _playerId)
        {
            PlayerDataFile _playerDatafile = new PlayerDataFile();

            _playerDatafile.Load(GameUtils.GetPlayerDataDir(), _playerId.Trim());
            if (_playerDatafile != null)
            {
                return(_playerDatafile);
            }
            return(null);
        }
Esempio n. 2
0
        public static PlayerDataFile GetPlayerDataFileFromUId(PlatformUserIdentifierAbs _uId)
        {
            PlayerDataFile playerDatafile = new PlayerDataFile();

            playerDatafile.Load(GameIO.GetPlayerDataDir(), _uId.CombinedString.Trim());
            if (playerDatafile != null)
            {
                return(playerDatafile);
            }
            return(null);
        }
Esempio n. 3
0
        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);
        }
Esempio n. 4
0
        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);
        }
Esempio n. 5
0
 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));
     }
 }
Esempio n. 6
0
        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}");
        }