1
0
Fork 0
forked from Simnation/Main
This commit is contained in:
Nordi98 2025-07-14 16:42:23 +02:00
parent a730434314
commit 109cfdabcc
91 changed files with 167 additions and 852 deletions

Binary file not shown.

View file

@ -0,0 +1,11 @@
DC Customz Prop Attachment Tool V2 for developers discord.gg/dccustomz
https://dc-customz.gitbook.io/dc-customz-documentation/scripts/prop-attachment-tool-v2
Type /props to open the main menu
The options are pretty much self explanatory.
Once you're done placing the prop where you want, Remember to select the format & then Click 'Copy Data' so the attach coords can get copied to your clipboard.
If you want a few more addon animations to use consider the Everyday Animations pack: https://store.dccustomz.com/product/6379040

Binary file not shown.

View file

@ -0,0 +1,36 @@
Config = {}
Config.Framework = "esx" -- "esx", "qb", "none"
Config.OnlyAdmins = true -- Set to true to restrict to admins only
Config.Command = 'props' -- Command to open ui
-- Preset Props
Config.Props = {
'prop_cs_burger_01',
}
-- Preset Animations
Config.Animations = {
{ label = 'Eat Burger', dict = 'mp_player_inteat@burger', anim = 'mp_player_int_eat_burger', flags = 49 },
{ label = 'Drink Cup', dict = 'mp_player_intdrink', anim = 'loop_bottle', flags = 49 },
-- Everyday Anims (Uncomment if you have the DC Everyday Animations pack)
--{ label = 'Rollup', dict = 'custom@rollingupanim', anim = 'rollingup_clip', flags = 2 },
--{ label = 'Hold Drink', dict = 'custom@drinkingbottlehold', anim = 'drinkingbottlehold_clip', flags = 49 },
--{ label = 'Sip Drink', dict = 'custom@drinkingbottle', anim = 'drinkingbottle_clip', flags = 49 },
--{ label = 'Plate Eat', dict = 'custom@eatplate', anim = 'eatplate_clip', flags = 49 },
--{ label = 'Plate Eat Hold', dict = 'custom@eatplate', anim = 'eatplatehold_clip', flags = 49 },
--{ label = 'Chips Eat', dict = 'custom@chipseat', anim = 'chipseat_clip', flags = 49 },
--{ label = 'Chips Eat Hold', dict = 'custom@chipseathold', anim = 'chipseathold_clip', flags = 49 },
--{ label = 'Brush Teeth', dict = 'custom@brushteeth', anim = 'brushteeth_clip', flags = 49 },
}
-- Preset Bones
Config.Bones = {
{ name = "Left Hand", id = 18905 },
{ name = "Right Hand", id = 57005 },
{ name = "Head", id = 31086 },
{ name = "Lip", id = 47419 },
{ name = "Pelvis", id = 11816 },
{ name = "Right Leg", id = 36864 },
{ name = "Left Leg", id = 63931 },
}

View file

@ -0,0 +1,33 @@
fx_version 'cerulean'
games { 'gta5' }
lua54 'yes'
author 'DC Customz'
description 'DC Customz Prop Attach Tool V2'
version '1.0.1'
ui_page 'nui/index.html'
files {
'nui/index.html',
'nui/style.css',
'nui/script.js'
}
shared_scripts {
'config.lua',
}
client_scripts {
"client/cl_main.lua",
}
server_scripts {
"server/sv_main.lua",
}
escrow_ignore {
'config.lua',
'server/sv_main.lua'
}
dependency '/assetpacks'

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

View file

