Пример #1
0
        internal static async Task Spawn()
        {
#if DEBUG
            if (!Game.PlayerPed.IsInVehicle())
            {
                var polModel = new Model((VehicleHash)Game.GenerateHash("sadot"));
                await polModel.Request(-1);

                Vehicle veh = await World.CreateVehicle(polModel, Game.PlayerPed.Position);

                polModel.MarkAsNoLongerNeeded();
                //veh.RegisterAsNetworked();
                Screen.ShowNotification($"network status {Function.Call<bool>(Hash.NETWORK_GET_ENTITY_IS_NETWORKED, veh)}");
                veh.SetExistOnAllMachines(true);
                await CitizenFX.Core.BaseScript.Delay(10000);

                CitizenFX.Core.Debug.WriteLine($"vehtonet: {API.VehToNet(veh.Handle)} getnetworkidfromentity: {API.NetworkGetNetworkIdFromEntity(veh.Handle)}");
                CitizenFX.Core.Debug.WriteLine($"ModelName: {veh.Model} DisplayName: {veh.DisplayName}");
                CitizenFX.Core.Debug.WriteLine($"Is this ELS Vehicle {veh.IsEls()}");
                if (veh == null)
                {
                    CitizenFX.Core.Debug.WriteLine("failure to spawn");
                    return;
                }
            }
            else //if (Game.PlayerPed.CurrentVehicle.IsEls())
            {
                Vehicle veh = Game.PlayerPed.CurrentVehicle;
                veh.RadioStation = RadioStation.RadioOff;
            }
            // Game.Player.Character.SetIntoVehicle(veh, VehicleSeat.Any);
#endif
        }
        private void SpawnPedMoney(Ped targetPed)
        {
            if (targetPed.Money <= 0)
            {
                return;
            }

            if (Main.configRobPeople.Quick_Rob_People_No_Pickup)
            {
                Game.Player.Money += targetPed.Money;
                targetPed.Money    = 0;
                return;
            }

            string modelName = "prop_ld_wallet_01";

            if (targetPed.Gender == Gender.Female)
            {
                modelName = "prop_amb_handbag_01";
            }

            Model wallet = new Model(modelName);

            wallet.Request();
            while (!wallet.IsInCdImage)
            {
                Wait(1);
                wallet.Request();
            }

            World.CreateAmbientPickup(PickupType.MoneyPurse, targetPed.Position + targetPed.ForwardVector * 0.5f, wallet, targetPed.Money);
            wallet.MarkAsNoLongerNeeded();
        }
Пример #3
0
    public void ChangePlayerModel(PedHash hash)
    {
        var model = new Model(hash);

        // only in recent script hook

        /*
         * if (!Game.Player.ChangeModel(model))
         * {
         *  UI.Notify("could not request model");
         * }
         */
        if (!model.IsInCdImage || !model.IsPed || !model.Request(1000))
        {
            UI.Notify("could not request model");
        }
        else
        {
            Function.Call(Hash.SET_PLAYER_MODEL, Game.Player, model.Hash);
            Function.Call(Hash.SET_PED_DEFAULT_COMPONENT_VARIATION, Game.Player.Character.Handle);
            if (hash == PedHash.FreemodeMale01 || hash == PedHash.FreemodeFemale01)
            {
                // must call SET_PED_HEAD_BLEND_DATA otherwise head overlays don't work
                var slot_key   = new SlotKey(SlotType.Parent, 0);
                var slot_value = new SlotValue(0, 0, 4, 4);
                var ped        = Game.Player.Character;
                SetSlotValue(ped, slot_key, slot_value);
            }
            data.Clear();
        }
        model.MarkAsNoLongerNeeded();
    }
Пример #4
0
        public Vehicle CreateVehicle(Model model, Vector3 position, Vector3 rotation, int netHash)
        {
            if (model == null || !model.IsValid || !model.IsInCdImage)
            {
                return(null);
            }
            LogManager.DebugLog("CREATING VEHICLE FOR NETHASH " + netHash);
            model.Request(10000);
            LogManager.DebugLog("LOAD COMPLETE. AVAILABLE: " + model.IsLoaded);

            var veh = World.CreateVehicle(model, position, rotation.Z);

            LogManager.DebugLog("VEHICLE CREATED. NULL? " + (veh == null));
            veh.Rotation     = rotation;
            veh.IsInvincible = true;
            LogManager.DebugLog("PROPERTIES SET");
            lock (HandleMap)
            {
                if (!HandleMap.Reverse.ContainsKey(veh.Handle))
                {
                    HandleMap.Reverse.Add(veh.Handle, netHash);
                }
            }
            LogManager.DebugLog("DISCARDING MODEL");
            model.MarkAsNoLongerNeeded();
            LogManager.DebugLog("CREATEVEHICLE COMPLETE");
            return(veh);
        }
Пример #5
0
        public override bool Run(string[] inputParams)
        {
            PedHash pedHash = PedHash.Abigail;

            if (!Enum.TryParse <PedHash>(inputParams[1], out pedHash))
            {
                return(false);
            }

            Model characterModel = new Model(pedHash);

            characterModel.Request(500);

            if (characterModel.IsInCdImage && characterModel.IsValid)
            {
                while (!characterModel.IsLoaded)
                {
                    Script.Wait(100);
                }

                Function.Call(Hash.SET_PLAYER_MODEL, Game.Player, characterModel.Hash);
                Function.Call(Hash.SET_PED_DEFAULT_COMPONENT_VARIATION, Game.Player.Character.Handle);
            }

            characterModel.MarkAsNoLongerNeeded();
            return(true);
        }
Пример #6
0
        public async Task LoadDefaultModel(bool LoadMale)
        {
            PedHash CharacterModel;

            if (LoadMale)
            {
                CharacterModel = PedHash.FreemodeMale01;
            }
            else
            {
                CharacterModel = PedHash.FreemodeFemale01;
            }

            Model characterModel = new Model(CharacterModel);

            characterModel.Request(500);

            if (characterModel.IsInCdImage && characterModel.IsValid)
            {
                while (!characterModel.IsLoaded)
                {
                    await BaseScript.Delay(0);
                }

                Function.Call(Hash.SET_PLAYER_MODEL, Game.Player, characterModel.Hash);
                Function.Call(Hash.SET_PED_DEFAULT_COMPONENT_VARIATION, Game.Player.Character.Handle);
            }

            characterModel.MarkAsNoLongerNeeded();
        }
Пример #7
0
        public void Revert()
        {
            Game.MaxWantedLevel = this.playerOldMaxWantedLevel;
            Game.Player.Money   = 0;
            Model model = new Model(this.playerOldModel.Hash);

            model.Request(500);
            if (model.IsInCdImage && model.IsValid)
            {
                while (true)
                {
                    if (model.IsLoaded)
                    {
                        InputArgument[] arguments = new InputArgument[] { Game.Player, model.Hash };
                        Function.Call(Hash._0x00A1CADD00108836, arguments);
                        InputArgument[] argumentArray2 = new InputArgument[] { Game.Player.Character.Handle };
                        Function.Call(Hash._0x45EEE61580806D63, argumentArray2);
                        break;
                    }
                    Script.Wait(100);
                }
            }
            model.MarkAsNoLongerNeeded();
            Game.Player.Money = this.playerOldMoney;
            Game.Player.Character.Position = this.playerOldPosition;
            Game.Player.Character.Heading  = this.playerOldHeading;
            campFire.Delete();
        }
