Jump to content

setTrainMaxSpeed or setTrainHandling


Recommended Posts

Estava editando meu mod de trems e queria que de alguma forma quando tivesse 5 vagões o trem ficasse mais lento do que o normal.

Eu já tentei usar setModelHandling e nada, muitos vão sugerir usar o setTrainSpeed, porém, eu quero que o player que esteja no trem seja livre para escolher a velocidade de andar e não que o script fique setando a velocidade do trem

Link to comment
  • Other Languages Moderators

Você pode "bloquear" a velocidade do trem quando ele atingir a velocidade máxima que você quer, setando nele a velocidade máxima em si mesmo.

Ex: Você quer setar a velocidade máxima como 200 km/h. Então vc cria uma função com evento onClientPreRender que verifica a velocidade atual do trem. Se for maior ou igual a 200 km/h e o jogador estiver pressionando o botão de acelerar, seta a velocidade do trem em 200 km/h a cada frame. Ao soltar o botão de acelerar, para de setar a velocidade no trem e ele vai diminuir normalmente (ou frear).

Link to comment
  • Other Languages Moderators
local limite = 200 -- Velocidade máxima com 5 vagões.

addEventHandler ("onClientVehicleEnter", root, function (thePlayer, seat)
    if (thePlayer == localPlayer) then -- Se o jogador que entrou no veículo for o localPlayer, então:
        if (getElementModel (source) == 449) and (seat == 0) then -- Se o jogador entrou como motorista em um Bonde, então:
            addEventHandler ("onClientPreRender", root, speedCheck) -- Inicia a verificação de velocidade no início de cada frame.
        end
    end
end)

function speedCheck ()
    if (getVehicleType (getPedOccupiedVehicle(localPlayer)) == "Train" ) then -- Se o jogador local está em um veículo do tipo Train, então:
        local speed = getTrainSpeed (getPedOccupiedVehicle(localPlayer)) -- Obtém a velocidade atual do trem. OBS: Sempre será positiva, independente da direção do trem na pista ou se está indo de ré.
        dxDrawText (speed, 0, 0) -- Apenas para testes. Mostra a speed atual acima do chat. Bem no canto da tela.
        if (getElementData (getPedOccupiedVehicle(localPlayer), "wagons") >= 5) then -- Não sei como vc está fazendo para verificar quantos vagões o trem possui, usei elementData como exemplo.
            if (getPedControlState (localPlayer, "accelerate")) then -- Se o jogador está acelerando o trem, então:
                if (speed >= limite) then -- Se a velocidade do trem for maior ou igual a 200 km/h, então:
                -- OBS: Setar velocidade positiva fará o trem ir no sentido horário da pista e não necessariamente pra frente. Por isso fiz a verificação a seguir.
                    if (getTrainDirection (getPedOccupiedVehicle(localPlayer))) then -- Se o trem está apontado no sentido horário da pista, então:
                        setTrainSpeed (getPedOccupiedVehicle(localPlayer), limite) -- Seta 200 km/h na velocidade do trem, impedindo que o trem fique mais rápido do que isso.
                    else -- Se o trem está apontado no sentido anti-horário, então:
                        setTrainSpeed (getPedOccupiedVehicle(localPlayer), limite * -1) -- Seta -200 km/h na velocidade do trem, pois ele já estava indo no sentido anti-horário.
                    end
                end
            end
        end
    end
end

addEventHandler ("onClientVehicleExit", root, function (thePlayer, seat)
    if (thePlayer == localPlayer) then -- Se o jogador que saiu do veículo for o localPlayer, então:
        if (getElementModel (source) == 449) and (seat == 0) then -- Se o jogador saiu como motorista de um Bonde, então:
            removeEventHandler ("onClientPreRender", root, speedCheck) -- Cancela a verificação de velocidade no início de cada frame.
        end
    end
end)

-- OBS: Ainda é possível burlar o limite andando de ré. Mas dai essa parte é com vc.

Obs: Não testei, fiz de cabeça. Aguardo seu feedback.

Edited by Lord Henry
Esqueci de cancelar a função de speedCheck ao sair do trem.
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...