# Jota Dev Criminal Organizations

<figure><img src="https://3421265329-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FzDRYxKNrQL10LsRlXjcj%2Fuploads%2FvyOB3J9EeFm40gdmr9aO%2Fdocumentacion_ilegales.png?alt=media&#x26;token=7737e18b-8f1a-43c2-8759-bd545943d81d" alt=""><figcaption></figcaption></figure>

How to start the script for its correct operation:

**Put in your server.cfg**

```markdown
# JotaDev Criminal Organizations
ensure jc_organizaciones
```

***

**Commands**

* Open admin Menu: `/organizaciones`
* Open Actions Menu: `/orgmenu` (F6)
* Open Tablet Iinteraction `/tabletilegal` (F10)

**Script Settings:**

{% tabs %}
{% tab title="Setting" %}

```lua
Config = Config or {}
Config.Framework = "" -- Configure "esx" for the ESX framework or "qb" for QB-Core
Config.Locale = "es" -- Set your language to "es" to use Spanish and "en" to use English

Config.AllowedIdentifiers = {
    "steam:000000000000000",
    "license:00000000000000000000000000000",
    "discord:0000000000000000000",
}

Config.DeleteRobados = true -- true = removes stolen vehicles, false = behaves normally and can recover stolen vehicles
Config.MoneyRecover = 200
Config.MaxOrgVehicles = 2 -- Maximum number of vehicles an organization can have outside at one time

-- Enable or disable group validation for the administration panel
Config.CheckGroups = true

-- Configuring groups by framework
Config.Groups = {
    ace = { "admin", "superadmin" }, -- ACE groups
    esx = { "superadmin", "admin" }, -- ESX groups (xPlayer.getGroup())
    qb  = { "god", "admin" }         -- QB groups (Player.PlayerData.permission)
}

Config.BarrioBlip = {
    enabled = true, -- Toggle on/off if you want players to see their neighborhood blip on the map.
    sprite = 357,
    scale = 0.9,
    colour = 5,
    shortRange = false, -- true: only nearby, false: visible on the entire map
    label = "Mi Barrio"
}

Config.OpenOrgMenuKey = "F6" -- Organization's action menu
Config.OpenTabletIlegalMenuKey = "F10" -- Interaction tablet for organizations
Config.CommandPoliceRobos = 'robos'

Config.Almacen = {
    slots = 70, -- Number of slots for warehouses
    maxWeight = 50000  -- Maximum weight for warehouses
}

Config.Inventory = ""  -- "ox" | OX Inventory // "qs-inventory" | Qasar Inventory // "origen_inventory" | Origen Inventory // "qb-inventory" | QB Inventory // "esx_inventory" | For esx inventory default 

Config.RangosAjustes = { -- Ranges that will appear in the interaction tablet settings section
    "jefe"
}

Config.DarkChat = true  -- Enable/Disable DarkChat on the management tablet
Config.FiltroPalabrotas = true -- Activate/Deactivate the swear filter
Config.PalabrasProhibidas = { -- Forbidden words to use in dark chat
    "polla", "cabron", "cabrón", "puta", "puto", "putas", "putos",
    "gilipollas", "maricon", "maricón", "subnormal", "retrasado",
    "idiota", "imbecil", "imbécil", "zorra", "perra", "perro",
    "estupido", "estúpido", "mierda", "cagon", "cagón", "pendejo",
    "culiao", "pelotudo", "baboso", "mamon", "mamón", "tarado",
    "anormal", "mongolo", "chupapollas", "comeojete", "payaso",
    "asco", "asqueroso", "asquerosa", "hijoputa", "hijo de puta",
    "hdp", "malparido", "bastardo", "cornudo", "nazi", "racista",
    "negro de mierda", "sidoso", "apestoso", "pajero", "lerdo",
    "gordo de mierda"
}

Config.RegexProhibidas = {}
for _, palabra in ipairs(Config.PalabrasProhibidas) do
    local pattern = palabra:gsub("([.*+?^$()%%[%]-])", "%%%1")
    pattern = pattern:gsub("a", "[a@4]+")
    pattern = pattern:gsub("e", "[e3]+")
    pattern = pattern:gsub("i", "[i1!íì]+")
    pattern = pattern:gsub("o", "[o0óò]+")
    pattern = pattern:gsub("u", "[uúù]+")
    pattern = pattern:gsub("(.)", "%1[ ._-]*")
    table.insert(Config.RegexProhibidas, pattern)
end

Config.RobosAtracos = true -- Activate/Deactivate the Robberies and Heists section of the tablet

Config.PoliceJobs = { -- Mark police jobs here
    "police",
    "sheriff",
    "fbi"
}

Config.RobosTiempo = 30 -- Minutes you have from the start of the robbery until it ends to consider it successful or unsuccessful.

Config.BagStrength = 1.0 -- Opacity in black when they put the bag on you, if you don't want it completely black, lower it to 0.8 or 0.5, adjust as needed.

-- List of controls that are disabled when handcuffed
Config.HandcuffDisabledControls = {
--    1,    -- Pan
--    2,    -- Tilt
    21,   -- Sprint
    24,   -- Attack
    25,   -- Aim
    30,   -- D
    31,   -- S
    32,   -- W
    34,   -- A
    37,   -- Weapon Wheel
    44,   -- Cover
    45,   -- Reload
    47,   -- Weapon
    59,   -- Vehicle steering
    71,   -- Vehicle forward
    72,   -- Vehicle reverse
    73,   -- Clear animation
    75,   -- Exit vehicle
    140,  -- Melee
    141,  -- Melee
    142,  -- Melee
    143,  -- Melee
    170,  -- Animations
    167,  -- Job
--    199,  -- Pause
    264,  -- Melee
    257,  -- Attack 2
    263,  -- Melee Attack 1
    288,  -- Phone
    289,  -- Inventory
}

-- Different blips for when you have the blip option
Config.BlipsOrgas = {
    blip_players = 630,
    blip_coche = 225,
    blip_muerto = 274,
    blip_barco = 410,
    blip_helicoptero = 43 
}

if Config.Framework == 'qb' then
    QBCore = exports['qb-core']:GetCoreObject()
elseif Config.Framework == 'esx' then
    ESX = exports["es_extended"]:getSharedObject()
else
    print '^1[^6jc_organizaciones^1] ^2Framework No encontrada, ingrese esx o qb^0'
    return
end

Config.Debug = false

```