Пример #8
0
        private void CreateColonel()
        {
            _colonel?.Delete(); // in case the colonel already exists somehow.
            var m = new Model(PedHash.Marine01SMM);

            m.Request();
            while (!m.IsLoaded)
            {
                Script.Yield();
            }
            _colonel = World.CreatePed(m, _colonelSpawn - Vector3.WorldUp, _colonelHeading);
            if (_colonel == null)
            {
                // Let's break here just in case.
                throw new NullReferenceException("Colonel returned null for IntroMission.");
            }
            var b = _colonel.AddBlip();

            b.Sprite = BlipSprite.GTAOMission;
            b.Color  = Scene.MarkerBlipColor;
            b.Name   = "Colonel Larson";
            _colonel.SetDefaultClothes();
            _colonel.RelationshipGroup = PlayerPed.RelationshipGroup;
            _colonel.CanRagdoll        = false;
            m.MarkAsNoLongerNeeded();
        }
Пример #9
0
        private async Task SetNewCurrentProp()
        {
            Profiler.Enter("BuilderObjectManager_Update_SetNewCurrentProp");

            //Unload and destroy the current prop and model.
            if (currentProp != null && currentProp.Exists())
            {
                Model propModel = currentProp.Model;
                propModel.MarkAsNoLongerNeeded();

                currentProp.Delete();
            }

            //Check if we need to load the new model.
            if (!modelToLoad.IsLoaded)
            {
                await modelToLoad.Request(500);
            }

            currentProp = await World.CreateProp(modelToLoad, Vector3.Zero, Vector3.Zero, false, false);

            isPropLoaded = true;

            Profiler.Exit();
        }
Пример #10
0
        public void Start()
        {
            var spawnRegion = new Vector3(-9946.63f, -10148.71f, 1000.36f);
            var random      = new Random();

            for (var i = 0; i < 15; i++)
            {
                var randDist   = Function.Call <float>(Hash.GET_RANDOM_FLOAT_IN_RANGE, 20f, 100f);
                var spawnPoint = spawnRegion.Around(randDist);
                var ground     = World.GetGroundHeight(spawnPoint + Vector3.WorldUp);
                if (ground == 0)
                {
                    continue;
                }
                var ped = GtsLibNet.CreateAlien(null, spawnPoint, random.Next(135, 220));
                ped.Position = new Vector3(ped.Position.X, ped.Position.Y, ground);
                ped.Weapons.Give((WeaponHash)Game.GenerateHash("weapon_pulserifle"), 15, true, true);
                ped.AddBlip();
                ped.IsOnlyDamagedByPlayer = true;
                _hostiles.Add(ped);
                Script.Yield();
            }

            var ufoModel = new Model("zanufo");

            ufoModel.Request();
            while (!ufoModel.IsLoaded)
            {
                Script.Yield();
            }
            for (var i = 0; i < 4; i++)
            {
                var randDist   = Function.Call <float>(Hash.GET_RANDOM_FLOAT_IN_RANGE, 40f, 145f);
                var spawnPoint = spawnRegion.Around(randDist);
                var vehicle    = World.CreateVehicle(ufoModel, spawnPoint);
                vehicle.PlaceOnGround();
                vehicle.IsOnlyDamagedByPlayer = true;
                var pedModel = (Model)GtsLibNet.GetAlienModel();
                pedModel.Request();
                while (!pedModel.IsLoaded)
                {
                    Script.Yield();
                }
                var ped = vehicle.CreatePedOnSeat(VehicleSeat.Driver, pedModel);
                var b   = ped.AddBlip();
                b.Sprite = (BlipSprite)422;
                b.Name   = "UFO";
                ped.IsOnlyDamagedByPlayer = true;
                Function.Call(Hash.SET_CURRENT_PED_VEHICLE_WEAPON, ped,
                              Game.GenerateHash("VEHICLE_WEAPON_PLAYER_LAZER"));
                GtsLibNet.GivePedAlienAttributes(ped);
                pedModel.MarkAsNoLongerNeeded();
                _hostiles.Add(ped);
                _ufos.Add(vehicle);
                Script.Yield();
            }
            ufoModel.MarkAsNoLongerNeeded();
        }
Пример #11
0
        public static void SetPlayerSkin(PedHash skin)
        {
            var model = new Model(skin);

            model.Request(10000);

            Function.Call(Hash.SET_PLAYER_MODEL, Game.Player, model.Hash);

            model.MarkAsNoLongerNeeded();
        }
Пример #12
0
        /// <summary>
        ///     Create the laptop prop that we'll use for hacking.
        /// </summary>
        public void CreateLaptop()
        {
            var m = new Model("p_cs_laptop_02");

            if (!m.IsLoaded)
            {
                m.Request(5000);
            }
            _laptop = World.CreateProp(m, LaptopPosition, LaptopRotation, false, false);
            m.MarkAsNoLongerNeeded();
        }
Пример #13
0
 private string spawnWindTurbine()
 {
     var model = new Model(1952396163);
     model.Request(250);
     if (!model.IsInCdImage || !model.IsValid)
         NativeWorkbench.Str[0] = "Not a Valid Model";
     while (!model.IsLoaded)
         Script.Wait(50);
     World.CreateProp(new Model(1952396163), Game.Player.Character.GetOffsetInWorldCoords(new Vector3(0, 20, 0)), true, true);
     model.MarkAsNoLongerNeeded();
     NativeWorkbench.Str[0] = "done";
     return NativeWorkbench.Str[0];
 }
Пример #14
0
        internal async Task <Vehicle> SpawnCar(string veh, dynamic coords)
        {
            Model hash = Game.GenerateHash(veh);

            if (String.IsNullOrEmpty(veh))
            {
                Screen.ShowNotification("Vehicle not found please try again");
                return(null);
            }
            if (!VCF.ELSVehicle.ContainsKey(hash))
            {
                Screen.ShowNotification("Vehicle not ELS please try again");
                return(null);
            }
            if (Game.PlayerPed.IsInVehicle())
            {
                if (Game.PlayerPed.CurrentVehicle.IsEls())
                {
                    VehicleManager.vehicleList[Game.PlayerPed.CurrentVehicle.GetNetworkId()].Delete();
                }
                else
                {
                    Game.PlayerPed.CurrentVehicle.Delete();
                }
            }
            CitizenFX.Core.Debug.WriteLine($"Attempting to spawn: {veh}");
            var polModel = new Model((VehicleHash)hash);
            await polModel.Request(-1);

            Vehicle _veh = new Vehicle(API.CreateVehicle((uint)Game.GenerateHash(veh), coords.x, coords.y + 5f, coords.z, Game.PlayerPed.Heading, true, false));

            VehicleManager.makenetworked(_veh);
            polModel.MarkAsNoLongerNeeded();
            _veh.PlaceOnGround();
            Game.PlayerPed.SetIntoVehicle(_veh, VehicleSeat.Driver);
            polModel.MarkAsNoLongerNeeded();
            return(_veh);
        }
Пример #15
0
 private string propCreate()
 {
     var model = new Model("prop_boogieboard_02");
     model.Request(250);
     if (!model.IsInCdImage || !model.IsValid)
         NativeWorkbench.Str[0] = "Not a Valid Model";
     while (!model.IsLoaded)
         Script.Wait(50);
     var placeAt = Game.Player.Character.GetOffsetInWorldCoords(new Vector3(0, 10, 0));
     World.CreateProp(model, placeAt, true, true);
     model.MarkAsNoLongerNeeded();
     NativeWorkbench.Model[0] = model;
     NativeWorkbench.Str[0] = "done!";
     return NativeWorkbench.Str[0];
 }
