Kartik Scripts

Territory

Turfs, influence, holding the street, street crime, rivalries, hotspots and rackets.

Time windows use 24-hour 'HH:MM' and your server time plus UtcOffset from shared/core.lua. A window can cross midnight, e.g. '23:00' to '11:00'.


🏳️ Turfs

The turf shapes are drawn in Admin → Turfs. These settings control how turfs behave.

Ownership

SettingDefaultWhat it does
Turfs.OwnershipPercent51% of a turf's influence a gang needs to own it
Turfs.OwnershipMinPoints100Points the leading gang also needs. 0 = no minimum
Turfs.CaptureMilestones{ 50, 90 }Notifications at these % of the way to owning a turf. false = off
Turfs.MaxPoints100000Most points one gang can have in one turf

Activity window

SettingDefaultWhat it does
Turfs.ActivityWindow.EnabledfalseOnly count influence from sales, graffiti, kills and crime during set hours
Turfs.ActivityWindow.Start / End'23:00' / '11:00'The hours

Influence per action

SettingDefaultWhat it does
Turfs.Influence.DrugSale50Your gang gains per corner sale
Turfs.Influence.DrugSaleOthers-15Other gangs lose per sale
Turfs.Influence.Spray75Your gang gains per graffiti tag
Turfs.Influence.SprayOthers-5Other gangs lose per tag
Turfs.Influence.RemoveEnemy15Your gang gains for scrubbing a rival tag
Turfs.Influence.RemoveVictim-15The tag's owner loses
Turfs.Influence.RemoveOwn0Gained for removing your own tag
Turfs.Influence.KillEnemy15Your gang gains for killing a rival gang member
Turfs.Influence.KillVictim-5The victim's gang loses
Turfs.OthersMode'all'Who takes the "others" losses: 'all' gangs there, or only the 'owner'
Turfs.KillPairCooldown120Seconds before the same killer and victim count again
Turfs.DrugSaleXptrueTurf sales give gang XP
Turfs.KillXptrueTurf kills give gang XP

Repeat penalty

Repeating the same action in the same turf is worth less each time.

SettingDefaultWhat it does
Turfs.Diminishing.EnabledtrueTurn the penalty on
Turfs.Diminishing.WindowMinutes60The count resets after this long
Turfs.Diminishing.Factor0.8Each repeat is worth 80% of the last (100%, 80%, 64%…)
Turfs.Diminishing.Floor0.2Never goes below 20%
Turfs.Diminishing.Reasonsspray, remove, kill on; drug sale offWhich actions are affected
Turfs.Diminishing.CrimestrueAlso reduce influence from street crime

Decay & spread (optional)

SettingDefaultWhat it does
Turfs.Decay.EnabledfalseOwners slowly lose influence
Turfs.Decay.IntervalMinutes60How often
Turfs.Decay.Percent1.0% of points lost each time
Turfs.Decay.MinLoss1At least this many points
Turfs.Spread.EnabledfalsePart of every gain also goes to nearby turfs
Turfs.Spread.Percent10% that spreads
Turfs.Spread.MaxDistance700.0How close the other turf's centre must be

Notifications

SettingDefaultWhat it does
Turfs.NotifyOwnerall onTell owners when outsiders sell, spray, remove tags, kill, kill NPCs, rob, steal cars, occupy or walk into their turf. Keys: drug, spray, remove, kill, npc, robbery, theft, occupy, intrude
Turfs.NotifyCooldown90Seconds between the same kind of alert per turf
Turfs.EnterNotifyfalseNotify members when they enter or leave a turf

Map & HUD

SettingDefaultWhat it does
Turfs.Hud.EnabledtrueShow the turf badge. Capture milestones need this on
Turfs.Blips.EnabledtrueDraw turfs on the map
Turfs.Blips.Alpha80Fill transparency (0–255)
Turfs.Blips.Shape'auto''box', 'polygon' or 'auto'
Turfs.Blips.FillRatio0.85In auto mode, how rectangular a turf must be to draw as a box
Turfs.Blips.NeutralColor'#9ca3af'Colour of unowned turfs
Turfs.Blips.ShowUnownedtrueDraw turfs nobody owns
Turfs.Blips.ShowToEveryonefalseLet non-gang players see turfs
Turfs.Blips.FlashContestedtrueFlash turfs that are close to changing hands
Turfs.Blips.ContestedRatio0.75Contested when second place has 75% of the leader's points
Turfs.InfoKey.Enabled / Key / Labeltrue / 'Z' / 'Turf info (hold)'Hold-for-info key (players can rebind it)

