Initial commit
This commit is contained in:
@@ -0,0 +1,306 @@
|
||||
--// ESX is needed only for the menu default
|
||||
ESX = nil
|
||||
Citizen.CreateThread(function() while ESX == nil do TriggerEvent('esx:getSharedObject', function(obj) ESX = obj end) Citizen.Wait(10) end end)
|
||||
|
||||
local type = nil
|
||||
local _menu = {
|
||||
{label = 'Reset', value = 'reset'},
|
||||
{label = 'Ultra Low', value = 'ulow'},
|
||||
{label = 'Low', value = 'low'},
|
||||
{label = 'Medium', value = 'medium'},
|
||||
}
|
||||
|
||||
RegisterCommand("fps", function()
|
||||
ESX.UI.Menu.CloseAll()
|
||||
ESX.UI.Menu.Open('default', GetCurrentResourceName(), 'fps', {
|
||||
title = 'FPS Booster (By XenoS)',
|
||||
align = 'top-left',
|
||||
elements = _menu
|
||||
}, function(data, menu)
|
||||
local v = data.current.value
|
||||
|
||||
--// Things need to be runned only one time
|
||||
if v == "reset" then
|
||||
RopeDrawShadowEnabled(true)
|
||||
|
||||
CascadeShadowsSetAircraftMode(true)
|
||||
CascadeShadowsEnableEntityTracker(false)
|
||||
CascadeShadowsSetDynamicDepthMode(true)
|
||||
CascadeShadowsSetEntityTrackerScale(5.0)
|
||||
CascadeShadowsSetDynamicDepthValue(5.0)
|
||||
CascadeShadowsSetCascadeBoundsScale(5.0)
|
||||
|
||||
SetFlashLightFadeDistance(10.0)
|
||||
SetLightsCutoffDistanceTweak(10.0)
|
||||
DistantCopCarSirens(true)
|
||||
SetArtificialLightsState(false)
|
||||
elseif v == "ulow" then
|
||||
RopeDrawShadowEnabled(false)
|
||||
|
||||
CascadeShadowsClearShadowSampleType()
|
||||
CascadeShadowsSetAircraftMode(false)
|
||||
CascadeShadowsEnableEntityTracker(true)
|
||||
CascadeShadowsSetDynamicDepthMode(false)
|
||||
CascadeShadowsSetEntityTrackerScale(0.0)
|
||||
CascadeShadowsSetDynamicDepthValue(0.0)
|
||||
CascadeShadowsSetCascadeBoundsScale(0.0)
|
||||
|
||||
SetFlashLightFadeDistance(0.0)
|
||||
SetLightsCutoffDistanceTweak(0.0)
|
||||
DistantCopCarSirens(false)
|
||||
elseif v == "low" then
|
||||
RopeDrawShadowEnabled(false)
|
||||
|
||||
CascadeShadowsClearShadowSampleType()
|
||||
CascadeShadowsSetAircraftMode(false)
|
||||
CascadeShadowsEnableEntityTracker(true)
|
||||
CascadeShadowsSetDynamicDepthMode(false)
|
||||
CascadeShadowsSetEntityTrackerScale(0.0)
|
||||
CascadeShadowsSetDynamicDepthValue(0.0)
|
||||
CascadeShadowsSetCascadeBoundsScale(0.0)
|
||||
|
||||
SetFlashLightFadeDistance(5.0)
|
||||
SetLightsCutoffDistanceTweak(5.0)
|
||||
DistantCopCarSirens(false)
|
||||
elseif v == "medium" then
|
||||
RopeDrawShadowEnabled(true)
|
||||
|
||||
CascadeShadowsClearShadowSampleType()
|
||||
CascadeShadowsSetAircraftMode(false)
|
||||
CascadeShadowsEnableEntityTracker(true)
|
||||
CascadeShadowsSetDynamicDepthMode(false)
|
||||
CascadeShadowsSetEntityTrackerScale(5.0)
|
||||
CascadeShadowsSetDynamicDepthValue(3.0)
|
||||
CascadeShadowsSetCascadeBoundsScale(3.0)
|
||||
|
||||
SetFlashLightFadeDistance(3.0)
|
||||
SetLightsCutoffDistanceTweak(3.0)
|
||||
DistantCopCarSirens(false)
|
||||
SetArtificialLightsState(false)
|
||||
end
|
||||
|
||||
type = v
|
||||
end, function(data, menu)
|
||||
menu.close()
|
||||
end)
|
||||
end)
|
||||
|
||||
-- // Distance rendering and entity handler (need a revision)
|
||||
Citizen.CreateThread(function()
|
||||
while true do
|
||||
if type == "ulow" then
|
||||
--// Find closest ped and set the alpha
|
||||
for ped in GetWorldPeds() do
|
||||
if not IsEntityOnScreen(ped) then
|
||||
SetEntityAlpha(ped, 0)
|
||||
SetEntityAsNoLongerNeeded(ped)
|
||||
else
|
||||
if GetEntityAlpha(ped) == 0 then
|
||||
SetEntityAlpha(ped, 255)
|
||||
elseif GetEntityAlpha(ped) ~= 210 then
|
||||
SetEntityAlpha(ped, 210)
|
||||
end
|
||||
end
|
||||
|
||||
SetPedAoBlobRendering(ped, false)
|
||||
Citizen.Wait(1)
|
||||
end
|
||||
|
||||
--// Find closest object and set the alpha
|
||||
for obj in GetWorldObjects() do
|
||||
if not IsEntityOnScreen(obj) then
|
||||
SetEntityAlpha(obj, 0)
|
||||
SetEntityAsNoLongerNeeded(obj)
|
||||
else
|
||||
if GetEntityAlpha(obj) == 0 then
|
||||
SetEntityAlpha(obj, 255)
|
||||
elseif GetEntityAlpha(obj) ~= 170 then
|
||||
SetEntityAlpha(obj, 170)
|
||||
end
|
||||
end
|
||||
Citizen.Wait(1)
|
||||
end
|
||||
|
||||
|
||||
DisableOcclusionThisFrame()
|
||||
SetDisableDecalRenderingThisFrame()
|
||||
RemoveParticleFxInRange(GetEntityCoords(PlayerPedId()), 10.0)
|
||||
OverrideLodscaleThisFrame(0.4)
|
||||
SetArtificialLightsState(true)
|
||||
elseif type == "low" then
|
||||
--// Find closest ped and set the alpha
|
||||
for ped in GetWorldPeds() do
|
||||
if not IsEntityOnScreen(ped) then
|
||||
SetEntityAlpha(ped, 0)
|
||||
SetEntityAsNoLongerNeeded(ped)
|
||||
else
|
||||
if GetEntityAlpha(ped) == 0 then
|
||||
SetEntityAlpha(ped, 255)
|
||||
elseif GetEntityAlpha(ped) ~= 210 then
|
||||
SetEntityAlpha(ped, 210)
|
||||
end
|
||||
end
|
||||
SetPedAoBlobRendering(ped, false)
|
||||
|
||||
Citizen.Wait(1)
|
||||
end
|
||||
|
||||
--// Find closest object and set the alpha
|
||||
for obj in GetWorldObjects() do
|
||||
if not IsEntityOnScreen(obj) then
|
||||
SetEntityAlpha(obj, 0)
|
||||
SetEntityAsNoLongerNeeded(obj)
|
||||
else
|
||||
if GetEntityAlpha(obj) == 0 then
|
||||
SetEntityAlpha(obj, 255)
|
||||
elseif GetEntityAlpha(ped) ~= 210 then
|
||||
SetEntityAlpha(ped, 210)
|
||||
end
|
||||
end
|
||||
Citizen.Wait(1)
|
||||
end
|
||||
|
||||
SetDisableDecalRenderingThisFrame()
|
||||
RemoveParticleFxInRange(GetEntityCoords(PlayerPedId()), 10.0)
|
||||
OverrideLodscaleThisFrame(0.6)
|
||||
SetArtificialLightsState(true)
|
||||
elseif type == "medium" then
|
||||
--// Find closest ped and set the alpha
|
||||
for ped in GetWorldPeds() do
|
||||
if not IsEntityOnScreen(ped) then
|
||||
SetEntityAlpha(ped, 0)
|
||||
SetEntityAsNoLongerNeeded(ped)
|
||||
else
|
||||
if GetEntityAlpha(ped) == 0 then
|
||||
SetEntityAlpha(ped, 255)
|
||||
end
|
||||
end
|
||||
|
||||
SetPedAoBlobRendering(ped, false)
|
||||
Citizen.Wait(1)
|
||||
end
|
||||
|
||||
--// Find closest object and set the alpha
|
||||
for obj in GetWorldObjects() do
|
||||
if not IsEntityOnScreen(obj) then
|
||||
SetEntityAlpha(obj, 0)
|
||||
SetEntityAsNoLongerNeeded(obj)
|
||||
else
|
||||
if GetEntityAlpha(obj) == 0 then
|
||||
SetEntityAlpha(obj, 255)
|
||||
end
|
||||
end
|
||||
Citizen.Wait(1)
|
||||
end
|
||||
|
||||
OverrideLodscaleThisFrame(0.8)
|
||||
else
|
||||
Citizen.Wait(500)
|
||||
end
|
||||
Citizen.Wait(8)
|
||||
end
|
||||
end)
|
||||
|
||||
--// Clear broken thing, disable rain, disable wind and other tiny thing that dont require the frame tick
|
||||
Citizen.CreateThread(function()
|
||||
while true do
|
||||
if type == "ulow" or type == "low" then
|
||||
ClearAllBrokenGlass()
|
||||
ClearAllHelpMessages()
|
||||
LeaderboardsReadClearAll()
|
||||
ClearBrief()
|
||||
ClearGpsFlags()
|
||||
ClearPrints()
|
||||
ClearSmallPrints()
|
||||
ClearReplayStats()
|
||||
LeaderboardsClearCacheData()
|
||||
ClearFocus()
|
||||
ClearHdArea()
|
||||
ClearPedBloodDamage(PlayerPedId())
|
||||
ClearPedWetness(PlayerPedId())
|
||||
ClearPedEnvDirt(PlayerPedId())
|
||||
ResetPedVisibleDamage(PlayerPedId())
|
||||
ClearExtraTimecycleModifier()
|
||||
ClearTimecycleModifier()
|
||||
ClearOverrideWeather()
|
||||
ClearHdArea()
|
||||
DisableVehicleDistantlights(false)
|
||||
DisableScreenblurFade()
|
||||
SetRainLevel(0.0)
|
||||
SetWindSpeed(0.0)
|
||||
Citizen.Wait(300)
|
||||
elseif type == "medium" then
|
||||
ClearAllBrokenGlass()
|
||||
ClearAllHelpMessages()
|
||||
LeaderboardsReadClearAll()
|
||||
ClearBrief()
|
||||
ClearGpsFlags()
|
||||
ClearPrints()
|
||||
ClearSmallPrints()
|
||||
ClearReplayStats()
|
||||
LeaderboardsClearCacheData()
|
||||
ClearFocus()
|
||||
ClearHdArea()
|
||||
SetWindSpeed(0.0)
|
||||
Citizen.Wait(1000)
|
||||
else
|
||||
Citizen.Wait(1500)
|
||||
end
|
||||
end
|
||||
end)
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
--// Entity Enumerator (https://gist.github.com/IllidanS4/9865ed17f60576425369fc1da70259b2#file-entityiter-lua)
|
||||
local entityEnumerator = {
|
||||
__gc = function(enum)
|
||||
if enum.destructor and enum.handle then
|
||||
enum.destructor(enum.handle)
|
||||
end
|
||||
enum.destructor = nil
|
||||
enum.handle = nil
|
||||
end
|
||||
}
|
||||
|
||||
local function EnumerateEntities(initFunc, moveFunc, disposeFunc)
|
||||
return coroutine.wrap(
|
||||
function()
|
||||
local iter, id = initFunc()
|
||||
if not id or id == 0 then
|
||||
disposeFunc(iter)
|
||||
return
|
||||
end
|
||||
|
||||
local enum = {handle = iter, destructor = disposeFunc}
|
||||
setmetatable(enum, entityEnumerator)
|
||||
|
||||
local next = true
|
||||
repeat
|
||||
coroutine.yield(id)
|
||||
next, id = moveFunc(iter)
|
||||
until not next
|
||||
|
||||
enum.destructor, enum.handle = nil, nil
|
||||
disposeFunc(iter)
|
||||
end
|
||||
)
|
||||
end
|
||||
|
||||
function GetWorldObjects()
|
||||
return EnumerateEntities(FindFirstObject, FindNextObject, EndFindObject)
|
||||
end
|
||||
|
||||
function GetWorldPeds()
|
||||
return EnumerateEntities(FindFirstPed, FindNextPed, EndFindPed)
|
||||
end
|
||||
|
||||
function GetWorldVehicles()
|
||||
return EnumerateEntities(FindFirstVehicle, FindNextVehicle, EndFindVehicle)
|
||||
end
|
||||
|
||||
function GetWorldPickups()
|
||||
return EnumerateEntities(FindFirstPickup, FindNextPickup, EndFindPickup)
|
||||
end
|
||||
Reference in New Issue
Block a user