Пример #1
0
    // Reads the buff and quest information
    public override void Read(byte _version, BinaryReader _br)
    {
        base.Read(_version, _br);
        this.strMyName = _br.ReadString();
        this.Buffs.Read(_br);
        this.QuestJournal = new QuestJournal();
        this.QuestJournal.Read(_br);
        this.PatrolCoordinates.Clear();
        String strPatrol = _br.ReadString();

        foreach (String strPatrolPoint in strPatrol.Split(';'))
        {
            Vector3 temp = StringToVector3(strPatrolPoint);
            if (temp != Vector3.zero)
            {
                this.PatrolCoordinates.Add(temp);
            }
        }

        //if (this.PatrolCoordinates.Count > 0)
        //    this.Buffs.AddCustomVar("CurrentOrder", (float)Orders.Patrol);

        String strGuardPosition = _br.ReadString();

        this.GuardPosition     = StringToVector3(strGuardPosition);
        this.factionId         = _br.ReadByte();
        this.GuardLookPosition = StringToVector3(_br.ReadString());
    }
Пример #2
0
    // Reads the buff and quest information
    public override void Read(byte _version, BinaryReader _br)
    {
        base.Read(_version, _br);
        strMyName    = _br.ReadString();
        QuestJournal = new QuestJournal();
        QuestJournal.Read(_br);
        PatrolCoordinates.Clear();
        String strPatrol = _br.ReadString();

        foreach (String strPatrolPoint in strPatrol.Split(';'))
        {
            Vector3 temp = ModGeneralUtilities.StringToVector3(strPatrolPoint);
            if (temp != Vector3.zero)
            {
                PatrolCoordinates.Add(temp);
            }
        }

        String strGuardPosition = _br.ReadString();

        GuardPosition     = ModGeneralUtilities.StringToVector3(strGuardPosition);
        factionId         = _br.ReadByte();
        GuardLookPosition = ModGeneralUtilities.StringToVector3(_br.ReadString());
        try
        {
            this.Buffs.Read(_br);
        }
        catch (Exception ex)
        {
            // fail safe to protect game saves
        }
    }
 static bool Prefix(QuestJournal __instance, ref Quest __result, ref string questName)
 {
     for (int i = 0; i < __instance.quests.Count; i++)
     {
         if (__instance.quests[i].ID == questName.ToLower() && __instance.quests[i].SharedOwnerID == -1)
         {
             __result = __instance.quests[i];
             return(false);
         }
     }
     __result = null;
     return(false);
 }
            static bool Prefix(QuestJournal __instance, ref Quest __result, ref string questName)
            {
                Quest quest = null;

                for (int i = 0; i < __instance.quests.Count; i++)
                {
                    if (__instance.quests[i].ID == questName && (quest == null || __instance.quests[i].Active || __instance.quests[i].FinishTime > quest.FinishTime) && __instance.quests[i].SharedOwnerID == -1)
                    {
                        quest = __instance.quests[i];
                    }
                }

                __result = quest;
                return(false);
            }
            static bool Prefix(QuestJournal __instance, ref Quest __result, ref string questName)
            {
                // TODO : Complete a quest, read again so its active again, you can keep re-learning!!! The bug is now because there is 2 quests in your list, one active and once completed.
                // Need to check all instances of FindQuest method and see what we can /cannot return to fix this issue
                for (int i = 0; i < __instance.quests.Count; i++)
                {
                    if (__instance.quests[i].ID.ToLower() == questName.ToLower())
                    {
                        __result = __instance.quests[i];
                        return(false);
                    }
                }

                __result = null;
                return(false);
            }
