HEX
HexscriptsVersion 1.0House

Configurations

Here you will get all configurations & open source files that are included within this script.

Config Files

Config = {}

Config.Locale = 'de'
Config.SellPrice = 0.85

Config.Access = {
    ['createHouse'] = {
        'projektleitung',
        'admin'
    }
}

Config.HouseTypes = {
    [1] = {
        right_backgroundUrl = 'https://corleone.vip/hexscripts/housing/1/right_background.png', -- Right picture
        left_backgroundUrl = 'https://corleone.vip/hexscripts/housing/1/left_background.png', -- Left picture
        info = 'Diese Immobilie beinhaltet ein persönlichen Waffenschrank & Kleiderschrank',

        joinleave = {
            coords = vector4(346.52, -1012.73, -99.2, 359.24),
            marker_enabled = true,
            marker_type = nil,
            marker_color = { r = 255, g = 0, b = 0, a = 100 }
        },
        housemenu = {
            coords = vector3(349.66, -1007.4, -99.2),
            marker_enabled = true,
            marker_type = nil,
            marker_color = { r = 255, g = 0, b = 0, a = 100 }
        },
        armorymenu = {
            coords = vector3(345.09, -995.5, -99.2),
            marker_enabled = true,
            marker_type = nil,
            marker_color = { r = 255, g = 0, b = 0, a = 100 }
        },
        clothesmenu = {
            coords = vector3(351.73, -998.81, -99.2),
            marker_enabled = true,
            marker_type = nil,
            marker_color = { r = 255, g = 0, b = 0, a = 100 }
        }
    },

    [2] = {
        right_backgroundUrl = 'https://corleone.vip/hexscripts/housing/2/right_background.png', -- Right picture
        left_backgroundUrl = 'https://corleone.vip/hexscripts/housing/2/left_background.png', -- Left picture
        info = 'Diese Immobilie beinhaltet ein persönlichen Waffenschrank & Kleiderschrank',

        joinleave = {
            coords = vector4(266.11, -1007.3, -101.01, 10.29),
            marker_enabled = true,
            marker_type = nil,
            marker_color = { r = 255, g = 0, b = 0, a = 100 }
        },
        housemenu = {
            coords = vector3(256.96, -996.87, -99.01),
            marker_enabled = true,
            marker_type = nil,
            marker_color = { r = 255, g = 0, b = 0, a = 100 }
        },
        armorymenu = {
            coords = vector3(265.02, -995.8, -99.01),
            marker_enabled = true,
            marker_type = nil,
            marker_color = { r = 255, g = 0, b = 0, a = 100 }
        },
        clothesmenu = {
            coords = vector3(259.77, -1003.81, -99.01),
            marker_enabled = true,
            marker_type = nil,
            marker_color = { r = 255, g = 0, b = 0, a = 100 }
        }
    },

    [3] = {
        right_backgroundUrl = 'https://corleone.vip/hexscripts/housing/3/right_background.png', -- Right picture
        left_backgroundUrl = 'https://corleone.vip/hexscripts/housing/3/left_background.png', -- Left picture
        info = 'Diese Immobilie beinhaltet ein persönlichen Waffenschrank & Kleiderschrank',

        joinleave = {
            coords = vector4(1274.01, -1719.64, 54.77, 11.13),
            marker_enabled = true,
            marker_type = nil,
            marker_color = { r = 255, g = 0, b = 0, a = 100 }
        },
        housemenu = {
            coords = vector3(1272.35, -1712.03, 54.77),
            marker_enabled = true,
            marker_type = nil,
            marker_color = { r = 255, g = 0, b = 0, a = 100 }
        },
        armorymenu = {
            coords = vector3(1275.59, -1710.57, 54.77),
            marker_enabled = true,
            marker_type = nil,
            marker_color = { r = 255, g = 0, b = 0, a = 100 }
        },
        clothesmenu = {
            coords = vector3(1273.63, -1707.81, 54.77),
            marker_enabled = true,
            marker_type = nil,
            marker_color = { r = 255, g = 0, b = 0, a = 100 }
        }
    },

    [4] = {
        right_backgroundUrl = 'https://corleone.vip/hexscripts/housing/4/right_background.png', -- Right picture
        left_backgroundUrl = 'https://corleone.vip/hexscripts/housing/4/left_background.png', -- Left picture
        info = 'Diese Immobilie beinhaltet ein persönlichen Waffenschrank & Kleiderschrank',

        joinleave = {
            coords = vector4(-174.1731, 497.5084, 137.6670, 183.7928),
            marker_enabled = true,
            marker_type = nil,
            marker_color = { r = 255, g = 0, b = 0, a = 100 }
        },
        housemenu = {
            coords = vector3(-165.4228, 495.9556, 137.6535),
            marker_enabled = true,
            marker_type = nil,
            marker_color = { r = 255, g = 0, b = 0, a = 100 }
        },
        armorymenu = {
            coords = vector3(-175.9807, 491.9454, 130.0435),
            marker_enabled = true,
            marker_type = nil,
            marker_color = { r = 255, g = 0, b = 0, a = 100 }
        },
        clothesmenu = {
            coords = vector3(-167.4138, 487.8677, 133.8438),
            marker_enabled = true,
            marker_type = nil,
            marker_color = { r = 255, g = 0, b = 0, a = 100 }
        }
    },

    [5] = {
        right_backgroundUrl = 'https://cdn.leon1337.host/attachments/kghjn.jpg', -- Right picture
        left_backgroundUrl = 'https://cdn.leon1337.host/attachments/9x54o.jpg', -- Left picture
        info = 'Diese Immobilie beinhaltet ein persönlichen Waffenschrank & Kleiderschrank',

        joinleave = {
            coords = vector4(969.7468, 63.0025, 112.5562, 237.4034),
            marker_enabled = true,
            marker_type = nil,
            marker_color = { r = 255, g = 0, b = 0, a = 100 }
        },
        housemenu = {
            coords = vector3(983.5153, 66.7948, 116.1642),
            marker_enabled = true,
            marker_type = nil,
            marker_color = { r = 255, g = 0, b = 0, a = 100 }
        },
        armorymenu = {
            coords = vector3(971.6701, 68.6768, 116.1642),
            marker_enabled = true,
            marker_type = nil,
            marker_color = { r = 255, g = 0, b = 0, a = 100 }
        },
        clothesmenu = {
            coords = vector3(984.7704, 60.2734, 116.1642),
            marker_enabled = true,
            marker_type = nil,
            marker_color = { r = 255, g = 0, b = 0, a = 100 }
        }
    },

    [6] = {
        right_backgroundUrl = 'https://cdn.leon1337.host/attachments/vdl93.jpg', -- Right picture
        left_backgroundUrl = 'https://cdn.leon1337.host/attachments/inzjr.jpg', -- Left picture
        info = 'Diese Immobilie beinhaltet ein persönlichen Waffenschrank & Kleiderschrank',

        joinleave = {
            coords = vector4(902.9445, -3182.3162, -97.0550, 84.2100),
            marker_enabled = true,
            marker_type = nil,
            marker_color = { r = 255, g = 0, b = 0, a = 100 }
        },
        housemenu = {
            coords = vector3(896.7216, -3202.6560, -98.1962),
            marker_enabled = true,
            marker_type = nil,
            marker_color = { r = 255, g = 0, b = 0, a = 100 }
        },
        armorymenu = {
            coords = vector3(905.7906, -3230.3853, -98.2944),
            marker_enabled = true,
            marker_type = nil,
            marker_color = { r = 255, g = 0, b = 0, a = 100 }
        },
        clothesmenu = {
            coords = vector3(903.6412, -3199.4216, -97.1880),
            marker_enabled = true,
            marker_type = nil,
            marker_color = { r = 255, g = 0, b = 0, a = 100 }
        }
    }
}