{% endtab %}

{% tab title="Drugs" %}

```lua
Config.Drugs = {
    ["weed"] = {
        label = "Marihuana",
        paymentType = "cash", -- "cash" o "black"

        -- Regular Sale Price --
        minPrice = 20,
        maxPrice = 50,

        -- Enemy Neighborhood Price --
        enemigoMin = 80,
        enemigoMax = 100,

        -- Amount the NPC takes from you when you sell him the drug between 1 and 20 in this case --
        sellMin = 1,
        sellMax = 20,

        -- Prices by map zones can be disabled with zones = false in case you don't want to use this option --
        zonas = {
            ["pier"] = {min = 50, max = 60},
            ["aeropuerto"] = {min = 60, max = 70}
        }
    },

    ["coca"] = {
        label = "Cocaína",
        paymentType = "black",

        minPrice = 250,
        maxPrice = 400,

        enemigoMin = 120,
        enemigoMax = 180,

        sellMin = 1,
        sellMax = 20,

        zonas = false
    },

    ["meta"] = {
        label = "Metanfetamina",
        paymentType = "black",

        minPrice = 200,
        maxPrice = 350,

        enemigoMin = 80,
        enemigoMax = 130,

        sellMin = 1,
        sellMax = 20,

        zonas = {
            ["aueropuerto"] = {min = 250, max = 400},
            ["desierto"] = {min = 180, max = 260}
        }
    }
}

Config.Zonas = { -- Areas where if you sell drugs, the price varies depending on your needs
    pier = {x = -1682.24, y = -1066.46, radius = 500.0},
    aueropuerto = {x = -1013.52, y = -2701.94, radius = 300.0},
    desierto = {x = 1700.0, y = 3600.0, radius = 800.0}
}

Config.DrugSellPolice = 1 --Minimal police force to be able to start selling drugs

Config.SellDistance = 2.0
Config.SellChance = 70 -- 50% chance of accepting the drug, 50% chance of not accepting it
Config.CallPoliceChance = 50 -- % chance that the NPC will call the police if they refuse the drug
Config.RepeatChance = 40  -- Probability that, after buying once, you will want another purchase

-- Alerts for when drugs are sold in a territory that is not yours --
Config.AlertChance = 35 -- % (example: 35% chance)
Config.AlertBlipDuration = 60 -- Seconds

-- Visual configuration of the blip when selling in your neighborhood
Config.AlertBlip = {
    sprite = 161,
    color  = 1,
    scale  = 1.2,
    text   = "Venta de droga detectada"
}

Config.SellToCarNpcs = false -- true = can be sold to NPCs in cars, false = only to pedestrians

-- Use the target for drug sales only ox_target at the moment
Config.UseTarget = false
Config.Target = {
    icon = "fas fa-cannabis",
    label = "Vender droga",
    distance = 2.5
}

Config.ProgresoDroga = 0.05 -- % that increases when selling drugs in your territory
Config.PenalizacionDroga = 0.10 -- how much the enemy will lose if you sell to him in his territory

Config.SubirNivelDroga = {min = 0.0, max = 0.001}

Config.FreezeDuringSell = true -- Freezes the position of players and NPCs for a few seconds to prevent them from running away while selling drugs and such.

```

{% endtab %}

{% tab title="Grafity" %}

```lua
Config.Width = 3000 -- Width of the predefined graffiti
Config.Height = 1800 -- Height of the predefined graffiti

Config.DistanciaGraffiti = 50.0

Config.GraffitiMaxAltura = 3.0 -- Maximum height you can put a graffiti when you are doing it

Config.ProgresoGraffiti = 10 -- Percentage that adds to the territory if it is from your organization
Config.PenalizacionGraffiti = 10 -- Percentage that remains in the territory if it is not part of its organization

Config.MaxGraffitisPorZona = 5 -- Maximum graffiti per territory
Config.RadioZonaGraffiti   = 100.0 -- Do not touch it since it is the meters that the territories have!

Config.GraffitiBlacklist = { -- Areas where graffiti cannot be applied
    { coords = vector3(429.7076, -982.464, 30.705), radius = 50.0 }, -- Police Station
}

```

{% endtab %}

{% tab title="Interiors" %}

```lua
Config.Interiores = { -- Predefined interiors, you can add more without any problem
    {
        label = "Interior Club House 1",
        img = "img/interiors/int1.png",
        nivel = 2,
        precio = 250000,
        coords = vector3(1110.299, -3166.81, -37.51),
    },
    {
        label = "Interior Club House 2",
        img = "img/interiors/int3.png",
        nivel = 2,
        precio = 235000,
        coords = vector3(997.3955, -3164.00, -38.90),
    },
    {
        label = "Interior Freak Shop",
        img = "img/interiors/int2.png",
        nivel = 5,
        precio = 500000,
        coords = vector3(576.2315, -423.885, -69.64),
    }
}

```

{% endtab %}

{% tab title="Missions" %}

