EXOTICA NETWORKDocs

Referencia completa de configuración

Archivos editables, valores de fábrica y esquema SQL del paquete

Consulta los valores de fábrica antes de comparar tu configuración. Modifica tu copia instalada y conserva los archivos originales como respaldo. Los ejemplos de identificadores y webhooks deben sustituirse en el servidor.

configs/config.lua

configs/config.lua
Config = {}

Config.Debug = false
Config.Restricted = true
Config.Framework = 'ESX'            -- ESX | QB | QBX | CUSTOM
Config.Target = 'OX'                -- OX | QB | NONE
Config.Locale = "es"                -- es | en
Config.Inventory = "DEFAULT"        -- DEFAULT | QS

Config.Notify = {
    Broadcast = true,
    MessageKey = "airdrop_incoming",
    Sound = true,
}

-- NOTA DE SEGURIDAD:
-- Config.Webhook y Config.AdminAccess viven SOLO en el servidor (server/sv_config.lua).
-- Este archivo (config.lua) se carga en cliente y servidor (shared), asi que nunca
-- debe contener secretos: ni URLs de webhook, ni identificadores de admin.

Config.Blips = {
    Drop = {
        Label = "Airdrop",
        Sprite = 550,
        Color = 1,
        Scale = 0.7,
        RadiusColor = 1,
        RadiusAlpha = 120,
        RadiusSize = 100.0,
    },
    Box = {
        Enabled = true,
        Label = "Military Crate",
        Sprite = 478,
        Color = 0,
        Scale = 0.7,
    },
    Plane = {
        Enabled = true,
        Sprite = 307,
    }
}

Config.Plane = {
    Model = "titan",
    Pilot = "s_m_m_pilot_02",
    SpawnDistance = 600.0,
    Height = 500.0,
    Speed = 160.0,
    DropDistance = 900.0,
    DeleteDistance = 1500.0,
}

Config.Drop = {
    Model = 'prop_drop_crate_01_set2',
    Parachute = 'p_cargo_chute_s',
    SpawnHeight = 120.0,
    FallSpeed = -15.0,
    OffsetRadius = 60,
    TargetDistance = 2.5,
    PickupDistance = 15.0,
    MaxRewardEntries = 20,
    MaxRewardAmount = 1000,
    DespawnSeconds = 600, -- 10 minutos: tiempo max que el crate espera en el suelo antes de desaparecer solo
    Particle = {
        Enabled = true,
        Asset = "core",
        Effect = "exp_grd_flare",
        Scale = 1.2,
    }
}

Config.Tablet = {
    Command = 'airdroptablet',
    Keybind = 'F11',
    Label = 'Gobernacion',
    DisableControls = true,
    UseAnimation = true,
}

Config.DropDefaults = {
    Label = "EN Priority Supply",
    DropType = "military",
    LockSeconds = 0, -- 0 = sin bloqueo, el crate se puede recoger apenas aterriza. Ajustable por drop desde la tablet.
    RadiusSize = 120.0,
    SmokeEnabled = true,
    PlaneEnabled = true,
    WebhookEnabled = true,
    AnnounceEnabled = true,
}

Config.MapBounds = {
    MinX = -4000.0,
    MaxX = 4500.0,
    MinY = -4000.0,
    MaxY = 8000.0,
}

Config.Performance = {
    PlaneLoopTick = 1000,
    -- cada cuanto se reintenta resolver la entidad networked del crate en
    -- clientes que aun estan lejos (el streaming la trae recien cuando el
    -- jugador se acerca); no tiene limite de intentos, solo de tiempo entre
    -- reintentos, asi cualquiera puede recibir el target sin importar
    -- cuanto tarde en llegar al punto del drop
    NetResolveDelay = 250,
}

Config.Test = {
    SkipPlane = false,
}

server/sv_config.lua

server/sv_config.lua
-- ============================================================
-- CONFIG SERVER-ONLY  (NO se carga en el cliente)
-- ============================================================
-- Todo lo sensible va aqui para que no aparezca en un dump del
-- lado cliente: URL de webhook e identificadores de administrador.
-- Este archivo se declara unicamente en server_scripts del fxmanifest.
-- ============================================================

Config = Config or {}

-- Auditoria por Discord (opcional). La URL NUNCA debe estar en un archivo shared.
Config.Webhook = {
    Enabled = false,
    URL = "",                       -- https://discord.com/api/webhooks/...
    Username = "EN-AirDrops",
    Color = 13644087,
    LogCreate = true,
    LogPickup = true,
}

-- Control de acceso a la tablet. Se valida siempre server-side (isAllowed).
Config.AdminAccess = {
    Mode = "GROUP",                  -- GROUP | ACE | LIST | ALL
    ESXGroups = {
        "god"
    },
    QBPermissions = {
        "admin",
        "god"
    },
    AcePermission = "en.airdrops",
    AllowedIdentifiers = {
        -- Reemplaza por los identificadores reales de tus admins:
        "discord:000000000000000000",
        "license:xxxxxxxxxxxx"
    }
}

configs/items.lua

configs/items.lua
Items = {}

Items = {
    ['airdrop_1'] = { -- Drop id (make sure they are unquie)
        Item = 'airdrop_1',  -- Item Name used by your inventory
        Reward = { -- Rewards you get from the drop
            "bandage",
            "weapon_carbinerifle",
        }
    },
    ['airdrop_2'] = { -- Drop id (make sure they are unquie)
        Item = 'vipflare',  -- Item Name used by your inventory
        Reward = { -- Rewards you get from the drop
            "weapon_rpg",
            "weapon_carbinerifle",
        }
    }
    -- ['example'] = { -- Drop id (make sure they are unquie)
    --     Item = 'example',  -- Item Name used by your inventory
    --     Reward = { -- Rewards you get from the drop
    --         "example",
    --         "example",
    --     }
    -- }
}

configs/global.lua

configs/global.lua
Global = {}

Global.Settings = {
    Enabled = false,
    Time = 30, -- How often the global event will happen (in minutes)
    Positions = {
        vector3(1294.24, 1438.71, 99.82),
        vector3(1528.0, 1722.59, 109.95)
    },
    Rewards = {
        [1] = { -- if you leave only 1 reward it will aways give that reward if you add more it will chose at random ( you can add as much as you want)
            'weapon_pistol',
            'water'
        },
        [2] = {
            'bandage',
            'weapon_heavypistol'
        }
        -- Random3 = {
        --     'weapon_pistol',
        --     'weapon_heavypistol'
        -- }
        -- Random4 = {
        --     'weapon_pistol',
        --     'weapon_heavypistol'
        -- }
        -- Random5 = {
        --     'weapon_pistol',
        --     'weapon_heavypistol'
        -- }
    }
}

install_en_airdrop_history.sql

install_en_airdrop_history.sql
CREATE TABLE IF NOT EXISTS `en_airdrop_history` (
  `id` INT NOT NULL AUTO_INCREMENT,
  `admin_name` VARCHAR(64) NOT NULL,
  `admin_identifier` VARCHAR(128) NOT NULL,
  `x` DOUBLE NOT NULL,
  `y` DOUBLE NOT NULL,
  `z` DOUBLE NOT NULL,
  `rewards_json` LONGTEXT NOT NULL,
  `created_at` TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP,
  PRIMARY KEY (`id`),
  INDEX (`created_at`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;

En esta página