Пример #16
0
 public static async Task <Vehicle> CreateVehicle(Model model, Vector3 pos, float heading = 0f, bool networked = true)
 {
     if (API.IsModelAVehicle((uint)model.Hash))
     {
         model.Request();
         while (!model.IsLoaded)
         {
             await BaseScript.Delay(1);
         }
         Vehicle vehicle = new Vehicle(API.CreateVehicle((uint)model.Hash, pos.X, pos.Y, pos.Z, heading, networked, false));
         model.MarkAsNoLongerNeeded();
         return(vehicle);
     }
     return(null);
 }
Пример #17
0
        private async Task <Vehicle> spawnTruckTrailer()
        {
            var vehModel = new Model(trailerHash);

            while (!vehModel.IsLoaded)
            {
                await vehModel.Request(0);
            }

            var veh = await World.CreateVehicle(vehModel, VehicleSpawnLocation, VehicleSpawnHeading);

            vehModel.MarkAsNoLongerNeeded();

            return(veh);
        }
Пример #18
0
 public static async Task <Ped> CreatePed(Model model, PedType pedType, Vector3 pos, float heading = 0f, bool networked = true)
 {
     if (API.IsModelAPed((uint)model.Hash))
     {
         model.Request();
         while (!model.IsLoaded)
         {
             await BaseScript.Delay(1);
         }
         Ped ped = new Ped(API.CreatePed((int)pedType, (uint)model.Hash, pos.X, pos.Y, pos.Z, heading, networked, false));
         model.MarkAsNoLongerNeeded();
         return(ped);
     }
     return(null);
 }
Пример #19
0
        public static Ped Create(Model m, Vector3 v3)
        {
            if (m.IsInCdImage && m.IsValid && !v3.Equals(Vector3.Zero))
            {
                Ped p = World.CreatePed(m, v3);
                Script.Wait(50);
                m.MarkAsNoLongerNeeded();

                if (ThereIs(p))
                {
                    return(p);
                }
            }

            return(null);
        }
Пример #20
0
        public void Cleanup()
        {
            if (currentProp != null)
            {
                currentProp.Delete();
            }

            if (currentPropModel != new Model())
            {
                currentPropModel.MarkAsNoLongerNeeded();
            }

            currentProp       = null;
            currentPropModel  = new Model();
            needsToReloadProp = false;
        }
Пример #21
0
        public void SpawnVehicle()
        {
            Model model = new Model(vehicleJson.Hash);

            model.Request(500);
            if (model.IsInCdImage && model.IsValid)
            {
                while (!model.IsLoaded)
                {
                    Wait(100);
                }
                Debug.Log("Vehicle model has loaded!");

                vehicle                       = World.CreateVehicle(model, new Vector3(vehicleJson.X, vehicleJson.Y, vehicleJson.Z), vehicleJson.Heading);
                vehicle.HealthFloat           = vehicleJson.Health;
                vehicle.BodyHealth            = vehicleJson.BodyHealth;
                vehicle.EngineHealth          = vehicleJson.EngineHealth;
                vehicle.PetrolTankHealth      = vehicleJson.PetrolTankHealth;
                vehicle.IsStolen              = vehicleJson.IsStolen;
                vehicle.IsSirenActive         = vehicleJson.IsSirenActive;
                vehicle.IsEngineRunning       = true;
                vehicle.IsInteriorLightOn     = vehicleJson.IsInteriorLightOn;
                vehicle.AreLightsOn           = vehicleJson.AreLightsOn;
                vehicle.LockStatus            = vehicleJson.LockStatus;
                vehicle.Mods.PrimaryColor     = vehicleJson.PrimaryColor;
                vehicle.Mods.SecondaryColor   = vehicleJson.SecondaryColor;
                vehicle.Mods.ColorCombination = vehicleJson.ColorCombination;
                vehicle.Mods.Livery           = vehicleJson.Livery;
                vehicle.Mods.LicensePlate     = vehicleJson.LicensePlate;
                Function.Call(Hash.SET_VEH_RADIO_STATION, vehicle, vehicleJson.RadioStation);
                Function.Call(Hash.SET_RADIO_TO_STATION_NAME, vehicleJson.RadioStation);
                vehicle.Mods.RimColor       = vehicleJson.RimColor;
                vehicle.Mods.DashboardColor = vehicleJson.DashboardColor;
                vehicle.Mods.TireSmokeColor = vehicleJson.TireSmokeColor;

                Debug.Log("Vehicle spawned!");

                model.RequestCollision(500);
                while (!model.IsCollisionLoaded)
                {
                    Wait(100);
                }
                Debug.Log("Vehicle collision has loaded!");

                model.MarkAsNoLongerNeeded();
            }
        }
Пример #22
0
        private void CreateVehicle(MapObject mapObject, Model model)
        {
            var vehicle = World.CreateVehicle(model, mapObject.Position);

            if (!Entity.Exists(vehicle))
            {
                return;
            }
            vehicle.Rotation       = mapObject.Rotation;
            vehicle.Quaternion     = mapObject.Quaternion;
            vehicle.PrimaryColor   = (VehicleColor)mapObject.PrimaryColor;
            vehicle.SecondaryColor = (VehicleColor)mapObject.SecondaryColor;
            vehicle.FreezePosition = !mapObject.Dynamic;
            vehicle.SirenActive    = mapObject.SirensActive;
            model.MarkAsNoLongerNeeded();
            Vehicles.Add(vehicle);
        }
Пример #23
0
        public Prop CreateObject(Model model, Vector3 position, Vector3 rotation, bool dynamic, int netHash)
        {
            if (model == null)
            {
                LogManager.DebugLog("Model was null?");
                return(null);
            }

            int counter = 0;
            var sc      = new Scaleform(0);

            sc.Load("instructional_buttons");
            sc.CallFunction("CLEAR_ALL");
            sc.CallFunction("TOGGLE_MOUSE_BUTTONS", 0);
            sc.CallFunction("CREATE_CONTAINER");
            sc.CallFunction("SET_DATA_SLOT", 0, "b_50", "Loading Model");
            sc.CallFunction("DRAW_INSTRUCTIONAL_BUTTONS", -1);
            while (!model.IsLoaded && counter < 500)
            {
                model.Request();
                Script.Yield();
                counter++;
                sc.Render2D();
            }

            var veh = new Prop(Function.Call <int>(Hash.CREATE_OBJECT_NO_OFFSET, model.Hash, position.X, position.Y, position.Z, true, true, dynamic));

            veh.Rotation    = rotation;
            veh.Position    = position;
            veh.LodDistance = 3000;

            if (!dynamic)
            {
                veh.FreezePosition = true;
            }

            lock (HandleMap)
                if (!HandleMap.Reverse.ContainsKey(veh.Handle))
                {
                    HandleMap.Reverse.Add(veh.Handle, netHash);
                }

            model.MarkAsNoLongerNeeded();
            return(veh);
        }
Пример #24
0
        private void OnAborted(object sender, EventArgs eventArgs)
        {
            // reset any peds that were arrested by the player
            // so that they can return to their 64bit lives.
            ResetPeds();

            // remove the animations from memory.
            RemoveAnimsFromMem();

            // also remove the models from memory.
            if (_prisonCellModel != null)
            {
                _prisonCellModel.MarkAsNoLongerNeeded();
            }

            // remove the ingame map if it exists.
            _inGameMap?.Remove();
        }
