for vrp server. i am looking for vehicle anti cheat.
any idea ?
Provide more details…what do you need it to do?
i want to use this with vrp actually
i mean i want only spawn cars from my garage in my server.
not even admins
So then you’re going to edit that or ask the author to edit that… or just create a black list. Search vehicle blacklist.
no not about blacklist. if i do blacklist cheater gonna spawn car so it not make sense
can you help me.
i did that resource. but even i cant get car from my garage .
so i think you can handle it.
client.lua
local function doVehicles(f,...)
local handle,veh = FindFirstVehicle()
if handle ~= -1 then
repeat
Wait()
f(veh,...) -- calls f with the found vehicle and other passed arguments.
status,veh = FindNextVehicle(handle) -- update vehicle and make sure there is another vehicle.
until not status
EndFindVehicle(handle) -- close the find handle.
end
end
Citizen.CreateThread(function()
DecorRegister("GamemodeCar",3)
DecorRegisterLock()
while true do
Citizen.Wait(10)
doVehicles(function(vehicle)
if DecorGetInt(vehicle,"GamemodeCar") ~= 955 then
DeleteVehicle(vehicle)
end
end)
end
end)
here my garage
--[[
FiveM Scripts
Copyright C 2018 Sighmir
This program is free software: you can redistribute it and/or modify
it under the terms of the GNU Affero General Public License as published
by the Free Software Foundation, either version 3 of the License, or
at your option any later version.
This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU Affero General Public License for more details.
You should have received a copy of the GNU Affero General Public License
along with this program. If not, see <http://www.gnu.org/licenses/>.
]]
--[[Proxy/Tunnel]]--
vRPgt = {}
Tunnel.bindInterface("vRP_garages",vRPgt)
Proxy.addInterface("vRP_garages",vRPgt)
vRP = Proxy.getInterface("vRP")
--[[Local/Global]]--
GVEHICLES = {}
local inrangeofgarage = false
local currentlocation = nil
vehicles = {}
garageSelected = { {x=nil, y=nil, z=nil, h=nil}, }
selectedPage = 0
lang_string = {
menu1 = "Store a vehicle",
menu2 = "Get a vehicle",
menu3 = "Close",
menu4 = "Vehicles",
menu5 = "Options",
menu6 = "Get",
menu7 = "Back",
menu8 = "~g~E~s~ to open menu",
menu9 = "Sell",
menu10 = "~g~E~s~ to sell the vehicle at 50% of the purchase price",
menu11 = "Update the vehicle",
menu12 = "Next",
state1 = "Out",
state2 = "In",
text1 = "The area is crowded",
text2 = "This vehicle is not in the garage",
text3 = "Vehicle out",
text4 = "It's not your vehicle",
text5 = "Vehicle stored",
text6 = "No vehicles present",
text7 = "Vehicle sold",
text8 = "Vehicle bought, good drive",
text9 = "Insufficient funds",
text10 = "Vehicle updated"
}
--[[Functions]]--
function vRPgt.spawnGarageVehicle(vtype, name, vehicle_plate, vehicle_colorprimary, vehicle_colorsecondary, vehicle_pearlescentcolor, vehicle_wheelcolor, vehicle_plateindex, vehicle_neoncolor1, vehicle_neoncolor2, vehicle_neoncolor3, vehicle_windowtint, vehicle_wheeltype, vehicle_mods0, vehicle_mods1, vehicle_mods2, vehicle_mods3, vehicle_mods4, vehicle_mods5, vehicle_mods6, vehicle_mods7, vehicle_mods8, vehicle_mods9, vehicle_mods10, vehicle_mods11, vehicle_mods12, vehicle_mods13, vehicle_mods14, vehicle_mods15, vehicle_mods16, vehicle_turbo, vehicle_tiresmoke, vehicle_xenon, vehicle_mods23, vehicle_mods24, vehicle_neon0, vehicle_neon1, vehicle_neon2, vehicle_neon3, vehicle_bulletproof, vehicle_smokecolor1, vehicle_smokecolor2, vehicle_smokecolor3, vehicle_modvariation) -- vtype is the vehicle type (one vehicle per type allowed at the same time)
local vehicle = vehicles[vtype]
if vehicle and not IsVehicleDriveable(vehicle[3]) then -- precheck if vehicle is undriveable
-- despawn vehicle
SetVehicleHasBeenOwnedByPlayer(vehicle[3],false)
Citizen.InvokeNative(0xAD738C3085FE7E11, vehicle[3], false, true) -- set not as mission entity
SetVehicleAsNoLongerNeeded(Citizen.PointerValueIntInitialized(vehicle[3]))
Citizen.InvokeNative(0xEA386986E786A54F, Citizen.PointerValueIntInitialized(vehicle[3]))
TriggerEvent("vrp_garages:setVehicle", vtype, nil)
end
vehicle = vehicles[vtype]
if vehicle == nil then
-- load vehicle model
local mhash = GetHashKey(name)
local i = 0
while not HasModelLoaded(mhash) and i < 10000 do
RequestModel(mhash)
Citizen.Wait(10)
i = i+1
end
-- spawn car
if HasModelLoaded(mhash) then
local x,y,z = vRP.getPosition({})
local nveh = CreateVehicle(mhash, x,y,z+0.5, GetEntityHeading(GetPlayerPed(-1)), true, false) -- added player heading
SetVehicleOnGroundProperly(nveh)
SetEntityInvincible(nveh,false)
SetPedIntoVehicle(GetPlayerPed(-1),nveh,-1) -- put player inside
SetVehicleNumberPlateText(nveh, "P " .. vRP.getRegistrationNumber({}))
Citizen.InvokeNative(0xAD738C3085FE7E11, nveh, true, true) -- set as mission entity
SetVehicleHasBeenOwnedByPlayer(nveh,true)
vehicle_migration = false
if not vehicle_migration then
local nid = NetworkGetNetworkIdFromEntity(nveh)
SetNetworkIdCanMigrate(nid,false)
end
TriggerEvent("vrp_garages:setVehicle", vtype, {vtype,name,nveh})
SetModelAsNoLongerNeeded(mhash)
--grabbing customization
local plate = plate
local primarycolor = tonumber(vehicle_colorprimary)
local secondarycolor = tonumber(vehicle_colorsecondary)
local pearlescentcolor = vehicle_pearlescentcolor
local wheelcolor = vehicle_wheelcolor
local plateindex = tonumber(vehicle_plateindex)
local neoncolor = {vehicle_neoncolor1,vehicle_neoncolor2,vehicle_neoncolor3}
local windowtint = vehicle_windowtint
local wheeltype = tonumber(vehicle_wheeltype)
local mods0 = tonumber(vehicle_mods0)
local mods1 = tonumber(vehicle_mods1)
local mods2 = tonumber(vehicle_mods2)
local mods3 = tonumber(vehicle_mods3)
local mods4 = tonumber(vehicle_mods4)
local mods5 = tonumber(vehicle_mods5)
local mods6 = tonumber(vehicle_mods6)
local mods7 = tonumber(vehicle_mods7)
local mods8 = tonumber(vehicle_mods8)
local mods9 = tonumber(vehicle_mods9)
local mods10 = tonumber(vehicle_mods10)
local mods11 = tonumber(vehicle_mods11)
local mods12 = tonumber(vehicle_mods12)
local mods13 = tonumber(vehicle_mods13)
local mods14 = tonumber(vehicle_mods14)
local mods15 = tonumber(vehicle_mods15)
local mods16 = tonumber(vehicle_mods16)
local turbo = vehicle_turbo
local tiresmoke = vehicle_tiresmoke
local xenon = vehicle_xenon
local mods23 = tonumber(vehicle_mods23)
local mods24 = tonumber(vehicle_mods24)
local neon0 = vehicle_neon0
local neon1 = vehicle_neon1
local neon2 = vehicle_neon2
local neon3 = vehicle_neon3
local bulletproof = vehicle_bulletproof
local smokecolor1 = vehicle_smokecolor1
local smokecolor2 = vehicle_smokecolor2
local smokecolor3 = vehicle_smokecolor3
local variation = vehicle_modvariation
--setting customization
SetVehicleColours(nveh, primarycolor, secondarycolor)
SetVehicleExtraColours(nveh, tonumber(pearlescentcolor), tonumber(wheelcolor))
SetVehicleNumberPlateTextIndex(nveh,plateindex)
SetVehicleNeonLightsColour(nveh,tonumber(neoncolor[1]),tonumber(neoncolor[2]),tonumber(neoncolor[3]))
SetVehicleTyreSmokeColor(nveh,tonumber(smokecolor1),tonumber(smokecolor2),tonumber(smokecolor3))
SetVehicleModKit(nveh,0)
SetVehicleMod(nveh, 0, mods0)
SetVehicleMod(nveh, 1, mods1)
SetVehicleMod(nveh, 2, mods2)
SetVehicleMod(nveh, 3, mods3)
SetVehicleMod(nveh, 4, mods4)
SetVehicleMod(nveh, 5, mods5)
SetVehicleMod(nveh, 6, mods6)
SetVehicleMod(nveh, 7, mods7)
SetVehicleMod(nveh, 8, mods8)
SetVehicleMod(nveh, 9, mods9)
SetVehicleMod(nveh, 10, mods10)
SetVehicleMod(nveh, 11, mods11)
SetVehicleMod(nveh, 12, mods12)
SetVehicleMod(nveh, 13, mods13)
SetVehicleMod(nveh, 14, mods14)
SetVehicleMod(nveh, 15, mods15)
SetVehicleMod(nveh, 16, mods16)
if turbo == "on" then
ToggleVehicleMod(nveh, 18, true)
else
ToggleVehicleMod(nveh, 18, false)
end
if tiresmoke == "on" then
ToggleVehicleMod(nveh, 20, true)
else
ToggleVehicleMod(nveh, 20, false)
end
if xenon == "on" then
ToggleVehicleMod(nveh, 22, true)
else
ToggleVehicleMod(nveh, 22, false)
end
SetVehicleWheelType(nveh, tonumber(wheeltype))
SetVehicleMod(nveh, 23, mods23)
SetVehicleMod(nveh, 24, mods24)
if neon0 == "on" then
SetVehicleNeonLightEnabled(nveh,0, true)
else
SetVehicleNeonLightEnabled(nveh,0, false)
end
if neon1 == "on" then
SetVehicleNeonLightEnabled(nveh,1, true)
else
SetVehicleNeonLightEnabled(nveh,1, false)
end
if neon2 == "on" then
SetVehicleNeonLightEnabled(nveh,2, true)
else
SetVehicleNeonLightEnabled(nveh,2, false)
end
if neon3 == "on" then
SetVehicleNeonLightEnabled(nveh,3, true)
else
SetVehicleNeonLightEnabled(nveh,3, false)
end
if bulletproof == "on" then
SetVehicleTyresCanBurst(nveh, false)
else
SetVehicleTyresCanBurst(nveh, true)
end
--if variation == "on" then
-- SetVehicleModVariation(nveh,23)
--else
-- SetVehicleModVariation(nveh,23, false)
--end
SetVehicleWindowTint(nveh,tonumber(windowtint))
end
else
vRP.notify({"You can only have one "..vtype.." vehicule out."})
end
end
function vRPgt.spawnBoughtVehicle(vtype, name)
local vehicle = vehicles[vtype]
if vehicle then -- precheck if vehicle is undriveable
-- despawn vehicle
SetVehicleHasBeenOwnedByPlayer(vehicle[3],false)
Citizen.InvokeNative(0xAD738C3085FE7E11, vehicle[3], false, true) -- set not as mission entity
SetVehicleAsNoLongerNeeded(Citizen.PointerValueIntInitialized(vehicle[3]))
Citizen.InvokeNative(0xEA386986E786A54F, Citizen.PointerValueIntInitialized(vehicle[3]))
TriggerEvent("vrp_garages:setVehicle", vtype, nil)
end
vehicle = vehicles[vtype]
if vehicle == nil then
-- load vehicle model
local mhash = GetHashKey(name)
local i = 0
while not HasModelLoaded(mhash) and i < 10000 do
RequestModel(mhash)
Citizen.Wait(10)
i = i+1
end
-- spawn car
if HasModelLoaded(mhash) then
local x,y,z = vRP.getPosition({})
local nveh = CreateVehicle(mhash, x,y,z+0.5, GetEntityHeading(GetPlayerPed(-1)), true, false) -- added player heading
SetVehicleOnGroundProperly(nveh)
SetEntityInvincible(nveh,false)
SetPedIntoVehicle(GetPlayerPed(-1),nveh,-1) -- put player inside
SetVehicleNumberPlateText(nveh, "P " .. vRP.getRegistrationNumber({}))
Citizen.InvokeNative(0xAD738C3085FE7E11, nveh, true, true) -- set as mission entity
SetVehicleHasBeenOwnedByPlayer(nveh,true)
vehicle_migration = false
if not vehicle_migration then
local nid = NetworkGetNetworkIdFromEntity(nveh)
SetNetworkIdCanMigrate(nid,false)
end
TriggerEvent("vrp_garages:setVehicle", vtype, {vtype,name,nveh})
SetModelAsNoLongerNeeded(mhash)
end
else
vRP.notify({"You can only have one "..vtype.." vehicule out."})
end
end
function vRPgt.despawnGarageVehicle(vtype,max_range)
local vehicle = vehicles[vtype]
if vehicle then
local x,y,z = table.unpack(GetEntityCoords(vehicle[3],true))
local px,py,pz = vRP.getPosition()
if GetDistanceBetweenCoords(x,y,z,px,py,pz,true) < max_range then -- check distance with the vehicule
-- remove vehicle
SetVehicleHasBeenOwnedByPlayer(vehicle[3],false)
Citizen.InvokeNative(0xAD738C3085FE7E11, vehicle[3], false, true) -- set not as mission entity
SetVehicleAsNoLongerNeeded(Citizen.PointerValueIntInitialized(vehicle[3]))
Citizen.InvokeNative(0xEA386986E786A54F, Citizen.PointerValueIntInitialized(vehicle[3]))
TriggerEvent("vrp_garages:setVehicle", vtype, nil)
vRP.notify({"~g~Vehicle stored."})
else
vRP.notify({"~r~Too far away from the vehicle."})
end
else
vRP.notify({"~r~You don't have a personal vehicle out."})
end
end
function MenuGarage()
ped = GetPlayerPed(-1)
selectedPage = 0
MenuTitle = "Garage"
ClearMenu()
Menu.addButton(lang_string.menu1,"StoreVehicle",nil)
Menu.addButton(lang_string.menu2,"ListVehicle",selectedPage)
Menu.addButton(lang_string.menu3,"CloseMenu",nil)
end
function StoreVehicle()
Citizen.CreateThread(function()
local caissei = GetClosestVehicle(garageSelected.x, garageSelected.y, garageSelected.z, 3.000, 0, 70)
SetEntityAsMissionEntity(caissei, true, true)
local plate = GetVehicleNumberPlateText(caissei)
local vtype = "car"
if IsThisModelABike(GetEntityModel(caissei)) then
vtype = "bike"
end
if DoesEntityExist(caissei) then
TriggerServerEvent('ply_garages:CheckForVeh', plate, vehicles[vtype][2], vtype)
else
drawNotification(lang_string.text6)
end
end)
CloseMenu()
end
function ListVehicle(page)
ped = GetPlayerPed(-1)
selectedPage = page
MenuTitle = lang_string.menu4
ClearMenu()
local count = 0
for ind, value in pairs(GVEHICLES) do
if ((count >= (page*10)) and (count < ((page*10)+10))) then
Menu.addButton(tostring(value.vehicle_name), "OptionVehicle", value.vehicle_name)
end
count = count + 1
end
Menu.addButton(lang_string.menu12,"ListVehicle",page+1)
if page == 0 then
Menu.addButton(lang_string.menu7,"MenuGarage",nil)
else
Menu.addButton(lang_string.menu7,"ListVehicle",page-1)
end
end
function OptionVehicle(vehID)
local vehID = vehID
MenuTitle = "Options"
ClearMenu()
Menu.addButton(lang_string.menu6, "SpawnVehicle", vehID)
Menu.addButton(lang_string.menu7, "ListVehicle", selectedPage)
end
function SpawnVehicle(vehID)
local vehID = vehID
TriggerServerEvent('ply_garages:CheckForSpawnVeh', vehID)
CloseMenu()
end
function drawNotification(text)
SetNotificationTextEntry("STRING")
AddTextComponentString(text)
DrawNotification(false, false)
end
function CloseMenu()
Menu.hidden = true
TriggerServerEvent("ply_garages:CheckGarageForVeh")
end
function LocalPed()
return GetPlayerPed(-1)
end
function IsPlayerInRangeOfGarage()
return inrangeofgarage
end
function Chat(debugg)
TriggerEvent("chatMessage", '', { 0, 0x99, 255 }, tostring(debugg))
end
function ply_drawTxt(text,font,centre,x,y,scale,r,g,b,a)
SetTextFont(font)
SetTextProportional(0)
SetTextScale(scale, scale)
SetTextColour(r, g, b, a)
SetTextDropShadow(0, 0, 0, 0,255)
SetTextEdge(1, 0, 0, 0, 255)
SetTextDropShadow()
SetTextOutline()
SetTextCentre(centre)
SetTextEntry("STRING")
AddTextComponentString(text)
DrawText(x , y)
end
--[[Citizen]]--
Citizen.CreateThread(function()
while true do
Citizen.Wait(0)
for _, garage in pairs(garages) do
DrawMarker(1, garage.x, garage.y, garage.z, 0, 0, 0, 0, 0, 0, 3.001, 3.0001, 0.5001, 0, 155, 255, 200, 0, 0, 0, 0)
if GetDistanceBetweenCoords(garage.x, garage.y, garage.z, GetEntityCoords(LocalPed())) < 3 and IsPedInAnyVehicle(LocalPed(), true) == false then
ply_drawTxt(lang_string.menu8,0,1,0.5,0.8,0.6,255,255,255,255)
if IsControlJustPressed(1, 86) then
garageSelected.x = garage.x
garageSelected.y = garage.y
garageSelected.z = garage.z
MenuGarage()
Menu.hidden = not Menu.hidden
end
Menu.renderGUI()
end
end
end
end)
Citizen.CreateThread(function()
while true do
local near = false
Citizen.Wait(0)
for _, garage in pairs(garages) do
if (GetDistanceBetweenCoords(garage.x, garage.y, garage.z, GetEntityCoords(LocalPed())) < 3 and near ~= true) then
near = true
end
end
if near == false then
Menu.hidden = true
end
end
end)
Citizen.CreateThread(function()
for _, item in pairs(garages) do
item.blip = AddBlipForCoord(item.x, item.y, item.z)
SetBlipSprite(item.blip, item.id)
SetBlipAsShortRange(item.blip, true)
SetBlipColour(item.blip, item.colour)
BeginTextCommandSetBlipName("STRING")
AddTextComponentString(item.name)
EndTextCommandSetBlipName(item.blip)
end
end)
--[[Events]]--
RegisterNetEvent('vrp_garages:setVehicle')
AddEventHandler('vrp_garages:setVehicle', function(vtype, vehicle)
vehicles[vtype] = vehicle
end)
RegisterNetEvent('ply_garages:addAptGarage')
AddEventHandler('ply_garages:addAptGarage', function(gx,gy,gz,gh)
local alreadyExists = false
for _, garage in pairs(garages) do
if garage.x == gx and garage.y == gy then
alreadyExists = true
end
end
if not alreadyExists then
table.insert(garages, #garages + 1, {name="Apartment Garage", colour=3, id=357, x=gx, y=gy, z=gz, h=gh})
end
end)
RegisterNetEvent('ply_garages:getVehicles')
AddEventHandler("ply_garages:getVehicles", function(THEVEHICLES)
GVEHICLES = {}
GVEHICLES = THEVEHICLES
end)
AddEventHandler("playerSpawned", function()
TriggerServerEvent("ply_garages:CheckGarageForVeh")
TriggerServerEvent("ply_garages:CheckForAptGarages")
end)
go use esx
20 char.