⚙️Configuration

ADVERTENCIA

Antes de explicar la configuración de la nueva version tengo que dar una ADVERTENCIA importante. El nuevo sistema de PROPS funciona por separado del QUESTS, ¿En que afecta eso? Los props que pongas no se elimina cuando lo registran, a los minutos vuelve a salir, también los props son visibles para todo los jugadores del servidor y todos podrán acceder a el para buscar y obtener la recompensa.

WARNING

Before explaining the configuration of the new version, I have to give an important WARNING. The new PROPS system works separately from QUESTS. How does that affect it? The props you place are not removed when they are registered; after a few minutes, they reappear. Additionally, the props are visible to all players on the server, and everyone can access them to search for and claim the reward.Ç

Config_npcs.lua

  • The options mentioned in the updates have been added.

  • Aow the config is separately in different files.

RVNPCS = {}

RVNPCS.drawtext = true -- true = draw text, false = don't draw text
RVNPCS.interactionrange = 3 -- Interaction range

RVNPCS.NPCs = {
    [1] = { 
        model = {"a_m_m_salton_03"},
        title = "TEXT NAME", -- Title text
        texttarget = "TEXT TARGET", -- Text target
        coords = vector4(301.13, 2898.59, 43.61, 163.69), -- NPC coordinates
        animation = {
            dict = "anim@mp_corona_idles@male_c@idle_a", -- Animation dictionary
            name = "idle_a", -- Animation name
            freezeAnimation = true, -- Add this field
        },
        dialog = { -- Dialog text
            "TEXT DIALOG" -- Dialog text
        },
        camara = true, -- Activate camera
        camarastanding = {
            offsetX = 0.5, -- X position
            offsetY = 0.7, -- Y position
            offsetZ = 0.5, -- Z position
            focusOffsetZ = 0.3 -- Focus Z position
        },
        requiredItem = '', -- Required item -   "item", "" or false
        requiredAmount = 10, -- Required amount
        requiredItem2 = "",   -- Second required item -  "item", "" or false
        requiredAmount2 = 1,  -- Second required amount
        rewardItem1 = '',   -- Reward item -   "item" or false
        rewardAmount1 = 1,   -- Reward amount
        useProgressBar = false, -- Use progress bar
        rewardItem2 = '',   -- Reward item -   "item" or false
        rewardAmount2 = 2,   -- Reward amount 
        rewardItem3 = '',   -- Reward item -   "item" or false
        rewardAmount3 = 1,   -- Reward amount
        accept = true,  -- Accept NPC
        eventOnAccept = "reaver_talknpcs:notification2",  -- Event to execute
        executeEvent = false,  -- Execute event instead of giving an item
        CheckAllowedCitizenIDs = false,
        sprites = false, -- bl_sprites
        target = true, -- Activate target
        AllowedCitizenIDs = { -- Allow these IDs to interact
            ["citizenID1"] = true, -- Allow this ID to interact
            ["citizenID2"] = true, -- Allow this ID to interact
            -- etc.
        },
        allowEveryone = true,  -- Allow everyone to interact
        -- requiredJob = "mechanic1",  -- Specific job required (optional)
        -- requiredGang = "mafia",  -- Specific gang required (optional)
        useProp = false,
        dailyCooldownEnabled = false, -- Added: Enable daily cooldown per NPC
        dailyCooldowntime = 24 * 60 * 60, -- Daily cooldown time
        Cooldown = 0, -- Cooldown time
        propName = 'PROP', -- Prop name
        propCoords = { -- Prop coordinates
            boneIndex = 28422, -- Bone index (right hand)
            x = -0.15,   -- X offset
            y = 0.0,    -- Y offset
            z = 0.0,    -- Z offset
            xRot = 0.0, -- X rotation
            yRot = 0.0,  -- Y rotation
            zRot = 0.0   -- Z rotation
        },
        outfit = { -- NPC outfit
            enabled = false, -- Enable outfit
            torso = { drawable = 338, texture = 0 }, -- Torso
            legs = { drawable = 347, texture = 0 }, -- Legs
            shoes = { drawable = 235, texture = 0 }, -- Shoes
            accessories = { drawable = 0, texture = 0 }, -- Accessories
            undershirt = { drawable = 14, texture = 5 }, -- Undershirt
            kevlar = { drawable = 0, texture = 0 }, -- Kevlar
            badge = { drawable = 0, texture = 0 }, -- Badge
            torso2 = { drawable = 875, texture = 0 }, -- Torso 2
            hat = { enabled = false, drawable = 246, texture = 0 }, -- Hat
            hair = { enabled = true, drawable = 233, texture = 0, color1 = 19, color2 = 18}, -- Hair
            mother = 45, -- Face 2
            father = 23,  -- Skin 1
            face = 45, -- Face 1
            skin = 23, -- Skin 1
            faceMix = 0.6,
            eyebrows = {index = 3, color =0, opacity = 1.0}, -- Eyebrows
            mask = {enabled = true, index = 1, texture = 0}, -- Mask
            glasses = {enabled = false, index = 1, texture = 0}, -- Glasses
            makeup = {
                lipstick = {index = 7, color = 2, opacity = 1}, -- Lipstick
                blush = {index = -1, color = 2, opacity = 0.8}, -- Blush
                eyeShadow = {index = 4, color = 2, opacity = 0.8} -- Eye Shadow
            },
        },
        useWeapon = true, -- Use weapon
        weaponName = 'WEAPON_PISTOL', -- Weapon name
        ShowNPCImage = false, -- Show NPC image
        imageUrl = "https://r2.fivemanage.com/Ck8tIuaMEfDjY82KcMEaI/images/logoreaver.png", -- Image URL
        blip = {
            enabled = false,  -- Enable blip
            sprite = 147,       -- Blip sprite
            color = 7,        -- Blip color
            scale = 0.8,      -- Blip scale
            display = 4,      -- Display on map
            shortRange = true, -- Use short range
            name = ""  -- Add this line to set the blip name
        }
    },
    --more npcs   
}

