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(); }
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(); }
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); }
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); }
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(); }
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(); }
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(); }
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(); }
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(); }
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(); }
/// <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(); }
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]; }
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); }
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]; }
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); }
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); }
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); }
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); }
public void Cleanup() { if (currentProp != null) { currentProp.Delete(); } if (currentPropModel != new Model()) { currentPropModel.MarkAsNoLongerNeeded(); } currentProp = null; currentPropModel = new Model(); needsToReloadProp = false; }
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(); } }
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); }
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); }
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(); }
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); }
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(); } }
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); }
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); }
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); }
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); }
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(); } } }
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; } } }
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(); }
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(); }
/// <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 } } }
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(); }
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; }
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; } } }
// 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); }