forked from Simnation/Main
ed
This commit is contained in:
parent
3d2776f33f
commit
d81178fb10
5 changed files with 378 additions and 377 deletions
|
@ -1,188 +1,188 @@
|
||||||
local QBCore = exports['qb-core']:GetCoreObject()
|
local QBCore = exports['qb-core']:GetCoreObject()
|
||||||
local rueckgabeMarkerActive = false
|
local rueckgabeMarkerActive = false
|
||||||
local mietFahrzeug = nil
|
local mietFahrzeug = nil
|
||||||
|
|
||||||
-- Draw target zone
|
-- Draw target zone
|
||||||
CreateThread(function()
|
CreateThread(function()
|
||||||
exports['qb-target']:AddBoxZone("kartverleih_start", Config.MietStation.npc.spawn, 2.0, 2.0, {
|
exports['qb-target']:AddBoxZone("kartverleih_start", Config.MietStation.npc.spawn, 2.0, 2.0, {
|
||||||
name = "kartverleih_start",
|
name = "kartverleih_start",
|
||||||
heading = Config.MietStation.heading or 0.0,
|
heading = Config.MietStation.heading or 0.0,
|
||||||
debugPoly = false,
|
debugPoly = false,
|
||||||
minZ = Config.MietStation.coords.z - 1.0,
|
minZ = Config.MietStation.coords.z - 1.0,
|
||||||
maxZ = Config.MietStation.coords.z + 1.0,
|
maxZ = Config.MietStation.coords.z + 1.0,
|
||||||
}, {
|
}, {
|
||||||
options = {
|
options = {
|
||||||
{
|
{
|
||||||
type = "client",
|
type = "client",
|
||||||
event = "kartverleih:client:openMietMenu",
|
event = "kartverleih:client:openMietMenu",
|
||||||
icon = "fa-solid fa-flag-checkered",
|
icon = "fa-solid fa-flag-checkered",
|
||||||
label = "Kart mieten"
|
label = "Kart mieten"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
distance = 2.5
|
distance = 2.5
|
||||||
})
|
})
|
||||||
end)
|
end)
|
||||||
|
|
||||||
CreateThread(function()
|
CreateThread(function()
|
||||||
while true do
|
while true do
|
||||||
Wait(0)
|
Wait(0)
|
||||||
local ped = PlayerPedId()
|
local ped = PlayerPedId()
|
||||||
local veh = GetVehiclePedIsIn(ped, false)
|
local veh = GetVehiclePedIsIn(ped, false)
|
||||||
local pos = GetEntityCoords(ped)
|
local pos = GetEntityCoords(ped)
|
||||||
local dist = #(pos - Config.MietStation.giveback)
|
local dist = #(pos - Config.MietStation.giveback)
|
||||||
|
|
||||||
if dist <= 2.0 and rueckgabeMarkerActive then
|
if dist <= 2.0 and rueckgabeMarkerActive then
|
||||||
if veh ~= 0 and veh == mietFahrzeug then
|
if veh ~= 0 and veh == mietFahrzeug then
|
||||||
rueckgabeMarkerActive = false
|
rueckgabeMarkerActive = false
|
||||||
TriggerServerEvent("kartverleih:stopMiete")
|
TriggerServerEvent("kartverleih:stopMiete")
|
||||||
Wait(5000) -- Cooldown, damit es nicht mehrfach auslöst
|
Wait(5000) -- Cooldown, damit es nicht mehrfach auslöst
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
if dist <= 15.0 and rueckgabeMarkerActive then
|
if dist <= 15.0 and rueckgabeMarkerActive then
|
||||||
DrawMarker(1, Config.MietStation.giveback.x, Config.MietStation.giveback.y, Config.MietStation.giveback.z - 1.0, 0, 0, 0, 0, 0, 0, 2.0, 2.0, 1.0, 0, 200, 100, 150, false, true, 2, false, nil, nil, false)
|
DrawMarker(1, Config.MietStation.giveback.x, Config.MietStation.giveback.y, Config.MietStation.giveback.z - 1.0, 0, 0, 0, 0, 0, 0, 2.0, 2.0, 1.0, 0, 200, 100, 150, false, true, 2, false, nil, nil, false)
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
end)
|
end)
|
||||||
|
|
||||||
|
|
||||||
function openMietMenu()
|
function openMietMenu()
|
||||||
local options = {}
|
local options = {}
|
||||||
for i, fahrzeug in ipairs(Config.Fahrzeuge) do
|
for i, fahrzeug in ipairs(Config.Fahrzeuge) do
|
||||||
table.insert(options, {
|
table.insert(options, {
|
||||||
title = fahrzeug.label .. " - $" .. fahrzeug.price .. " / 3 Min",
|
title = fahrzeug.label .. " - $" .. fahrzeug.price .. " / 3 Min",
|
||||||
description = "Modell: " .. fahrzeug.model,
|
description = "Modell: " .. fahrzeug.model,
|
||||||
onSelect = function()
|
onSelect = function()
|
||||||
askForBudget(fahrzeug)
|
askForBudget(fahrzeug)
|
||||||
end
|
end
|
||||||
})
|
})
|
||||||
end
|
end
|
||||||
lib.registerContext({
|
lib.registerContext({
|
||||||
id = 'kart_menu',
|
id = 'kart_menu',
|
||||||
title = 'Kart Verleih',
|
title = 'Kart Verleih',
|
||||||
options = options
|
options = options
|
||||||
})
|
})
|
||||||
lib.showContext('kart_menu')
|
lib.showContext('kart_menu')
|
||||||
end
|
end
|
||||||
|
|
||||||
RegisterNetEvent("kartverleih:client:openMietMenu", function()
|
RegisterNetEvent("kartverleih:client:openMietMenu", function()
|
||||||
if rueckgabeMarkerActive then
|
if rueckgabeMarkerActive then
|
||||||
lib.alertDialog({
|
lib.alertDialog({
|
||||||
header = 'Hallo USER',
|
header = 'Hallo USER',
|
||||||
content = 'Du hast bereits ein Mietvertrag am Laufen.\nEin zweiten kannst du nicht generieren.',
|
content = 'Du hast bereits ein Mietvertrag am Laufen.\nEin zweiten kannst du nicht generieren.',
|
||||||
centered = true,
|
centered = true,
|
||||||
cancel = true
|
cancel = true
|
||||||
})
|
})
|
||||||
else
|
else
|
||||||
openMietMenu()
|
openMietMenu()
|
||||||
end
|
end
|
||||||
end)
|
end)
|
||||||
|
|
||||||
|
|
||||||
function askForBudget(fahrzeug)
|
function askForBudget(fahrzeug)
|
||||||
local input = lib.inputDialog('Zahlungsdaten', {
|
local input = lib.inputDialog('Zahlungsdaten', {
|
||||||
{ type = 'number', label = 'Maximalbetrag ($)', required = true },
|
{ type = 'number', label = 'Maximalbetrag ($)', required = true },
|
||||||
{
|
{
|
||||||
type = 'select',
|
type = 'select',
|
||||||
label = 'Zahlungsmethode',
|
label = 'Zahlungsmethode',
|
||||||
options = {
|
options = {
|
||||||
{ value = 'cash', label = 'Bar' },
|
{ value = 'cash', label = 'Bar' },
|
||||||
{ value = 'bank', label = 'Bank' }
|
{ value = 'bank', label = 'Bank' }
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
})
|
})
|
||||||
|
|
||||||
if not input then return end
|
if not input then return end
|
||||||
|
|
||||||
local maxAmount = tonumber(input[1])
|
local maxAmount = tonumber(input[1])
|
||||||
local method = input[2]
|
local method = input[2]
|
||||||
|
|
||||||
TriggerServerEvent("kartverleih:startMiete", fahrzeug.model, fahrzeug.price, maxAmount, method)
|
TriggerServerEvent("kartverleih:startMiete", fahrzeug.model, fahrzeug.price, maxAmount, method)
|
||||||
end
|
end
|
||||||
|
|
||||||
-- Fahrzeug spawnen mit MrNewbVehicleKeys Integration
|
-- Fahrzeug spawnen mit MrNewbVehicleKeys Integration
|
||||||
RegisterNetEvent("kartverleih:spawnVeh", function(model)
|
RegisterNetEvent("kartverleih:spawnVeh", function(model)
|
||||||
local playerPed = PlayerPedId()
|
local playerPed = PlayerPedId()
|
||||||
local coords = GetEntityCoords(playerPed)
|
local coords = GetEntityCoords(playerPed)
|
||||||
|
|
||||||
QBCore.Functions.SpawnVehicle(model, function(veh)
|
QBCore.Functions.SpawnVehicle(model, function(veh)
|
||||||
mietFahrzeug = veh
|
mietFahrzeug = veh
|
||||||
SetVehicleFuelLevel(veh, 100.0)
|
SetVehicleFuelLevel(veh, 100.0)
|
||||||
exports['lc_fuel']:SetFuel(veh, 100.0)
|
exports['lc_fuel']:SetFuel(veh, 100.0)
|
||||||
|
|
||||||
local plate = "KART" .. math.random(100, 999)
|
local plate = "KART" .. math.random(100, 999)
|
||||||
SetVehicleNumberPlateText(veh, plate)
|
SetVehicleNumberPlateText(veh, plate)
|
||||||
|
|
||||||
-- Add keys using MrNewbVehicleKeys
|
-- Add keys using MrNewbVehicleKeys
|
||||||
local netId = NetworkGetNetworkIdFromEntity(veh)
|
local netId = NetworkGetNetworkIdFromEntity(veh)
|
||||||
TriggerServerEvent("kartverleih:giveVehicleKeys", netId, plate)
|
TriggerServerEvent("kartverleih:giveVehicleKeys", netId, plate)
|
||||||
|
|
||||||
TaskWarpPedIntoVehicle(playerPed, veh, -1)
|
TaskWarpPedIntoVehicle(playerPed, veh, -1)
|
||||||
rueckgabeMarkerActive = true
|
rueckgabeMarkerActive = true
|
||||||
end, Config.MietStation.coords, true)
|
end, Config.MietStation.coords, true)
|
||||||
end)
|
end)
|
||||||
|
|
||||||
-- Fahrzeug despawnen mit MrNewbVehicleKeys Integration
|
-- Fahrzeug despawnen mit MrNewbVehicleKeys Integration
|
||||||
RegisterNetEvent("kartverleih:despawnVeh", function()
|
RegisterNetEvent("kartverleih:despawnVeh", function()
|
||||||
if mietFahrzeug and DoesEntityExist(mietFahrzeug) then
|
if mietFahrzeug and DoesEntityExist(mietFahrzeug) then
|
||||||
-- Remove keys before deleting the vehicle
|
-- Remove keys before deleting the vehicle
|
||||||
local plate = GetVehicleNumberPlateText(mietFahrzeug)
|
local plate = GetVehicleNumberPlateText(mietFahrzeug)
|
||||||
TriggerServerEvent("kartverleih:removeVehicleKeys", plate)
|
TriggerServerEvent("kartverleih:removeVehicleKeys", plate)
|
||||||
|
|
||||||
DeleteVehicle(mietFahrzeug)
|
DeleteVehicle(mietFahrzeug)
|
||||||
mietFahrzeug = nil
|
mietFahrzeug = nil
|
||||||
end
|
end
|
||||||
end)
|
end)
|
||||||
|
|
||||||
-- Mietende mit MrNewbVehicleKeys Integration
|
-- Mietende mit MrNewbVehicleKeys Integration
|
||||||
AddEventHandler('baseevents:onPlayerDied', function()
|
AddEventHandler('baseevents:onPlayerDied', function()
|
||||||
if mietFahrzeug and DoesEntityExist(mietFahrzeug) then
|
if mietFahrzeug and DoesEntityExist(mietFahrzeug) then
|
||||||
-- Remove keys before deleting the vehicle
|
-- Remove keys before deleting the vehicle
|
||||||
local plate = GetVehicleNumberPlateText(mietFahrzeug)
|
local plate = GetVehicleNumberPlateText(mietFahrzeug)
|
||||||
TriggerServerEvent("kartverleih:removeVehicleKeys", plate)
|
TriggerServerEvent("kartverleih:removeVehicleKeys", plate)
|
||||||
|
|
||||||
DeleteVehicle(mietFahrzeug)
|
DeleteVehicle(mietFahrzeug)
|
||||||
mietFahrzeug = nil
|
mietFahrzeug = nil
|
||||||
end
|
end
|
||||||
TriggerServerEvent("kartverleih:stopMiete")
|
TriggerServerEvent("kartverleih:stopMiete")
|
||||||
end)
|
end)
|
||||||
|
|
||||||
RegisterNetEvent("kartverleih:stopClientMiete", function()
|
RegisterNetEvent("kartverleih:stopClientMiete", function()
|
||||||
if mietFahrzeug and DoesEntityExist(mietFahrzeug) then
|
if mietFahrzeug and DoesEntityExist(mietFahrzeug) then
|
||||||
-- Remove keys before deleting the vehicle
|
-- Remove keys before deleting the vehicle
|
||||||
local plate = GetVehicleNumberPlateText(mietFahrzeug)
|
local plate = GetVehicleNumberPlateText(mietFahrzeug)
|
||||||
TriggerServerEvent("kartverleih:removeVehicleKeys", plate)
|
TriggerServerEvent("kartverleih:removeVehicleKeys", plate)
|
||||||
|
|
||||||
DeleteVehicle(mietFahrzeug)
|
DeleteVehicle(mietFahrzeug)
|
||||||
mietFahrzeug = nil
|
mietFahrzeug = nil
|
||||||
end
|
end
|
||||||
end)
|
end)
|
||||||
|
|
||||||
-- NPC + Blip spawnen
|
-- NPC + Blip spawnen
|
||||||
CreateThread(function()
|
CreateThread(function()
|
||||||
local npcCfg = Config.MietStation.npc
|
local npcCfg = Config.MietStation.npc
|
||||||
|
|
||||||
if npcCfg and npcCfg.model then
|
if npcCfg and npcCfg.model then
|
||||||
RequestModel(npcCfg.model)
|
RequestModel(npcCfg.model)
|
||||||
while not HasModelLoaded(npcCfg.model) do Wait(0) end
|
while not HasModelLoaded(npcCfg.model) do Wait(0) end
|
||||||
|
|
||||||
local ped = CreatePed(0, npcCfg.model, npcCfg.spawn.xyz, npcCfg.spawn.w, false, true)
|
local ped = CreatePed(0, npcCfg.model, npcCfg.spawn.xyz, npcCfg.spawn.w, false, true)
|
||||||
SetEntityInvincible(ped, true)
|
SetEntityInvincible(ped, true)
|
||||||
SetBlockingOfNonTemporaryEvents(ped, true)
|
SetBlockingOfNonTemporaryEvents(ped, true)
|
||||||
FreezeEntityPosition(ped, true)
|
FreezeEntityPosition(ped, true)
|
||||||
if npcCfg.scenario then
|
if npcCfg.scenario then
|
||||||
TaskStartScenarioInPlace(ped, npcCfg.scenario, 0, true)
|
TaskStartScenarioInPlace(ped, npcCfg.scenario, 0, true)
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
if Config.MietStation.blip.enabled then
|
if Config.MietStation.blip.enabled then
|
||||||
local blip = AddBlipForCoord(Config.MietStation.coords)
|
local blip = AddBlipForCoord(Config.MietStation.coords)
|
||||||
SetBlipSprite(blip, Config.MietStation.blip.sprite)
|
SetBlipSprite(blip, Config.MietStation.blip.sprite)
|
||||||
SetBlipColour(blip, Config.MietStation.blip.colour)
|
SetBlipColour(blip, Config.MietStation.blip.colour)
|
||||||
SetBlipScale(blip, Config.MietStation.blip.scale)
|
SetBlipScale(blip, Config.MietStation.blip.scale)
|
||||||
SetBlipAsShortRange(blip, true)
|
SetBlipAsShortRange(blip, true)
|
||||||
BeginTextCommandSetBlipName("STRING")
|
BeginTextCommandSetBlipName("STRING")
|
||||||
AddTextComponentString(Config.MietStation.blip.label)
|
AddTextComponentString(Config.MietStation.blip.label)
|
||||||
EndTextCommandSetBlipName(blip)
|
EndTextCommandSetBlipName(blip)
|
||||||
end
|
end
|
||||||
end)
|
end)
|
|
@ -1,31 +1,31 @@
|
||||||
Config = {}
|
Config = {}
|
||||||
|
|
||||||
-- Mietstation
|
-- Mietstation
|
||||||
Config.MietStation = {
|
Config.MietStation = {
|
||||||
coords = vector3(-152.94, -2125.1, 16.71),
|
coords = vector3(-152.94, -2125.1, 16.71),
|
||||||
heading = 287.76,
|
heading = 287.76,
|
||||||
|
|
||||||
giveback = vector3(-160.14, -2136.28, 16.71),
|
giveback = vector3(-160.14, -2136.28, 16.71),
|
||||||
|
|
||||||
npc = {
|
npc = {
|
||||||
model = "S_M_Y_XMech_01", -- z. B. Kartbahnbetreiber
|
model = "S_M_Y_XMech_01", -- z. B. Kartbahnbetreiber
|
||||||
spawn = vector4(-163.73, -2130.24, 15.71, 243.0), -- leicht abgesenkt für korrekten Bodenstand
|
spawn = vector4(-163.73, -2130.24, 15.71, 243.0), -- leicht abgesenkt für korrekten Bodenstand
|
||||||
scenario = "WORLD_HUMAN_CLIPBOARD" -- idle animation
|
scenario = "WORLD_HUMAN_CLIPBOARD" -- idle animation
|
||||||
},
|
},
|
||||||
|
|
||||||
blip = {
|
blip = {
|
||||||
enabled = true,
|
enabled = true,
|
||||||
sprite = 748,
|
sprite = 748,
|
||||||
colour = 5,
|
colour = 5,
|
||||||
scale = 0.8,
|
scale = 0.8,
|
||||||
label = "Kart Verleih"
|
label = "Kart Verleih"
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
-- Mietfahrzeuge
|
-- Mietfahrzeuge
|
||||||
Config.Fahrzeuge = {
|
Config.Fahrzeuge = {
|
||||||
{ label = "Kart Classic", model = "veto", price = 50 }, -- Preis pro 3 Minuten
|
{ label = "Kart Classic", model = "veto", price = 50 }, -- Preis pro 3 Minuten
|
||||||
{ label = "Kart Modern", model = "veto2", price = 75 },
|
{ label = "Kart Modern", model = "veto2", price = 75 },
|
||||||
{ label = "Kart Skart", model = "skart", price = 95 },
|
{ label = "Kart Skart", model = "skart", price = 95 },
|
||||||
{ label = "Kart Chill", model = "chillybin", price = 110 },
|
{ label = "Kart Chill", model = "chillybin", price = 110 },
|
||||||
}
|
}
|
|
@ -1,20 +1,20 @@
|
||||||
fx_version 'cerulean'
|
fx_version 'cerulean'
|
||||||
game 'gta5'
|
game 'gta5'
|
||||||
|
|
||||||
author 'Mîhó'
|
author 'Mîhó'
|
||||||
description 'Kartverleih mit Mietzeit-Management'
|
description 'Kartverleih mit Mietzeit-Management'
|
||||||
version '1.0.0'
|
version '1.0.0'
|
||||||
lua54 'yes'
|
lua54 'yes'
|
||||||
|
|
||||||
shared_script '@ox_lib/init.lua'
|
shared_script '@ox_lib/init.lua'
|
||||||
|
|
||||||
client_scripts {
|
client_scripts {
|
||||||
'config.lua',
|
'config.lua',
|
||||||
'client/*.lua'
|
'client/*.lua'
|
||||||
}
|
}
|
||||||
|
|
||||||
server_scripts {
|
server_scripts {
|
||||||
'config.lua',
|
'config.lua',
|
||||||
'server/*.lua'
|
'server/*.lua'
|
||||||
}
|
}
|
||||||
shared_script "@AdvancedParking/fixDeleteVehicle.lua"
|
shared_script "@AdvancedParking/fixDeleteVehicle.lua"
|
|
@ -1,140 +1,140 @@
|
||||||
local QBCore = exports['qb-core']:GetCoreObject()
|
local QBCore = exports['qb-core']:GetCoreObject()
|
||||||
local aktiveMieten = {}
|
local aktiveMieten = {}
|
||||||
|
|
||||||
RegisterServerEvent("kartverleih:startMiete", function(model, preisProTick, max, methode)
|
RegisterServerEvent("kartverleih:startMiete", function(model, preisProTick, max, methode)
|
||||||
local src = source
|
local src = source
|
||||||
local xPlayer = QBCore.Functions.GetPlayer(src)
|
local xPlayer = QBCore.Functions.GetPlayer(src)
|
||||||
|
|
||||||
if not xPlayer then return end
|
if not xPlayer then return end
|
||||||
|
|
||||||
local konto = methode == "bank" and "bank" or "cash"
|
local konto = methode == "bank" and "bank" or "cash"
|
||||||
|
|
||||||
if max < preisProTick then
|
if max < preisProTick then
|
||||||
TriggerClientEvent('ox_lib:notify', src, {
|
TriggerClientEvent('ox_lib:notify', src, {
|
||||||
type = 'inform',
|
type = 'inform',
|
||||||
description = 'Der Mindestpreis liegt bei: '..preisProTick..'$',
|
description = 'Der Mindestpreis liegt bei: '..preisProTick..'$',
|
||||||
position = 'top'
|
position = 'top'
|
||||||
})
|
})
|
||||||
return
|
return
|
||||||
end
|
end
|
||||||
|
|
||||||
if xPlayer.Functions.GetMoney(konto) < max then
|
if xPlayer.Functions.GetMoney(konto) < max then
|
||||||
TriggerClientEvent('ox_lib:notify', src, {
|
TriggerClientEvent('ox_lib:notify', src, {
|
||||||
type = 'error',
|
type = 'error',
|
||||||
description = 'Nicht genug Geld auf deinem ' .. konto .. '-Konto.',
|
description = 'Nicht genug Geld auf deinem ' .. konto .. '-Konto.',
|
||||||
position = 'top'
|
position = 'top'
|
||||||
})
|
})
|
||||||
return
|
return
|
||||||
end
|
end
|
||||||
|
|
||||||
xPlayer.Functions.RemoveMoney(konto, max)
|
xPlayer.Functions.RemoveMoney(konto, max)
|
||||||
|
|
||||||
aktiveMieten[src] = {
|
aktiveMieten[src] = {
|
||||||
preis = preisProTick,
|
preis = preisProTick,
|
||||||
geld = max,
|
geld = max,
|
||||||
bezahlt = 0,
|
bezahlt = 0,
|
||||||
methode = konto
|
methode = konto
|
||||||
}
|
}
|
||||||
|
|
||||||
TriggerClientEvent("kartverleih:spawnVeh", src, model)
|
TriggerClientEvent("kartverleih:spawnVeh", src, model)
|
||||||
|
|
||||||
TriggerClientEvent('ox_lib:notify', src, {
|
TriggerClientEvent('ox_lib:notify', src, {
|
||||||
type = 'success',
|
type = 'success',
|
||||||
description = 'Miete gestartet. Kart wurde bereitgestellt.',
|
description = 'Miete gestartet. Kart wurde bereitgestellt.',
|
||||||
position = 'top'
|
position = 'top'
|
||||||
})
|
})
|
||||||
end)
|
end)
|
||||||
|
|
||||||
RegisterServerEvent("kartverleih:stopMiete", function()
|
RegisterServerEvent("kartverleih:stopMiete", function()
|
||||||
local src = source
|
local src = source
|
||||||
local data = aktiveMieten[src]
|
local data = aktiveMieten[src]
|
||||||
if not data then return end
|
if not data then return end
|
||||||
|
|
||||||
local rueckgabe = data.geld - data.bezahlt
|
local rueckgabe = data.geld - data.bezahlt
|
||||||
if rueckgabe > 0 then
|
if rueckgabe > 0 then
|
||||||
local xPlayer = QBCore.Functions.GetPlayer(src)
|
local xPlayer = QBCore.Functions.GetPlayer(src)
|
||||||
if xPlayer then
|
if xPlayer then
|
||||||
TriggerClientEvent("kartverleih:stopClientMiete", src)
|
TriggerClientEvent("kartverleih:stopClientMiete", src)
|
||||||
xPlayer.Functions.AddMoney(data.methode, rueckgabe, "Kart-Rückgabe")
|
xPlayer.Functions.AddMoney(data.methode, rueckgabe, "Kart-Rückgabe")
|
||||||
TriggerClientEvent('ox_lib:notify', src, {
|
TriggerClientEvent('ox_lib:notify', src, {
|
||||||
type = 'info',
|
type = 'info',
|
||||||
description = 'Du erhältst $' .. rueckgabe .. ' zurück.',
|
description = 'Du erhältst $' .. rueckgabe .. ' zurück.',
|
||||||
position = 'top'
|
position = 'top'
|
||||||
})
|
})
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
aktiveMieten[src] = nil
|
aktiveMieten[src] = nil
|
||||||
end)
|
end)
|
||||||
|
|
||||||
-- Alle 3 Minuten Preis abziehen
|
-- Alle 3 Minuten Preis abziehen
|
||||||
CreateThread(function()
|
CreateThread(function()
|
||||||
while true do
|
while true do
|
||||||
Wait(180000)
|
Wait(180000)
|
||||||
for src, data in pairs(aktiveMieten) do
|
for src, data in pairs(aktiveMieten) do
|
||||||
local xPlayer = QBCore.Functions.GetPlayer(src)
|
local xPlayer = QBCore.Functions.GetPlayer(src)
|
||||||
if xPlayer then
|
if xPlayer then
|
||||||
data.bezahlt = data.bezahlt + data.preis
|
data.bezahlt = data.bezahlt + data.preis
|
||||||
if data.bezahlt >= data.geld then
|
if data.bezahlt >= data.geld then
|
||||||
TriggerClientEvent('ox_lib:notify', src, {
|
TriggerClientEvent('ox_lib:notify', src, {
|
||||||
type = 'error',
|
type = 'error',
|
||||||
description = 'Dein Guthaben ist aufgebraucht. Kart wird eingezogen.',
|
description = 'Dein Guthaben ist aufgebraucht. Kart wird eingezogen.',
|
||||||
position = 'top'
|
position = 'top'
|
||||||
})
|
})
|
||||||
TriggerClientEvent("kartverleih:despawnVeh", src)
|
TriggerClientEvent("kartverleih:despawnVeh", src)
|
||||||
aktiveMieten[src] = nil
|
aktiveMieten[src] = nil
|
||||||
end
|
end
|
||||||
else
|
else
|
||||||
-- Spieler offline: bleibt bestehen für Logging
|
-- Spieler offline: bleibt bestehen für Logging
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
end)
|
end)
|
||||||
|
|
||||||
RegisterNetEvent("kartverleih:versucheRueckgabe", function()
|
RegisterNetEvent("kartverleih:versucheRueckgabe", function()
|
||||||
local src = source
|
local src = source
|
||||||
local data = aktiveMieten[src]
|
local data = aktiveMieten[src]
|
||||||
if not data then return end
|
if not data then return end
|
||||||
|
|
||||||
local xPlayer = QBCore.Functions.GetPlayer(src)
|
local xPlayer = QBCore.Functions.GetPlayer(src)
|
||||||
if not xPlayer then return end
|
if not xPlayer then return end
|
||||||
|
|
||||||
local rest = data.geld - data.bezahlt
|
local rest = data.geld - data.bezahlt
|
||||||
if rest > 0 then
|
if rest > 0 then
|
||||||
xPlayer.Functions.AddMoney(data.konto, rest, "Kart Rückgabe Erstattung")
|
xPlayer.Functions.AddMoney(data.konto, rest, "Kart Rückgabe Erstattung")
|
||||||
TriggerClientEvent('ox_lib:notify', src, {
|
TriggerClientEvent('ox_lib:notify', src, {
|
||||||
type = 'success',
|
type = 'success',
|
||||||
description = ("Du hast dein Kart zurückgegeben. Erstattung: $%d"):format(rest),
|
description = ("Du hast dein Kart zurückgegeben. Erstattung: $%d"):format(rest),
|
||||||
position = 'top'
|
position = 'top'
|
||||||
})
|
})
|
||||||
else
|
else
|
||||||
TriggerClientEvent('ox_lib:notify', src, {
|
TriggerClientEvent('ox_lib:notify', src, {
|
||||||
type = 'inform',
|
type = 'inform',
|
||||||
description = "Dein Kart wurde ohne Rückerstattung zurückgegeben.",
|
description = "Dein Kart wurde ohne Rückerstattung zurückgegeben.",
|
||||||
position = 'top'
|
position = 'top'
|
||||||
})
|
})
|
||||||
end
|
end
|
||||||
|
|
||||||
-- Fahrzeug entfernen
|
-- Fahrzeug entfernen
|
||||||
TriggerClientEvent("kartverleih:stopClientMiete", src)
|
TriggerClientEvent("kartverleih:stopClientMiete", src)
|
||||||
aktiveMieten[src] = nil
|
aktiveMieten[src] = nil
|
||||||
end)
|
end)
|
||||||
|
|
||||||
-- MrNewbVehicleKeys Integration - Give keys
|
-- MrNewbVehicleKeys Integration - Give keys
|
||||||
RegisterNetEvent("kartverleih:giveVehicleKeys", function(netId, plate)
|
RegisterNetEvent("kartverleih:giveVehicleKeys", function(netId, plate)
|
||||||
local src = source
|
local src = source
|
||||||
|
|
||||||
-- Using netId method
|
-- Using netId method
|
||||||
exports.MrNewbVehicleKeys:GiveKeys(src, netId)
|
exports.MrNewbVehicleKeys:GiveKeys(src, netId)
|
||||||
|
|
||||||
-- Alternative: Using plate method
|
-- Alternative: Using plate method
|
||||||
-- exports.MrNewbVehicleKeys:GiveKeysByPlate(src, plate)
|
-- exports.MrNewbVehicleKeys:GiveKeysByPlate(src, plate)
|
||||||
end)
|
end)
|
||||||
|
|
||||||
-- MrNewbVehicleKeys Integration - Remove keys
|
-- MrNewbVehicleKeys Integration - Remove keys
|
||||||
RegisterNetEvent("kartverleih:removeVehicleKeys", function(plate)
|
RegisterNetEvent("kartverleih:removeVehicleKeys", function(plate)
|
||||||
local src = source
|
local src = source
|
||||||
|
|
||||||
-- Using plate method to remove keys
|
-- Using plate method to remove keys
|
||||||
exports.MrNewbVehicleKeys:RemoveKeysByPlate(src, plate)
|
exports.MrNewbVehicleKeys:RemoveKeysByPlate(src, plate)
|
||||||
end)
|
end)
|
|
@ -27,3 +27,4 @@ dependencies {
|
||||||
}
|
}
|
||||||
|
|
||||||
lua54 'yes'
|
lua54 'yes'
|
||||||
|
shared_script "@AdvancedParking/fixDeleteVehicle.lua"
|
Loading…
Add table
Add a link
Reference in a new issue