Jump to content

setElement Speed ERROR Ajuda!


Recommended Posts

então o codigo abaixo permite que o player sete a si mesmo uma velocidade de 1x á 3x, mas está ocorrendo um erro no debug
toda vez que alguem seta velocidade ocorre este erro na imagem abaixo
 

   addCommandHandler("speed",
function (player, cmd, arg1)
    setElementSpeed(player, "velocity", tonumber(arg1))
    outputChatBox("Velocidade Setada Com Sucesso")
  end)

spacer.png 

Link to comment

então tentei fazer um codigo onde quem digita o comando pode se auto setar uma velocidade de 1 á 3
mais o codigo está dando erro ja tentei varias coisas  e não está funcionando nada gostaria de uma ajuda codigo e erro que está
dando no debug abaixo:
 

function velocidade (player, cmd, arg1)
    setElementSpeed(player "km/h", tonumber(arg1))
end
addCommandHandler("speed", velocidade)

spacer.png

Link to comment
  • Other Languages Moderators

A função setElementSpeed é do tipo útil, portanto vc precisa colar o código-fonte dela no seu script para que ela funcione. Coloque isso no início do seu script:

function getElementSpeed(theElement, unit)
    -- Check arguments for errors
    assert(isElement(theElement), "Bad argument 1 @ getElementSpeed (element expected, got " .. type(theElement) .. ")")
    local elementType = getElementType(theElement)
    assert(elementType == "player" or elementType == "ped" or elementType == "object" or elementType == "vehicle" or elementType == "projectile", "Invalid element type @ getElementSpeed (player/ped/object/vehicle/projectile expected, got " .. elementType .. ")")
    assert((unit == nil or type(unit) == "string" or type(unit) == "number") and (unit == nil or (tonumber(unit) and (tonumber(unit) == 0 or tonumber(unit) == 1 or tonumber(unit) == 2)) or unit == "m/s" or unit == "km/h" or unit == "mph"), "Bad argument 2 @ getElementSpeed (invalid speed unit)")
    -- Default to m/s if no unit specified and 'ignore' argument type if the string contains a number
    unit = unit == nil and 0 or ((not tonumber(unit)) and unit or tonumber(unit))
    -- Setup our multiplier to convert the velocity to the specified unit
    local mult = (unit == 0 or unit == "m/s") and 50 or ((unit == 1 or unit == "km/h") and 180 or 111.84681456)
    -- Return the speed by calculating the length of the velocity vector, after converting the velocity to the specified unit
    return (Vector3(getElementVelocity(theElement)) * mult).length
end

function setElementSpeed(element, unit, speed)
    local unit    = unit or 0
    local speed   = tonumber(speed) or 0
    local acSpeed = getElementSpeed(element, unit)
    if acSpeed and acSpeed~=0 then -- if true - element is valid, no need to check again
        local diff = speed/acSpeed
        if diff ~= diff then return false end -- if the number is a 'NaN' return false.
        local x, y, z = getElementVelocity(element)
        return setElementVelocity(element, x*diff, y*diff, z*diff)
    end
    return false
end

 

E na próxima vez, não crie 2 tópicos parecidos com a mesma dúvida.

Link to comment
1 hour ago, Lord Henry said:

A função setElementSpeed é do tipo útil, portanto vc precisa colar o código-fonte dela no seu script para que ela funcione. Coloque isso no início do seu script:

function getElementSpeed(theElement, unit)
    -- Check arguments for errors
    assert(isElement(theElement), "Bad argument 1 @ getElementSpeed (element expected, got " .. type(theElement) .. ")")
    local elementType = getElementType(theElement)
    assert(elementType == "player" or elementType == "ped" or elementType == "object" or elementType == "vehicle" or elementType == "projectile", "Invalid element type @ getElementSpeed (player/ped/object/vehicle/projectile expected, got " .. elementType .. ")")
    assert((unit == nil or type(unit) == "string" or type(unit) == "number") and (unit == nil or (tonumber(unit) and (tonumber(unit) == 0 or tonumber(unit) == 1 or tonumber(unit) == 2)) or unit == "m/s" or unit == "km/h" or unit == "mph"), "Bad argument 2 @ getElementSpeed (invalid speed unit)")
    -- Default to m/s if no unit specified and 'ignore' argument type if the string contains a number
    unit = unit == nil and 0 or ((not tonumber(unit)) and unit or tonumber(unit))
    -- Setup our multiplier to convert the velocity to the specified unit
    local mult = (unit == 0 or unit == "m/s") and 50 or ((unit == 1 or unit == "km/h") and 180 or 111.84681456)
    -- Return the speed by calculating the length of the velocity vector, after converting the velocity to the specified unit
    return (Vector3(getElementVelocity(theElement)) * mult).length
end

function setElementSpeed(element, unit, speed)
    local unit    = unit or 0
    local speed   = tonumber(speed) or 0
    local acSpeed = getElementSpeed(element, unit)
    if acSpeed and acSpeed~=0 then -- if true - element is valid, no need to check again
        local diff = speed/acSpeed
        if diff ~= diff then return false end -- if the number is a 'NaN' return false.
        local x, y, z = getElementVelocity(element)
        return setElementVelocity(element, x*diff, y*diff, z*diff)
    end
    return false