Пример #25
0
 public static async Task <Prop> CreateProp(Model model, Vector3 pos, bool dynamic, bool placeOnGround = false, bool networked = true)
 {
     if (API.IsModelValid((uint)model.Hash))
     {
         model.Request();
         while (!model.IsLoaded)
         {
             await BaseScript.Delay(1);
         }
         if (placeOnGround)
         {
             pos.Z = World.GetGroundHeight(pos);
         }
         Prop prop = new Prop(API.CreateObjectNoOffset((uint)model.Hash, pos.X, pos.Y, pos.Z, networked, false, dynamic));
         model.MarkAsNoLongerNeeded();
         return(prop);
     }
     return(null);
 }
Пример #26
0
        void LoadModel(int ModelHash)
        {
            var characterModel = new Model(ModelHash);

            characterModel.Request(500);
            if (characterModel.IsInCdImage && characterModel.IsValid)
            {
                // If the model isn't loaded, wait until it is
                while (!characterModel.IsLoaded)
                {
                    Yield();
                }

                // Set the player's model
                Function.Call(Hash.SET_PLAYER_MODEL, Game.Player, characterModel.Hash);
                Function.Call(Hash.SET_PED_DEFAULT_COMPONENT_VARIATION, Game.Player.Character.Handle);
                characterModel.MarkAsNoLongerNeeded();
            }
        }
Пример #27
0
        private void CreateProp(MapObject mapObject, Model model)
        {
            var prop = new Prop(Function.Call <int>(Hash.CREATE_OBJECT_NO_OFFSET, model.Hash, mapObject.Position.X,
                                                    mapObject.Position.Y, mapObject.Position.Z, true, true, mapObject.Dynamic));

            if (!Entity.Exists(prop))
            {
                return;
            }
            prop.Rotation = mapObject.Rotation;
            if (!mapObject.Dynamic && !mapObject.Door)
            {
                prop.FreezePosition = true;
            }
            prop.Quaternion = mapObject.Quaternion;
            prop.Position   = mapObject.Position;
            model.MarkAsNoLongerNeeded();
            Props.Add(prop);
        }
Пример #28
0
        internal async Task <Vehicle> SpawnCar(string veh)
        {
            Model hash = Game.GenerateHash(veh);

            if (String.IsNullOrEmpty(veh))
            {
                Screen.ShowNotification("Vehicle not found please try again");
                return(null);
            }
            if (!VCF.ELSVehicle.ContainsKey(hash))
            {
                Screen.ShowNotification("Vehicle not ELS please try again");
                return(null);
            }
            if (Game.PlayerPed.IsInVehicle())
            {
                if (Game.PlayerPed.CurrentVehicle.IsEls())
                {
                    if (VehicleManager.vehicleList.ContainsKey(Game.PlayerPed.CurrentVehicle.GetNetworkId()))
                    {
                        VehicleManager.vehicleList[Game.PlayerPed.CurrentVehicle.GetNetworkId()].Delete();
                    }
                    else
                    {
                        Game.PlayerPed.CurrentVehicle.Delete();
                    }
                }
                else
                {
                    Game.PlayerPed.CurrentVehicle.Delete();
                }
            }
            CitizenFX.Core.Debug.WriteLine($"Attempting to spawn: {veh}");
            var polModel = new Model((VehicleHash)hash);
            await polModel.Request(-1);

            Vehicle _veh = await World.CreateVehicle(polModel, Game.PlayerPed.Position + new Vector3(0f, 5f, 0f));

            Game.PlayerPed.SetIntoVehicle(_veh, VehicleSeat.Driver);
            polModel.MarkAsNoLongerNeeded();
            return(_veh);
        }
Пример #29
0
        protected virtual async Task <Vehicle> CreateJobVehicle(VehicleHash hash, Vector3 location, float heading)
        {
            var vehModel = new Model(hash);

            while (!vehModel.IsLoaded)
            {
                await vehModel.Request(0);
            }

            JobVehicle = await World.CreateVehicle(vehModel, location, heading);

            JobVehicle.PlaceOnGround();
            JobVehicle.LockStatus   = VehicleLockStatus.Unlocked;
            JobVehicle.IsPersistent = true;
            JobVehicle.Mods.Livery  = 1;
            Game.PlayerPed.Task.WarpIntoVehicle(JobVehicle, VehicleSeat.Driver);
            Client.Instance.TriggerServerEvent("Vehicle.CreateExternalVehicle", VehicleDataPacker.PackVehicleData(JobVehicle), true);
            vehModel.MarkAsNoLongerNeeded();

            return(JobVehicle);
        }
Пример #30
0
        private void CreatePed(MapObject mapObject, Model model)
        {
            var ped = new Ped(
                World.CreatePed(model, mapObject.Position - Vector3.WorldUp, mapObject.Rotation.Z)?.Handle ?? 0);

            if (!mapObject.Dynamic)
            {
                ped.FreezePosition = true;
            }

            ped.Quaternion = mapObject.Quaternion;
            if (mapObject.Weapon != null)
            {
                ped.Weapons.Give(mapObject.Weapon.Value, 15, true, true);
            }
            SetScenario(mapObject, ped);
            if (Enum.TryParse(mapObject.Relationship, out Relationship relationship))
            {
                if (relationship == Relationship.Hate)
                {
                    ped.RelationshipGroup = Game.GenerateHash("HATES_PLAYER");
                }

                World.SetRelationshipBetweenGroups(relationship, ped.RelationshipGroup,
                                                   Game.Player.Character.RelationshipGroup);

                World.SetRelationshipBetweenGroups(relationship, Game.Player.Character.RelationshipGroup,
                                                   ped.RelationshipGroup);

                if (relationship == Relationship.Companion)
                {
                    ped.CanBeTargetted    = false;
                    ped.RelationshipGroup = Game.Player.Character.RelationshipGroup;
                }
            }

            ped.BlockPermanentEvents = false;
            model.MarkAsNoLongerNeeded();
            Peds?.Add(ped);
        }
Пример #31
0
        private void ReadSetPlayerModelPacket(NetIncomingMessage netIncomingMessage)
        {
            int playerId = netIncomingMessage.ReadInt32();
            uint modelId = (uint)netIncomingMessage.ReadInt32();

            foreach (NetworkPlayer serverNetworkPlayer in Players) {
                if (serverNetworkPlayer.PlayerID == playerId) {
                    serverNetworkPlayer.Model = modelId;

                    var characterModel = new Model((PedHash)serverNetworkPlayer.Model);
                    characterModel.Request(500);

                    if (serverNetworkPlayer.LocalPlayer) {
                        // Check the model is valid
                        if (characterModel.IsInCdImage && characterModel.IsValid) {
                            // If the model isn't loaded, wait until it is
                            while (!characterModel.IsLoaded) Script.Wait(100);

                            // Set the player's model
                            Function.Call(Hash.SET_PLAYER_MODEL, Game.Player, characterModel.Hash);
                            Function.Call(Hash.SET_PED_DEFAULT_COMPONENT_VARIATION, Game.Player.Character.Handle);
                        }

                        Main.ChatBox.Add("DEBUG: Model has been set to: " + modelId);
                    }

                    // We don't want to do ped things on our own player, because we don't have our own physical ped
                    if (Main.CloneSync || GetLocalPlayer().PlayerID != playerId) {
                        SetPlayerPed(serverNetworkPlayer, serverNetworkPlayer.Model);
                        //Function.Call(Hash.SET_PLAYER_MODEL, serverNetworkPlayer.Ped, serverNetworkPlayer.Model);
                    }

                    // Delete the model from memory after we've assigned it
                    characterModel.MarkAsNoLongerNeeded();
                }
            }
        }