Abandoning & saving

SettingDefaultWhat it does
Turfs.Abandon.EnabledtrueGangs can abandon turfs from the tablet
Turfs.Abandon.LockMinutes30Minutes before they can gain influence there again
Turfs.FlushSeconds60How often influence is saved

🧍 Presence (holding the street)

SettingDefaultWhat it does
Presence.EnabledtrueMembers earn influence by standing in turfs
Presence.TickSeconds60How often presence is paid
Presence.MinMinutesInside3Minutes a member must stay before counting ("Settling in"). 0 = counts right away
Presence.PointsPerMember2Points per member each tick
Presence.MaxMembersCounted4Most members counted per gang
Presence.RequireOnFootfalseMembers in vehicles don't count
Presence.ContestedBlockstrueIf two gangs are there, nobody gains
Presence.OccupyOwnerLoss-1Owner loses this per tick when rivals hold their turf with no owner present. 0 = off
Presence.AllowedBuckets{ 0 }Worlds where presence counts (0 = normal world)
Presence.UseActivityWindowtrueFollow the turf activity window

🚨 Street crime

When the criminal belongs to the owning gang, only OwnSelf applies. Otherwise the owner gets Owner and the criminal's gang gets Actor.

SettingDefaultWhat it does
Crimes.AffectCivilianstrueCrimes by non-gang players also hurt the owner
Crimes.AllowedBuckets{ 0 }Worlds where crimes count
CrimeActorOwnerOwnSelfPer player / hourPer turf / hour
NpcKill-15-10-152040
Robbery+10-40-2568
Theft (car theft)0-10-5615

Robbery extras

SettingDefaultWhat it does
Crimes.Robbery.Cooldown120Seconds between robbery reports from one player
Crimes.Robbery.RacketRadius75.0Rackets this close to a robbery pay less. 0 = off
Crimes.Robbery.RacketPayoutFactor0.5Payout multiplier after a robbery (cooldown racket mode)
Crimes.Robbery.RacketPenaltyMinutes60How long the reduced payout lasts (cooldown racket mode)
Crimes.Robbery.EventsemptyEvents from your robbery script that count as robberies, e.g. { event = 'myrobbery:done', kind = 'store' }
Crimes.RobberyDispatchon, 10-90Police alert for robberies inside turfs (code, title, message, blip, jobs)

Car theft is detected automatically. For robberies, use Events above or the ReportRobbery export.


🔥 Rivalry

SettingDefaultWhat it does
Rivalry.EnabledtrueTurn rivalries on
Rivalry.Cost5000Price to start one
Rivalry.Account'dirty'Paid from 'dirty' or 'cash' treasury
Rivalry.AddCostToPotfalsePut the start cost in the prize pot
Rivalry.DurationMinutes60How long it lasts
Rivalry.PotShare0.5Share of each sale added to the pot (extra money; sellers keep full price)
Rivalry.MinLevel1Gang level needed
Rivalry.MaxActivePerGang1Rivalries one gang can run at once
Rivalry.AnonymoustrueHide the starting gang
Rivalry.NotifyAllGangstrueTell every gang when one starts
Rivalry.Dispatchon, 100%, 10-37Police alert when a rivalry starts

🎯 Hotspots

Zones are created in Admin → Hotspots.

SettingDefaultWhat it does
Hotspots.SecondsPerPercent0.3Capture speed (0.3 = 30 seconds to capture)
Hotspots.CooldownMinutes15Lock after a capture
Hotspots.EmptyBehaviour'decay'Empty zone: 'decay' drains progress, 'hold' keeps it
Hotspots.DecaySecondsPerPercent0.6Drain speed
Hotspots.MinMembers1Members needed inside to capture
Hotspots.AllowedBuckets{ 0 }Worlds where capture works
Hotspots.Window.Enabled / Start / Endfalse / '02:00' / '11:00'Capture hours
Hotspots.NotifyOwnerOnAttacktrueTell the owner when capture starts
Hotspots.Blipson, sprite 379Map blip, zone circle, and the attack blip owners see
Hotspots.DefaultsSandy ScrapyardHotspots added on first install only

