Envi Scripts Documentation
  • 👋Introduction
  • 🌉Envi-Bridge
  • ⚙️Compatibility
  • 🖨️Licensing
  • 📒Premium Scripts
    • ❔FAQ / COMMON ISSUES
    • ‼️FIRST STEPS (READ FIRST)
    • ⭐Useful Resources
    • 👀Envi FiveM Showcase Server
    • 📸Envi-Camera
      • ❗First Steps
      • Inventory Setup
      • Editable Functionality
      • Complete Lens Kit
      • Printing Photos
      • Ped Reactions
      • Exports
      • Config File
    • 🪚Envi-ChopShop
      • Inventory Setup
      • How to Chop
      • Props for AntiCheats
      • Editable Functionality
      • Config File
    • 🪣Envi-Dumpsters
      • Common Issues
      • Inventory Setup
      • Editable Functionality
      • Exports
      • Exclusive Zones
      • Survival Items
      • Shopping Carts
      • Hobo Bowling
      • Hobo Taxi
      • Rats and Racoons
      • Config File
      • V2 Config
    • 💺Envi-Ejector-Seats
      • Inventory Setup
      • How to Eject
      • Editable Functionality
      • Config File
    • 🔥Envi-Flamethrower (Standalone)
      • Common Issues
      • Inventory Setup
      • Refueling
      • Editable Functionality
      • Config File
    • 🪽Envi-Flight-Suits
      • Inventory Setup
      • Flight Suits
      • Config File
    • 🍜Envi-Food-Truck
      • ❗VooDoo Required
      • Common Issues
      • Inventory Setup
      • Adding Additional Grill Items
      • Unique Shops with Liveries
      • Spawning the Trucks
      • Using the Trucks
      • Exports
      • Config File
    • 💍Envi-Forever-Rings
      • Inventory Setup
      • Editable Functionality
      • Ring Shop MLO
      • Config File
    • 💻Envi-Hack-Minigames (Standalone)
      • The Worm
      • Password
      • Firewall
      • Node Runner
      • Config File
    • 🎞️Envi-HUD
      • ❗First Time Setup
      • Common Issues
      • Inventory Setup
      • Adding Custom Weapons
      • Change Logo
      • Custom Fonts
      • Converting Notifications
      • Converting Progress Bars
      • Editable Functionality
      • Settings Save Location
      • Exports and Events
      • Commands
      • Vehicle Control
      • Anti Muscle Spasm
      • Ragdoll
      • Config File
    • 🎇Envi-Items
      • Inventory Setup
      • Config File
    • 🚑Envi-Medic
      • Common Issues
      • Fully Disable Transport to Hospital
      • Failsafe
      • Ambulance Scripts
      • Vehicle Fuel
      • Vehicle Keys
      • Exports
      • Config File
    • ☄️Envi-MethVan
      • Common Issues
      • Inventory Setup
      • Cooking Process
      • Editable Functionality
      • Adding a Vehicle
      • Config File
    • 🍃Envi-Megablower9000 (Standalone)
      • Inventory Setup
      • Config File
    • 👯Envi-Population (Standalone)
      • ❗Initial Setup
      • Common Issues
      • Config File
    • 🗒️Envi-Prescriptions
      • Common Issues
      • Inventory Setup
      • Editable Functionality
      • Config File
    • 🔧Envi-Sabotage
      • ❗First Time Setup
      • Common Issues
      • Inventory Setup
      • Exports
    • 🛒Envi-Shops
      • Common Issues
      • Inventory Setup
      • Exports
      • Editable Functionality
      • Config File
    • 📱Envi-Trap-Phone
      • Common Issues
      • Inventory Setup
      • Commands
      • Exports
      • Adding Custom Drugs
      • Using the Phone
      • Disabling Extra Services
      • Config Files
        • config.lua
        • dialogueSettings.lua
        • extraServices.lua
        • gangZoneSettings.lua
        • personalitySettings.lua
        • specialContactSettings.lua
    • 👰Envi-Weddings
      • Inventory Setup
      • Starting Info
      • Manually Removing Data
      • Commands
      • Config File
    • 🎅Envi Xmas-Weapons (Standalone)
      • Inventory Setup
      • Config File
    • 🗡️Envi-Zombie-Weapons (Standalone)
      • Inventory Setup
    • 🧟‍♂️Envi-Zombies
Powered by GitBook
On this page
  1. Premium Scripts
  2. Envi-Weddings

Config File

Config = {}

Config.TestMode = true -- Set to true to allow self-proposal for testing
Config.Debug = false -- Set to true for debug prints

-- Integration with envi-forever-rings  -- Download Here: https://envi-scripts.tebex.io/package/6545241