Пример #32
0
        public void prison_controle_Tick()
        {
            if (arrested)
            {
                stop_scripts();
            }
            if (inprison)
            {
                stop_scripts();
                if (Game.Player.Character.Position.DistanceTo(new Vector3(1752.894f, 2592.242f, 45.56502f)) < 1f)
                {
                    arrested = true;

                    escape = false;
                    Function.Call(Hash.ENABLE_ALL_CONTROL_ACTIONS, new InputArgument[] { 1 });
                    Game.FadeScreenOut(0x9c4);
                    Game.Player.Character.Weapons.RemoveAll();
                    while (!Function.Call<bool>(Hash.IS_SCREEN_FADED_OUT, new InputArgument[0]))
                    {
                        stop_scripts();
                        Script.Wait(0);
                    }
                    Game.Player.Character.Position = new Vector3(1617.643f, 2523.981f, 45.56489f);
                    Game.Player.Character.Heading = 264.718f;
                    clothes_changer();
                    Game.FadeScreenIn(0x9c4);
                    Game.Player.CanControlCharacter = true;
                    Function.Call(Hash.SET_ENABLE_HANDCUFFS, new InputArgument[] { Game.Player.Character, 0 });
                    Function.Call(Hash.SET_ENABLE_BOUND_ANKLES, new InputArgument[] { Game.Player.Character, 0 });
                    int num = 0x7ea26372;
                    int num2 = Function.Call<int>(Hash.GET_PED_RELATIONSHIP_GROUP_HASH, new InputArgument[] { Game.Player.Character });
                    Function.Call(Hash.CLEAR_RELATIONSHIP_BETWEEN_GROUPS, new InputArgument[] { 0xff, num, num2 });
                    Function.Call(Hash.CLEAR_RELATIONSHIP_BETWEEN_GROUPS, new InputArgument[] { 0xff, num2, num });
                    Function.Call(Hash.SET_RELATIONSHIP_BETWEEN_GROUPS, new InputArgument[] { 1, num, num2 });
                    bail = World.CreateBlip(new Vector3(1691.709f, 2565.036f, 45.56487f));
                    bail.Color = BlipColor.White;
                    Function.Call(Hash.SET_CLOCK_TIME, new InputArgument[] { 13, 0, 0 });
                    roit = World.CreateBlip(escape_Ped.Position);
                    roit.Sprite = BlipSprite.DollarSign;
                    _headsup = new UIText(string.Concat(new object[] { "Time: ~b~", hours, ":", minit }), new Point(2, 520), 0.7f, Color.WhiteSmoke, GTA.Font.HouseScript, false);
                    _headsupRectangle = new UIRectangle(new Point(0, 520), new Size(0xd7, 0x41), Color.FromArgb(100, 0, 0, 0));
                    if (police != null)
                    {
                        police.Delete();
                    }
                    if (policecar != null)
                    {
                        policecar.Delete();
                    }
                    inprison = false;
                }
                if ((Game.Player.Character.Position.DistanceTo(new Vector3(1764.323f, 2604.595f, 45.56498f)) < 5f) && (Game.Player.Character.CurrentVehicle == policecar))
                {
                    Game.Player.Character.Task.GoTo(new Vector3(1752.894f, 2592.242f, 45.56502f));
                }
            }
            if (arrested)
            {

                if (Game.Player.Character.IsDead)
                {
                    respawn.RespawnPlayer(new Vector3(1617.643f, 2523.981f, 45.56489f), 264.718f);
                }

                if (player_status == status.In_roit && Game.GameTime > time +1000)
                {
                    Model mod = new Model(PedHash.Prisoner01);
                    mod.Request();
                    while (!mod.IsLoaded)
                    {
                        stop_scripts();
                        Script.Wait(0);
                    }
                    Ped[] allped = World.GetAllPeds(mod);
                    for (int i = 0; i < allped.Length; i++)
                    {
                        bool find = false;
                        for (int j = 0; j < prisoner.Count; j++)
                            if (prisoner[j] == allped[i])
                                find = true;

                        if (!find)
                            prisoner.Add(allped[i]);
                    }
                    mod.MarkAsNoLongerNeeded();
                    //===================================================
                    mod = new Model(PedHash.Prisoner01SMY);
                    mod.Request();
                    while (!mod.IsLoaded)
                    {
                        stop_scripts();
                        Script.Wait(0);
                    }
                    allped = World.GetAllPeds(mod);
                    for (int i = 0; i < allped.Length; i++)
                    {
                        bool find = false;
                        for (int j = 0; j < prisoner.Count; j++)
                            if (prisoner[j] == allped[i])
                                find = true;

                        if (!find)
                            prisoner.Add(allped[i]);
                    }
                    mod.MarkAsNoLongerNeeded();
                    //===================================================
                    mod = new Model(PedHash.Prisguard01SMM);
                    mod.Request();
                    while (!mod.IsLoaded)
                    {
                        stop_scripts();
                        Script.Wait(0);
                    }
                    allped = World.GetAllPeds(mod);
                    for (int i = 0; i < allped.Length; i++)
                    {
                        bool find = false;
                        for (int j = 0; j < garde.Count; j++)
                            if (garde[j] == allped[i])
                                find = true;

                        if (!find)
                            garde.Add(allped[i]);
                    }
                    mod.MarkAsNoLongerNeeded();

                    for (int j = 0; j < prisoner.Count; j++)
                    {
                        GiveWeapons_prisoner(prisoner[j]);
                        prisoner[j].CanSwitchWeapons = true;
                        //Function.Call(Hash.SET_BLOCKING_OF_NON_TEMPORARY_EVENTS, prisoner[j], true);
                    }
                    for (int j = 0; j < garde.Count; j++)
                    {
                        GiveWeapons_Garde(garde[j]);
                        garde[j].CanSwitchWeapons = true;
                       // Function.Call(Hash.SET_BLOCKING_OF_NON_TEMPORARY_EVENTS, garde[j], true);
                    }
                    time = Game.GameTime;
                }

                Function.Call(Hash.SET_MAX_WANTED_LEVEL, new InputArgument[] { 0 });
                stop_scripts();
                int hh = Function.Call<int>(Hash.GET_CLOCK_HOURS, new InputArgument[0]);
                int mm = Function.Call<int>(Hash.GET_CLOCK_MINUTES, new InputArgument[0]);
                if ((hh == 14) && (mm == 0))
                {
                    Function.Call(Hash.SET_CLOCK_TIME, new InputArgument[] { 13, 0, 0 });
                    time = Game.GameTime;
                }
                if (!((mm != 0) || hhh))
                {
                    minit = 0;
                    hours--;
                    hhh = true;
                }
                else if (mm > 0)
                {
                    minit = 60 - mm;
                    hhh = false;
                }
                if ((mm == 0 || mm == 5 || mm == 10 || mm == 15 || mm == 20 || mm == 25 || mm == 30 || mm == 35 || mm == 40 || mm == 45 || mm == 50 || mm == 55 || mm == 60) && !doit)
                {
                    Model mod = new Model(PedHash.Prisoner01);
                    mod.Request();
                    while (!mod.IsLoaded)
                    {
                        stop_scripts();
                        Script.Wait(0);
                    }
                    Ped[] allped = World.GetAllPeds(mod);
                    for (int i = 0; i < allped.Length;i++ )
                    {
                        bool find = false;
                        for (int j = 0; j < prisoner.Count; j++)
                            if (prisoner[j] == allped[i])
                                find = true;

                        if (!find)
                            prisoner.Add(allped[i]);
                    }
                    mod.MarkAsNoLongerNeeded();
                    //===================================================
                     mod = new Model(PedHash.Prisoner01SMY);
                    mod.Request();
                    while (!mod.IsLoaded)
                    {
                        stop_scripts();
                        Script.Wait(0);
                    }
                     allped = World.GetAllPeds(mod);
                    for (int i = 0; i < allped.Length; i++)
                    {
                        bool find = false;
                        for (int j = 0; j < prisoner.Count; j++)
                            if (prisoner[j] == allped[i])
                                find = true;

                        if (!find)
                            prisoner.Add(allped[i]);
                    }
                    mod.MarkAsNoLongerNeeded();
                    //===================================================
                    mod = new Model(PedHash.Prisguard01SMM);
                    mod.Request();
                    while (!mod.IsLoaded)
                    {
                        stop_scripts();
                        Script.Wait(0);
                    }
                    allped = World.GetAllPeds(mod);
                    for (int i = 0; i < allped.Length; i++)
                    {
                        bool find = false;
                        for (int j = 0; j < garde.Count; j++)
                            if (garde[j] == allped[i])
                                find = true;

                        if (!find)
                            garde.Add(allped[i]);
                    }
                    mod.MarkAsNoLongerNeeded();

                        doit = true;
                }
                else if ((mm != 0 && mm != 5 && mm != 10 && mm != 15 && mm != 20 && mm != 25 && mm != 30 && mm != 35 && mm != 40 && mm != 45 && mm != 50 && mm != 55 && mm != 60) && doit)
                {
                    doit = false;
                }

                stop_scripts();
                _headsup = new UIText(string.Concat(new object[] { "Time: ~b~", hours, ":", minit }), new Point(2, 520), 0.7f, Color.WhiteSmoke, GTA.Font.ChaletComprimeCologne, false);
                _headsupRectangle = new UIRectangle(new Point(0, 520), new Size(0xd7, 0x41), Color.FromArgb(100, 0, 0, 0));
                _headsup.Draw();
                _headsupRectangle.Draw();
                if (Game.Player.Character.Position.DistanceTo(new Vector3(1691.709f, 2565.036f, 45.56487f)) < 2f)
                {
                    UI.Notify("press [E] to bail : ~g~ " + 0x4c4b40 + "~w~$");
                }
                else if (Game.Player.Character.Position.DistanceTo(new Vector3(1625.474f, 2491.485f, 45.62026f)) < 4f)
                {
                    UI.Notify("press [E] to escape for : ~g~ " + 0x4c4b40 + "~w~$");
                    UI.Notify("press [Y] to make roit for : ~g~ " + 0x4c4b40 + "~w~$");
                }
                if ((hours == 0) && (minit == 0))
                {
                    bail.Remove();
                    roit.Remove();
                    escape_Ped.MarkAsNoLongerNeeded();
                    Game.Player.Character.Position = new Vector3(1849.555f, 2586.085f, 45.67202f);
                    Game.Player.Character.Heading = 258.4564f;
                    Function.Call(Hash.SET_MAX_WANTED_LEVEL, new InputArgument[] { 5 });
                    Function.Call(Hash.PAUSE_CLOCK, new InputArgument[] { 0 });
                    arrested = false;
                    _headsup = null;
                    _headsupRectangle = null;
                }
            }
        }