-- Outside Marker

Config.Marker = {
    enabled = true,
    type = nil,
    color = { r = 255, g = 0, b = 0, a = 100 }
}

-- Blips

Config.sellBlip = {
    enabled = true,
    sprite = 374,
    scale = 0.4,
    shortRange = true,
    color = 46,
    text = 'Haus'
}

Config.ownBlip = {
    enabled = true,
    sprite = 40,
    scale = 0.8,
    shortRange = true,
    color = 2,
    text = 'Eigenes Haus',
}

Config.Locales = {
    ['de'] = {
        ['press_e_house_join'] = 'Drücke E um das Haus zu betreten',
        ['press_e_house_leave'] = 'Drücke E um das Haus zu verlassen',
        ['press_e_house_armory'] = 'Drücke E um das Hausmenü zu öffnen',
        ['press_e_house_menu'] = 'Drücke E um das Hausmenü zu öffnen',
        ['press_e_house_clothing'] = 'Drücke E um das Klamottenmenü zu öffnen',

        ['notify_title'] = 'Haus System',
        ['houseClosed'] = 'Dieses Haus ist geschlossen!',
        ['notHouse'] = 'Du bist in keinem Haus!',
        ['ownAlready'] = 'Dieses Haus gehört schon jemanden!',
        ['notEnough'] = 'Du hast nicht genug Geld dabei!',
        ['nowOwn'] = 'Herzlichen Glückwunsch! Du bist nun Hausbesitzer!',
        ['houseSell'] = 'Du hast dein Haus an den Staat verkauft!',
        ['notSell'] = 'Du kannst das Haus nicht verkaufen, da es dir nicht gehört!',
        ['onlyOne'] = 'Du kannst nur ein Haus besitzen!',
        ['houseOpen'] = 'Haus aufgeschlossen!',
        ['houseClose'] = 'Haus abgeschlossen!',

        ['noOwner'] = 'Keiner',
        ['noOpen'] = 'Offen',
        ['noClose'] = 'Geschlossen',
        ['noPlayer'] = 'Besitzer: %s',
        ['noPreis'] = 'Preis: %s$',

        ['menu_create_house_system_title'] = 'Haus System',
        ['menu_create_house_system_title_sub_1_menu'] = 'Haus Menü',
        ['menu_create_house_system_title_sub_2_menu'] = 'Armory Menü',
        ['menu_create_house_system_house'] = 'Haus Öffnen / Schließen',

        ['menu_create_house_system_inventory'] = 'Inventar',
        ['menu_create_house_system_inventory_count'] = 'Menge',

        ['menu_create_house_system_clothing'] = 'Kleidung',
        ['menu_create_house_system_clothing_title'] = 'Kleidung',
        ['menu_create_house_system_clothing_delete'] = 'Kleidung entfernen',

        ['menu_create_house_system_put_weapon'] = '[Waffe] Lagern',
        ['menu_create_house_system_put_stock'] = '[Gegenstand] Lagern',
        ['menu_create_house_system_get_weapon'] = '[Waffe] Auslagern',
        ['menu_create_house_system_get_stock'] = '[Gegenstand] Auslagern',

        ['menu_create_house_title'] = 'Haus Position',
        ['menu_create_house_title_sub'] = 'Haus Position Setzen',
        ['menu_create_house_type'] = 'Geben sie den Haus Typen ein',
        ['menu_create_house_price'] = 'Geben sie den Haus Preis an',

        ['webhook_date'] = "Am %s um %s",
        ['webhook_buy_house_title'] = "Haus Kaufen",
        ['webhook_buy_house_desc'] = 'Der Spieler %s hat sich ein Haus für %s$ gekauft!',
        ['webhook_sell_house_title'] = "Haus Verkaufen",
        ['webhook_sell_house_desc'] = 'Der Spieler %s hat sein Haus für %s$ verkauft!',
        ['webhook_put_item_title'] = "Item rein",
        ['webhook_put_item_desc'] = 'Der Spieler %s hat in sein Haus (%s) %sx %s reingelegt!',
        ['webhook_put_weapon_title'] = "Waffe rein",
        ['webhook_put_weapon_desc'] = 'Der Spieler %s hat in sein Haus (%s) eine %s mit %s Munition reingelegt!',
        ['webhook_get_item_title'] = "Item raus",
        ['webhook_get_item_desc'] = 'Der Spieler %s hat aus sein Haus (%s) %sx %s rausgeholt!',
        ['webhook_get_weapon_title'] = "Waffe raus",
        ['webhook_get_weapon_desc'] = 'Der Spieler %s hat aus sein Haus (%s) eine %s mit %s Schuss rausgeholt!',
    },

    ['en'] = {

    }
}

