target system custom

This commit is contained in:
2026-04-03 07:04:17 +03:00
parent 4d73d4a013
commit 5e23b3e966
27 changed files with 267 additions and 39 deletions

View File

@@ -921,30 +921,3 @@ RegisterNetEvent('housing:initHouses', function(houseConfig)
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

@@ -0,0 +1,12 @@
fx_version 'cerulean'
game 'gta5'
name 'rv-target'
description 'Red Valley — qb-target visual override (dot size, colors, features)'
version '1.0.0'
author 'Red Valley'
-- Must start BEFORE qb-target for CSS patch to work
-- In resources.cfg: ensure rv-target BEFORE ensure qb-target
server_script 'server.lua'

View File

@@ -0,0 +1,196 @@
/*
rv-target — Red Valley Custom Style for qb-target
Changes vs stock:
- Dot size: 8px → 16px (2x bigger)
- Active color: #2575ff → #cc1133 (RV red)
- Hover color: #2575ff → #cc1133 (RV red)
*/
@font-face {
font-family: "Circular";
src: url("../fonts/Circular-Bold.woff2") format("woff2"),
url("../fonts/Circular-Bold.woff") format("woff"),
url("../fonts/Circular-Bold.ttf") format("truetype");
font-weight: bold;
font-style: normal;
}
@font-face {
font-family: "Circular";
src: url("../fonts/Circular-Book.woff2") format("woff2"),
url("../fonts/Circular-Book.woff") format("woff"),
url("../fonts/Circular-Book.ttf") format("truetype");
font-weight: normal;
font-style: normal;
}
body {
font-family: "Circular", sans-serif;
font-weight: normal;
visibility: hidden;
user-select: none;
white-space: nowrap;
margin: 0;
user-select: none;
overflow: hidden;
}
* {
position: relative;
margin: 0;
padding: 0;
outline: 0;
-webkit-font-smoothing: antialiased;
-moz-osx-font-smoothing: grayscale;
}
p {
margin: 0;
}
/* ── RV: Dot 16px (stock: 8px) ── */
#eye {
text-align: center;
width: 16px;
height: 16px;
border: 1px solid #ffffff;
border-radius: 100%;
position: absolute;
top: calc(50% - 8px);
left: calc(50% - 8px);
-webkit-transition: all 0.2s ease-in-out;
-o-transition: all 0.2s ease-in-out;
transition: all 0.2s ease-in-out;
z-index: 200;
}
/* ── RV: Active color #cc1133 (stock: #2575ff) ── */
#eye.active {
text-align: center;
width: 16px;
height: 16px;
border: 1px solid #cc1133;
border-radius: 100%;
background-color: #cc1133;
position: absolute;
top: calc(50% - 8px);
left: calc(50% - 8px);
-webkit-transition: all 0.2s ease-in-out;
-o-transition: all 0.2s ease-in-out;
transition: all 0.2s ease-in-out;
z-index: 200;
}
#eye.active i {
width: 10px;
height: 10px;
top: 50%;
}
#eye i {
visibility: hidden;
}
#options-wrapper {
-webkit-box-align: center;
-ms-flex-align: center;
align-items: center;
-ms-flex-line-pack: center;
align-content: center;
height: 100%;
width: 100%;
display: -webkit-box;
display: -ms-flexbox;
display: flex;
-ms-flex-wrap: wrap;
flex-wrap: wrap;
position: absolute;
top: 0;
z-index: 0;
}
#options-wrapper li {
list-style: none;
width: 50%;
line-height: 20px;
-webkit-box-sizing: border-box;
box-sizing: border-box;
}
#options-wrapper li a {
font-size: 20px;
display: inline-block;
color: white;
border-radius: 30px;
padding: 10px 20px 10px 18px;
margin: 10px 0;
-webkit-transition: all 0.2s ease-in-out;
-o-transition: all 0.2s ease-in-out;
transition: all 0.2s ease-in-out;
will-change: transform;
text-shadow: 0px 10px 20px #000000;
font-weight: 500;
}
/* ── RV: Hover color #cc1133 (stock: #2575ff) ── */
#options-wrapper li a:hover, #options-wrapper li a:hover .option-icon{
color: #cc1133 !important;
text-shadow: 0px 0px 20px #cc1133aa !important;
cursor: pointer;
}
#options-wrapper li a .option-icon {
font-size: 22px;
margin-right: 5px;
display: inline-block;
vertical-align: middle;
-webkit-transition: all 0.2s ease-in-out;
-o-transition: all 0.2s ease-in-out;
transition: all 0.2s ease-in-out;
}
#options-wrapper li:only-child {
text-align: right;
left:-60px !important;
-webkit-transform-origin: right center !important;
-ms-transform-origin: right center !important;
transform-origin: right center !important;
}
#options-wrapper li:nth-last-child(n+2):nth-last-child(-n+2):first-child,
#options-wrapper li:nth-last-child(n+2):nth-last-child(-n+2):first-child~li:not(:last-child) {
left:-60px !important;
}
#options-wrapper li:nth-last-child(n+2):nth-last-child(-n+2):first-child~li:not(:first-child) {
left:60px !important;
}
#options-wrapper li:nth-last-child(n+3):nth-last-child(-n+3):first-child~li:last-child {
left:-20px;
}
#options-wrapper li:nth-child(odd) {
text-align: right;
right: 60px;
-webkit-transform-origin: right center;
-ms-transform-origin: right center;
transform-origin: right center;
}
#options-wrapper li:nth-child(even) {
left: 60px;
-webkit-transform-origin: left center;
-ms-transform-origin: left center;
transform-origin: left center;
}
#options-wrapper li:nth-child(1),
#options-wrapper li:nth-last-child(2) {
right: 20px;
}
#options-wrapper li:nth-child(2),
#options-wrapper li:nth-last-child(1) {
left: 20px;
}