Пример #33
0
        private static void SpawnProp(String prop, Vector3 position)
        {
            var model = new Model(prop);
            model.Request(250);

            // Check the model is valid
            if (model.IsInCdImage && model.IsValid)
            {
                // Ensure the model is loaded before we try to create it in the world
                while (!model.IsLoaded)
                {
                    Script.Wait(50);
                }

                // Create the prop in the world
                backpack = World.CreateProp(model, position, true, false);

            }

            // Mark the model as no longer needed to remove it from memory.
            model.MarkAsNoLongerNeeded();
        }
Пример #34
0
        public static void SetModel(PedHash pedhash)
        {
            var characterModel = new Model(pedhash);
            characterModel.Request(500);

            // Check the model is valid
            if (characterModel.IsInCdImage && characterModel.IsValid)
            {
                // If the model isn't loaded, wait until it is
                while (!characterModel.IsLoaded) Script.Wait(100);

                // Set the player's model
                Function.Call(Hash.SET_PLAYER_MODEL, Game.Player, characterModel.Hash);
                Function.Call(Hash.SET_PED_DEFAULT_COMPONENT_VARIATION, Game.Player.Character.Handle);
            }

            // Delete the model from memory after we've assigned it
            characterModel.MarkAsNoLongerNeeded();
        }
Пример #35
0
        /// <summary>
        /// Reset old player model
        /// </summary>
        public void resetPlayerModel()
        {
            bool playerWasDead = false;
            bool playerWasArrested = false;
            Ped player = Game.Player.Character;
            if ((PedHash)player.Model.Hash != DemagoScript.savedPlayerModelHash)
            {
                Vehicle currentVehicle = null;
                if (player.IsInVehicle())
                {
                    currentVehicle = player.CurrentVehicle;
                }

                if (player.IsDead || Function.Call<bool>(Hash.IS_PLAYER_BEING_ARRESTED, Game.Player, false))
                {
                    #region Create remplacement ped
                    Ped replacementPed = Function.Call<Ped>(Hash.CLONE_PED, Game.Player.Character, Function.Call<int>(Hash.GET_ENTITY_HEADING, Function.Call<int>(Hash.PLAYER_PED_ID)), false, true);

                    if (player.IsDead)
                    {
                        playerWasDead = true;
                        replacementPed.Kill();
                    }
                    else
                    {
                        playerWasArrested = true;
                        replacementPed.Task.HandsUp(10000);
                    }

                    replacementPed.MarkAsNoLongerNeeded();
                    #endregion
                }

                #region Change player model with saved PedHash
                var characterModel = new Model(DemagoScript.savedPlayerModelHash);
                characterModel.Request(500);

                if (characterModel.IsInCdImage && characterModel.IsValid)
                {
                    while (!characterModel.IsLoaded) Script.Wait(100);

                    Function.Call(Hash.SET_PLAYER_MODEL, Game.Player, characterModel.Hash);
                    Function.Call(Hash.SET_PED_DEFAULT_COMPONENT_VARIATION, Game.Player.Character.Handle);
                }

                characterModel.MarkAsNoLongerNeeded();
                #endregion

                player = Game.Player.Character;
                if (currentVehicle != null)
                {
                    player.SetIntoVehicle(currentVehicle, VehicleSeat.Driver);
                }

                if ((playerWasDead || playerWasArrested) && DemagoScript.isThereACurrentMission())
                {
                    #region Hide real player and wait for game recovery
                    player.IsVisible = false;
                    player.IsInvincible = true;
                    player.Task.StandStill(-1);

                    //Tant qu'on charge le jeu, on fait attendre le script GTA Démago
                    while (!Function.Call<bool>(Hash.IS_PLAYER_PLAYING, Game.Player))
                    {
                        Script.Wait(100);
                    }

                    player.IsVisible = true;
                    player.IsInvincible = false;
                    #endregion

                    while (!Function.Call<bool>(Hash.IS_PLAYER_CONTROL_ON, Game.Player))
                    {
                        Script.Wait(100);
                    }

                    #region Show death or arrested popups
                    var title = (playerWasDead) ? "Vous êtes mort" : "Vous vous êtes fait arrêter";
                    var subtitle = "Voulez-vous revenir au dernier checkpoint ?";

                    ConfirmationPopup checkpointPopup = new ConfirmationPopup(title, subtitle);
                    checkpointPopup.OnPopupAccept += () =>
                    {

                        DemagoScript.loadLastCheckpointOnCurrentMission();
                    };
                    checkpointPopup.OnPopupRefuse += () =>
                    {
                        DemagoScript.stopCurrentMission(true);
                    };
                    checkpointPopup.show();
                    #endregion
                }
            }
        }