Пример #6
0
        public void Read(BinaryReader _br, uint _version)
        {
            //ECD
            ecd = new EntityCreationData();
            ecd.read(_br, false);

            //FOOD/DRINK
            food = new LiveStats(Constants.cMaxPlayerFood, Constants.cFoodOversaturate);
            food.Read(_br);
            drink = new LiveStats(Constants.cMaxPlayerDrink, Constants.cDrinkOversaturate);
            drink.Read(_br);

            //INVENTORY
            inventory             = GameUtils.ReadItemStack(_br);
            selectedInventorySlot = _br.ReadByte();

            //BAG
            bag = GameUtils.ReadItemStack(_br);
            //REMOVED - To allow for bigger backpack mods
            //if (bag.Length > 32)
            //{
            //  var destinationArray = ItemStack.CreateArray(32);
            //  Array.Copy(bag, destinationArray, 32);
            //  bag = destinationArray;
            //}

            //CRAFTED
            alreadyCraftedList = new HashSet <string>();
            int num = _br.ReadUInt16();

            for (var i = 0; i < num; i++)
            {
                alreadyCraftedList.Add(_br.ReadString());
            }

            //SPAWNS
            var b = _br.ReadByte();

            for (var j = 0; j < b; j++)
            {
                spawnPoints.Add(new Vector3i(_br.ReadInt32(), _br.ReadInt32(), _br.ReadInt32()));
            }
            selectedSpawnPointKey = _br.ReadInt64();

            //LOADED
            _br.ReadBoolean();
            _br.ReadInt16();
            if (_version > 1u)
            {
                bLoaded = _br.ReadBoolean();
            }

            //LASTSPAWN
            if (_version > 2u)
            {
                lastSpawnPosition = new SpawnPosition(new Vector3i(_br.ReadInt32(), _br.ReadInt32(), _br.ReadInt32()), _br.ReadSingle());
            }
            else if (_version > 1u)
            {
                lastSpawnPosition = new SpawnPosition(new Vector3i(_br.ReadInt32(), _br.ReadInt32(), _br.ReadInt32()), 0f);
            }

            //ID
            if (_version > 3u)
            {
                id = _br.ReadInt32();
            }

            //BACKPACK
            if (_version > 4u)
            {
                droppedBackpackPosition = new Vector3i(_br.ReadInt32(), _br.ReadInt32(), _br.ReadInt32());
            }

            //STATS/EQUIPMENT
            if (_version > 5u)
            {
                playerKills = _br.ReadInt32();
                zombieKills = _br.ReadInt32();
                deaths      = _br.ReadInt32();
                score       = _br.ReadInt32();
                equipment   = Equipment.Read(_br);
            }

            //RECIPES
            if (_version > 6u)
            {
                unlockedRecipeList = new List <string>();
                num = _br.ReadUInt16();
                for (var k = 0; k < num; k++)
                {
                    unlockedRecipeList.Add(_br.ReadString());
                }
            }

            //MARKER
            if (_version > 7u)
            {
                _br.ReadUInt16();
                markerPosition = NetworkUtils.ReadVector3i(_br);
            }

            //FAVS
            if (_version > 8u)
            {
                favoriteEquipment = Equipment.Read(_br);
            }

            //EXP
            if (_version > 10u)
            {
                experience = _br.ReadUInt32();
            }

            //LEVEL
            if (_version > 22u)
            {
                level = _br.ReadInt32();
            }

            //CROUCHED
            if (_version > 11u)
            {
                bCrouchedLocked = _br.ReadBoolean();
            }

            //CRAFTINGDATA
            craftingData.Read(_br, _version);

            //SKILLS - part1
            if (_version > 14u)
            {
                if (_version < 18u)
                {
                    var pdfskills = new Skills();
                    pdfskills.Read(_br, _version);
                }
            }

            //FAVRECIPES
            if (_version > 16u)
            {
                favoriteRecipeList = new List <string>();
                num = _br.ReadUInt16();
                for (var l = 0; l < num; l++)
                {
                    favoriteRecipeList.Add(_br.ReadString());
                }
            }

            //SKILLS - part2
            if (_version > 17u)
            {
                var num2 = (int)_br.ReadUInt32();
                if (num2 > 0)
                {
                    //custom skill loader
                    var pdfskills = new MemoryStream(_br.ReadBytes(num2));

                    var skillsReader = new Skills();
                    skillsReader.Read(new BinaryReader(pdfskills), _version);
                    skills = skillsReader.GetAllSkills();
                    //end custom skill loader
                }
            }

            //STATS
            if (_version > 18u)
            {
                totalItemsCrafted = _br.ReadUInt32();
                distanceWalked    = _br.ReadSingle();
                longestLife       = _br.ReadSingle();
            }

            if (_version > 35u)
            {
                gameStageLifetimeTicks = _br.ReadUInt64();
            }
            else
            {
                gameStageLifetimeTicks = 0uL;
            }

            if (_version > 19u)
            {
                waypoints = new WaypointCollection();
                waypoints.Read(_br);
            }
            if (_version > 23u)
            {
                skillPoints = _br.ReadInt32();
            }
            if (_version > 24u)
            {
                questJournal = new QuestJournal();
                questJournal.Read(_br);
            }
            if (_version > 25u)
            {
                deathUpdateTime = _br.ReadInt32();
            }
            if (_version > 26u)
            {
                currentLife = _br.ReadSingle();
            }
            if (_version > 29u)
            {
                bDead = _br.ReadBoolean();
            }
            if (_version > 30u)
            {
                _br.ReadByte();
                IsModdedSave = _br.ReadBoolean();
            }
            if (_version > 31u)
            {
                playerJournal = new PlayerJournal();
                playerJournal.Read(_br);
            }
            if (_version > 32u)
            {
                rentedVMPosition = NetworkUtils.ReadVector3i(_br);
                rentalEndTime    = _br.ReadUInt64();
            }
            if (_version > 33u)
            {
                trackedFriendEntityIds.Clear();
                int num3 = _br.ReadUInt16();
                for (var m = 0; m < num3; m++)
                {
                    trackedFriendEntityIds.Add(_br.ReadInt32());
                }
            }
            if (_version > 34u)
            {
                var num4 = _br.ReadInt32();
                if (num4 > 0)
                {
                    //var pdfstealth = new MemoryStream(_br.ReadBytes(num4));
                    //todo: custom loader
                }
            }
        }