View File

@@ -0,0 +1,36 @@
--[[
rv-target — Red Valley qb-target Override
Patches qb-target CSS at server start (before players connect)
Keeps qb-target 100% stock — safe to update without losing customizations
]]
local PATCHES = {
{
source = 'patches/style.css',
target = 'resources/[framework]/[core]/qb-target/html/css/style.css',
},
}
AddEventHandler('onResourceStart', function(resourceName)
if GetCurrentResourceName() ~= resourceName then return end
print('^2[rv-target]^0 Applying visual patches to qb-target...')
for _, patch in ipairs(PATCHES) do
local content = LoadResourceFile(GetCurrentResourceName(), patch.source)
if content then
local file = io.open(patch.target, 'w')
if file then
file:write(content)
file:close()
print('^2[rv-target]^0 ✓ Patched: ' .. patch.target)
else
print('^1[rv-target]^0 ✗ Failed to write: ' .. patch.target)
end
else
print('^1[rv-target]^0 ✗ Patch file not found: ' .. patch.source)
end
end
print('^2[rv-target]^0 Done. qb-target visuals overridden.')
end)

View File

@@ -230,6 +230,17 @@ Config.WeaponPositions = {
y_rotation = 60.0,
z_rotation = 190.0
},
['weapon_assaultrifle_mk2'] = {
model = 'w_ar_assaultriflemk2',
hash = GetHashKey('WEAPON_ASSAULTRIFLE_MK2'),
bone = 24816,
x = 0.100,
y = -0.16,
z = 0.015,
x_rotation = 0.0,
y_rotation = 160.0,
z_rotation = 1.0
},
-- Add more weapons as needed
}

View File

@@ -42,13 +42,13 @@ p {
#eye {
text-align: center;
width: 16px;
height: 16px;
width: 8px;
height: 8px;
border: 1px solid #ffffff;
border-radius: 100%;
position: absolute;
top: calc(50% - 8px);
left: calc(50% - 8px);
top: calc(50% - 4px);
left: calc(50% - 4px);
-webkit-transition: all 0.2s ease-in-out;
-o-transition: all 0.2s ease-in-out;
transition: all 0.2s ease-in-out;
@@ -57,14 +57,14 @@ p {
#eye.active {
text-align: center;
width: 16px;
height: 16px;
border: 1px solid #cc1133;
width: 8px;
height: 8px;
border: 1px solid #2575ff;
border-radius: 100%;
background-color: #cc1133;
background-color: #2575ff;
position: absolute;
top: calc(50% - 8px);
left: calc(50% - 8px);
top: calc(50% - 4px);
left: calc(50% - 4px);
-webkit-transition: all 0.2s ease-in-out;
-o-transition: all 0.2s ease-in-out;
transition: all 0.2s ease-in-out;
@@ -123,8 +123,8 @@ p {
}
#options-wrapper li a:hover, #options-wrapper li a:hover .option-icon{
color: #cc1133 !important;
text-shadow: 0px 0px 20px #cc1133aa !important;
color: #2575ff !important;
text-shadow: 0px 0px 20px #2575ffaa !important;
cursor: pointer;
}