RVPROPS.Props = {
     [1] = {
                model = "prop_rub_carwreck_17",
                coords = vector4(2359.42, 3047.77, 48.15, 234.0),
                adjustToGround = true,
                loadDistance = 20.0, -- En desarrollo...
                ox_target = {
                    icon = "fa-sharp-duotone fa-solid fa-magnifying-glass",
                    label = "Buscar Material"
                },
                ProgressBar = {
                    enable = true,
                    animDict = "mini@repair",
                    anim = "fixing_a_player",
                    flags = 49,
                    label = "Buscando...",
                    duration = 5000,
                    disableMovement = true,
                    disableCarMovement = false,
                    disableMouse = false,
                    disableCombat = true
                },
                marker = { -- Marca sobre el prop
                    type = 20,
                    scaleX = 0.3,
                    scaleY = 0.3,
                    scaleZ = 0.3,
                    colorR = 0,
                    colorG = 0,
                    colorB = 0,
                    colorA = 255,
                    rotX = 0.0,
                    rotY = 0.0,
                    rotZ = 0.0,
                    zOffset = 1.0,
                    bob = 1,
                    hideDistance = 10.0, -- Nueva propiedad para ocultar el marcador
                    rotation = 1,
                    drawMarker = true -- Nueva propiedad para activar/desactivar el marcador
                },
                reward = {
                    items = {
                        { item = "scrapmetal", minAmount = 4, maxAmount = 8 }, -- Rango para el primer ítem
                        { item = "cash", minAmount = 2, maxAmount = 5 }, -- Rango para el segundo ítem
                        -- Puedes agregar más ítems aquí
                    }
                },
                respawnTime = 1 -- minutes
                
            },
         --more
 }
