From 9966833bfd2cadf9994a2cf6ca60a1c721fdaffc Mon Sep 17 00:00:00 2001 From: Nathan Falvey Date: Sat, 17 Jan 2026 22:57:53 +0000 Subject: [PATCH] Remove unused effect 'Peds Raining Cats And Dogs' and update player invincibility logic; add new effects: 'Teleport Everything Away' and 'Back To Black' with respective functionalities. --- Peds/PedsRainingCatsAndDogs.lua | 45 -------------------- Player/PlayerInvincibleAndNoCops.lua | 9 ++-- Player/PlayerTPEverythingAway.lua | 63 ++++++++++++++++++++++++++++ Screen/ScreenBackToBlack.lua | 56 +++++++++++++++++++++++++ Vehs/VehicleDerailTrains.lua | 3 +- Vehs/VehicleExpressTrains.lua | 2 + 6 files changed, 126 insertions(+), 52 deletions(-) delete mode 100644 Peds/PedsRainingCatsAndDogs.lua create mode 100644 Player/PlayerTPEverythingAway.lua create mode 100644 Screen/ScreenBackToBlack.lua diff --git a/Peds/PedsRainingCatsAndDogs.lua b/Peds/PedsRainingCatsAndDogs.lua deleted file mode 100644 index 5bce631..0000000 --- a/Peds/PedsRainingCatsAndDogs.lua +++ /dev/null @@ -1,45 +0,0 @@ -EffectInfo = { - Name = "Its Raining Cats And Dogs", - EffectId = "peds_rainingcatsanddogs", - TimedType = "Normal", - EffectGroup = "_group_spawngeneric", - EffectCategory = "None" - -} - -function OnStart() - DisplayHelpText("No animals were harmed in this effect.", 8) - test = {"g", "y"} - spawned_animals = {} -end - -function OnStop() -end - -function OnTick() - animals = {"a_c_cat_01", "a_c_chop", "a_c_husky", "a_c_poodle", "a_c_pug", "a_c_rottweiler_02", "a_c_retriever", "a_c_westy", "a_c_shepherd", "a_c_rottweiler"} - animalModel = GET_HASH_KEY(random_choice(animals)) - playerPed = PLAYER_PED_ID() - heading = GET_ENTITY_HEADING(playerPed) - coords = GET_OFFSET_FROM_ENTITY_IN_WORLD_COORDS(playerPed, math.random(75), math.random(75), math.random(75)) - animal = CreatePoolPed(0, animalModel, coords.x, coords.y, coords.z, heading) - SET_ENTITY_INVINCIBLE(animal, true) - TASK_REACT_AND_FLEE_PED(animal, playerPed) - SET_BLOCKING_OF_NON_TEMPORARY_EVENTS(animal, true) - table.insert(spawned_animals, animal) - WAIT(math.random(1500, 6000)) - if #spawned_animals > 50 then - for animal in spawned_animals do - if DOES_ENTITY_EXIST(animal) then - DELETE_ENTITY(Holder(animal)) - table.remove(spawned_animals, animal) - end - end - end -end - - -function random_choice(p1) - choice = p1[math.random(#p1)] - return choice -end \ No newline at end of file diff --git a/Player/PlayerInvincibleAndNoCops.lua b/Player/PlayerInvincibleAndNoCops.lua index 58ac43b..3f94ca1 100644 --- a/Player/PlayerInvincibleAndNoCops.lua +++ b/Player/PlayerInvincibleAndNoCops.lua @@ -13,13 +13,10 @@ end function OnStop() SET_MAX_WANTED_LEVEL(5) - SET_PLAYER_INVINCIBLE(0, false) + SET_PLAYER_INVINCIBLE(GET_PLAYER_INDEX(), false) end function OnTick() - playerPed = PLAYER_PED_ID() - if DOES_ENTITY_EXIST(playerPed) and not IS_PED_DEAD_OR_DYING(playerPed,0) then - SET_MAX_WANTED_LEVEL(0) - SET_PLAYER_INVINCIBLE(0, true) - end + SET_MAX_WANTED_LEVEL(0) + SET_PLAYER_INVINCIBLE(GET_PLAYER_INDEX(), true) end diff --git a/Player/PlayerTPEverythingAway.lua b/Player/PlayerTPEverythingAway.lua new file mode 100644 index 0000000..dcf5566 --- /dev/null +++ b/Player/PlayerTPEverythingAway.lua @@ -0,0 +1,63 @@ +-- Short coherent template for a Chaos Mod effect. +-- Edit the fields below to describe the effect and adjust timing/weighting. +-- Full reference: https://github.com/gta-chaos-mod/ChaosModV/wiki/Lua-Scripting + +EffectInfo = { -- ScriptInfo for mod version < 2.0 + Name = "Teleport Everything Away", -- Display name of the effect + EffectId = "player_tpallaway", -- ScriptId for mod version < 2.0, must be unique + Description = "Teleports all nearby vehicles and peds away from the player.", -- Short description of the effect + TimedType = "None", -- None, Normal, Short, Permanent, or "Custom" + -- CustomTime = 10, -- (seconds) only if TimedType = "Custom" + WeightMultiplier = 1, -- Relative probability of being chosen + HideRealNameOnStart = false, -- true to hide the effect's real name when it starts + EffectCategory = "None", -- Optional category + EffectGroup = "", -- Optional grouping (leave empty if unused) + IncompatibleIds = { + -- Example: "other_effect_id", -- add EffectIds that cannot run simultaneously + } +} + +-- Called once when the effect starts +function OnStart() + print("[effect_template] OnStart: " .. ((EffectInfo and EffectInfo.Name) or "unknown")) + EnableScriptThreadBlock() + -- Initialize effect state here (e.g. set timers, spawn helpers) + playerPed = PLAYER_PED_ID() + playerPos = GET_ENTITY_COORDS(playerPed, true) + for _, vehicle in ipairs(GetAllVehicles()) do + vehiclePos = GET_ENTITY_COORDS(vehicle, true) + distance = VDIST2(playerPos.x, playerPos.y, playerPos.z, vehiclePos.x, vehiclePos.y, vehiclePos.z) + if distance < 1000000 then -- 1000 units squared + newX = vehiclePos.x + math.random(-500, 500) + newY = vehiclePos.y + math.random(-500, 500) + newZ = vehiclePos.z + 50 -- teleport above ground to avoid collisions + SET_ENTITY_COORDS(vehicle, newX, newY, newZ, false, false, false, true) + end + end + for _, ped in ipairs(GetAllPeds()) do + if ped ~= playerPed then + pedPos = GET_ENTITY_COORDS(ped, true) + distance = VDIST2(playerPos.x, playerPos.y, playerPos.z, pedPos.x, pedPos.y, pedPos.z) + if distance < 1000000 then -- 1000 units squared + newX = pedPos.x + math.random(-500, 500) + newY = pedPos.y + math.random(-500, 500) + newZ = pedPos.z + 50 -- teleport above ground to avoid collisions + SET_ENTITY_COORDS(ped, newX, newY, newZ, false, false, false, true) + end + end + end + DisableScriptThreadBlock() +end + +-- Called once when the effect stops/ends +function OnStop() + print("[effect_template] OnStop: " .. ((EffectInfo and EffectInfo.Name) or "unknown")) + -- Cleanup state here (e.g. remove entities, clear timers) +end + +-- Called every game tick while the effect is active +function OnTick() + -- Keep this lightweight. Use this for per-frame checks or gradual changes. +end + +-- Add custom helper functions below. diff --git a/Screen/ScreenBackToBlack.lua b/Screen/ScreenBackToBlack.lua new file mode 100644 index 0000000..dad713b --- /dev/null +++ b/Screen/ScreenBackToBlack.lua @@ -0,0 +1,56 @@ +-- Short coherent template for a Chaos Mod effect. +-- Edit the fields below to describe the effect and adjust timing/weighting. +-- Full reference: https://github.com/gta-chaos-mod/ChaosModV/wiki/Lua-Scripting + +EffectInfo = { -- ScriptInfo for mod version < 2.0 + Name = "Back To Black", -- Display name of the effect + EffectId = "screen_backtoblack", -- ScriptId for mod version < 2.0, must be unique + Description = "A short one-line description of what this effect does.", + TimedType = "Custom", -- None, Normal, Short, Permanent, or "Custom" + CustomTime = 340, -- (seconds) only if TimedType = "Custom" + WeightMultiplier = 1, -- Relative probability of being chosen + HideRealNameOnStart = false, -- true to hide the effect's real name when it starts + EffectCategory = "Shader", -- Optional category + EffectGroup = "_group_shader", -- Optional grouping (leave empty if unused) + IncompatibleIds = { + "screen_blindness", + } +} + +-- Called once when the effect starts +function OnStart() + print("[effect_template] OnStart: " .. ((EffectInfo and EffectInfo.Name) or "unknown")) + -- Initialize effect state here (e.g. set timers, spawn helpers) +end + +-- Called once when the effect stops/ends +function OnStop() + print("[effect_template] OnStop: " .. ((EffectInfo and EffectInfo.Name) or "unknown")) + -- Cleanup state here (e.g. remove entities, clear timers) +end + +-- Called every game tick while the effect is active +darkness_value = 0.0 +function OnTick() + playerPed = PLAYER_PED_ID() + if not DOES_ENTITY_EXIST(playerPed) or IS_PLAYER_SWITCH_IN_PROGRESS() or IS_PED_DEAD_OR_DYING(playerPed,0) then return end + DRAW_RECT(0.5, 0.5, 1.0, 1.0, 0, 0, 0, darkness_value) + darkness_value = darkness_value + 1 + if darkness_value > 255.0 then + darkness_value = 255.0 + end + WAIT(750) +end + +-- Add custom helper functions below. + +function random_choice(p1) + if type(p1) ~= "table" or #p1 == 0 then + return nil + end + local choice = p1[math.random(#p1)] + return choice +end + + + diff --git a/Vehs/VehicleDerailTrains.lua b/Vehs/VehicleDerailTrains.lua index 56f03b6..6b08d49 100644 --- a/Vehs/VehicleDerailTrains.lua +++ b/Vehs/VehicleDerailTrains.lua @@ -3,7 +3,7 @@ EffectInfo = { EffectId = "vehs_derailtrains", TimedType = "Normal", EffectGroup = "_group_trafficspawner", - EffectCategory = "None" + EffectCategory = "None", IncompatibleIds = { "vehs_expresstrains", } @@ -28,4 +28,5 @@ function OnTick() SET_RENDER_TRAIN_AS_DERAILED(vehicle, true) end end + WAIT(750) end diff --git a/Vehs/VehicleExpressTrains.lua b/Vehs/VehicleExpressTrains.lua index 918b7f4..f23d5cb 100644 --- a/Vehs/VehicleExpressTrains.lua +++ b/Vehs/VehicleExpressTrains.lua @@ -20,4 +20,6 @@ function OnTick() SET_TRAIN_SPEED(vehicle, 9999.0) end end + WAIT(750) + end