This commit is contained in:
Nordi98 2025-07-09 19:14:33 +02:00
parent 97d1f6a2f2
commit f8eb493530
31 changed files with 7767 additions and 15 deletions

View file

@ -0,0 +1,171 @@
local usingGizmo = false
local mode = "Translate"
local extraZ = 1000.0
local spawnedProp, pedBoneId = 0, 0
local lastCoord = nil
local position, rotation = vector3(0.0, 0.0, 0.0), vector3(0.0, 0.0, 0.0)
local function toggleNuiFrame(bool)
usingGizmo = bool
SetNuiFocus(bool, bool)
end
function useGizmo(handle, boneid, dict, anim)
spawnedProp = handle
pedBoneId = boneid
local playerPed = PlayerPedId()
lastCoord = GetEntityCoords(playerPed)
FreezeEntityPosition(playerPed, true)
SetEntityCoords(playerPed, 0.0, 0.0, extraZ-1)
SetEntityHeading(playerPed, 0.0)
SetEntityRotation(pedBoneId, 0.0, 0.0, 0.0)
position, rotation = vector3(0.0, 0.0, 0.0), vector3(0.0, 0.0, 0.0)
AttachEntityToEntity(spawnedProp, playerPed, pedBoneId, position, rotation, true, true, false, true, 1, true)
SendNUIMessage({
action = 'setGizmoEntity',
data = {
handle = spawnedProp,
position = vector3(0.0, 0.0, extraZ),
rotation = vector3(0.0, 0.0, 0.0)
}
})
toggleNuiFrame(true)
if dict and anim then taskPlayAnim(playerPed, dict, anim) end
while usingGizmo do
DrawScaleformMovieFullscreen(CreateInstuctionScaleform(), 255, 255, 255, 255, 0)
SendNUIMessage({
action = 'setCameraPosition',
data = {
position = GetFinalRenderedCamCoord(),
rotation = GetFinalRenderedCamRot()
}
})
if IsControlJustReleased(0, 44) then
SetNuiFocus(true, true)
end
DisableIdleCamera(true)
Wait(0)
end
finish()
return {
"AttachEntityToEntity(entity, PlayerPedId(), "..pedBoneId..", "..(extraZ-position.z)..", "..position.y..", "..position.x..", "..rotation.x..", "..rotation.y..", "..rotation.z..", true, true, false, true, 1, true)",
(extraZ-position.z)..", "..position.y..", "..position.x..", "..rotation.x..", "..rotation.y..", "..rotation.z
}
end
RegisterNUICallback('moveEntity', function(data, cb)
local entity = data.handle
position = data.position
rotation = data.rotation
AttachEntityToEntity(entity, PlayerPedId(), pedBoneId, extraZ-position.z, position.y, position.x, rotation.x, rotation.y, rotation.z, true, true, false, true, 1, true) --Same attach settings as dp emote and rp emotes
cb('ok')
end)
RegisterNUICallback('finishEdit', function(data, cb)
toggleNuiFrame(false)
SendNUIMessage({
action = 'setGizmoEntity',
data = {
handle = nil,
}
})
cb('ok')
end)
RegisterNUICallback('swapMode', function(data, cb)
mode = data.mode
cb('ok')
end)
RegisterNUICallback('cam', function(data, cb)
SetNuiFocus(false, false)
cb('ok')
end)
function CreateInstuctionScaleform()
local scaleform = RequestScaleformMovie("instructional_buttons")
while not HasScaleformMovieLoaded(scaleform) do Wait(10) end
PushScaleformMovieFunction(scaleform, "CLEAR_ALL")
PopScaleformMovieFunctionVoid()
PushScaleformMovieFunction(scaleform, "SET_CLEAR_SPACE")
PushScaleformMovieFunctionParameterInt(200)
PopScaleformMovieFunctionVoid()
InstructionButtonCreate(scaleform, 200, "Done Editing", 1)
InstructionButtonCreate(scaleform, 44, "NUI Focus", 2)
if mode == "Translate" then
InstructionButtonCreate(scaleform, 45, "Rotate Mode", 3)
else
InstructionButtonCreate(scaleform, 32, "Translate Mode", 4)
end
PushScaleformMovieFunction(scaleform, "DRAW_INSTRUCTIONAL_BUTTONS")
PopScaleformMovieFunctionVoid()
PushScaleformMovieFunction(scaleform, "SET_BACKGROUND_COLOUR")
PushScaleformMovieFunctionParameterInt(0)
PushScaleformMovieFunctionParameterInt(0)
PushScaleformMovieFunctionParameterInt(0)
PushScaleformMovieFunctionParameterInt(80)
PopScaleformMovieFunctionVoid()
return scaleform
end
function InstructionButtonCreate(scaleform, key, text, number)
PushScaleformMovieFunction(scaleform, "SET_DATA_SLOT")
PushScaleformMovieFunctionParameterInt(number)
PushScaleformMovieMethodParameterButtonName(GetControlInstructionalButton(0, key, true))
InstructionButtonMessage(text)
PopScaleformMovieFunctionVoid()
end
function InstructionButtonMessage(text)
BeginTextCommandScaleformString("STRING")
AddTextComponentScaleform(text)
EndTextCommandScaleformString()
end
function finish()
if DoesEntityExist(spawnedProp) then
DeleteEntity(spawnedProp)
end
local playerPed = PlayerPedId()
FreezeEntityPosition(playerPed, false)
ClearPedTasks(playerPed)
if lastCoord then
SetEntityCoords(playerPed, lastCoord)
lastCoord = nil
end
end
function taskPlayAnim(ped, dict, anim, flag)
CreateThread(function()
while usingGizmo do
if not IsEntityPlayingAnim(ped, dict, anim, 1) then
while not HasAnimDictLoaded(dict) do
RequestAnimDict(dict)
Wait(10)
end
TaskPlayAnim(ped, dict, anim, 5.0, 5.0, -1, (flag or 15), 0, false, false, false)
RemoveAnimDict(dict)
end
Wait(1000)
end
end)
end
AddEventHandler('onResourceStop', function(resourceName)
if GetCurrentResourceName() == resourceName then
finish()
end
end)