```lua
Config.CooldownMision = 300 -- Cooldown time in seconds until you can start another mission

Config.Misiones = {
    {
        id = "transporte_armas",
        nombre = "Transporte de Armas",
        descripcion = "Lleva un cargamento de armas desde una localización hasta un sitio secreto sin perderlo.",
        nivelMinimo = 1,
        tiempoEstimado = 25,
        dificultad = "media",
        exp = 0.10,
        subirNivel = 0.08,
        progresosMaximos = 3,
        icon = "fas fa-truck-loading"
    },

    {
        id = "control_zona",
        nombre = "Controlar un Territorio",
        descripcion = "Mantente en un territorio enemigo durante 5 minutos para poder completar esta misión.",
        nivelMinimo = 1,
        tiempoEstimado = 10,
        dificultad = "dificil",
        exp = 0.20,
        subirNivel = 0.13,
        progresosMaximos = 2,
        icon = "fas fa-map-marked-alt"
    },

    {
        id = "conseguir_maletin",
        nombre = "Consigue el maletin secreto",
        descripcion = "Estate atento, y asiste con los maximo de tus hombres, vas a tener que pelear por un maletin el cual contiene mucho valor, consiguelo y llevalo a una localización secreta.",
        nivelMinimo = 1,
        tiempoEstimado = 10,
        dificultad = "dificil",
        exp = 0.20,
        subirNivel = 0.16,
        progresosMaximos = 3,
        icon = "fas fa-briefcase"
    },

    {
        id = "venta_droga",
        nombre = "Venta de Droga",
        descripcion = "Entrega paquetes de droga a varios clientes por la ciudad.",
        nivelMinimo = 2,
        tiempoEstimado = 20,
        dificultad = "dificil",
        exp = 0.10,
        subirNivel = 0.06,
        progresosMaximos = 15,
        icon = "fas fa-cannabis"
    },

    {
        id = "graffitis",
        nombre = "Pintar Graffitis",
        descripcion = "Coloca 5 graffitis en diferentes puntos del mapa.",
        nivelMinimo = 1,
        tiempoEstimado = 5,
        dificultad = "facil",
        exp = 0.10,
        subirNivel = 0.05,
        progresosMaximos = 5,
        icon = "fas fa-spray-can"
    },

    {
        id = "transporte_cliente",
        nombre = "Transporte de Cliente (Mafia)",
        descripcion = "Recoge a un cliente importante de la mafia y entrégalo sano y salvo a su destino. Evita peleas y persecuciones.",
        nivelMinimo = 1,
        tiempoEstimado = 20,
        dificultad = "media",
        exp = 120,
        subirNivel = 1,
        progresosMaximos = 5,
        icon = "fas fa-user-shield"
    },

    {
        id = "reclutar_integrantes",
        nombre = "Recluta a 30 integrantes",
        descripcion = "Consigue que tu organización se haga grande, haz que pasen por tu organizacion al menos 30 miembros.",
        nivelMinimo = 1,
        tiempoEstimado = 20,
        dificultad = "media",
        exp = 0.10,
        subirNivel = 0.05,
        progresosMaximos = 1,
        icon = "fas fa-user-plus"
    },

    {
        id = "consigue_interior",
        nombre = "Compra un interior para tu organización",
        descripcion = "Haz que tu organización consiga patrimonio suficiente como para comprar interiores y disponer de mas espacio para secuestros, almacenes, etc... ¡Recuerda iniciar la misión antes de comprarlo!",
        nivelMinimo = 1,
        tiempoEstimado = 1,
        dificultad = "media",
        exp = 0.10,
        subirNivel = 0.30,
        progresosMaximos = 1,
        icon = "fas fa-warehouse" 
    },

}

Config.MisionesInteraccion = {
    ["transporte_armas"] = {
        vehiculo = "yosemite2",
        puntoVeh = {
            vector4(1376.862, -740.780, 67.232, 71.48),
            vector4(-595.171, 5292.039, 70.214, 342.66),
            vector4(101.4479, 3710.037, 39.744, 137.26),
            vector4(1239.987, 1913.488, 78.471, 170.1)
        },

        recogidas = {
            vector3(-55.1574, 1912.398, 194.36),
            vector3(2401.245, 4026.967, 34.845),
            vector3(2506.543, 4215.703, 38.922),
            vector3(1902.029, 4919.130, 47.714)
        },
        entregas = {
            vector3(3809.408, 4464.058, 4.3095),
            vector3(2890.418, 4381.725, 50.329),
            vector3(48.61809, 6657.887, 31.750),
            vector3(-295.182, 6340.002, 32.156)
        },
        posicionesCajas = {
            vector3(0.0, -0.9, 0.20),
            vector3(0.0, -0.9, 0.60),
            vector3(0.0, -0.9, 1.00),
        },
        blipAlertaDuracion = 3, -- How long does it take for the police to know about the alert from the start of the mission and consecutively in minutes?
        blipDuracion = 20, -- How long does the police have to see the blip of the moving vehicle?
        tiempoLimite = 30 -- Time limit in minutes to complete the mission, if it is not completed in that time, the mission is failed

    },
    ["control_zona"] = {
        tiempoZona = 5,
        radioZona = 100.0,
        tiempoLimite = 20
    },
    ["conseguir_maletin"] = {
        puntosRecogida = {
            vector4(202.8793, 2753.870, 43.426, 281.85),
            vector4(61.39870, 3708.489, 39.754, 155.22),
            vector4(2383.459, 3050.076, 48.152, 1.35),
            vector4(-1144.57, 4924.089, 220.70, 273.36)
        },
        puntosEntrega = {
           vector4(2317.187, 2579.000, 46.663, 8.84),
           vector4(1540.320, 6336.224, 24.074, 62.48),
           vector4(201.3307, 6380.892, 31.426, 1.26),
           vector4(885.2256, 3656.152, 32.858, 225.47)
        },
        numNPCs = 6, 
        npcModelos = { `g_m_y_mexgoon_02`, `g_m_y_salvagoon_01`, `g_m_m_chigoon_01` },
        armas = { `WEAPON_PISTOL`, `WEAPON_MICROSMG`, `WEAPON_SAWNOFFSHOTGUN` },
        tiempoLimite = 30
    },
    ["graffitis"] = {
        tiempoLimite = 20
    },
    ["venta_droga"] = {
        tiempoLimite = 20
    }, 
    ["consigue_interior"] = {
        tiempoLimite = 20
    },
    ["transporte_cliente"] = {
        puntosRecogida = {
            vector4(202.8793, 2753.870, 43.426, 281.85),
            vector4(61.39870, 3708.489, 39.754, 155.22),
            vector4(2383.459, 3050.076, 48.152, 1.35),
            vector4(-1144.57, 4924.089, 220.70, 273.36)
        },
        puntosEntrega = {
           vector4(2317.187, 2579.000, 46.663, 8.84),
           vector4(1540.320, 6336.224, 24.074, 62.48),
           vector4(201.3307, 6380.892, 31.426, 1.26),
           vector4(885.2256, 3656.152, 32.858, 225.47)
        },
        tiempoLimite = 15
    }
    
}

-- If you use the English language, disable the previous Config.Misiones and activate this one:
--[[Config.Misiones = {
    {
        id = "transporte_armas",
        nombre = "Weapons Transport",
        descripcion = "Deliver a shipment of weapons from one location to a secret site without losing it.",
        nivelMinimo = 1,
        tiempoEstimado = 25,
        dificultad = "medium",
        exp = 0.10,
        subirNivel = 0.08,
        progresosMaximos = 3,
        icon = "fas fa-truck-loading"
    },

    {
        id = "control_zona",
        nombre = "Control a Territory",
        descripcion = "Stay in an enemy territory for 5 minutes to complete this mission.",
        nivelMinimo = 1,
        tiempoEstimado = 10,
        dificultad = "hard",
        exp = 0.20,
        subirNivel = 0.13,
        progresosMaximos = 2,
        icon = "fas fa-map-marked-alt"
    },

    {
        id = "conseguir_maletin",
        nombre = "Get the Secret Briefcase",
        descripcion = "Stay alert and bring as many men as you can, you will have to fight for a briefcase of great value, get it and deliver it to a secret location.",
        nivelMinimo = 1,
        tiempoEstimado = 10,
        dificultad = "hard",
        exp = 0.20,
        subirNivel = 0.16,
        progresosMaximos = 3,
        icon = "fas fa-briefcase"
    },

    {
        id = "venta_droga",
        nombre = "Drug Dealing",
        descripcion = "Deliver drug packages to several clients around the city.",
        nivelMinimo = 2,
        tiempoEstimado = 20,
        dificultad = "hard",
        exp = 0.10,
        subirNivel = 0.06,
        progresosMaximos = 15,
        icon = "fas fa-cannabis"
    },

    {
        id = "graffitis",
        nombre = "Spray Graffitis",
        descripcion = "Place 5 graffitis in different locations on the map.",
        nivelMinimo = 1,
        tiempoEstimado = 5,
        dificultad = "easy",
        exp = 0.10,
        subirNivel = 0.05,
        progresosMaximos = 5,
        icon = "fas fa-spray-can"
    },

    {
        id = "transporte_cliente",
        nombre = "Client Transport (Mafia)",
        descripcion = "Pick up an important mafia client and deliver him safely to his destination. Avoid fights and chases.",
        nivelMinimo = 1,
        tiempoEstimado = 20,
        dificultad = "medium",
        exp = 120,
        subirNivel = 1,
        progresosMaximos = 5,
        icon = "fas fa-user-shield"
    },

    {
        id = "reclutar_integrantes",
        nombre = "Recruit 30 Members",
        descripcion = "Make your organization grow, ensure that at least 30 members join your organization.",
        nivelMinimo = 1,
        tiempoEstimado = 20,
        dificultad = "medium",
        exp = 0.10,
        subirNivel = 0.05,
        progresosMaximos = 1,
        icon = "fas fa-user-plus"
    },

    {
        id = "consigue_interior",
        nombre = "Buy an Interior for Your Organization",
        descripcion = "Make your organization wealthy enough to buy interiors and have more space for kidnappings, warehouses, etc... Remember to start the mission before buying it!",
        nivelMinimo = 1,
        tiempoEstimado = 1,
        dificultad = "medium",
        exp = 0.10,
        subirNivel = 0.30,
        progresosMaximos = 1,
        icon = "fas fa-warehouse" 
    },
}
]]



```