Пример #7
0
        public void Read(BinaryReader _br, uint _version)
        {
            ecd = new EntityCreationData();
            ecd.read(_br, false);
            food = new LiveStats(Constants.cMaxPlayerFood, Constants.cFoodOversaturate);
            food.Read(_br);
            drink = new LiveStats(Constants.cMaxPlayerDrink, Constants.cDrinkOversaturate);
            drink.Read(_br);
            inventory             = GameUtils.ReadItemStack(_br);
            selectedInventorySlot = _br.ReadByte();
            bag = GameUtils.ReadItemStack(_br);
            if (bag.Length > 32)
            {
                ItemStack[] destinationArray = ItemStack.CreateArray(32);
                Array.Copy(bag, destinationArray, 32);
                bag = destinationArray;
            }
            alreadyCraftedList = new HashSet <string>();
            int num = _br.ReadUInt16();

            for (int i = 0; i < num; i++)
            {
                alreadyCraftedList.Add(_br.ReadString());
            }
            byte b = _br.ReadByte();

            for (int j = 0; j < b; j++)
            {
                spawnPoints.Add(new Vector3i(_br.ReadInt32(), _br.ReadInt32(), _br.ReadInt32()));
            }
            selectedSpawnPointKey = _br.ReadInt64();
            _br.ReadBoolean();
            _br.ReadInt16();
            if (_version > 1u)
            {
                bLoaded = _br.ReadBoolean();
            }
            if (_version > 2u)
            {
                lastSpawnPosition = new SpawnPosition(new Vector3i(_br.ReadInt32(), _br.ReadInt32(), _br.ReadInt32()), _br.ReadSingle());
            }
            else if (_version > 1u)
            {
                lastSpawnPosition = new SpawnPosition(new Vector3i(_br.ReadInt32(), _br.ReadInt32(), _br.ReadInt32()), 0f);
            }
            if (_version > 3u)
            {
                id = _br.ReadInt32();
            }
            if (_version > 4u)
            {
                droppedBackpackPosition = new Vector3i(_br.ReadInt32(), _br.ReadInt32(), _br.ReadInt32());
            }
            if (_version > 5u)
            {
                playerKills = _br.ReadInt32();
                zombieKills = _br.ReadInt32();
                deaths      = _br.ReadInt32();
                score       = _br.ReadInt32();
                equipment   = Equipment.Read(_br);
            }
            if (_version > 6u)
            {
                unlockedRecipeList = new List <string>();
                num = _br.ReadUInt16();
                for (int k = 0; k < num; k++)
                {
                    unlockedRecipeList.Add(_br.ReadString());
                }
            }
            if (_version > 7u)
            {
                _br.ReadUInt16();
                markerPosition = NetworkUtils.ReadVector3i(_br);
            }
            if (_version > 8u)
            {
                favoriteEquipment = Equipment.Read(_br);
            }
            if (_version > 10u)
            {
                experience = _br.ReadUInt32();
            }
            if (_version > 22u)
            {
                level = _br.ReadInt32();
            }
            if (_version > 11u)
            {
                bCrouchedLocked = _br.ReadBoolean();
            }
            craftingData.Read(_br, _version);

            if (_version > 14u)
            {
                if (_version < 18u)
                {
                    Skills pdfskills = new Skills();
                    pdfskills.Read(_br, _version);
                }
            }
            if (_version > 16u)
            {
                favoriteRecipeList = new List <string>();
                num = _br.ReadUInt16();
                for (int l = 0; l < num; l++)
                {
                    favoriteRecipeList.Add(_br.ReadString());
                }
            }
            if (_version > 17u)
            {
                int num2 = (int)_br.ReadUInt32();
                if (num2 > 0)
                {
                    //custom skill loader
                    MemoryStream pdfskills = new MemoryStream(0);
                    pdfskills = new MemoryStream(_br.ReadBytes(num2));
                    EntityPlayer EP = new EntityPlayer();
                    EP.Skills = new Skills();
                    if (pdfskills.Length > 0L)
                    {
                        EP.Skills.Read(new BinaryReader(pdfskills), 34u);
                    }
                    skills = EP.Skills.GetAllSkills();
                    //end custom skill loader
                }
            }
            if (_version > 18u)
            {
                totalItemsCrafted = _br.ReadUInt32();
                distanceWalked    = _br.ReadSingle();
                longestLife       = _br.ReadSingle();
            }
            if (_version > 19u)
            {
                waypoints = new WaypointCollection();
                waypoints.Read(_br);
            }
            if (_version > 23u)
            {
                skillPoints = _br.ReadInt32();
            }
            if (_version > 24u)
            {
                questJournal = new QuestJournal();
                questJournal.Read(_br);
            }
            if (_version > 25u)
            {
                deathUpdateTime = _br.ReadInt32();
            }
            if (_version > 26u)
            {
                currentLife = _br.ReadSingle();
            }
            if (_version > 29u)
            {
                bDead = _br.ReadBoolean();
            }
            if (_version > 30u)
            {
                _br.ReadByte();
                IsModdedSave = _br.ReadBoolean();
            }
            if (_version > 31u)
            {
                playerJournal = new PlayerJournal();
                playerJournal.Read(_br);
            }
            if (_version > 32u)
            {
                rentedVMPosition = NetworkUtils.ReadVector3i(_br);
                rentalEndTime    = _br.ReadUInt64();
            }
            if (_version > 33u)
            {
                trackedFriendEntityIds.Clear();
                int num3 = _br.ReadUInt16();
                for (int m = 0; m < num3; m++)
                {
                    trackedFriendEntityIds.Add(_br.ReadInt32());
                }
            }
        }