function Draw3DText(x, y, z, text, scale)
    local onScreen, _x, _y = World3dToScreen2d(x,y,z)
    SetTextScale(scale, scale)
    SetTextFont(0)
    SetTextProportional(1)
    SetTextEntry("STRING")
    SetTextCentre(true)
    SetTextColour(255, 255, 255, 255)
    AddTextComponentString(text)
    DrawText(_x, _y)
end

function format(coords)
    return tonumber(string.format('%.2f', coords))
end

function DrawHelpNotify(message)
    SetTextComponentFormat('STRING')
    AddTextComponentString(message)
    DisplayHelpTextFromStringLabel(0, 0, 1, -1)
end

function Notify(title, message, type, timeout)
    TriggerEvent('hex_hud:notify', title, message, type, timeout)
end

Open Source Files

function OpenClothesMenu()
    local elements = {}

    elements[#elements + 1] = { label = Config.Locales[Config.Locale]['menu_create_house_system_clothing'], value = "clothing" }
    elements[#elements + 1] = { label = Config.Locales[Config.Locale]['menu_create_house_system_clothing_delete'], value = "clothing_delete" }

    Framework.UI.Menu.Open('default', GetCurrentResourceName(), 'hex_1_house_clothing', {
        title = Config.Locales[Config.Locale]['menu_create_house_system_clothing_title'],
        align = 'left',
        elements = elements
    }, function(data, menu)
        if data.current.value == 'clothing' then
            local clothings = exports['hex_1_clothing']:GetClothings()
            local elements = {}

            for k, v in pairs(clothings) do
                elements[#elements + 1] = {
                    label = v.label,
                    skin = v.skin,
                    value = k
                }
            end

            Framework.UI.Menu.Open("default", GetCurrentResourceName(), "hex_1_house_clothing_main", {
                title = Config.Locales[Config.Locale]['menu_create_house_system_clothing'],
                align = "left",
                elements = elements
            }, function(data, menu)
                TriggerEvent('skinchanger:getSkin', function(skin)    
                    TriggerEvent('skinchanger:loadClothes', skin, json.decode(data.current.skin))
                    TriggerEvent('esx_skin:setLastSkin', skin)
            
                    TriggerEvent('skinchanger:getSkin', function(skin)
                        TriggerServerEvent('esx_skin:save', skin)
                    end)
                end)
            end, function(data, menu)
                menu.close()
            end)
        elseif data.current.value == 'clothing_delete' then
            local clothings = exports['hex_1_clothing']:GetClothings()
            local elements = {}

            for k, v in pairs(clothings) do
                elements[#elements + 1] = {
                    label = v.label,
                    id = v.id
                }
            end

            Framework.UI.Menu.Open('default', GetCurrentResourceName(), 'hex_1_house_clothing_delete', {
                title = Config.Locales[Config.Locale]['menu_create_house_system_clothing_delete'],
                align = 'left',
                elements = elements
            }, function(data, menu)
                menu.close()
                TriggerEvent('hex_1_clothing:deleteClothing', tonumber(data.current.id))
            end, function(data, menu)
                menu.close()
            end)
        end
    end, function(data, menu)
        menu.close()
    end)
end

function OpenPutWeaponMenu(dimension)
    local elements = {}
    local ped = PlayerPedId()
    local weaponList = Framework.Functions.GetWeaponList()

    for k, v in pairs(weaponList) do
        if HasPedGotWeapon(ped, joaat(v.name), false) and v.name ~= 'WEAPON_UNARMED' then
            elements[#elements + 1] = {
                label = v.label,
                value = v.name                
            }
        end
    end

    Framework.UI.Menu.Open('default', GetCurrentResourceName(), 'hex_1_house_put_weapons_menu', {
        title = Config.Locales[Config.Locale]['menu_create_house_system_inventory'],
        align = 'left',
        elements = elements
    }, function(data, menu)
        menu.close()

        TriggerServerEvent('hex_1_house:put', dimension, data.current.value, 0, 'weapon')
    end, function(data, menu)
        menu.close()
    end)
end

function OpenPutStocksMenu(dimension)
    local elements = {}
    local items = Framework.Functions.GetItems()

    for k, v in pairs(items) do
        if v.count > 0 then
            elements[#elements + 1] = {
                label = v.label .. ' x' .. v.count,
                value = v.name
            }
        end
    end

    Framework.UI.Menu.Open('default', GetCurrentResourceName(), 'hex_1_house_put_stocks_menu', {
        title = Config.Locales[Config.Locale]['menu_create_house_system_inventory'],
        align = 'left',
        elements = elements
    }, function(data, menu)
        local itemName = data.current.value
        
        Framework.UI.Menu.Open('dialog', GetCurrentResourceName(), 'hex_1_house_put_stocks_menu_count', {
            title = Config.Locales[Config.Locale]['menu_create_house_system_inventory_count']
        }, function(data, menu2)
            local count = tonumber(data.value)
            menu.close()
            menu2.close()

            if count then
                TriggerServerEvent('hex_1_house:put', dimension, itemName, count, 'item')
            end
        end, function(data, menu)
            menu.close()
        end)
    end, function(data, menu)
        menu.close()
    end)
end

function OpenGetWeaponMenu(dimension)
    Framework.Functions.TriggerServerCallback('hex_1_house:getInventory', function(weapons)
        local elements = {}

        if weapons == nil then
            weapons = {}
        end

        for k, v in pairs(weapons) do
            local weapon = Framework.Functions.GetWeaponLabel(k)
            local ammos = {}

            for k1, v1 in pairs(v) do
                ammos[#ammos + 1] = {
                    index = k1,
                    label = v1,
                    ammo = v1
                }
            end

            if weapon ~= nil then
                if #v >= 1 then
                    elements[#elements + 1] = {
                        name = k,
                        label = weapon .. ' - ' .. #v,
                        ammos = ammos
                    }
                end
            end
        end

        Framework.UI.Menu.Open('default', GetCurrentResourceName(), 'hex_1_house_get_weapons_menu', {
            title = Config.Locales[Config.Locale]['menu_create_house_system_inventory'],
            align = 'left',
            elements = elements
        }, function(data, menu)
            local elements = data.current.ammos
            
            Framework.UI.Menu.Open('default', GetCurrentResourceName(), 'hex_1_house_get_weapons_menu_ammo', {
                title = Config.Locales[Config.Locale]['menu_create_house_system_inventory'],
                align = 'left',
                elements = elements
            }, function(data2, menu2)
                menu.close()
                menu2.close()
                
                TriggerServerEvent('hex_1_house:get', dimension, data.current.name, data2.current.index, 'weapon')
            end, function(data, menu)
                menu.close()
            end)
        end, function(data, menu)
            menu.close()
        end)
    end, dimension, 'weapons')
end

function OpenGetStocksMenu(dimension)
    Framework.Functions.TriggerServerCallback('hex_1_house:getInventory', function(items)
        if items == nil then
            items = {}
        end

        local elements = {}

        for k, v in pairs(items) do
            if v > 0 then
                elements[#elements + 1] = {
                    label = 'x' .. v .. ' ' .. Framework.Functions.GetItemLabel(k),
                    value = k
                }
            end
        end

        Framework.UI.Menu.Open('default', GetCurrentResourceName(), 'hex_1_house_get_stocks_menu', {
            title = Config.Locales[Config.Locale]['menu_create_house_system_inventory'],
            align = 'left',
            elements = elements
        }, function(data, menu)
            local itemName = data.current.value
            
            Framework.UI.Menu.Open('dialog', GetCurrentResourceName(), 'hex_1_house_get_stocks_menu_count', {
                title = Config.Locales[Config.Locale]['menu_create_house_system_inventory_count']
            }, function(data, menu2)
                local count = tonumber(data.value)
                menu.close()
                menu2.close()
    
                if count then
                    TriggerServerEvent('hex_1_house:get', dimension, itemName, count, 'item')
                end
            end, function(data, menu)
                menu.close()
            end)
        end, function(data, menu)
            menu.close()
        end)
    end, dimension, 'items')
end

function OpenArmoryMenu(dimension)
    local elements = {}

    elements[#elements + 1] = { label = Config.Locales[Config.Locale]['menu_create_house_system_put_weapon'], value = "put_weapon" }
    elements[#elements + 1] = { label = Config.Locales[Config.Locale]['menu_create_house_system_put_stock'], value = "put_stock" }
    elements[#elements + 1] = { label = Config.Locales[Config.Locale]['menu_create_house_system_get_weapon'], value = "get_weapon" }
    elements[#elements + 1] = { label = Config.Locales[Config.Locale]['menu_create_house_system_get_stock'], value = "get_stock" }

    Framework.UI.Menu.Open('default', GetCurrentResourceName(), 'hex_1_house_main_3', {
        title = Config.Locales[Config.Locale]['menu_create_house_system_title'],
        align = 'left',
        elements = elements
    }, function(data, menu)
        if data.current.value == 'put_weapon' then
            OpenPutWeaponMenu(dimension)
        elseif data.current.value == 'put_stock' then
            OpenPutStocksMenu(dimension)
        elseif data.current.value == 'get_weapon' then
            OpenGetWeaponMenu(dimension)
        elseif data.current.value == 'get_stock' then
            OpenGetStocksMenu(dimension)
        end
    end, function(data, menu)
        menu.close()
    end)
end

function OpenHouseMenu(dimension)
    Framework.UI.Menu.CloseAll()

    Framework.UI.Menu.Open('default', GetCurrentResourceName(), 'hex_1_house_main', {
        title = Config.Locales[Config.Locale]['menu_create_house_system_title'],
        align = 'left',
        elements = {
            { label = Config.Locales[Config.Locale]['menu_create_house_system_title_sub_1_menu'], value = 'house' },
            { label = Config.Locales[Config.Locale]['menu_create_house_system_title_sub_2_menu'], value = 'armory' }
        }
    }, function(data, menu)
        if data.current.value == 'armory' then
            OpenArmoryMenu(dimension)
        elseif data.current.value == 'house' then
            Framework.UI.Menu.Open("default", GetCurrentResourceName(), "hex_1_house_main_2", {
                title = Config.Locales[Config.Locale]['menu_create_house_system_title'],
                align = "left",
                elements = {
                    { label = Config.Locales[Config.Locale]['menu_create_house_system_house'], value = "houseOpen" },
                }
            }, function(data, menu)
                if data.current.value == 'houseOpen' then
                    TriggerServerEvent("hex_1_house:openClose", dimension)
                end
            end, function(data, menu)
                menu.close()
            end)
        end
    end, function(data, menu)
        menu.close()
    end)
end

RegisterNetEvent('hex_1_house:createHouse', function()
    Framework.UI.Menu.CloseAll()

    Framework.UI.Menu.Open('default', GetCurrentResourceName(), 'hex_1_house_create_house_main', {
        title  = Config.Locales[Config.Locale]['menu_create_house_title'],
        align = 'top-left',
        elements = { 
            { label = Config.Locales[Config.Locale]['menu_create_house_title_sub'] }
        }
    }, function(data, menu)
        menu.close()
        Citizen.Wait(100)
        local playerPed = PlayerPedId()
        local playerCoords = GetEntityCoords(playerPed)
        local x, y, z = format(playerCoords.x), format(playerCoords.y), format(playerCoords.z)
        local h = format(GetEntityHeading(playerPed))

        Framework.UI.Menu.Open('dialog', GetCurrentResourceName(), 'hex_1_house_create_house_main_two', {
            title = Config.Locales[Config.Locale]['menu_create_house_type'],
        }, function(data, menu)
            local houseType = data.value
            menu.close()
            Citizen.Wait(500)

            Framework.UI.Menu.Open('dialog', GetCurrentResourceName(), 'hex_1_house_create_house_three', {
                title = Config.Locales[Config.Locale]['menu_create_house_price'],
            }, function(data, menu)
                local housePrice = data.value
                menu.close()
                Citizen.Wait(500)

                TriggerServerEvent('hex_1_house:createHouse', x, y, z, h, houseType, housePrice)
    
            end, function(data, menu)
                menu.close()
            end)
        end, function(data, menu)
            menu.close()
        end)
    end, function(data, menu)
        menu.close()
    end)
end)