Login

russian armor

Is there a better way to write this scar script?

17 Mar 2026, 20:35 PM
#1
avatar of Jack Schitt

Posts: 4

I'm sure there's a way to use an array or some kind of table instead of making copies of it to make it shorter and more efficient. I've tried but failed so this is what I ended up with. It works but I understand it can possibly be slower than it can be because it's so long and if I add more to it (like adding eg_burning3, eg_burning4, eg_boom3, eg_boom4 etc) it's just going to get worse/longer.

Code

import("ScarUtil.scar")

g_burningTriggered = false
g_boomTriggered = false

g_burningTriggered2 = false
g_boomTriggered2 = false

function OnInit()
-- Start checking every 1 second
Rule_AddInterval(CheckProximity, 1)
Rule_AddInterval(MyNewFunction, 1)

-- Abandoned vehicles
Cmd_CriticalHit(World_GetPlayerAt(1), eg_vehicles, CRIT.VEHICLE_ABANDON, 0)

-- Make eg_dockbridge invulnerable
EGroup_SetInvulnerable(eg_dockbridge, true)
end

-- Burning and Boom 1
function CheckProximity()
for i = 1, World_GetPlayerCount() do
local player = World_GetPlayerAt(i)

if not g_burningTriggered and Prox_PlayerSquadsInProximityOfEntities(player, eg_burning, 30, false) then
g_burningTriggered = true
SetBuildingOnFire()
end

if not g_boomTriggered and Prox_PlayerSquadsInProximityOfEntities(player, eg_boom, 30, false) then
g_boomTriggered = true
EGroup_Kill(eg_boom)
end
end

if g_burningTriggered and g_boomTriggered then
Rule_Remove(CheckProximity)
end
end

function SetBuildingOnFire()
local ent = EGroup_GetSpawnedEntityAt(eg_burning, 1)
if ent ~= nil then
Entity_SetOnFire(ent)
end
end

Scar_AddInit(OnInit)

-- Burning and Boom 2
function BurnAndBoom2()
for i = 1, World_GetPlayerCount() do
local player = World_GetPlayerAt(i)

if not g_burningTriggered2 and Prox_PlayerSquadsInProximityOfEntities(player, eg_burning2, 30, false) then
g_burningTriggered2 = true
SetBuildingOnFire2()
end

if not g_boomTriggered2 and Prox_PlayerSquadsInProximityOfEntities(player, eg_boom2, 30, false) then
g_boomTriggered2 = true
EGroup_Kill(eg_boom2)
end
end

if g_burningTriggered2 and g_boomTriggered2 then
Rule_Remove(BurnAndBoom2)
end
end

function SetBuildingOnFire2()
local ent = EGroup_GetSpawnedEntityAt(eg_burning2, 1)
if ent ~= nil then
Entity_SetOnFire(ent)
end
end


Can someone suggest a working way to write it so it's shorter and more efficient? I'm struggling to figure out how to do it. My trials have ended up in (Fatal) errors.

Thanks in advance for the help!
17 Mar 2026, 21:39 PM
#2
avatar of Jack Schitt

Posts: 4

Figures! I spent ow ers of trial and error before I posted here and the next try worked, before I got a reply from anyone:

Code

import("ScarUtil.scar")

g_triggered = {
burning1 = false,
boom1 = false,
burning2 = false,
boom2 = false
}

function OnInit()
Rule_AddInterval(CheckProximity, 1)

Cmd_CriticalHit(World_GetPlayerAt(1), eg_vehicles, CRIT.VEHICLE_ABANDON, 0)
EGroup_SetInvulnerable(eg_dockbridge, true)
end

function CheckProximity()
HandleSet("burning1", "boom1", eg_burning, eg_boom)
HandleSet("burning2", "boom2", eg_burning2, eg_boom2)

if g_triggered.burning1 and g_triggered.boom1
and g_triggered.burning2 and g_triggered.boom2 then
Rule_Remove(CheckProximity)
end
end

function HandleSet(burnKey, boomKey, burnGroup, boomGroup)
for i = 1, World_GetPlayerCount() do
local player = World_GetPlayerAt(i)

if not g_triggered[burnKey]
and Prox_PlayerSquadsInProximityOfEntities(player, burnGroup, 30, false) then
g_triggered[burnKey] = true
local ent = EGroup_GetSpawnedEntityAt(burnGroup, 1)
if ent then Entity_SetOnFire(ent) end
end

if not g_triggered[boomKey]
and Prox_PlayerSquadsInProximityOfEntities(player, boomGroup, 30, false) then
g_triggered[boomKey] = true
EGroup_Kill(boomGroup)
end
end
end

Scar_AddInit(OnInit)
1 user is browsing this thread: 1 guest

Livestreams

Germany 748
unknown 25

Ladders Top 10

  • #
    Steam Alias
    W
    L
    %
    Streak
Data provided by Relic Relic Entertainment

Replay highlight

VS
  • U.S. Forces flag cblanco ★
  • The British Forces flag 보드카 중대
  • Oberkommando West flag VonManteuffel
  • Ostheer flag Heartless Jäger
uploaded by XXxxHeartlessxxXX

Board Info

1044 users are online: 1044 guests
1 post in the last 24h
8 posts in the last week
9 posts in the last month
Registered members: 68558
Welcome our newest member, 78winme
Most online: 4501 users on 26 Oct 2025, 01:00 AM