qb-target migration + DrawText suppression + time freeze

- qb-core/client/drawtext.lua: Global [E] prompt suppression (all DrawText functions are no-ops) - qs-housing/qb.lua: DrawText3D/DrawText3Ds/DrawTextBoard no-ops when UseTarget=true - qs-housing/qb-target.lua: Added BoxZone target on Real Estate NPC (executes /housebrowser) - qb-weathersync: Time freeze at 14:00 (BaseTime=14, FreezeTime=true)
This commit is contained in:
2026-04-03 04:12:32 +03:00
parent e756e29294
commit 4d73d4a013
5 changed files with 87 additions and 60 deletions

View File

@@ -61,7 +61,12 @@ function ShowHelpNotification(msg)
end
local texts = {}
if GetResourceState('qs-textui') == 'started' then
if Config.UseTarget then
-- RED VALLEY: Suprimăm DrawText3D când folosim qb-target (dot target)
function DrawText3D(x, y, z, text, id, key) end
function DrawText3Ds(x, y, z, text) end
function DrawTextBoard(x, y, z, text) end
elseif GetResourceState('qs-textui') == 'started' then
function DrawText3D(x, y, z, text, id, key)
local _id = id
if not texts[_id] then
@@ -96,6 +101,7 @@ else
end
end
if not Config.UseTarget then
function DrawText3Ds(x, y, z, text)
SetTextScale(0.35, 0.35)
SetTextFont(4)
@@ -123,6 +129,7 @@ function DrawTextBoard(x, y, z, text)
DrawText(0.0, 0.0)
ClearDrawOrigin()
end
end
function DrawGenericText(text)
SetTextColour(186, 186, 186, 255)

View File

@@ -920,3 +920,31 @@ RegisterNetEvent('housing:initHouses', function(houseConfig)
end
end
end)
-- ============================================================================
-- RED VALLEY: qb-target pe NPC-ul Real Estate (înlocuiește [E] - Open House Browser)
-- ============================================================================
if Config.RealeStateNPC and Config.RealeStateNPC.enabled then
CreateThread(function()
Wait(3000) -- Așteptăm ca NPC-ul să fie spawnat de codul encrypted
local npcCoords = Config.RealeStateNPC.location
exports[target_name]:AddBoxZone('rv_realestate_npc', vec3(npcCoords.x, npcCoords.y, npcCoords.z), 1.5, 1.5, {
name = 'rv_realestate_npc',
heading = npcCoords.w,
debugPoly = false,
minZ = npcCoords.z - 1.0,
maxZ = npcCoords.z + 2.0,
}, {
options = {
{
icon = 'fa-solid fa-house',
label = 'Open House Browser',
action = function()
ExecuteCommand('housebrowser')
end,
},
},
distance = 2.5,
})
end)
end

View File

@@ -3,9 +3,9 @@ Config.DynamicWeather = true -- Set this to false if you don't want the weathe
-- On server start
Config.StartWeather = 'EXTRASUNNY' -- Default weather default: 'EXTRASUNNY'
Config.BaseTime = 8 -- Time default: 8
Config.BaseTime = 14 -- Time default: 8 -- RED VALLEY: freeze la 14:00
Config.TimeOffset = 0 -- Time offset default: 0
Config.FreezeTime = false -- freeze time default: false
Config.FreezeTime = true -- freeze time default: false -- RED VALLEY: ora blocată la 14:00
Config.Blackout = false -- Set blackout default: false
Config.BlackoutVehicle = false -- Set blackout affects vehicles default: false
Config.NewWeatherTimer = 10 -- Time (in minutes) between each weather change default: 10

View File

@@ -78,6 +78,7 @@ end
-- Seteaza state bag pentru text bubble vizibil de toti jucatorii
CreateThread(function()
local wasOpen = false
local closedAt = 0
while true do
Wait(500)
local nuiFocused = IsNuiFocused()
@@ -86,6 +87,14 @@ CreateThread(function()
Utils.StopTabletAnim()
LocalPlayer.state:set("browsingJobs", false, true)
wasOpen = false
closedAt = GetGameTimer()
elseif wasOpen and nuiFocused and tabletProp and DoesEntityExist(tabletProp) then
-- NUI e inca focusat DAR poate e alt NUI (ex: license dialog, inventar)
-- Daca browsingJobs e false => alt NUI a preluat, cleanup prop
if not LocalPlayer.state.browsingJobs then
Utils.StopTabletAnim()
wasOpen = false
end
elseif nuiFocused and tabletProp and DoesEntityExist(tabletProp) then
if not wasOpen then
LocalPlayer.state:set("bubbleText", "Se uita la locuri de munca...", true)

View File

@@ -1,60 +1,43 @@
-- ============================================================================
-- RED VALLEY: DrawText SUPRIMAT GLOBAL
-- Toate interacțiunile folosesc qb-target (dot target), nu [E] prompts.
-- Funcțiile rămân ca no-ops ca să nu crape resursele care le apelează.
-- ============================================================================
local function hideText()
SendNUIMessage({
action = 'HIDE_TEXT',
})
-- Suprimat — nu mai afișăm nimic
end
local function drawText(text, position)
if type(position) ~= 'string' then position = 'left' end
SendNUIMessage({
action = 'DRAW_TEXT',
data = {
text = text,
position = position
}
})
-- Suprimat — folosim qb-target în loc de [E] prompts
end
local function changeText(text, position)
if type(position) ~= 'string' then position = 'left' end
SendNUIMessage({
action = 'CHANGE_TEXT',
data = {
text = text,
position = position
}
})
-- Suprimat
end
local function keyPressed()
CreateThread(function() -- Not sure if a thread is needed but why not eh?
SendNUIMessage({
action = 'KEY_PRESSED',
})
Wait(500)
hideText()
end)
-- Suprimat
end
RegisterNetEvent('qb-core:client:DrawText', function(text, position)
drawText(text, position)
-- Suprimat
end)
RegisterNetEvent('qb-core:client:ChangeText', function(text, position)
changeText(text, position)
-- Suprimat
end)
RegisterNetEvent('qb-core:client:HideText', function()
hideText()
-- Suprimat
end)
RegisterNetEvent('qb-core:client:KeyPressed', function()
keyPressed()
-- Suprimat
end)
exports('DrawText', drawText)
exports('ChangeText', changeText)
exports('HideText', hideText)
exports('KeyPressed', keyPressed)