```

En los props no hay cambios, solo se ha mejorado la capacidad de que el prop este siempre en el suelo y no flotando.

config_locale.lua



RVLOCALE = {}

RVLOCALE.locale = {
    ['es'] = {
        start_loading_props = "Iniciando la carga de props",
        player_connected = "Jugador conectado, cargando props",
        resource_stopped = "Recurso detenido, eliminando props",
        prop_spawned = "Prop spawnedo en: ",
        job_permission_denied = "El jugador no tiene el trabajo permitido para registrar este prop",
        gang_permission_denied = "El jugador no tiene la banda permitida para registrar este prop",
        prop_cooldown_active = "Cooldown activo para este prop, tiempo restante: ",
        prop_registered_deleted = "Prop registrado y eliminado",
        prop_respawned = "Prop respawneado después del tiempo de respawn",
        registerProp = "Objeto registrado",
        missionaceptada = "Has rebido los objetos",
        receivedItem = "You received: ",
         PropsTitulo = "Prop Registration",
        Propsdescription = "A prop has been registered.",
                --NPC
        nopermisos = "No tienes permiso para interactuar con este NPC.",
        novip = "No eres V.I.P",
        misionaceptada = "Misión aceptada",
        erroritems = "No tienes el objeto requerido",
        cooldown = "Debes esperar %s minutos y %s segundos antes de volver a interactuar con este NPC.",
        dailyCooldown = "Debes esperar %s horas y %s minutos antes de volver a interactuar con este NPC.",
        proppermisojob = "No perteneces al job asignado",
        proppermisogang = "No perteneces a ninguna Gang asignada",
        propcooldownTime = "No lo puedes registar",
    },
    ['en'] = {
        start_loading_props = "Starting prop loading",
        player_connected = "Player connected, loading props",
        resource_stopped = "Resource stopped, removing props",
        prop_spawned = "Prop spawned at: ",
        job_permission_denied = "Player does not have the job permission to register this prop",
        gang_permission_denied = "Player does not have the gang permission to register this prop",
        prop_cooldown_active = "Cooldown active for this prop, time remaining: ",
        prop_registered_deleted = "Prop registered and deleted",
        prop_respawned = "Prop respawned after respawn time",
        registerProp = "Registed Object",
        missionaceptada = "Has rebido los objetos",
        receivedItem = "You received: ",
        PropsTitulo = "Prop Registration",
        Propsdescription = "A prop has been registered.",
               --NPC
      nopermisos = "No tienes permiso para interactuar con este NPC.",
      novip = "No eres V.I.P",
      misionaceptada = "Misión aceptada",
      erroritems = "No tienes el objeto requerido",
      cooldown = "Debes esperar %s minutos y %s segundos antes de volver a interactuar con este NPC.",
      dailyCooldown = "Debes esperar %s horas y %s minutos antes de volver a interactuar con este NPC.",
      proppermisojob = "No perteneces al job asignado",
      proppermisogang = "No perteneces a ninguna Gang asignada",
      propcooldownTime = "No lo puedes registar",
    }
}

config_webhooks.lua

It is in development, I do not recommend using it for now.

Webhook = {
    LoadNPCs = "",
    ColorLoadNPCs = 16711680,
    LoadNPCsthumbnail = "",
    -----
    Items = "",
    ColorItems = 16711680,
    Itemsthumbnail = "",
    player = "Player",
    npc = "Npc",
    item = "Item Requerido",
    amount = "Cantidad Requerida",
    rewardItem1 = "Reward Item 1",
    rewardAmount1 = "Reward Item 1 Amount",
    rewardItem2 = "Reward Item 2",
    rewardAmount2 = "Reward Item 2 Amount",
    rewardItem3 = "Reward Item 3",
    rewardAmount3 = "Reward Item 3 Amount",
    -----
    Props = "",
    ColorProps = 16711680,
    Propsthumbnail = "",
}
  • Próximamente el archivo webhooks.lua esta abierto para todo el mundo.

  • Soon the webhooks.lua file will be open to everyone.

config.lua

Se ha añadido la posibilidad de cambia el core del script pero aun no se recomienda cambiarlo a ESX, el script esta en desarrollo para ESX

Tambien se ha añadido la posibilidad de elegir la notificación personalizada desde el config.

Config = {}

Config.Core = "QB-Core" -- "ESX" or "QB-Core" 

Config.CoreDefine = "" -- @CoreDefine - Si estás usando ESX Legacy o QB-Core, deja el valor "" y el script completará el export para definir el core
Config.CoreExport = function()
	--return exports['es_extended']:getSharedObject() -- Si estás usando ESX Legacy
	 return exports['qb-core']:GetCoreObject() -- Si estás usando QB-Core
end 


Config.sprites = { -- Configuración del sprite del NPC bl_sprites
    key = "E", -- Key del sprite
    shape = "circle", -- Forma del sprite
    spriteIndicator = true, -- Indicador del sprite
    colour = {255, 255, 255, 255}, -- Color del sprite
    distance = 2.0,     -- Distancia del sprite
    scale = 0.05,       -- Escala del sprite
}

Config.interactionrange = 2
Config.ProgressBarNPC = {
   Tiempo = 5000,
  Texto = "Esperando...", -- Texto del progreso
  useWhileDead = false, -- Usar mientras muere
  canCancel = true, -- Puede cancelar
  disableMovement = true, -- Desactivar movimiento
  disableCarMovement = true, -- Desactivar movimiento en coches
  disableMouse = true, -- Desactivar mouse
  disableCombat = true, -- Desactivar combate
  animDict = "mp_common", -- Diccionario de animación
  anim = "givetake1_a", -- Nombre de la animación
  flags = 49 -- Flags de la animación
}

Config.Target = {
    icono = "fas fa-comments",
    Distancia = 0.2, --NO FUNCIONAL
    iconocolor = "white"
}

Config.Notify = {
    enable = true,
    language = 'es' -- 'es' para español, 'en' para inglés
}

 
Config.Notification = function(message, time, type) -- Función para mostrar las notificaciones
	if type == "success" then -- Si el tipo de notificación es "success"
       QBCore.Functions.Notify(message, type, time) -- Notificación de éxito
	elseif type == "error" then -- Si el tipo de notificación es "error"
		QBCore.Functions.Notify(message, "error", time) -- Notificación de error
	end
end


-- Configuración de depuración
Config.Debug = { -- Configuración de depuración
    DebugProps = false, -- Activar o desactivar depuración de props
    enabled = false, -- Activar o desactivar depuración
    language = "es", -- Idioma de depuración ("es" para español, "en" para inglés)
    messages = {
        es = {
            resourceStart = "El recurso ha iniciado.",
            jugadorConectando = "Jugador conectándose, cargando NPCs...",
            jugadorReaparecido = "Jugador reaparecido, cargando NPCs...",
            creandoNPC = "^1Creando NPC...",
            npcCreado = "NPC creado",
            abriendoUI = "Abriendo la interfaz de usuario para la misión.",
            obteniendoInformacionObjetos = "Obteniendo información de los objetos requeridos y recompensas.",
            activandoCamara = "Activando la cámara para el NPC.",
            enviandoMensajeNUI = "Enviando mensaje NUI.",
            errorObjetoRequerido = "Error: npcId no está definido al aceptar la misión.",
            aceptandoMision = "Misión aceptada para NPC: ",
            cerrandoUI = "Cerrando la interfaz de usuario.",
            empezandoAnimacionRecompensa = "Empezando animación de recompensa.",
            progressBarCancelado = "Barra de progreso cancelada.",
            destruyendoCamara = "Camara destruida",
            cooldown = "tienes cooldown",
            progressBarCompleta = "Barra de progreso completada."
        },
        en = {
            resourceStart = "The resource has started.",
            jugadorConectando = "Player connecting, loading NPCs...",
            jugadorReaparecido = "Player respawned, loading NPCs...",
            creandoNPC = "^1Creating NPC...",
            npcCreado = "NPC created",
            abriendoUI = "Opening the user interface for the mission.",
            obteniendoInformacionObjetos = "Fetching information on required items and rewards.",
            activandoCamara = "Activating the camera for the NPC.",
            destruyendoCamara = "Camera OFF",
            cooldown = "Cooldown",
            enviandoMensajeNUI = "Sending NUI message.",
            errorObjetoRequerido = "Error: npcId is not defined when accepting the mission.",
            aceptandoMision = "Mission accepted for NPC: ",
            cerrandoUI = "Closing the user interface.",
            empezandoAnimacionRecompensa = "Starting reward animation.",
            progressBarCancelado = "Progress bar cancelled.",
            progressBarCompleta = "Progress bar completed."
        }
    }
}

Se tiene que tener en cuenta que soy nueva en creacion de scripts para fiveM, toda ayuda y consejo son bienvenidos en mi discord.

It must be taken into account that I am new to creating scripts for fiveM, all help and advice is welcome in my discord.

Última actualización