Jump to content

passar a conta do jogador para o client


Recommended Posts

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

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
  • Other Languages Moderators
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

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 account

Sign in

Already have an account? Sign in here.

Sign In Now
  • Recently Browsing   0 members

    • No registered users viewing this page.
×
×
  • Create New...