@ -0,0 +1 @@
*,::after,::before{box-sizing:border-box}body,html{margin:0;padding:0;width:100%;height:100%;background:0 0;font-family:'Segoe UI',Arial,sans-serif}.menu-container{display:none;position:absolute;top:50%;right:5%;transform:translateY(-50%);width:clamp(20rem,30vw,40rem);background:rgba(0,0,0,.7);color:#fff;padding:1.5rem;border-radius:.5rem;box-shadow:0 2px 10px rgba(0,0,0,.5);max-height:90vh;overflow-y:auto}h1{text-align:center;margin-bottom:1rem;font-size:1.4rem}h2{font-size:1.2rem;margin-top:1rem}.section{margin-bottom:1rem}.button-row{display:flex;justify-content:center;flex-wrap:wrap;gap:.5rem}label{margin-bottom:.3rem;display:inline-block;font-size:1.2rem}input[type=number],input[type=text],select{width:100%;padding:.4rem;margin:.3rem 0;border:1px solid #aaa;border-radius:.25rem;font-size:.95rem;outline:0}button{cursor:pointer;border:none;border-radius:.25rem;padding:.5rem .75rem;margin:.2rem 0;color:#fff;background:#007bff;transition:background .3s ease;font-size:.95rem}button:hover{background:#0056b3}.spawn-btn{background-color:#28a745}.spawn-btn:hover{background-color:#218838}.delete-btn{background-color:#dc3545}.delete-btn:hover{background-color:#c82333}.save-btn{background-color:#6f42c1}.save-btn:hover{background-color:#563d7c}.action-btn{background-color:#fd7e14}.action-btn:hover{background-color:#e86c00}.close-button{width:100%;background:#dc3545;margin-top:.5rem}.close-button:hover{background:#c82333}.flex-row{display:flex;align-items:center;gap:.5rem}.speed-section>div{margin-bottom:1rem}input[type=range]{width:100%;margin-top:.5rem}.preset-container{display:flex;flex-wrap:wrap;gap:.4rem;margin-top:.3rem}.preset-button{background:#6c757d;min-width:2.5rem;text-align:center}.control-groups{display:grid;grid-template-columns:1fr 1fr;gap:1rem}.control-section{background:rgba(255,255,255,.08);border-radius:.25rem;padding:.5rem}.controls{display:grid;grid-template-columns:repeat(2,1fr);gap:.3rem}.prop-panel{background:rgba(255,255,255,.1);margin-bottom:1rem;padding:.75rem;border-radius:.25rem}.camera-controls .section{background:rgba(255,255,255,.05);padding:.5rem;border-radius:.25rem;margin-bottom:.8rem}::-webkit-scrollbar{width:8px}::-webkit-scrollbar-track{background:rgba(0,0,0,.2);border-radius:4px}::-webkit-scrollbar-thumb{background:rgba(255,255,255,.3);border-radius:4px}::-webkit-scrollbar-thumb:hover{background:rgba(255,255,255,.5)}.notification{position:fixed;top:1rem;right:1rem;width:16rem;padding:1rem;border-radius:.25rem;color:#fff;opacity:0;transform:translateY(-1rem);transition:opacity .3s,transform .3s;z-index:1000}.notification.show{opacity:1;transform:translateY(0)}.notification.success{background-color:#28a745}.notification.error{background-color:#dc3545}.dark-select{background-color:#222;color:#fff;border:1px solid #555}.dark-input{background-color:#222;color:#fff;border:1px solid #555}.nav-btn{background:#6c757d;padding:.4rem .7rem;min-width:50px;border-radius:.25rem;border:none;color:#fff;cursor:pointer}.nav-btn:hover{background:#5a6268}.format-select{height:2.3rem;min-width:5.5rem;max-width:6.5rem;padding:0 .5rem}.flag-preset{padding:.3rem .5rem;min-width:2rem}.button-row{display:flex;justify-content:center;flex-wrap:wrap;gap:.5rem;align-items:center}.section .flex-row input.dark-input{margin-top:.2rem}input[type=number].dark-input{height:2.2rem}#customAnimDict,#customAnimName{height:2.5rem;font-size:1.05rem;padding:.5rem}#customProp1,#customProp2{height:2.5rem;font-size:1.05rem;padding:.5rem;margin-top:1rem;margin-bottom:1rem}#customBoneID1,#customBoneID2{height:2.5rem;font-size:1.05rem;padding:.5rem}

View file

@ -0,0 +1,41 @@
local QBCore, ESX = nil, nil
CreateThread(function()
if Config.Framework == "qb" then
QBCore = exports['qb-core']:GetCoreObject()
elseif Config.Framework == "esx" then
ESX = exports["es_extended"]:getSharedObject()
end
end)
RegisterNetEvent('dc_propattach:server:checkAdmin', function()
local src = source
local canUse = false
if not Config.OnlyAdmins then
canUse = true
else
if Config.Framework == "qb" then
if QBCore then
local Player = QBCore.Functions.GetPlayer(source)
if Player then
if QBCore.Functions.HasPermission(src, 'admin') or QBCore.Functions.HasPermission(src, 'god') then
canUse = true
end
end
end
elseif Config.Framework == "esx" then
if ESX then
local xPlayer = ESX.GetPlayerFromId(src)
if xPlayer then
local playerGroup = xPlayer.getGroup()
if playerGroup == "admin" or playerGroup == "superadmin" then
canUse = true
end
end
end
elseif Config.Framework == "none" then
canUse = true
end
end
TriggerClientEvent('dc_propattach:client:admincheck', src, canUse)
end)