Compartilhe
Um Geek
Scripter CLEO - Intermediário
Scripter CLEO - Intermediário
Título : Carinha que mora logo ali
Mensagens : 761
Reputação : 160
Desde : 07/03/2017
Localização : BH - MG
Link : https://gta-geek.blogspot.com.br/
Ver perfil do usuáriohttps://gta-geek.blogspot.com.br/
  • Reputação da mensagem: 100% (1 votos)
em Sab 24 Fev 2018, 23:40
É mais um source code que um mod, já tem a versão cleo então estou passando a minha versão em lua, poderia ser menor, mas não pude dispensar cada checagem. Usa o botão YES para soltar os reboques.



Código:
script_name("soltar reboques")
script_author("Um Geek")
script_description("aperte Y para soltar reboques")

local BUTTON_COMMAND = 11 -- Y/YES

function main()
 while true do
 wait(40)
 if isPlayerControlOn(PLAYER_HANDLE) then
 local vehicle = getCarCharIsUsing(PLAYER_PED)
 if doesVehicleExist(vehicle) then
 if isThisModelACar(getCarModel(vehicle)) then
 if buttonCommand(BUTTON_COMMAND) then -- button YES/Y
 local trailer = get_TrailerInCar(vehicle)
 if doesVehicleExist(trailer) then
 detachTrailerFromCab(trailer, vehicle)
 --printStringNow("Trailer liberado!", 1500)
 end
 end
 end
 end
 end
 end
end

function get_TrailerInCar(int_car)
 if doesVehicleExist(int_car) then
 local intVarA = getCarPointer(int_car)
 intVarA = intVarA + 1224
 intVarA = readMemory(intVarA, 4, false)
 intVarA = getVehiclePointerHandle(intVarA)
 if doesVehicleExist(intVarA) then
 return intVarA
 end
 end
 return -1
end

function buttonCommand(int_button)
 if isButtonPressed(PLAYER_HANDLE, int_button) then
 while isButtonPressed(int_button) do wait(5) end
 return true
 end
 return false
end

Link
Código:
https://github.com/UmGeek/LUA-Scripts-for-Moonloader/blob/master/soltar%20reboques.lua#L7

______________________________

.::
Os mods que crio serão colocados no meu workshop link
Ordep_
Mensagens Nível 3
Mensagens Nível 3
Título : "O amor é apenas uma reação química"
Mensagens : 171
Reputação : 2
Desde : 21/01/2018
Idade : 15
Localização : Serra - ES
Ver perfil do usuário
em Dom 25 Fev 2018, 11:42
Só falta a versão Lua do mod do reboque não soltar.

______________________________


Créditos : Daz_Vlad
Nex
Scripter CLEO - Intermediário
Scripter CLEO - Intermediário
Mensagens : 1239
Reputação : 99
Desde : 04/03/2013
Idade : 18
Ver perfil do usuário
  • Reputação da mensagem: 100% (1 votos)
em Dom 25 Fev 2018, 15:43
As checagens são ate desnecessárias, você checou se o trailer existe duas vezes no mesmo frame e o veículo do player só não foi a mesma coisa por causa do wait() dentro dessa buttonCommand() que também acho desnecessária...
Eu faria assim:
https://gist.github.com/l-almeida/24a9597d84887b492df0c77d66f9b742
Um Geek
Scripter CLEO - Intermediário
Scripter CLEO - Intermediário
Título : Carinha que mora logo ali
Mensagens : 761
Reputação : 160
Desde : 07/03/2017
Localização : BH - MG
Link : https://gta-geek.blogspot.com.br/
Ver perfil do usuáriohttps://gta-geek.blogspot.com.br/
em Dom 25 Fev 2018, 20:31
Ficou legal, o código ficou menor. Só não entendi algumas partes por exemplo: 
No uso de isCharSittingInAnyCar(PLAYER_PED), eu empreguei a checagem isPlayerControlOn(PLAYER_HANDLE) neste lugar para caso o jogador estiver em um menu por exemplo e apertar Y o trailer não se soltar por algum motivo, alem de não permitir um comando em um momento que não deveria ter. 
A função getTrailerInCar() ficou mais legal usando a possibilidade de fazer operações na mesma linha que tem no lua, só que ficou desnecessário retornar dois parâmetros sendo que os dois tem o mesmo valor return doesVehicleExist(trailer), trailer