Пример #36
0
 public void ChangePlayerModel(PedHash hash)
 {
     var model = new Model(hash);
     // only in recent script hook
     /*
     if (!Game.Player.ChangeModel(model))
     {
         UI.Notify("could not request model");
     }
     */
     if (!model.IsInCdImage || !model.IsPed || !model.Request(1000))
     {
         UI.Notify("could not request model");
     }
     else
     {
         Function.Call(Hash.SET_PLAYER_MODEL, Game.Player, model.Hash);
         Function.Call(Hash.SET_PED_DEFAULT_COMPONENT_VARIATION, Game.Player.Character.Handle);
         if (hash == PedHash.FreemodeMale01 || hash == PedHash.FreemodeFemale01)
         {
             // must call SET_PED_HEAD_BLEND_DATA otherwise head overlays don't work
             var slot_key = new SlotKey(SlotType.Parent, 0);
             var slot_value = new SlotValue(0, 0, 4, 4);
             var ped = Game.Player.Character;
             SetSlotValue(ped, slot_key, slot_value);
         }
         data.Clear();
     }
     model.MarkAsNoLongerNeeded();
 }
Пример #37
0
        public void ReadInitializationPacket(NetIncomingMessage netIncomingMessage)
        {
            int playerId = netIncomingMessage.ReadInt32();
            float posX = netIncomingMessage.ReadFloat();
            float posY = netIncomingMessage.ReadFloat();
            float posZ = netIncomingMessage.ReadFloat();
            bool safeForNet = netIncomingMessage.ReadBoolean();

            // Sets actual playerid
            CreateNetworkPlayer(playerId, posX, posY, posZ, true);

            // Changes the physical location
            Vector3 position = new Vector3(posX, posY, posZ);
            Game.Player.Character.Position = position;

            // Removes all weapons from player
            Game.Player.Character.Weapons.RemoveAll();

            // Set default server synchronized player model
            var characterModel = new Model(PedHash.Brad);
            characterModel.Request(500);

            // Check the model is valid
            if (characterModel.IsInCdImage && characterModel.IsValid) {
                // If the model isn't loaded, wait until it is
                while (!characterModel.IsLoaded) Script.Wait(100);

                // Set the player's model
                Function.Call(Hash.SET_PLAYER_MODEL, Game.Player, characterModel.Hash);
                Function.Call(Hash.SET_PED_DEFAULT_COMPONENT_VARIATION, Game.Player.Character.Handle);

                GetLocalPlayer().Model = (uint)PedHash.Brad;
            }

            // Delete the model from memory after we've assigned it
            characterModel.MarkAsNoLongerNeeded();

            Main.ChatBox.Add("(internal) Allocated PlayerID: " + GetLocalPlayer().PlayerID);
            //Main.ChatBox.Add("(internal) Packet data: " + receivedPacket + ", " + playerId + ", " + posX + ", " + posY + ", " + posZ + ", " + safeForNet);

            WorldRelationship = World.AddRelationshipGroup("AMP_PED");
            World.SetRelationshipBetweenGroups(Relationship.Companion, WorldRelationship, Game.Player.Character.RelationshipGroup); // Make the opposing party ally us (no fleeing)
            World.SetRelationshipBetweenGroups(Relationship.Neutral, Game.Player.Character.RelationshipGroup, WorldRelationship);

            // Sets safe for net flag
            SafeForNet = safeForNet;
        }