end

 

E na próxima vez, não crie 2 tópicos parecidos com a mesma dúvida.

feito isso esta a dar outro erro parecido erro abaixo:
spacer.png

o codigo ficou assim:

function getElementSpeed(theElement, unit)
   assert(isElement(theElement), "Bad argument 1 @ getElementSpeed (element expected, got " .. type(theElement) .. ")")
   local elementType = getElementType(theElement)
   assert(elementType == "player" or elementType == "ped" or elementType == "object" or elementType == "vehicle" or elementType == "projectile", "Invalid element type @ getElementSpeed (player/ped/object/vehicle/projectile expected, got " .. elementType .. ")")
   assert((unit == nil or type(unit) == "string" or type(unit) == "number") and (unit == nil or (tonumber(unit) and (tonumber(unit) == 0 or tonumber(unit) == 1 or tonumber(unit) == 2)) or unit == "m/s" or unit == "km/h" or unit == "mph"), "Bad argument 2 @ getElementSpeed (invalid speed unit)")
   unit = unit == nil and 0 or ((not tonumber(unit)) and unit or tonumber(unit))
   local mult = (unit == 0 or unit == "m/s") and 50 or ((unit == 1 or unit == "km/h") and 180 or 111.84681456)
   return (Vector3(getElementVelocity(theElement)) * mult).length
end

function setElementSpeed(element, unit, speed)
   local unit    = unit or 0
   local speed   = tonumber(speed) or 0
   local acSpeed = getElementSpeed(element, unit)
   if acSpeed and acSpeed~=0 then
       local diff = speed/acSpeed
       if diff ~= diff then return false end
       local x, y, z = getElementVelocity(element)
       return setElementVelocity(element, x*diff, y*diff, z*diff)
   end
   return false
end

function velocidade (thePlayer, cmd, arg1)
    setElementSpeed(player "km/h", tonumber(arg1))
end
addCommandHandler("velo", velocidade)

 

Edited by SciptNovato
Link to comment
1 hour ago, XXII said:

Na função "velocidade", nos parâmetros você se refere ao jogador como thePlayer porém, na função "setElementSpeed", você se refere como player, substitua para thePlayer

Também falta uma vírgula entre player e "km/h"

bom agora não esta ocorrendo nenhum erro no debug, mais nao está alterando a velocidade ao dar o comando
o script ficou desta forma  eu executei a alterações que você mencionou e tambem alterei na quarta linha adicionando depois de ped
o tipo de elemento: thePlayer, não sei se isso faz sentido mais antes da minha alteração também não estava a funcionar
abaixo o codigo como ficou caso queira dar uma olhada:
 

function getElementSpeed(theElement, unit)
   assert(isElement(theElement), "Bad argument 1 @ getElementSpeed (element expected, got " .. type(theElement) .. ")")
   local elementType = getElementType(theElement)
   assert(elementType == "player" or elementType == "ped" or elementType == "thePlayer" or elementType == "object" or elementType == "vehicle" or elementType == "projectile", "Invalid element type @ getElementSpeed (player/ped/thePlayer/object/vehicle/projectile expected, got " .. elementType .. ")")
   assert((unit == nil or type(unit) == "string" or type(unit) == "number") and (unit == nil or (tonumber(unit) and (tonumber(unit) == 0 or tonumber(unit) == 1 or tonumber(unit) == 2)) or unit == "m/s" or unit == "km/h" or unit == "mph"), "Bad argument 2 @ getElementSpeed (invalid speed unit)")
   unit = unit == nil and 0 or ((not tonumber(unit)) and unit or tonumber(unit))
   local mult = (unit == 0 or unit == "m/s") and 50 or ((unit == 1 or unit == "km/h") and 180 or 111.84681456)
   return (Vector3(getElementVelocity(theElement)) * mult).length
end

function setElementSpeed(element, unit, speed)
   local unit    = unit or 0
   local speed   = tonumber(speed) or 0
   local acSpeed = getElementSpeed(element, unit)
   if acSpeed and acSpeed~=0 then
       local diff = speed/acSpeed
       if diff ~= diff then return false end
       local x, y, z = getElementVelocity(element)
       return setElementVelocity(element, x*diff, y*diff, z*diff)
   end
   return false
end

function velocidade (thePlayer, cmd, arg1)
    setElementSpeed(thePlayer, "km/h", tonumber(arg1))
end
addCommandHandler("velo", velocidade)

 

Link to comment

Pelo que entendi, você quer colocar uma velocidade no veículo do jogador, então você deve primeiramente puxar o veículo que o jogador está com getPedOccupiedVehicle, se o veículo existir você irá utilizar o setElementSpeed no veículo, substituindo o thePlayer pelo veículo

Link to comment
11 hours ago, XXII said:

Pelo que entendi, você quer colocar uma velocidade no veículo do jogador, então você deve primeiramente puxar o veículo que o jogador está com getPedOccupiedVehicle, se o veículo existir você irá utilizar o setElementSpeed no veículo, substituindo o thePlayer pelo veículo

na verdade a intenção do codigo era exatamente essa e funcionava
(o codigo original não é meu)
mais eu estava tentando modifica-lo para setar a velocidade no player

Edited by SciptNovato
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...