Config.EnviForeverRings = true

Config.RemoveDivorcePapersAfterUse = true     -- NEW: Set to true to remove divorce papers after a divorce has been finalized
Config.PlayProposalAnimation = true           -- NEW: Uses the PlayProposalAnimation function in client/client_open.lua. Edit that as you wish
Config.StartCeremonyCommand = 'startCeremony' -- NEW: Command to start the ceremony used by the minister

-- When enabled:
-- - Ring configurations will be imported from envi-forever-rings
-- - This ensures consistent ring models/textures between both resources
-- - The engagement rings in Config.Rings below will be ignored if this is enabled

Config.Rings = {      -- you will need to set clothing numbers to match your server's clothing layouts
                      -- if using rings provided in envi-forever-rings, the component numbers will be 10 and the models should be towards the end of 'Decals' section
    Male = {          -- NOTE: This needs to exactly match (spelling and casing) the gender translations in Lang.lua
        Engagement = {
            ['simple_diamond'] = {
                name = 'Diamond Engagement Ring',
                component = 10,
                model = 197,
                texture = 0,
                description = 'A beautiful engagement ring'
            },
        },
        Wedding = {
            ['gold_band'] = {
                name = 'Gold Wedding Band',
                component = 10,
                model = 196,
                texture = 0,
                description = 'A beautiful wedding ring'
            }
        }
    },
    Female = {        -- NOTE: This needs to exactly match (spelling and casing) the gender translations in Lang.lua
        Engagement = {
            ['simple_diamond'] = {
                name = 'Diamond Engagement Ring',
                component = 10,
                model = 197,
                texture = 0,
                description = 'A beautiful engagement ring'
            },
        },
        Wedding = {
            ['gold_band'] = {
                name = 'Gold Wedding Band',
                component = 10,
                model = 196,
                texture = 0,
                description = 'A beautiful wedding ring'
            },
        }
    }
}

Config.WeddingLocations = {
    ['BEACH'] = {
        label = 'Beach Venue',
        coords = vector3(1300.9360, 6606.3979, 2.2333),
        effects = {
            confetti = {
                dict = 'scr_xs_celebration',
                effect = 'scr_xs_confetti_burst',
                duration = 60000, -- time in ms effect lasts
                locations = {  -- will loop through these locations and set off confetti at end of ceremony!
                    {
                        coords = vector3(1314.2679, 6617.8608, 2.00),
                        size = 2.0,
                    },
                    {
                        coords = vector3(1317.0389, 6617.8555, 2.00),
                        size = 2.0,
                    },
                    {
                        coords = vector3(1316.5802, 6612.3066, 2.00),
                        size = 2.0,
                    },
                    {
                        coords = vector3(1313.7825, 6612.4546, 2.00),
                        size = 2.0,
                    },
                }
            }
        },
        zones = {
            guestBook = {
                coords = vector3(1300.9360, 6606.3979, 2.2333),
                radius = 2.0,
                label = 'Guest Book',
                description = 'Initial check-in location'
            },
            altar = {
                coords = vector3(1315.8501, 6619.9023, 2.1275),
                radius = 3.0,
                label = 'Altar',
                description = 'Final check-in location'
            },
            bridalEntry = {
                coords = vector3(1351.0010, 6572.8740, 11.5543),
                radius = 4.0,
                label = 'Bridal Entry',
                description = 'Bridal preparation area'
            },
            bar = {
                coords = vec3(1299.66, 6597.62, 2.24),
                radius = 2.0,
                label = 'Open Bar',
                description = 'Grab something to drink!'
            },
            music = {
                coords = vec3(1325.6455, 6614.9902, 2.3442),
                radius = 3.0,
                label = 'DJ Booth',
                description = 'Control the wedding music',
                defaultSong = {
                    name = 'Wedding Music',
                    url = 'https://www.youtube.com/watch?v=lgh9XTkQTDI',
                    volume = 1.0,
                    position = vec3(1322.5869, 6610.7554, 2.1380)
                },
                playlist = {
                    maxSongs = 10,
                }
            },
        }
    },
}

