[outdated/end-of-support] VX-Farming

A script by CountryJackie

No reviews yet.
[outdated/end-of-support] VX-Farming main image

Full Description

vx-farming

This resource is using edited WarMenu by Warxander

Obfuscated version (12€ + taxes)

(uses FiveM Escrow service)

Code is accessible Partial
Subscription-based No
Lines (approximately) Approx 1500
Requirements WarMenu (bundeled)
Support Yes

Non-Obfuscated version (30€ + taxes)

Code is accessible Yes
Subscription-based No
Lines (approximately) Approx 1500
Requirements WarMenu (bundeled)
Support Yes

FUTURE UPDATED VERSION WILL BE SUPPORTED ONLY BY QBCORE!

About

Hello fellas! :wave:

I want to present you farming script that enhances roleplay for your server!

  • This resource allows you to grow any plant imaginable.
  • Useable for your drug system, farmers, vineyard.
  • Let your players grow potatoes, salads, pumpkins, vine, cannabis, cocaine, shrooms.
  • This resource is nicely optimized, players get plant data only when they are nearby (serverside checking).
  • No database is needed - plant data are persistent and saved to local json file.
  • ESX and QBCore compatible - with little fiddle with code (examples are prepared in cl_edit_me and sv_edit_me files)

Check my other work

VX-Prop-utils (0.5€)

Features

  • Optimized
    • Low ms even on extreme plant count (tested on 1k plants) - 0.02 ms idle, 0.06 ms near plants
    • Plant is destroyed when player forgets about plant (health of plant decreases based on water and fertilizer values)
    • Maximum count of plants per player (configurable)
    • Only plants that are near player are loaded and rendered (configurable distance)
    • Cannot plant more plants that are too close to each other (configurable distance)
    • OneSync infinity compatible
  • User Friendly
    • Custom streamed font
    • Two type of 3d text (default 3d text, floating text help)
    • Edited warmenu - Each plant can have different prop
    • Plants are growing in real time, you can see how sapling grows up from ground
    • You can localize any text player can see
    • Customizable notifications
    • Custom animation for watering plant (thanks to Bzzz)
  • Standalone - QB Core and ESX friendly
    • Script is ready for frameworks like ESX and QB Core
    • You have to do little work to setup script
    • Simply uncomment prepared code, insert items into your inventory script and you are ready to go
  • Configure anything
    • From potatoes to cocaine, simply you can create any type of plant
    • Add custom prop to each plant
    • For enhancing roleplay
    • Players cannot plant on asphalt, on roofs, etc…
    • Different soils means better growing rate
    • Configurable item check for planting, watering and fertilizing
    • Item reward based on plant health and grow stage

Config example

Config = Config or {}
Config.CustomFont = true --DO NOT TOUCH! Currently keep this on if you are streaming font Fira Sans (in stream folder)
Config.ButtonInspectPlant = 'E' --DO NOT TOUCH! Currently used only for 3d text label

--Allows debug prints to F8 console
Config.Debug = true

--FloatingHelp/3DText
Config.Display3DTextType = 'FloatingHelp'

--Distance to start drawing 3d text
Config.PlayerToPlantCloseDist = 3.0

--Distance to interact with closest plant (must be lower than PlayerToPlantCloseDist)
Config.PlayerToPlantInteractionDist = 1.4

--Language and localisations
Config.Language = 'en_GB'

--Set FontID that is shown when you start script with debug set to true
Config.TextFont = 13

--How much water is added to the plant when watering plant
Config.WaterIncrease = 1.0

--How much of fertilizer is added to the plant when fertilizing plant
Config.FertilizerIncrease = 0.8

--How much water is removed each tick
Config.WaterConsumption = 0.05

--How much of fertilizer ir removed each tick
Config.FertilizerConsumption = 0.03

--Server side tick of plant (how fast are plants growing) in minutes. Plant is fully grown in 20 ticks.
Config.UpdateTickTime = 20

--Client side distance to pool plants
Config.ChunkDist = 30.0

--Client side distance to render (spawn) plant objects
Config.PlantRenderDist = 20.0

--Minimum distance between each plant
Config.MinimumDistanceBetweenPlants = 3.0

--Maximum count of plants per each player
Config.MaxPlantedPlantsPerPlayer = 20

