> For the complete documentation index, see [llms.txt](https://hrs-scripts.gitbook.io/hrs-scripts-doc/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://hrs-scripts.gitbook.io/hrs-scripts-doc/hrs-base-building/config.md).

# CONFIG

## 1 - Choosing Framework

* the framework code is all **OPENSOURCE** so if you your framework is not here you can still make it work by editing the **OPENSOURCE**
* **DEFAULT OPTIONS:**\
  **- ESX**\
  **- QB**
* *The script will choose it automatically*

## 2 - Extra items setup

```lua
Config.explosionItems = {
    ["weapon_stickybomb"] = {
        damage = 7500.0, -- damage to the prop
        delay = 5 -- time to explode (seconds)
    },
    ["weapon_grenade"] = {
        damage = 4000.0,
        delay = 5
    },
} -- if you want to use items for raiding 

Config.fuelItem = "petrol" ------- choose here the item you want o use as Fuel

Config.needCodeLockItem = "codelock" ---- here you can choose an item to be the code lock item, if you keep this as false code lock item will not be necessary 
```

## 3 - Choosing Target script

* *The script will choose it automatically*

## 4 - Progress Bar

* the Progress Bar code is all **OPENSOURCE** so if you your progress bar is not here you can still make it work by editing the **OPENSOURCE**
* **DEFAULT OPTIONS:**\
  **- mythic\_progbar**\
  **- progress bar from QB-CORE**\
  **- ox\_lib**\
  **- esx\_progressbar**

```lua
Config.UseProgressBar = true or false
```

* **Progress bar configuration: (example)**\
  \
  The script comes with a lot of progress bar configs for different situations here is just one example, the progress CONFIG is based on **mythic\_progbar** system for progress\
  MORE INFO HERE: <https://github.com/HalCroves/mythic_progbar>

```lua
Config.ProgressBars = {
    ["prop_upgrade"] = {  ------ the progress bar name (see examples in main_unlocked)
        duration = 5000, ---- duration of the progress bar
        label = "Upgrading..", ----- label of the progress bar
        animation = {
            task  = 'WORLD_HUMAN_HAMMERING' ---- if you want to use  a task
            animDict = nil, -- if you want to use anim 
            anim = nil, -- if you want to use anim 
            flags = nil, ---- if you want to use flags
            prop = nil ---- if you want to use prop on hand
        }
    },
},
```

## 5 - Tutorial

* the tutorial code is all **OPENSOURCE**&#x20;

```lua
Config.showTutorial = true or false
```

![](/files/uysDASPvjoqm4vLgQ6A6)

## 6 - Blackout and Lights

* As this script is usually used in Survival servers, usually people that own this servers use to activate **blackout mode**, making the **lights** in the game **stop working**, by setting this option to **true** you will make the script **simulate light via script**, so you can still use lights inside your base with Blackout ON

```lua
Config.usingBlackout = true
```

## 7 - Routing Buckets

* If you want to use Routing Buckets or "dimensions" in your server activate this

```lua
Config.useRoutingBuckets = true
Config.useRoutingBucketsThread = true
```

## 8 - Raid Items  and Weapons Damage

```lua
Config.explosionItems = {
    ["weapon_stickybomb"] = {
        damage = 7500.0, -- damage to the prop
        delay = 5 -- time to explode (seconds)
    },
    ["weapon_grenade"] = {
        damage = 4000.0,
        delay = 5
    },
} -- if you want to use items for raiding 

Config.weaponsDamage = {
    [`weapon_rpg`] = 20000.0
} -- if you want to use weapons for raiding you can use this, to choose the damage they give to props
```

## 9 - Disable Building Zones

* As you probably have zones in your server you don't want people to build in you can setup those zones here:

```lua
Config.disableBuildingBlips = {
    label = "No build Zones",
    color = 1,
    alpha = 128,
    scale = 1.0,
    sprite = 364,
    shortRange = true      
} ----------- if you don't want blips just do (Config.disableBuildingBlips = false)

Config.disableBuilding = {
    {coords = vector3(215.578, -1135.859, 29.29675),radius = 400.0},
    {coords = vector3(111.30, -150.859, 31.0),radius = 200.0}
} ----------- zones to disable building
```

## 10 - Refresh times

```lua
Config.refreshTime = 300000 ------ ms (300000ms = 5min)
Config.refreshTimeLifeRemove = 2.5 ------ life removed every Config.refreshTime ms (FLOAT VALUE)
Config.refreshTimeFuelRemove = 1 ------ fuel removed every Config.refreshTime ms (if ON) (INT VALUE)
```

## 11 - Claim Props Type

* **This Props have two functions:**\
  **- If you repair them you will repair the all base at once**\
  **- If you put them on the ground you will Claim for you and your crew a radius of Config.claimPropType\[type].radious**

```lua
Config.claimPropType = {
    ["foundations"] = {radious = 9.0},
    ["bigwall"] = {radious = 9.0},
} ----- props that claim an area, if repaired they repair the all base
```

## 12 - How Props Work

* EXAMPLE OF A SIMPLE BASE PROP:

```lua
["model_doorway_wood"] = { ---- item name
    item = "model_doorway_wood", --- item name
    life = 10000.0, --- how much health this prop has
    type = "walls", --- what Type it has
    subtype = "doorway", --- what subtype it has 
    upgrade = GetHashKey("model_doorway_metal"), ---- what prop you can upgrade this props to
    crafting = {
        {name = "wood",count = 20},
        {name = "nail",count = 5}, 
        -- this items will be the items that you will get multiplied by health percentage when removing the prop from the map 
        -- Will be the items that the scipt will ask you if you want to upgrade another prop to this one
        -- will be the items you will need to have to be able to fix the props multiplied by (100% - health percentage)
    }   
}, 


["model_doorway_metal"] = {
    item = "model_doorway_metal",
    life = 20000.0,
    type = "walls",
    subtype = "doorway",
    crafting = {
        {name = "metalscrap",count = 20}
    }
},

```

* EXAMPLE OF GENERAL PROP WITH FUNCTIONS:

<pre class="language-lua"><code class="lang-lua">--------- CONFIG PART ---------------------------------------

["bkr_prop_biker_campbed_01"] = {
    item = "bkr_prop_biker_campbed_01",
    life = 10000.0,
    type = "beds",
    noFoundationNeed = true, --- if the prop can be put on the map without foundation
    subtype = "findGroud", ---- this subtype will make the prop stick to the ground position
    TriggerEvent = {
        type = "client",  --- the event type this prop will call if interact
        event = "hrs_base_building:Regen", ---- the event this prop wil call if you interact
        args = {"hrs_base_entity","bed",'health_regen_bed',90}, --- the arguments that will be sent
        entityAsArg = "hrs_base_entity" --- in the arguments, this word will be replaced by the Entity
    },
    crafting = {
        {name = "wood",count = 20}
    },
<strong>    workAsPillar = false, -- if true the prop will be considered as a pillar, usually used for walls 
</strong>    needsEletricity = false, -- if you want this prop to need or not eletricty to work
    disableIteract = false, -- if you want this prop to be interacteable or not
    noPermission = false, ------ if true, you will be able to interact with this prop even if you are not its owner or part of the owner crew
    mapProp = false, ---- if true you can interact with all props with this model that are around the map (like Ymap props)
},

------- EVENT EXAMPLE ---------------------

AddEventHandler('hrs_base_building:Regen', function(testEnt,type,anim,headingchange)
    local testEntcoords = GetEntityCoords(testEnt)
    local heading = GetEntityHeading(testEnt)
    local pedCoords = GetEntityCoords(PlayerPedId())
    local myPed = PlayerPedId()

    local isEmpty = true

    for k,v in ipairs(GetActivePlayers()) do
        if myPed ~= GetPlayerPed(v) then
            if #(testEntcoords - GetEntityCoords(GetPlayerPed(v))) &#x3C; 1.2 then
                isEmpty = false
                break
            end
        end
    end

    if isEmpty then
        FreezeEntityPosition(myPed,true)
        SetEntityCoords(myPed,testEntcoords.x,testEntcoords.y,testEntcoords.z)

        SetEntityHeading(myPed,heading + headingchange)

        if progressBar(anim) then
            SetEntityHealth(myPed,GetEntityMaxHealth(myPed))
            ShowNotification("Life Regenerated") 
        end

        SetEntityCoords(myPed,pedCoords.x,pedCoords.y,pedCoords.z)
        FreezeEntityPosition(myPed,false)
    else
        ShowNotification("There is someone else sleeping")
    end
end)
</code></pre>

* EXAMPLE OF GENERATOR PROP:

```lua
['prop_generator_01a'] = {
    item = "prop_generator_01a",
    life = 20000.0,
    fuelTank = 10.0, ------- how much fuel you can put inside off the generator
    type = "generator",
    subtype = "findGroud",
    crafting = {
        {name = "metalscrap",count = 20}
    }
},
```

* EXAMPLE STORAGES

```lua
["prop_box_wood01a"] = {
    weight = 50000, ---- how much weight the storage has
    item = "prop_box_wood01a",
    life = 10000.0,
    type = "storages",
    subtype = "findGroud",
    slots = 50, --- how much slots it has
    crafting = {
        {name = "wood",count = 20}
    }
},
```

* EXAMPLE LAMPS

```lua
['prop_worklight_01a'] = {
    item = "prop_worklight_01a",
    life = 20000.0,
    type = "light",
    subtype = "findGroud",
    noFoundationNeed = true,
    zChange = 1.80, -------- height of the light position
    fChange = 0.10, -------- front vector change
    crafting = {
        {name = "metalscrap",count = 5}
    }
},
```