Config.Roles = {
    minister = {
        label = 'Minister',
        description = 'Officiates the ceremony',
        required = true,
        appointedBy = {'bride', 'groom', 'planner'},
        checkInStages = {
            {zone = 'altar', label = 'At Altar'}
        }
    },
    bestMan = {
        label = 'Best Man',
        description = 'Stands with the groom',
        required = false,
        appointedBy = {'groom', 'planner'},
    },
    maidOfHonor = {
        label = 'Maid of Honor',
        description = 'Stands with the bride',
        required = false,
        appointedBy = {'bride', 'planner'},
    },
    planner = {
        label = 'Wedding Planner',
        description = 'Helps with the planning of the wedding and assinging of Roles',
        required = false,
        appointedBy = {'bride', 'groom'},
    },
    usher = {
        label = 'Usher',
        description = 'Helps with the ceremony',
        required = false,
        appointedBy = {'bride', 'groom', 'planner'},
    },
    bride = {
        label = 'Bride',
        description = 'The bride',
        required = true,
        checkInStages = {
            {zone = 'bridalEntry', label = 'Ready to Walk'},
            {zone = 'altar', label = 'At Altar'}
        }
    },
    groom = {
        label = 'Groom',
        description = 'The groom',
        required = true,
        checkInStages = {
            {zone = 'altar', label = 'Waiting at Altar'},
            {zone = 'altar', label = 'Final Position'}
        }
    },
    dj = {
        label = 'DJ',
        description = 'Controls the music for the ceremony',
        required = false,
        appointedBy = {'bride', 'groom', 'planner'}
    }
}

Config.OpenBar = {
    items = {
        { itemName = 'beer', label = 'Beer', price = 10, },
        { itemName = 'wine', label = 'Wine', price = 10, },
    }
}

Config.AfterPartyTime = 30 -- Time in minutes that the wedding will still be active after the ceremony (bar, dj booth etc)

Config.TutorialNotify = {
    enabled = true,
    reminderInterval = 20000, -- 20 seconds
    messages = {
        setup = {
            needMinister = "A minister needs to be assigned. Visit the Guest Book to appoint one.",
            needBestMan = "You can assign a Best Man at the Guest Book.",
            ministerNeeded = "Waiting for the minister to arrive at the altar to begin.",
            ministerReady = "The minister is ready. Groom should proceed to the altar.",
            groomNeeded = "Waiting for the groom to take position at the altar.",
            groomFirstPosition = "Groom needs to take final position at the altar.",
            groomReady = "The groom is ready. Bride can proceed to the entry point.",
            brideEntry = "Bride should check in at the entry point when ready.",
            brideFinalWalk = "The bride can now proceed to the altar.",
            readyToStart = "All participants are in position. The ceremony will soon begin."
        },
        roleSpecific = {
            minister = {
                initial = "Head to the altar to begin ceremony preparations.",
                atAltar = "Wait for the groom to arrive at the altar.",
                readyToStart = "When everyone is in position, use /startCeremony to begin the wedding."
            },
            groom = {
                initial = "Wait for the minister to arrive at the altar.",
                afterMinister = "Proceed to the altar for your initial position.",
                finalPosition = "Take your final position at the altar.",
                waitingBride = "Wait for the bride to arrive."
            },
            bride = {
                initial = "Wait for the groom to take position at the altar.",
                readyToWalk = "Proceed to the bridal entry point when ready.",
                finalWalk = "You may now walk to the altar.",
                inPosition = "The ceremony will begin shortly."
            }
        }
    }
}

-- Forever Rings Integration
CreateThread(function()
    if not Config.EnviForeverRings then
        return
    end

    local timeoutForForeverRingsStartup = 15000
    while not GetResourceState('envi-forever-rings') == 'started' do
        if timeoutForForeverRingsStartup <= 0 then
            print('[envi-weddings] Timed out waiting for Forever Rings to start')
            break
        end
        timeoutForForeverRingsStartup = timeoutForForeverRingsStartup - 100
        Wait(100)
    end

    if GetResourceState('envi-forever-rings') == 'started' then
        local ringConfigs = exports['envi-forever-rings']:GetRingConfigs()
        if ringConfigs then
            Config.Rings.Male.Engagement = {}
            Config.Rings.Female.Engagement = {}

            for key, ring in pairs(ringConfigs.Male) do
                Config.Rings.Male.Engagement[key] = {
                    name = ring.name .. ' Engagement Ring',
                    model = ring.model,
                    texture = ring.texture,
                    component = ring.component,
                    description = 'A beautiful ' .. ring.name .. ' engagement ring',
                    image = ring.image,
                    cost = ring.cost
                }
            end

            for key, ring in pairs(ringConfigs.Female) do
                Config.Rings.Female.Engagement[key] = {
                    name = ring.name .. ' Engagement Ring',
                    model = ring.model,
                    texture = ring.texture,
                    component = ring.component,
                    description = 'A beautiful ' .. ring.name .. ' engagement ring',
                    image = ring.image,
                    cost = ring.cost
                }
            end
        end
        if Config.Debug then
            print('[envi-weddings] Finished loading Forever Rings integration') 
            print(json.encode(Config.Rings, {indent = true}))
        end
    end
end)
PreviousCommandsNextEnvi Xmas-Weapons (Standalone)

Last updated 21 days ago

📒
👰