function buttonCommand(int_button)
  if isButtonPressed(PLAYER_HANDLE, int_button) then 
     while isButtonPressed(int_button) do wait(5) end
     return true
  end
  return false
end

A função buttonCommand() espera o botão ser liberado para ai sim retornar verdadeiro, podia ser wait(0) ali também, esta função costumo usar quando tem outros comando de teclas assim não preciso ficar colocando checagem se soltou a tecla a cada vez que checar que uma tecla foi pressionada, neste caso poderia até evitar, uma vez que o trailer esta liberado nem passaria pela checagem se o trailer existe não repetindo o comando. Poderia ter tudo sido feito na função main(), mas a função getTrailerInCar() assim fica disponível para quem quiser usar para pegar trailer engatados em veículos.


Resumindo  https://goo.gl/MUf8Kg

______________________________

.::
Os mods que crio serão colocados no meu workshop link
Nex
Scripter CLEO - Intermediário
Scripter CLEO - Intermediário
Mensagens : 1239
Reputação : 99
Desde : 04/03/2013
Idade : 18
Ver perfil do usuário
em Dom 25 Fev 2018, 21:39
@Um Geek escreveu:Ficou legal, o código ficou menor. Só não entendi algumas partes por exemplo: 
No uso de isCharSittingInAnyCar(PLAYER_PED), eu empreguei a checagem isPlayerControlOn(PLAYER_HANDLE) neste lugar para caso o jogador estiver em um menu por exemplo e apertar Y o trailer não se soltar por algum motivo, alem de não permitir um comando em um momento que não deveria ter.
Tudo bem
@Um Geek escreveu:A função getTrailerInCar() ficou mais legal usando a possibilidade de fazer operações na mesma linha que tem no lua, só que ficou desnecessário retornar dois parâmetros sendo que os dois tem o mesmo valor return doesVehicleExist(trailer), trailer
Não, um valor é um boolean se o veículo existe ou não e o outro é a possível handle do veículo, sim, poderia só retornar a possível handle e checar se existe fora da função mas acho que desse jeito fica melhor e também o próprio MoonLoader faz algumas coisas assim:
findAllRandomCharsInSphere
getCharPlayerIsTargeting
@Um Geek escreveu:A função buttonCommand() espera o botão ser liberado para ai sim retornar verdadeiro
Eu entendi o que a função faz, só achei desnecessária  :)
Acho bem mais interessante apertar e a ação acontecer na mesma hora...
@Um Geek escreveu:Poderia ter tudo sido feito na função main(), mas a função getTrailerInCar() assim fica disponível para quem quiser usar para pegar trailer engatados em veículos.
Não estou falando em tamanho do código, tô falando do que faz sentido ou não no código, o tamanho não importa.
Um Geek
Scripter CLEO - Intermediário
Scripter CLEO - Intermediário
Título : Carinha que mora logo ali
Mensagens : 761
Reputação : 160
Desde : 07/03/2017
Localização : BH - MG
Link : https://gta-geek.blogspot.com.br/
Ver perfil do usuáriohttps://gta-geek.blogspot.com.br/
em Dom 25 Fev 2018, 22:19
Poderia ter feito assim então. 



@Nex escreveu:Eu entendi o que a função faz, só achei desnecessária   
Acho bem mais interessante apertar e a ação acontecer na mesma hora...

coisas funcionam bem com peças extras, mas com peças faltando é mais difícil.
Como foi a primeira vez que fiz o código eu não quis correr o risco de ter o trailer engatando e desengatando dezenas de vezes por segundo  philosoraptor

______________________________

.::
Os mods que crio serão colocados no meu workshop link
Conteúdo patrocinado
Tópicos similares
Permissão deste fórum:
Você não pode responder aos tópicos neste fórum