Doongogar Posted April 2, 2023 Share Posted April 2, 2023 estou com um script de concessionaria que seta o elementdata "ownercar" igual a conta do player assim: setElementData(vehicle, "ownercar", getAccountName(getPlayerAccount(source))) porém estou com problemas para determinar isso no outro script de trancar/destrancar ja que a função de trancar e destrancar fica no client, e no client não se pode puxar a conta do player diretamente, eu não estou conseguindo verificar se o carro e do player ou não no client -- client function processLockUnlock(vehicle) local locked = isVehicleLocked(vehicle) if isPedInVehicle(localPlayer) then playSounds("lockin") else playSounds("lockout") end if locked then triggerServerEvent("vehicleLock", localPlayer, vehicle, false) outputChatBox("#4B0082[BVN - Veiculo]: #FFFFFFVeiculo destrancado!", 255, 255, 255, true) else triggerServerEvent("vehicleLock", localPlayer, vehicle, true) outputChatBox("#4B0082[BVN - Veiculo]: #FFFFFFVeiculo trancado!", 255, 255, 255, true) end end ----------------------------------------------------------------------------------------------------- function setVehicleLockState() --Função trancar o carro if klikkTimer then return end if isTimer(klikkTimerRun) then return end klikkTimer = true klikkTimerRun = setTimer(function() klikkTimer = false end,1000,1) local vehicle = getPedOccupiedVehicle ( localPlayer ) if vehicle then processLockUnlock(vehicle) else local int2 = getElementInterior(localPlayer) local dim2 = getElementDimension(localPlayer) local mx,my,mz = getElementPosition(localPlayer) for k,v in ipairs(getElementsByType("vehicle")) do local x,y,z = getElementPosition(v) local int = getElementInterior(v) local dim = getElementDimension(v) local dist = getDistanceBetweenPoints3D(x,y,z,mx,my,mz) if dist <= 3 and int2 == int and dim2 == dim then processLockUnlock(v) return end end end end bindKey("k", "down", setVehicleLockState) -- server function onVehicleLock(locked) local owner = getElementData(vehicle, "ownercar") if owner == getAccountName(getPlayerAccount(source)) then setVehicleLocked(vehicle, locked) vehicle:setData("veh:status", locked) end end addEvent("vehicleLock", true) addEventHandler("vehicleLock", root, onVehicleLock) perdão pela indentação da função do meio, quando eu não indento um código e porque eu esqueço que aqui tem que substituir tab por 4 espaços, porém desta vez eu lembrei, mas realmente não sei como indentar a parte do meio Link to comment
Other Languages Moderators Lord Henry Posted April 2, 2023 Other Languages Moderators Share Posted April 2, 2023 Configure seu editor de código para sempre indentar com espaços ao apertar a tecla TAB. No notepad++ por exemplo dá pra fazer isso. Passo a passo de como indentar a função do meio: Spoiler function setVehicleLockState() -- Função trancar o carro if klikkTimer then return end if isTimer(klikkTimerRun) then return end klikkTimer = true klikkTimerRun = setTimer(function() klikkTimer = false end,1000,1) local vehicle = getPedOccupiedVehicle ( localPlayer ) if vehicle then processLockUnlock(vehicle) else local int2 = getElementInterior(localPlayer) local dim2 = getElementDimension(localPlayer) local mx,my,mz = getElementPosition(localPlayer) for k,v in ipairs(getElementsByType("vehicle")) do local x,y,z = getElementPosition(v) local int = getElementInterior(v) local dim = getElementDimension(v) local dist = getDistanceBetweenPoints3D(x,y,z,mx,my,mz) if dist <= 3 and int2 == int and dim2 == dim then processLockUnlock(v) return end end end end bindKey("k", "down", setVehicleLockState) Spoiler function setVehicleLockState() -- Função trancar o carro if klikkTimer then return end if isTimer(klikkTimerRun) then return end -- Normalmente esta função estaria com +4, mas ela não faz parte do escopo do if anterior pois ele já abriu e fechou na mesma linha. klikkTimer = true -- Normalmente essa linha e as de baixo estariam com +4, mas elas não fazem parte do escopo do if anterior pois ele já abriu e fechou na mesma linha. klikkTimerRun = setTimer(function() klikkTimer = false end,1000,1) local vehicle = getPedOccupiedVehicle ( localPlayer ) if vehicle then processLockUnlock(vehicle) else local int2 = getElementInterior(localPlayer) local dim2 = getElementDimension(localPlayer) local mx,my,mz = getElementPosition(localPlayer) for k,v in ipairs(getElementsByType("vehicle")) do local x,y,z = getElementPosition(v) local int = getElementInterior(v) local dim = getElementDimension(v) local dist = getDistanceBetweenPoints3D(x,y,z,mx,my,mz) if dist <= 3 and int2 == int and dim2 == dim then processLockUnlock(v) return end end end end bindKey("k", "down", setVehicleLockState) Spoiler function setVehicleLockState() -- Função trancar o carro if klikkTimer then return end if isTimer(klikkTimerRun) then return end klikkTimer = true klikkTimerRun = setTimer(function() klikkTimer = false -- Faz parte do escopo do timer. end,1000,1) -- Esse end fecha a função do timer, deve ficar no mesmo nível dele. local vehicle = getPedOccupiedVehicle ( localPlayer ) if vehicle then processLockUnlock(vehicle) -- Faz parte do escopo do if. else -- Não faz parte do escopo do if. local int2 = getElementInterior(localPlayer) -- Fazem tudo parte do escopo do else. local dim2 = getElementDimension(localPlayer) local mx,my,mz = getElementPosition(localPlayer) for k,v in ipairs(getElementsByType("vehicle")) do local x,y,z = getElementPosition(v) local int = getElementInterior(v) local dim = getElementDimension(v) local dist = getDistanceBetweenPoints3D(x,y,z,mx,my,mz) if dist <= 3 and int2 == int and dim2 == dim then processLockUnlock(v) return end end end -- Fecha o if e o else, deve ficar no mesmo nível deles. end bindKey("k", "down", setVehicleLockState) Spoiler function setVehicleLockState() -- Função trancar o carro if klikkTimer then return end if isTimer(klikkTimerRun) then return end klikkTimer = true klikkTimerRun = setTimer(function() klikkTimer = false end,1000,1) local vehicle = getPedOccupiedVehicle ( localPlayer ) if vehicle then processLockUnlock(vehicle) else local int2 = getElementInterior(localPlayer) local dim2 = getElementDimension(localPlayer) local mx,my,mz = getElementPosition(localPlayer) for k,v in ipairs(getElementsByType("vehicle")) do local x,y,z = getElementPosition(v) -- Fazem parte do escopo do for. local int = getElementInterior(v) local dim = getElementDimension(v) local dist = getDistanceBetweenPoints3D(x,y,z,mx,my,mz) if dist <= 3 and int2 == int and dim2 == dim then processLockUnlock(v) return end end -- Fecha o for, deve ficar no mesmo nível dele. end end bindKey("k", "down", setVehicleLockState) Spoiler function setVehicleLockState() --Função trancar o carro if klikkTimer then return end if isTimer(klikkTimerRun) then return end klikkTimer = true klikkTimerRun = setTimer(function() klikkTimer = false end, 1000, 1) local vehicle = getPedOccupiedVehicle (localPlayer) if vehicle then processLockUnlock(vehicle) else local int2 = getElementInterior(localPlayer) local dim2 = getElementDimension(localPlayer) local mx, my, mz = getElementPosition(localPlayer) for _,v in pairs(getElementsByType("vehicle")) do -- Não precisa de ipairs se a ordem e o índice forem irrelevantes. local x, y, z = getElementPosition(v) local int = getElementInterior(v) local dim = getElementDimension(v) local dist = getDistanceBetweenPoints3D(x, y, z, mx, my, mz) if dist <= 3 and int2 == int and dim2 == dim then processLockUnlock(v) -- Fazem parte do escopo do if. return end -- Fecha o if, deve ficar no mesmo nível dele. end end end bindKey("k", "down", setVehicleLockState) Link to comment
Doongogar Posted April 3, 2023 Author Share Posted April 3, 2023 ok, eu acho que entendi, me diga uma coisa, os ends, independente de qualquer coisa, sempre estarão em formato de escada? e também se poder ajudar ali na questão de passar a conta do server para o client, ajuda demais Link to comment
Other Languages Moderators Lord Henry Posted April 3, 2023 Other Languages Moderators Share Posted April 3, 2023 27 minutes ago, SciptNovato said: os ends, independente de qualquer coisa, sempre estarão em formato de escada? Não. Depende dos ifs e elses a quem eles pertencem. É comum eles ficarem em forma de escada no final das funções mas não é uma regra. Link to comment
Recommended Posts
Create an account or sign in to comment
You need to be a member in order to leave a comment
Create an account
Sign up for a new account in our community. It's easy!
Register a new accountSign in
Already have an account? Sign in here.
Sign In Now