War zones

A hotspot is at war while a gang is capturing it or it is contested.

SettingDefaultWhat it does
Hotspots.WarZone.ShowTo'police'Who sees active wars on the map: 'none', 'police' or 'everyone'
Hotspots.WarZone.NotifytrueThose players also get a notification when a war starts
Hotspots.WarZone.Sprite / Color / Scale437 / 1 / 1.0War zone blip
Hotspots.WarZone.Alpha110Zone fill opacity (0–255)
Hotspots.WarZone.FlashtrueFlash the war zone on the map

Police

SettingDefaultWhat it does
Hotspots.Police.BlockCapturetrueOn-duty police inside a hotspot pause the capture
Hotspots.Police.MinOfficers1Officers needed inside to pause it
Hotspots.Police.Alert.EnabledtrueSend a dispatch call when a war starts
Hotspots.Police.Alert.Chance100% chance the call is sent
Hotspots.Police.Alert.code / title / message'10-10' / 'Gang Turf War'Dispatch call text
Hotspots.Police.Alert.blipsprite 437, redDispatch blip
Hotspots.Police.Alert.jobs{ 'police' }Jobs that get the call

💼 Rackets

Shops are created in Admin → Rackets.

SettingDefaultWhat it does
Rackets.Mode'passive''passive': shops fill up hourly. 'cooldown': random payout, then a lock
Rackets.Passive.HourlyFactor1.0Hourly income = average payout × this
Rackets.Passive.MaxHours6Most hours of money a shop stores
Rackets.Passive.MinCollect100Money needed before collecting
Rackets.Passive.CollectCooldownMinutes5Wait between collections
Rackets.Passive.KeepWhenUnownedfalseKeep stored money when the turf loses its owner
Rackets.Passive.RobberyTakePercent50% of stored money a nearby robbery wipes
Rackets.Passive.FlushMinutes5How often stored money is saved
Rackets.CooldownMinutes30Lock time in cooldown mode
Rackets.DefaultMin / DefaultMax500 / 2500Pre-filled payout for new shops
Rackets.Account'dirty'Treasury the money goes to
Rackets.RequireTurfOwnershiptrueOnly the turf owner can collect
Rackets.UseActivityWindowtrueFollow the turf activity window
Rackets.CollectSeconds8Collection time
Rackets.Distance3.0Interaction range
Rackets.Dispatchon, 60%, 10-90Police extortion alert
Rackets.Blipson, sprite 500Shop blips for gang members
Rackets.Pedon, 4 shopkeeper modelsShopkeeper NPC, spawn distance, idle and hands-up animations
Rackets.AnimclipboardCollector's animation and prop

Business sales

A cut of sales reported by other scripts with the BusinessSale export. See Rackets.

SettingDefaultWhat it does
Rackets.BusinessSales.EnabledtrueAccept business sales
Rackets.BusinessSales.CutPercent10% of each sale given to the turf owner
Rackets.BusinessSales.BusinessesemptyCut per business name, e.g. burgershot = 15. 0 = never pays
Rackets.BusinessSales.OnlyListedfalsetrue: only businesses listed above pay a cut
Rackets.BusinessSales.Radius60.0A racket shop must be this close to the sale to hold the cut
Rackets.BusinessSales.MaxStored50000How much sale money a shop can hold on top of its passive cap
Rackets.BusinessSales.DailyCap100000Most a gang can get from one turf per day
Rackets.BusinessSales.Fallback'treasury'No racket shop nearby (or Mode = 'cooldown'): 'treasury' pays the gang directly, 'none' pays nothing
Rackets.BusinessSales.LogMin100Smaller cuts aren't written to the activity log

🛒 Turf dealers

Dealers that only sell to the gang owning their turf. See Turf Dealers for adding dealers and items.