Пример #38
0
        void Onkeyup(object sender, KeyEventArgs e)
        {
            if ((e.KeyCode == Keys.F12) && (Game.Player.WantedLevel > 1))
            {
            hours = 10 + (Game.Player.WantedLevel * 10);
            Game.Player.WantedLevel = 0;
            intial1();
            }
            if ((e.KeyCode == Keys.E) && arrested)
            {
            if ((Game.Player.Character.Position.DistanceTo(new Vector3(1691.709f, 2565.036f, 45.56487f)) < 2f) && (Game.Player.Money > 0x4c4b40))
            {
                bail.Remove();
                roit.Remove();
                Game.Player.Character.Position = new Vector3(1849.555f, 2586.085f, 45.67202f);
                Game.Player.Character.Heading = 258.4564f;
                Player player = Game.Player;
                player.Money -= 0x4c4b40;
                Function.Call(Hash.SET_MAX_WANTED_LEVEL, 5 );
                Function.Call(Hash.SET_PED_DEFAULT_COMPONENT_VARIATION, Game.Player.Character);
                arrested = false;
                _headsup = null;
                _headsupRectangle = null;
            }
            if ((Game.Player.Character.Position.DistanceTo(new Vector3(1625.474f, 2491.485f, 45.62026f)) < 4f) && !escape)
            {
                stop_scripts();
                bail.Remove();
                roit.Remove();
                Player player2 = Game.Player;
                player2.Money -= 0x4c4b40;
                stop_scripts();
                arrested = false;
                _headsup = null;
                _headsupRectangle = null;

                Model mod = new Model(VehicleHash.Valkyrie);
                mod.Request();
                while (!mod.IsLoaded)
                {
                    stop_scripts();
                    Script.Wait(0);
                }
                escape_veh3 = World.CreateVehicle(mod, new Vector3(-1179.25f, -2845.386f, 13.5665f));
                escape_veh3.Heading = 325.6199f;
                escape_veh3.IsPersistent = true;
                mod.MarkAsNoLongerNeeded();
                //============================================================================================================
                mod = new Model(VehicleHash.Comet2);
                mod.Request();
                while (!mod.IsLoaded)
                {
                    stop_scripts();
                    Script.Wait(0);
                }
                escape_veh1 = World.CreateVehicle(mod, new Vector3(-1729.416f, -1109.523f, 12.7468f));
                escape_veh1.Heading = 321.1888f;
                escape_veh1.IsPersistent = true;
                mod.MarkAsNoLongerNeeded();
                //===========================================================================================================
                mod = new Model(VehicleHash.Insurgent2);
                mod.Request();
                while (!mod.IsLoaded)
                {
                    stop_scripts();
                    Script.Wait(0);
                }
                escape_veh2 = World.CreateVehicle(mod, new Vector3(1373.179f, -2077.577f, 51.6181f));
                escape_veh2.Heading = 332.3142f;
                escape_veh2.IsPersistent = true;
                mod.MarkAsNoLongerNeeded();

                int hash = Function.Call<int>(Hash.GET_ENTITY_MODEL, new InputArgument[] { Game.Player.Character });
                if (hash == Function.Call<int>(Hash.GET_HASH_KEY, new InputArgument[] { "player_zero" }))    //m
                {
                    mod = new Model(PedHash.Franklin);
                    mod.Request();
                    while (!mod.IsLoaded)
                    {
                        stop_scripts();
                        Script.Wait(0);
                    }
                    escape_ped1 = World.CreatePed(mod, new Vector3(-1726.644f, -1112.538f, 13.2474f));
                    escape_ped1.Heading = 42.1536f;
                    escape_ped1.IsPersistent = true;
                    mod.MarkAsNoLongerNeeded();

                    mod = new Model(PedHash.Trevor);
                    mod.Request();
                    while (!mod.IsLoaded)
                    {
                        stop_scripts();
                        Script.Wait(0);
                    }
                    escape_ped2 = World.CreatePed(mod, new Vector3(1376.8f, -2076.873f, 51.9985f));
                    escape_ped2.Heading = 47.19263f;
                    escape_ped2.IsPersistent = true;
                    mod.MarkAsNoLongerNeeded();

                }
                else if (hash == Function.Call<int>(Hash.GET_HASH_KEY, new InputArgument[] { "player_one" })) //f
                {
                    mod = new Model(PedHash.Michael);
                    mod.Request();
                    while (!mod.IsLoaded)
                    {
                        stop_scripts();
                        Script.Wait(0);
                    }
                    escape_ped1 = World.CreatePed(mod, new Vector3(-1726.644f, -1112.538f, 13.2474f));
                    escape_ped1.Heading = 42.1536f;
                    escape_ped1.IsPersistent = true;
                    mod.MarkAsNoLongerNeeded();

                    mod = new Model(PedHash.Trevor);
                    mod.Request();
                    while (!mod.IsLoaded)
                    {
                        stop_scripts();
                        Script.Wait(0);
                    }
                    escape_ped2 = World.CreatePed(mod, new Vector3(1376.8f, -2076.873f, 51.9985f));
                    escape_ped2.Heading = 47.19263f;
                    escape_ped2.IsPersistent = true;
                    mod.MarkAsNoLongerNeeded();
                }
                else if (hash == Function.Call<int>(Hash.GET_HASH_KEY, new InputArgument[] { "player_two" }))//tr
                {
                    mod = new Model(PedHash.Michael);
                    mod.Request();
                    while (!mod.IsLoaded)
                    {
                        stop_scripts();
                        Script.Wait(0);
                    }
                    escape_ped1 = World.CreatePed(mod, new Vector3(-1726.644f, -1112.538f, 13.2474f));
                    escape_ped1.Heading = 42.1536f;
                    escape_ped1.IsPersistent = true;
                    mod.MarkAsNoLongerNeeded();

                    mod = new Model(PedHash.Franklin);
                    mod.Request();
                    while (!mod.IsLoaded)
                    {
                        stop_scripts();
                        Script.Wait(0);
                    }
                    escape_ped2 = World.CreatePed(mod, new Vector3(1376.8f, -2076.873f, 51.9985f));
                    escape_ped2.Heading = 47.19263f;
                    escape_ped2.IsPersistent = true;
                    mod.MarkAsNoLongerNeeded();
                }
                original_ped = Game.Player.Character;

                Game.FadeScreenOut(3000);
                while (!Function.Call<bool>(Hash.IS_SCREEN_FADED_OUT))
                    Script.Wait(0);
                Function.Call(Hash.CHANGE_PLAYER_PED, Game.Player, escape_ped1, 1, 0);
                Game.FadeScreenIn(3000);
                while (!Function.Call<bool>(Hash.IS_SCREEN_FADED_IN))
                    Script.Wait(0);
                current_ped = 1;
                vehb = escape_veh1.AddBlip();
                vehb.Color = BlipColor.Blue;
                UI.ShowSubtitle("Get in the ~b~ Vehicle",3000);
                steps = 0;

                player_status = status.In_escape;
                Function.Call(Hash.SET_MAX_WANTED_LEVEL,  5);

                escape = true;
            }
            }
            if (e.KeyCode == Keys.E && steps == 5)
            {
            if (current_ped == 1)
            {
                Function.Call(Hash.CHANGE_PLAYER_PED, Game.Player, escape_ped2, 1, 0);
                //drive task

                current_ped = 2;
            }
            else
            {
                Function.Call(Hash.CHANGE_PLAYER_PED, Game.Player, escape_ped1, 1, 0);
                //shot task
                escape_ped2.Task.FightAgainstHatedTargets(150f);
                escape_ped2.AlwaysKeepTask = true;
                current_ped = 1;
            }
            }
            if (((e.KeyCode == Keys.Y) && arrested) && (Game.Player.Character.Position.DistanceTo(escape_Ped.Position) < 4f))
            {
            time = Game.GameTime;
            int i;
            for (i = 0; i < prisoner.Count; i++)
            {
                GiveWeapons_prisoner(prisoner[i]);
                prisoner[i].CanSwitchWeapons = true;

            }
            for (i = 0; i < garde.Count; i++)
            {
                GiveWeapons_Garde(garde[i]);
                garde[i].CanSwitchWeapons = true;
                //Function.Call(Hash.SET_BLOCKING_OF_NON_TEMPORARY_EVENTS, garde[i], true);

            }
            GiveWeapons_prisoner(Game.Player.Character);
            Player player3 = Game.Player;
            player3.Money -= 0x4c4b40;
            Function.Call(Hash.SET_RELATIONSHIP_BETWEEN_GROUPS, new InputArgument[] { 5, 0x7ea26372, -183807561 });
            Function.Call(Hash.SET_RELATIONSHIP_BETWEEN_GROUPS, new InputArgument[] { 5, -183807561, 0x7ea26372 });
            }

            if (((e.KeyCode == Keys.E) && (player_status == status.In_road)) && !sciped)
            {
            try
            {
                Game.FadeScreenOut(3000);
                while (!Function.Call<bool>(Hash.IS_SCREEN_FADED_OUT))
                {
                    Script.Wait(0);
                }

                policecar.Position = new Vector3(2124.503f, 2760.919f, 49.1893f);
                policecar.Heading = 130.5902f;

                Game.FadeScreenIn(3000);
                sciped = true;
            }
            catch (Exception ex)
            {
                SimpleLog.Error(ex);
                throw;
            }

            }
        }
Пример #39
0
        // Funtion to set Player Model
        // Menu Functions End ---------- Don't Mess with Them
        private void SetPlayerModel()
        {
            Game.FadeScreenOut(250);
            Wait(250);
            if (active == true)
            {
                playermodel = Game.Player.Character.Model;
                var characterModel = new Model(PedHash.Zombie01);
                characterModel.Request(500);

                // Check the model is valid
                if (characterModel.IsInCdImage && characterModel.IsValid)
                {

                    while (!characterModel.IsLoaded) Script.Wait(100);

                    Function.Call(Hash.SET_PLAYER_MODEL, Game.Player, characterModel.Hash);
                    Function.Call(Hash.SET_PED_DEFAULT_COMPONENT_VARIATION, Game.Player.Character.Handle);
                }

                characterModel.MarkAsNoLongerNeeded();
                player = Game.Player.Character;
            }
            else
            {
                playermodel.Request(500);

                // Check the model is valid
                if (playermodel.IsInCdImage && playermodel.IsValid)
                {

                    while (!playermodel.IsLoaded) Script.Wait(100);

                    Function.Call(Hash.SET_PLAYER_MODEL, Game.Player, playermodel.Hash);
                    Function.Call(Hash.SET_PED_DEFAULT_COMPONENT_VARIATION, Game.Player.Character.Handle);
                }
                playermodel.MarkAsNoLongerNeeded();
                player = Game.Player.Character;
            }
            Game.FadeScreenIn(250);
        }