{% endtab %}

{% tab title="Weapons" %}

```lua
Config.CommandGuardarArmas = 'armas' -- Command to hide weapons from the holster (there is also a button in the actions menu)

Config.EnableHolster = true  -- Enable or disable the holster (weapons on the back and weapon configurations, remember that this option is only for organizations)

Config.DrawingWeapons = {-- Weapons allowed for weapon draw animations
    "WEAPON_PISTOL",
    "WEAPON_COMBATPISTOL",
    "WEAPON_APPISTOL",
    "WEAPON_PISTOL50",
    "WEAPON_SNSPISTOL",
    "WEAPON_HEAVYPISTOL",
    "WEAPON_VINTAGEPISTOL",
    "WEAPON_MARKSMANPISTOL",
    "WEAPON_MACHINEPISTOL",
    "WEAPON_VINTAGEPISTOL",
    "WEAPON_PISTOL_MK2",
    "WEAPON_SNSPISTOL_MK2",
    "WEAPON_FLAREGUN",
    "WEAPON_STUNGUN",
    "WEAPON_REVOLVER"
}

Config.WeaponCategoryOffsets = {
	{category = 'handguns', bone = 11816, x = -0.01, y = 0.013, z = 0.22,  xRot = -90.0, yRot = 5.0,  zRot = -15.0},
	{category = 'waisthandgun', bone = 11816, x = -0.04, y = -0.015, z = 0.20,  xRot = -90.0, yRot = 17.0,  zRot = -13.0},
	{category = 'hiphandgun', bone = 51826, x = 0.05, y = -0.013, z = 0.12,  xRot = 275.0, yRot = 170.0,  zRot = -180.0},
	--{category = 'handguns', bone = 6442, x = 0.05, y = -0.03, z = 0.12,  xRot = -110.0, yRot = -15.0,  zRot = -10.0},
	{category = 'boxers', bone = 11816, x = -0.03, y = 0.11, z = -0.07,  xRot = -210.0, yRot = 5.0,  zRot = -10.0},
	{category = 'revolver', bone = 11816, x = -0.08, y = 0.019, z = 0.22,  xRot = -90.0, yRot = 5.0,  zRot = -15.0},
	{category = 'bighandgun', bone = 11816, x = -0.04, y = 0.019, z = 0.22,  xRot = -90.0, yRot = 5.0,  zRot = -15.0},
	{category = 'utilityhandgun', bone = 11816, x = -0.12, y = 0.09,  z = -0.17, xRot = 135.0,  yRot = -13.50, zRot = -9.5},
	{category = 'smallmelee', bone = 11816, x = -0.15, y = -0.15, z = 0, xRot = 0.0, yRot = 90.0, zRot = 0.0},
	{category = 'bigmelee', bone = 11816, x = -0.01, y = 0.013, z = 0.21,  xRot = -80.0, yRot = 5.0, zRot = -95.0},
	{category = 'utilitymelee', bone = 58271, x = 0.1, y = 0.1,  z = -0.15, xRot = -90.0,  yRot = 0.90, zRot = 90.0},
	{category = 'machine', bone = 24818, x = 0.09, y = -0.15, z = 0.1, xRot = 10.0, yRot = 160.0, zRot = 10.0},
	{category = 'assault', bone = 24818, x = 0.09, y = -0.15, z = 0.1, xRot = 10.0, yRot = 160.0, zRot = 10.0},
	{category = 'shotgun', bone = 24818, x = 0.09, y = -0.15, z = 0.1, xRot = 10.0, yRot = 160.0, zRot = 10.0},
	{category = 'sniper', bone = 24818, x = 0.09, y = -0.15, z = 0.1, xRot = 10.0, yRot = 160.0, zRot = 10.0},
	{category = 'heavy', bone = 24818, x = 0.09, y = -0.15, z = 0.1, xRot = 10.0, yRot = 160.0, zRot = 10.0},
	{category = 'bat', bone = 24816, x = 0.05, y = -0.15, z = 0.02, xRot = 0.0, yRot = 110.0, zRot = 0.0},
	
	-- Rifles tácticos, por delante del chaleco.
	{category = 'tacticalrifle', bone = 24818, x = 0.01, y = 0.22, z = 0.1, xRot = 200.0, yRot = 170.0, zRot = 10.0},
	-- Pistolas detrás.
	{category = 'backhandgun', bone = 24816, x = -0.05, y = -0.15, z = -0.03, xRot = 180.0, yRot = 145.0, zRot = 0.0},
	-- Pistolas en la cadena
	{category = 'leghandgun', bone = 51826, x = 0.175, y = 0.02, z = 0.134,  xRot = -100.0, yRot = -0.0,  zRot = -13.0},
	-- Pistolas en la cadena
	{category = 'handguns2', bone = 51826, x = 0.07, y = 0.030, z = 0.156,  xRot = -105.0, yRot = -0.0,  zRot = -13.1},
}

Config.RealWeapons = {

	{name = 'WEAPON_KNIFE', 			category = 'smallmelee', 	model = 'prop_w_me_knife_01', canHide = true},
	{name = 'WEAPON_BAT', 			category = 'bat', 	model = 'w_me_bat', canHide = true},
	--{name = 'WEAPON_NIGHTSTICK', 		category = 'utilitymelee', 	model = 'w_me_nightstick', canHide = true},
	{name = 'WEAPON_HAMMER', 			category = 'utilitymelee',	model = 'prop_tool_hammer', canHide = true},
	{name = 'WEAPON_GOLFCLUB', 			category = 'bigmelee', 		model = 'w_me_gclub', canHide = false},
	{name = 'WEAPON_CROWBAR', 			category = 'utilitymelee', 	model = 'w_me_crowbar', canHide = false},
	{name = 'WEAPON_BOTTLE', 			category = 'smallmelee', 	model = 'prop_w_me_bottle', canHide = true},
	--{name = 'WEAPON_KNUCKLE', 		category = 'melee', 		model = 'prop_w_me_dagger', canHide = true},
	{name = 'WEAPON_HATCHET', 			category = 'bigmelee', 		model = 'w_me_hatchet', canHide = false},
	{name = 'WEAPON_BATTLEAXE', 		category = 'bigmelee', 		model = 'w_me_battleaxe', canHide = false},
	{name = 'WEAPON_STONE_HATCHET', 	category = 'bigmelee', 		model = 'w_me_stonehatchet', canHide = false},
	{name = 'WEAPON_MACHETE', 			category = 'bigmelee', 		model = 'prop_ld_w_me_machette', canHide = false},
	--{name = 'WEAPON_SWITCHBLADE', 	category = 'melee', 		model = 'w_me_switchblade'},
	{name = 'WEAPON_FLASHLIGHT', 		category = 'utilitymelee', 	model = nil, canHide = true},

	{name = 'WEAPON_PISTOL', 			category = 'handguns', 		model = 'w_pi_pistol', canHide = true},
	{name = 'WEAPON_COMBATPISTOL', 		category = 'handguns', 		model = 'w_pi_combatpistol', canHide = true},
	{name = 'WEAPON_APPISTOL', 			category = 'handguns', 		model = 'w_pi_appistol', canHide = true},
	{name = 'WEAPON_PISTOL50', 			category = 'bighandgun', 	model = 'w_pi_pistol50', canHide = true},
	{name = 'WEAPON_VINTAGEPISTOL', 	category = 'handguns', 		model = 'w_pi_vintage_pistol', canHide = true},
	{name = 'WEAPON_HEAVYPISTOL', 		category = 'handguns', 		model = 'w_pi_heavypistol', canHide = true},
	{name = 'WEAPON_SNSPISTOL', 		category = 'handguns', 		model = 'w_pi_sns_pistol', canHide = true},
	{name = 'WEAPON_FLAREGUN', 			category = 'utilityhandgun',model = 'w_pi_flaregun', canHide = true},
	{name = 'WEAPON_MARKSMANPISTOL', 	category = 'handguns', 		model = 'w_pi_singleshot', canHide = true},
	{name = 'WEAPON_CERAMICPISTOL', 	category = 'handguns', 		model = 'w_pi_ceramic_pistol', canHide = true},
	{name = 'WEAPON_REVOLVER', 			category = 'revolver', 		model = 'w_pi_revolver', canHide = true},
	{name = 'WEAPON_STUNGUN', 			category = 'handguns',		model =  nil, 	canHide = true},
	{name = 'WEAPON_DOUBLEACTION', 		category = 'revolver', 		model = 'w_pi_wep1_gun', canHide = true},

	{name = 'WEAPON_MICROSMG', 			category = 'machine', 	model = 'w_sb_microsmg', canHide = false},
	{name = 'WEAPON_SMG', 				category = 'machine', 	model = 'w_sb_smg', canHide = false},
	{name = 'WEAPON_MG', 				category = 'machine', 	model = 'w_mg_mg', canHide = false},
	{name = 'WEAPON_COMBATMG', 			category = 'machine', 	model = 'w_mg_combatmg', canHide = false},
	{name = 'WEAPON_GUSENBERG', 		category = 'machine', 	model = 'w_sb_gusenberg', canHide = false},
	{name = 'WEAPON_COMBATPDW', 		category = 'machine', 	model = 'w_sb_pdw', canHide = false},
	{name = 'WEAPON_MACHINEPISTOL', 	category = 'machine', 	model = 'w_sb_compactsmg', canHide = false},
	{name = 'WEAPON_ASSAULTSMG', 		category = 'machine', 	model = 'w_sb_assaultsmg', canHide = false},
	{name = 'WEAPON_MINISMG', 			category = 'machine', 	model = 'w_sb_minismg', canHide = false},

	{name = 'WEAPON_ASSAULTRIFLE', 		category = 'assault', 	model = 'w_ar_assaultrifle', canHide = false}, 
	{name = 'WEAPON_CARBINERIFLE', 		category = 'assault', 	model = 'w_ar_carbinerifle', canHide = false},
	{name = 'WEAPON_ADVANCEDRIFLE', 	category = 'assault', 	model = 'w_ar_advancedrifle', canHide = false},
	{name = 'WEAPON_SPECIALCARBINE', 	category = 'assault', 	model = 'w_ar_specialcarbine', canHide = false},
	{name = 'WEAPON_BULLPUPRIFLE', 		category = 'assault', 	model = 'w_ar_bullpuprifle', canHide = false},
	{name = 'WEAPON_COMPACTRIFLE', 		category = 'assault', 	model = 'w_ar_assaultrifle_smg', canHide = false},

	{name = 'WEAPON_PUMPSHOTGUN', 		category = 'shotgun', 	model = 'w_sg_pumpshotgun', canHide = false},
	{name = 'WEAPON_SAWNOFFSHOTGUN', 	category = 'shotgun', 	model = 'w_sg_sawnoff', canHide = false},
	{name = 'WEAPON_BULLPUPSHOTGUN', 	category = 'shotgun', 	model = 'w_sg_bullpupshotgun', canHide = false},
	{name = 'WEAPON_ASSAULTSHOTGUN', 	category = 'shotgun', 	model = 'w_sg_assaultshotgun', canHide = false},
	{name = 'WEAPON_MUSKET', 			category = 'shotgun', 	model = 'w_ar_musket', canHide = false},
	{name = 'WEAPON_HEAVYSHOTGUN', 		category = 'shotgun', 	model = 'w_sg_heavyshotgun', canHide = false},
	{name = 'WEAPON_DBSHOTGUN', 		category = 'shotgun', 	model = 'w_sg_doublebarrel', canHide = false},

	{name = 'WEAPON_SNIPERRIFLE', 		category = 'sniper', 	model = 'w_sr_sniperrifle', canHide = false},
	{name = 'WEAPON_HEAVYSNIPER', 		category = 'sniper', 	model = 'w_sr_heavysniper', canHide = false},
	{name = 'WEAPON_MARKSMANRIFLE', 	category = 'sniper', 	model = 'w_sr_marksmanrifle', canHide = false},

	{name = 'WEAPON_FIREWORK', 			category = 'heavy', 		model = 'w_lr_firework', canHide = false},

	{name = 'WEAPON_MOLOTOV', 			category = 'thrown', 	model = nil, canHide = true},
	{name = 'WEAPON_FIREEXTINGUISHER', 	category = 'thrown', 	model = nil, canHide = true},
	{name = 'WEAPON_PETROLCAN', 		category = 'thrown', 	model = nil, canHide = true},
	{name = 'WEAPON_SNOWBALL', 			category = 'thrown', 	model = nil, canHide = true},
	{name = 'WEAPON_BALL', 				category = 'thrown', 	model = nil, canHide = true},
	{name = 'WEAPON_SMOKEGRENADE', 		category = 'thrown', 	model = nil, canHide = true},
	{name = 'WEAPON_BZGAS', 			category = 'thrown', 	model = nil, canHide = true},

	--{name = 'WEAPON_DIGISCANNER', 		category = 'others', 	model = 'w_am_digiscanner'},
	{name = 'WEAPON_DAGGER', 			category = 'smallemelee', 	model = 'prop_w_me_dagger', canHide = true},
	--{name = 'WEAPON_GARBAGEBAG', 		category = 'others', 	model = ''},
	--{name = 'WEAPON_HANDCUFFS', 		category = 'others', 	model = ''},
	{name = 'WEAPON_BATTLEAXE', 		category = 'bigmelee', 	model = 'prop_tool_fireaxe', canHide = false},
	--{name = 'WEAPON_POOLCUE', 			category = 'others', 	model = 'prop_pool_cue'},
	{name = 'WEAPON_WRENCH', 			category = 'bigmelee', 	model = 'w_me_hammer', canHide = false},
	--{name = 'GADGET_NIGHTVISION', 		category = 'others', 	model = ''},
	--{name = 'GADGET_PARACHUTE', 		bone = 24818, x = 0.05, y = -0.15, z = 0.02, xRot = 180.0, yRot = 90.0, zRot = 0.0, category = 'others', 	model = 'p_parachute_s'},

	{name = 'WEAPON_PISTOL_MK2', 		category = 'handguns', 		model = 'w_pi_pistolmk2', canHide = true},
	{name = 'WEAPON_SNSPISTOL_MK2', 	category = 'handguns', 		model = 'w_pi_sns_pistolmk2', canHide = true},
	{name = 'WEAPON_REVOLVER_MK2', 		category = 'handguns', 		model = 'w_pi_revolvermk2', canHide = true},
	{name = 'WEAPON_SMG_MK2', 			category = 'machine', 		model = 'w_sb_smgmk2', canHide = false},
	{name = 'WEAPON_PUMPSHOTGUN_MK2', 	category = 'shotgun', 		model = 'w_sg_pumpshotgunmk2', canHide = false},
	{name = 'WEAPON_ASSAULTRIFLE_MK2', 	category = 'assault', 		model = 'w_ar_assaultriflemk2', canHide = false},
	{name = 'WEAPON_CARBINERIFLE_MK2', 	category = 'assault', 		model = 'w_ar_carbineriflemk2', canHide = false},
	{name = 'WEAPON_SPECIALCARBINE_MK2',category = 'assault', 		model = 'w_ar_specialcarbinemk2', canHide = false},
	{name = 'WEAPON_BULLPUPRIFLE_MK2', 	category = 'assault', 		model = 'w_ar_bullpupriflemk2', canHide = false},
	{name = 'WEAPON_COMBATMG_MK2', 		category = 'machine', 		model = 'w_mg_combatmgmk2', canHide = false},
	{name = 'WEAPON_HEAVYSNIPER_MK2', 	category = 'sniper', 		model = 'w_sr_heavysnipermk2', canHide = false},
	{name = 'WEAPON_MARKSMANRIFLE_MK2', category = 'sniper', 		model = 'w_sr_marksmanriflemk2', canHide = false},
}

```