SettingDefaultWhat it does
BlackMarket.EnabledtrueTurn turf dealers on or off
BlackMarket.PayFrom'gang''gang': paid from the treasury. 'player': the buyer pays
BlackMarket.Account'dirty'Gang: 'cash' or 'dirty'. Player: 'cash' or 'bank'
BlackMarket.MaxPerPurchase10Most items in one purchase
BlackMarket.RestockMinutes60How often items with stock refill
BlackMarket.Distance3.0Interaction range
BlackMarket.Ped50 m, smokingSpawn distance and idle scenario
BlackMarket.Blipon, sprite 586Dealer blip, only shown to the owning gang
BlackMarket.DealersGrove StreetThe dealers, their models and their items. Dealers can also be added in Admin → Turf Dealers

🛡️ Turf guards

Armed guards placed per turf in Admin → Turf Guards. They protect the gang owning their turf. See Turf Guards.

SettingDefaultWhat it does
Guards.EnabledtrueTurn turf guards on or off
Guards.Weaponspistol, micro SMGWeapons picked at random for guards set to Random from the config
Guards.Ammo250Ammo each guard gets
Guards.Armour50Armour each guard gets
Guards.SpawnRange120.0Guards only stand while a player is this close (metres)
Guards.RespawnMinutes15A killed guard is replaced after this
Guards.NotifyAttacktrueTell online members of the owning gang when a guard is in a fight

How guards fight (targets, reaction range, health, accuracy) uses Guards in shared/hideout.lua, the same as hideout guards.

Guards = {
    Enabled = true,
    Weapons = { 'WEAPON_PISTOL', 'WEAPON_MICROSMG' },
    Ammo = 250,
    Armour = 50,
    SpawnRange = 120.0,
    RespawnMinutes = 15,
    NotifyAttack = true,
},

Updating from an older version? Add this block to Settings.Territory in shared/territory.lua. Without it, these defaults are used.


🛡️ Turf defense

NPC crews attack an owned turf and the owning gang has to beat every wave in time. See Turf Defense.

SettingDefaultWhat it does
Defense.EnabledtrueTurn turf attacks on or off
Defense.Auto.EnabledtrueStart attacks on a timer. false keeps only /turfattack
Defense.Auto.EveryMinutes60How often the timer rolls
Defense.Auto.Chance0.5Chance per roll (0.0 to 1.0)
Defense.Auto.MinOnline3Members of the owning gang that must be online for the timer to pick a turf
Defense.Cooldown120Minutes before the same turf can be attacked again
Defense.WarnSeconds90Warning before the first wave can show up
Defense.TimeLimit10Minutes to beat every wave
Defense.Waves3Number of waves
Defense.PerWave4Attackers per wave
Defense.NextWaveWhenLeft1The next wave comes when this many attackers are left
Defense.SpawnDistance{ 40.0, 70.0 }How far from a member inside the turf a wave spawns
Defense.Attackers3 gang modelsmodels, weapons, health, armour, accuracy (0 to 100), ammo
Defense.Reward300 XP, 15,000, 150xp for the gang, dirty money for the treasury, influence in the turf
Defense.Penalty200influence lost in the turf when it is not held
Defense.Blipsprite 437, redTurf marker for the owning gang during an attack (Sprite, Color, Scale, Radius)
Defense = {
    Enabled = true,
    Auto = { Enabled = true, EveryMinutes = 60, Chance = 0.5, MinOnline = 3 },
    Cooldown = 120,
    WarnSeconds = 90,
    TimeLimit = 10,
    Waves = 3,
    PerWave = 4,
    NextWaveWhenLeft = 1,
    SpawnDistance = { 40.0, 70.0 },
    Attackers = {
        models = { 'g_m_y_ballaorig_01', 'g_m_y_mexgoon_01', 'g_m_y_salvagoon_01' },
        weapons = { 'weapon_pistol', 'weapon_microsmg', 'weapon_bat' },
        health = 200, armour = 25, accuracy = 30, ammo = 250,
    },
    Reward = { xp = 300, dirty = 15000, influence = 150 },
    Penalty = { influence = 200 },
    Blip = { Sprite = 437, Color = 1, Scale = 1.0, Radius = 150.0 },
},

On this page