Doongogar Posted October 16, 2021 Share Posted October 16, 2021 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) Link to comment
Doongogar Posted October 17, 2021 Author Share Posted October 17, 2021 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) Link to comment
Other Languages Moderators Lord Henry Posted October 17, 2021 Other Languages Moderators Share Posted October 17, 2021 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
Doongogar Posted October 18, 2021 Author Share Posted October 18, 2021 (edited) 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: 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 October 18, 2021 by SciptNovato Link to comment
XXII Posted October 18, 2021 Share Posted October 18, 2021 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" Link to comment
Doongogar Posted October 18, 2021 Author Share Posted October 18, 2021 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
XXII Posted October 19, 2021 Share Posted October 19, 2021 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
Doongogar Posted October 19, 2021 Author Share Posted October 19, 2021 (edited) 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 October 19, 2021 by SciptNovato Link to comment
XXII Posted October 20, 2021 Share Posted October 20, 2021 Setar velocidade em jogador é totalmente diferente, tem que usar setGameSpeed 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