{% endtab %}
{% endtabs %}

**Insert the database for proper operation:**

<pre class="language-sql"><code class="lang-sql">CREATE TABLE IF NOT EXISTS `jotadev_organizaciones` (
  `id` int(11) NOT NULL AUTO_INCREMENT,
  `nombre` varchar(64) NOT NULL,
  `label` varchar(64) NOT NULL,
  `color` varchar(9) DEFAULT NULL,
  `miembros_maximos` int(11) NOT NULL DEFAULT 1,
  `jefe` varchar(128) DEFAULT NULL,
  `permisos` text DEFAULT NULL,
  `logos_orga` varchar(255) DEFAULT NULL,
  `tienda` longtext DEFAULT NULL,
  `notas_administracion` longtext CHARACTER SET utf8mb4 COLLATE utf8mb4_bin DEFAULT NULL,
  `puntos_data` longtext CHARACTER SET utf8mb4 COLLATE utf8mb4_bin DEFAULT NULL CHECK (json_valid(`puntos_data`)),
  `miembros` longtext CHARACTER SET utf8mb4 COLLATE utf8mb4_bin DEFAULT NULL CHECK (json_valid(`miembros`)),
  `rangos` longtext CHARACTER SET utf8mb4 COLLATE utf8mb4_bin DEFAULT NULL CHECK (json_valid(`rangos`)),
  `nivel` float NOT NULL DEFAULT 1,
  `dinero_orga` int(11) NOT NULL DEFAULT 0,
  `interiores` longtext CHARACTER SET utf8mb4 COLLATE utf8mb4_bin DEFAULT NULL CHECK (json_valid(`interiores`)),
  PRIMARY KEY (`id`),
  UNIQUE KEY `uniq_nombre` (`nombre`)
) ENGINE=InnoDB AUTO_INCREMENT=60 DEFAULT CHARSET=utf8mb4;