--Different soil changes water consumption and plant growth rate of the plant (http://www.kronzky.info/fivemwiki/index.php/Materials)
Config.Soil = {
    [2128369009] = 0.6,
    [-1286696947] = 0.75,
    [-461750719] = 0.8,
    [1333033863] = 0.8,
    [3008270349] = 1.0,
    [3594309083] = 1.0,
    [2461440131] = 1.0,
    [1144315879] = 1.1,
    [2409420175] = 1.2,
    [3833216577] = 1.2,
    [4170197704] = 1.2,
    [223086562] = 1.3,
    [581794674] = 1.3,
    [2352068586] = 1.4,
    [1109728704] = 1.5,
}

Config.Plants = {
    {
        type = 'weed', --Used for script calls
        minZ = -1.1, --Lower plant default location by Z
        maxZ = 0.1, --Currently not in use
        name = 'Marihuana: Weak outdoor', --UI text label
        model = 'prop_weed_02', --Prop model of the plant
        saplingModel = 'prop_weed_02', --Currently not in use
        rewardItem = 'weed', --Which item player gets when plant is harvested
        seedItem = 'weed_seed', --Which item is needed to plant
        maxRewardCount = 5 --Maximum product yield from plant (based on health and growth)
    },
    {
        type = 'weed2', --Used for script calls
        minZ = -4.0, --Lower plant default location by Z
        maxZ = 0.1, --Currently not in use
        name = 'Marihuana: OG Cush', --UI text label
        model = 'bkr_prop_weed_med_01b', --Prop model of the plant
        saplingModel = 'bkr_prop_weed_med_01b', --Currently not in use
        rewardItem = 'weed', --Which item player gets when plant is harvested
        seedItem = 'weed_seed2', --Which item is needed to plant
        maxRewardCount = 10 --Maximum product yield from plant (based on health and growth)
    },
    {
        type = 'weed3', --Used for script calls
        minZ = -4.3, --Lower plant default location by Z
        maxZ = 0.1, --Currently not in use
        name = 'Marihuana: Gorilla', --UI text label
        model = 'bkr_prop_weed_lrg_01b', --Prop model of the plant
        saplingModel = 'bkr_prop_weed_lrg_01b', --Currently not in use
        rewardItem = 'weed', --Which item player gets when plant is harvested
        seedItem = 'weed_seed3', --Which item is needed to plant
        maxRewardCount = 15 --Maximum product yield from plant (based on health and growth)
    },
    {
        type = 'coca', --Used for script calls
        minZ = -1.1, --Lower plant default location by Z
        maxZ = 0.1, --Currently not in use
        name = 'Cocaine', --UI text label
        model = 'prop_plant_cane_01a', --Prop model of the plant
        saplingModel = 'prop_weed_02', --Currently not in use
        rewardItem = 'coke', --Which item player gets when plant is harvested
        seedItem = 'coca_seed', --Which item is needed to plant
        maxRewardCount = 10 --Maximum product yield from plant (based on health and growth)
    },
    {
        type = 'tobacco', --Used for script calls
        minZ = -1.1, --Lower plant default location by Z
        maxZ = 0.1, --Currently not in use
        name = 'Tobacco', --UI text label
        model = 'prop_plant_fern_02a', --Prop model of the plant
        saplingModel = 'prop_plant_fern_02a', --Currently not in use
        rewardItem = 'tobacco', --Which item player gets when plant is harvested
        seedItem = 'tobacco_seed', --Which item is needed to plant
        maxRewardCount = 20 --Maximum product yield from plant (based on health and growth)
    },
}

--Localization
Lang = {
    ['en_GB'] = {
        Debug = {
            playerCloseToPlant = 'Player is close to plant.',
            playerFarFromPlant = 'Player is too far away from plant. (%s meters away).',
        },
        UI = {
            examinePlant = 'Press ~y~[%s]~w~ to examine the plant.',
            closeToPlant = 'There is some kind of plant',
            itLooksLike = 'It looks like %s',
            waterPlant = 'Water plant',
            fertilizePlant = 'Fertilize plant',
            harvest = 'Harvest plant',
            confirm = 'Confirm',
            harvestTooltip = 'Plant is %s %s grown.\nYou will get fewer products if the plant is not fully grown.',
            confirmNo = '~g~~h~No, let the plant grow!',
            confirmYes = '~r~~h~Yes, harvest plant anyway!',
            wateringLabel = 'Watering',
            wateringDesc = 'Plant needs water to stay healty. If water level is too low plant health level will decrease.',
            fertilizingLabel = 'Fertilizing',
            fertilizingDesc = 'Fertilizing plant increases its quality and yields more product when harvested.',
            health = 'Plant health',
            healthDesc = 'If plant health is too low it is destroyed.',
            soilQuality = 'Soil quality',
            soilQualityDesc = 'Soil quality increases growth rate and plant water consumption.',
            menuHeader = 'Plant Info'
        },
        Notification = {
            tooCloseToOtherPlant = 'You cannot plant this seed because it is too close to other plant.',
            notSuitableSoil = 'You cannot plant this seed on this soil. It won`t grow here.',
            tooSteepTerrain = 'Terrain is too steep for planting.',
            plantingObstructed = 'Planting location is obstructed.',
            planting_too_far = 'Planting location is too far away from you.',
            planting_in_vehicle = 'You cannot plant seed from vehicle.',
            maximumPlantCountReached = 'You have reached maximum count of planted plants.',
            noLicenseFound = 'Could not find your rockstar identifier.'
        }
    },
    ['cs_CZ'] = {
        Debug = {
            playerCloseToPlant = 'Hráč je blízko rostliny.',
            playerFarFromPlant = 'Hráč je příliš daleko od rosliny. (%s metrů daleko).',
        },
        UI = {
            examinePlant = 'Stiskni ~y~[%s]~w~ pro prohlédnutí rostliny.',
            closeToPlant = 'Tady něco roste',
            itLooksLike = 'Vypadá to, jako %s',
            waterPlant = 'Pokropit',
            fertilizePlant = 'Zahnojit',
            harvest = 'Sklidit',
            confirm = 'Opravdu?',
            harvestTooltip = 'Rostlina je v %s %s růstu.\nZískáš menší počet produktů, pokud ji sklidíš.',
            confirmNo = '~g~~h~Ne, nech rostlinu růst!',
            confirmYes = '~r~~h~Ano, sklidit rostlinu!',
            wateringLabel = 'Kropení',
            wateringDesc = 'Rostlina potřebuje vodu pro růst. Pokud je hranice vody nízká, bude klesat zdraví rostliny.',
            fertilizingLabel = 'Hnojení',
            fertilizingDesc = 'Hnojení rostliny zvyšuje její kvalitu a tím více produktu ze sklizení.',
            health = 'Zdraví rostliny',
            healthDesc = 'Pokud je zdraví příliš nízké, rostlina bude zníčena.',
            soilQuality = 'Kvalita půdy',
            soilQualityDesc = 'Kvalita půdy ovlivňuje rychlost růstu rostliny a její spotřebu vody.',
            menuHeader = 'Rostlina'
        },
        Notification = {
            tooCloseToOtherPlant = 'Sazenici nelze zde zasadit - je příliš blízko jiné rostliny.',
            notSuitableSoil = 'Na této půdě nepůjde sazenici zasadit. Tady nic neporoste.',
            tooSteepTerrain = 'Terén je příliš strmý.',
            plantingObstructed = 'Něco brání rostlině v růstu. Tady to neporoste.',
            planting_too_far = 'Místo pro zasazení rostliny je příliš daleko od tebe.',
            planting_in_vehicle = 'Z vozidla nelze zasazovat sazenice.',
            maximumPlantCountReached = 'Více rostlin už zasadit nemůžeš.',
            noLicenseFound = 'Nelze najít tvůj rockstar identifier',
        }
    }
}






https://streamable.com/hxinko

Planned features

  • Job restriction for each plant type
  • Allow plant anywhere (in bucket) without checking soil quality
  • Different items on each plant (with chance pool)
  • Add Polyzones for performance

Changelog

v1.0.3

  • Initial release

v1.0.4 (Day One patch)

  • Added new variable to config Config.Onesync to resolve issue with non-onesync servers
  • Added mew variable to config Config.ServerSyncTime to set update time to refresh plant info (time to sync data from server to client)
  • File sv_edit_me.lua file is now default implemented for ESX (for QBCore see into commented code)
  • Added check if player is already watering / fertilizing plant, to prevent spamming event
  • Added German translation (thanks to RainbowKush77)

v1.0.5

  • Removed non-necessary prints

v1.0.6

  • Fixed typo in sv_edit_me.lua
  • Prepared sv_edit_me.lua for QBCore framework