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.

This commit is contained in:
2026-01-17 22:57:53 +00:00
parent a5fe1f1114
commit 9966833bfd
6 changed files with 126 additions and 52 deletions

View File

@@ -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

View File

@@ -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

View File

@@ -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.

View File

@@ -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

View File

@@ -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

View File

@@ -20,4 +20,6 @@ function OnTick()
SET_TRAIN_SPEED(vehicle, 9999.0)
end
end
WAIT(750)
end