CREATE TABLE IF NOT EXISTS `jotadev_graffiti` (
  `id` int(11) NOT NULL AUTO_INCREMENT,
  `identifier` varchar(60) NOT NULL,
  `banda` varchar(50) NOT NULL,
  `coords` longtext CHARACTER SET utf8mb4 COLLATE utf8mb4_bin NOT NULL CHECK (json_valid(`coords`)),
  `image` varchar(255) NOT NULL,
  `created_at` timestamp NOT NULL DEFAULT current_timestamp(),
  PRIMARY KEY (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=40 DEFAULT CHARSET=utf8mb4;

CREATE TABLE IF NOT EXISTS `jotadev_orgs_robos` (
  `id` int(11) NOT NULL AUTO_INCREMENT,
  `tipo` varchar(20) COLLATE utf8mb4_unicode_ci NOT NULL,
  `descripcion` text COLLATE utf8mb4_unicode_ci DEFAULT NULL,
  `nombre` varchar(64) COLLATE utf8mb4_unicode_ci NOT NULL,
  `label` varchar(64) COLLATE utf8mb4_unicode_ci NOT NULL,
  `policias_min` int(11) DEFAULT 0,
  `nivel_min` int(11) DEFAULT 1,
  `info` longtext CHARACTER SET utf8mb4 COLLATE utf8mb4_bin DEFAULT NULL CHECK (json_valid(`info`)),
  PRIMARY KEY (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=21 DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;

<strong>INSERT INTO `jotadev_orgs_robos` (`id`, `tipo`, `descripcion`, `nombre`, `label`, `policias_min`, `nivel_min`, `info`) VALUES
</strong>	(8, 'menor', 'Roba el Badulaque Central', 'Badu Central', 'badu_central', 1, 2, '[]'),
	(9, 'menor', 'Roba la Tienda de Tattos', 'Tienda Tattos', 'tienda_tatto', 2, 3, '[]'),
	(10, 'mayor', 'Roba el Banco Central y llevate todo su dinero', 'Banco Central', 'baco_central', 1, 1, '[]'),
	(11, 'mayor', 'Roba los Bancos Fleccas', 'Bancos Fleccas', 'baco_flecca', 2, 3, '[]'),
	(12, 'menor', 'Roba la Tienda de Peluquerias', 'Robo Peluquerias', 'tienda_pelu', 1, 3, '[]'),
	(13, 'menor', 'Consigue vehiculos robados y vendelos al por mayor', 'Robo Importacion', 'importa_veh', 1, 3, '[]'),
	(20, 'mayor', 'Roba el Yate y llevate todo su dinero', 'Robo Yate', 'yate', 2, 5, '[]');

CREATE TABLE IF NOT EXISTS `jotadev_org_darkchat` (
  `id` int(11) NOT NULL AUTO_INCREMENT,
  `label` varchar(50) NOT NULL,
  `texto` text NOT NULL,
  `identifier` varchar(64) NOT NULL,
  `created_at` timestamp NOT NULL DEFAULT current_timestamp(),
  PRIMARY KEY (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=50 DEFAULT CHARSET=utf8mb4;

CREATE TABLE IF NOT EXISTS `jotadev_org_garages_vehicles` (
  `id` int(11) NOT NULL AUTO_INCREMENT,
  `vehicle` varchar(50) NOT NULL,
  `label` varchar(100) NOT NULL,
  `props` longtext DEFAULT NULL,
  `plate` varchar(20) NOT NULL,
  `banda_label` varchar(100) NOT NULL,
  `fuel` float(5,2) DEFAULT 100.00,
  `stored` tinyint(1) DEFAULT 1,
  `estado` enum('robado','veh_orga') NOT NULL DEFAULT 'veh_orga',
  PRIMARY KEY (`id`),
  UNIQUE KEY `plate_unique` (`plate`)
) ENGINE=InnoDB AUTO_INCREMENT=37 DEFAULT CHARSET=utf8mb4;

CREATE TABLE IF NOT EXISTS `jotadev_org_logs_money` (
  `id` int(11) NOT NULL AUTO_INCREMENT,
  `info` longtext DEFAULT NULL,
  `label_banda` varchar(50) NOT NULL,
  `identifier` varchar(64) NOT NULL,
  `name` varchar(100) NOT NULL,
  `created_at` timestamp NOT NULL DEFAULT current_timestamp(),
  PRIMARY KEY (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=33 DEFAULT CHARSET=utf8mb4;

CREATE TABLE IF NOT EXISTS `jotadev_org_misiones` (
  `id` int(11) NOT NULL AUTO_INCREMENT,
  `org_id` int(11) NOT NULL,
  `mision_id` varchar(50) COLLATE utf8mb4_unicode_ci NOT NULL,
  `progreso` int(11) DEFAULT 0,
  `completada` tinyint(1) DEFAULT 0,
  `fecha_inicio` timestamp NOT NULL DEFAULT current_timestamp(),
  `fecha_actualizacion` timestamp NOT NULL DEFAULT current_timestamp() ON UPDATE current_timestamp(),
  PRIMARY KEY (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=4 DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;

CREATE TABLE IF NOT EXISTS `jotadev_org_territorios` (
  `id` int(11) NOT NULL AUTO_INCREMENT,
  `label_banda` varchar(100) NOT NULL,
  `coords` longtext CHARACTER SET utf8mb4 COLLATE utf8mb4_bin NOT NULL CHECK (json_valid(`coords`)),
  `type` enum('graffiti','droga') NOT NULL,
  `created_at` timestamp NOT NULL DEFAULT current_timestamp(),
  `progreso` longtext CHARACTER SET utf8mb4 COLLATE utf8mb4_bin NOT NULL CHECK (json_valid(`progreso`)),
  PRIMARY KEY (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=23 DEFAULT CHARSET=utf8mb4;

</code></pre>

***Add items according to your framework***

{% tabs %}
{% tab title="ESX" %}

```sql
INSERT INTO items (name, label, weight) VALUES
('graffiti', 'Spray de Graffiti', 1),
('deletegraffiti', 'Borrador de Graffitis', 1);
```

{% endtab %}

{% tab title="QB-Core" %}

```lua
-- Graffiti Spray
['graffiti'] = {
    ['name'] = 'graffiti',
    ['label'] = 'Spray de Graffiti',
    ['weight'] = 500,
    ['type'] = 'item',
    ['image'] = 'graffiti.png',
    ['unique'] = false,
    ['useable'] = true,
    ['shouldClose'] = true,
    ['combinable'] = nil,
    ['description'] = 'Usa este spray para pintar un graffiti en la pared.'
},

-- Borrador de Graffiti
['deletegraffiti'] = {
    ['name'] = 'deletegraffiti',
    ['label'] = 'Borrador de Graffitis',
    ['weight'] = 500,
    ['type'] = 'item',
    ['image'] = 'deletegraffiti.png',
    ['unique'] = false,
    ['useable'] = true,
    ['shouldClose'] = true,
    ['combinable'] = nil,
    ['description'] = 'Una balleta para limpiar graffitis de la pared.'
},

```

{% endtab %}
{% endtabs %}

***

**Dependencies:**

* bob74\_ipl
* pma-voice

***If you have problems with the radio, use this fully compatible pma-voice***

{% file src="<https://3421265329-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FzDRYxKNrQL10LsRlXjcj%2Fuploads%2FHlCnFTDyNnblYaydeEvm%2Fpma-voice.rar?alt=media&token=93033e04-e264-4242-ab6d-ce956be9f4b3>" %}
