Página 1 de 2 • 1, 2 

- raylandersilvaMensagens Nível 1
- Mensagens : 4
Reputação : 0
Desde : 20/04/2013
Como criar um script que faz para aperta algum botão tipo aperta o T do samp ao fazer algum comando ex: digitei : CHAT ai o script endendeu que era pra aperta T.
- JacobiModerador
- Título : Memento Mori
Mensagens : 985
Reputação : 60
Desde : 13/12/2015
Idade : 24
Localização : Santa Cruz do Sul
Link : github.com/edujacobi
Acho que agora aprendi como fazer, obrigado.
______________________________

GTA Brasil - O verdadeiro GTA brasileiro
ReLive Modding - Mods para PS2
Alchemistry - Game mobile com conceitos de química
GTA Discord - Bot RPG para Discord
@Jacobi escreveu:Acho que agora aprendi como fazer, obrigado.



Teria que usar uma mistura entre TEST_CHEAT e SendKeys do Windows, acredito eu.
______________________________

Modifico quase qualquer coisa. :)
------------------>>>http://gtamodvicio.blogspot.com/ <<<------------------

Meu PC:
- Spoiler:
Configurações PC:
*Processador: Intel Core i7 4790K 4.00GHz LGA1150
*Placa Mãe: GIGABYTE GA-H97M-D3H Intel (LGA1150)
*HD: 1TB Seagate Barracuda 64MB Sata III 7200RPM (2x - RAID 0)
*HD²: SAMSUNG M3 Externo USB 5400RPM 1TB
*Placa de vídeo: Nvidia GTX660 2GB DDR5 192bit EVGA
*RAM: 8GB DDR3 1600MHZ Kingston HYPER X BEAST (2x4GB)
*Fonte: Corsair 600W Reais CX600M Modular - CP-9020060-WW (80 Plus Bronze)
*Gabinete: Gabinete Raidmax Super Hurricane Branco - 248WB
*Monitor: LG 23MP55HQ Full HD HDMI 23'
- NexScripter CLEO - Intermediário
- Mensagens : 1240
Reputação : 99
Desde : 04/03/2013
Idade : 20
Um pouco complexo, o jeito mais fácil seria usando Lua (MoonLoader ) com alguma lib pra usar as funções da WinAPI, isso aqui deve servir (não testei).
Agora é só tu aprender a fazer scripts Lua, isso aqui vai te ajudar e aprender a usar o SendInput da WinAPI (só procurar no google).
Alternativamente, você pode só usar um desses muitos programas de macros que existem por ai.
Agora é só tu aprender a fazer scripts Lua, isso aqui vai te ajudar e aprender a usar o SendInput da WinAPI (só procurar no google).
Alternativamente, você pode só usar um desses muitos programas de macros que existem por ai.

Nex' escreveu:Um pouco complexo, o jeito mais fácil seria usando Lua (MoonLoader ) com alguma lib pra usar as funções da WinAPI, isso aqui deve servir (não testei).
Agora é só tu aprender a fazer scripts Lua, isso aqui vai te ajudar e aprender a usar o SendInput da WinAPI (só procurar no google).
Alternativamente, você pode só usar um desses muitos programas de macros que existem por ai.![]()
Pois é

Deve ter uns códigos prontos em sites como Stack Overflow, entretanto ainda vai precisar reescreve-los na sintaxe de lua.
______________________________

Modifico quase qualquer coisa. :)
------------------>>>http://gtamodvicio.blogspot.com/ <<<------------------

Meu PC:
- Spoiler:
Configurações PC:
*Processador: Intel Core i7 4790K 4.00GHz LGA1150
*Placa Mãe: GIGABYTE GA-H97M-D3H Intel (LGA1150)
*HD: 1TB Seagate Barracuda 64MB Sata III 7200RPM (2x - RAID 0)
*HD²: SAMSUNG M3 Externo USB 5400RPM 1TB
*Placa de vídeo: Nvidia GTX660 2GB DDR5 192bit EVGA
*RAM: 8GB DDR3 1600MHZ Kingston HYPER X BEAST (2x4GB)
*Fonte: Corsair 600W Reais CX600M Modular - CP-9020060-WW (80 Plus Bronze)
*Gabinete: Gabinete Raidmax Super Hurricane Branco - 248WB
*Monitor: LG 23MP55HQ Full HD HDMI 23'
eu também senti falta de um sendkeys no cleo não sei se existe!
to tentando fazer assim
acredito que estou errando aqui 0AA5: call $hPROC num_params 3 pop 3 params 1 0x4a 1
estou quase criando uma dll para fazer sendkeys
alguns exemplo de uso de dlls http://ugbase.eu/Thread-Tutorial-Using-functions-from-Windows-libraries
to tentando fazer assim
- Código:
0AA2: $hLIB = load_library "user32.dll" // IF and SET
0AA3: free_library $hLIB
0AA4: $hPROC = get_proc_address "SendInput" library $hLIB // IF and SET
0AA5: call $hPROC num_params 3 pop 3 params 1 0x4a 1
acredito que estou errando aqui 0AA5: call $hPROC num_params 3 pop 3 params 1 0x4a 1
estou quase criando uma dll para fazer sendkeys
alguns exemplo de uso de dlls http://ugbase.eu/Thread-Tutorial-Using-functions-from-Windows-libraries
@Delmar grande escreveu:eu também senti falta de um sendkeys no cleo não sei se existe!
to tentando fazer assim
- Código:
0AA2: $hLIB = load_library "user32.dll" // IF and SET
0AA3: free_library $hLIB
0AA4: $hPROC = get_proc_address "SendInput" library $hLIB // IF and SET
0AA5: call $hPROC num_params 3 pop 3 params 1 0x4a 1
acredito que estou errando aqui 0AA5: call $hPROC num_params 3 pop 3 params 1 0x4a 1
estou quase criando uma dll para fazer sendkeys
alguns exemplo de uso de dlls http://ugbase.eu/Thread-Tutorial-Using-functions-from-Windows-libraries
Funções do Windows geralmente são stdcall, portanto, pop 0.
OBS: não use variáveis globais.
A user32.dll nunca será descarregada, entretanto, não use FreeLibrary se não terminou de usar.
Os parâmetros não estão corretos: https://msdn.microsoft.com/en-us/library/windows/desktop/ms646310%28v=vs.85%29.aspx?f=255&MSPPError=-2147217396
O argumento do meio é um ponteiro para um array de estruturas de INPUT.
______________________________

Modifico quase qualquer coisa. :)
------------------>>>http://gtamodvicio.blogspot.com/ <<<------------------

Meu PC:
- Spoiler:
Configurações PC:
*Processador: Intel Core i7 4790K 4.00GHz LGA1150
*Placa Mãe: GIGABYTE GA-H97M-D3H Intel (LGA1150)
*HD: 1TB Seagate Barracuda 64MB Sata III 7200RPM (2x - RAID 0)
*HD²: SAMSUNG M3 Externo USB 5400RPM 1TB
*Placa de vídeo: Nvidia GTX660 2GB DDR5 192bit EVGA
*RAM: 8GB DDR3 1600MHZ Kingston HYPER X BEAST (2x4GB)
*Fonte: Corsair 600W Reais CX600M Modular - CP-9020060-WW (80 Plus Bronze)
*Gabinete: Gabinete Raidmax Super Hurricane Branco - 248WB
*Monitor: LG 23MP55HQ Full HD HDMI 23'
- NexScripter CLEO - Intermediário
- Mensagens : 1240
Reputação : 99
Desde : 04/03/2013
Idade : 20
Acabei de achar essa função no MoonLoader: https://blast.hk/wiki/lua:setvirtualkeydown
Ou seja, nem precisa de fazer aquilo que falei ali em cima.
Talvez vocês devessem usar MoonLoader .
Ou seja, nem precisa de fazer aquilo que falei ali em cima.
Talvez vocês devessem usar MoonLoader .
fabio veja o script agora ao apertar a tecla D ele chama a função da dll a ideia é para simular a tecla j
acho que esta quase tudo certo só que percebo que não passa dessa linha if 0AA4: 30@ = get_proc_address "keybd_event" library 31@ // IF and SET
estou tentando usar a função keybd_event
https://msdn.microsoft.com/en-us/library/windows/desktop/ms646304(v=vs.85).aspx
https://msdn.microsoft.com/en-us/library/windows/desktop/dd375731(v=vs.85).aspx
- Código:
{$CLEO .cs}
0000:
while true
wait 0 ms
if
Player.Defined($PLAYER_CHAR)
then
if
0ADC: test_cheat "D"
then
if 0AA2: 31@ = load_library "user32.dll" // IF and SET
then
0ACD: show_text_highpriority "carregou dll..." time 20
if 0AA4: 30@ = get_proc_address "keybd_event" library 31@ // IF and SET
then
0ACD: show_text_highpriority "carregou função..." time 20
0AA7: call_function 30@ num_params 4 pop 0 0x4a 0 0 0 error_code 2@
if 2@ <= 32
then 0664: printfloat "falha... : %d" 2@
end
end
0AA3: free_library 31@
end
/*teste 2*/
{0AB1: @SendKey_J 0}
end
end
end
{:SendKey_J
0AA2: 31@ = load_library "user32.dll" // IF and SET
0AA4: 30@ = get_proc_address "keybd_event" library 31@ // IF and SET
0AA5: call 30@ num_params 4 pop 0 0x4a 0 0 0
0AA3: free_library 31@
0AB2: 0}
acho que esta quase tudo certo só que percebo que não passa dessa linha if 0AA4: 30@ = get_proc_address "keybd_event" library 31@ // IF and SET
estou tentando usar a função keybd_event
https://msdn.microsoft.com/en-us/library/windows/desktop/ms646304(v=vs.85).aspx
https://msdn.microsoft.com/en-us/library/windows/desktop/dd375731(v=vs.85).aspx
Não tem nenhum crash?
Poderia tentar usar a função GetLastError do Windows.
Poderia tentar usar a função GetLastError do Windows.
______________________________

Modifico quase qualquer coisa. :)
------------------>>>http://gtamodvicio.blogspot.com/ <<<------------------

Meu PC:
- Spoiler:
Configurações PC:
*Processador: Intel Core i7 4790K 4.00GHz LGA1150
*Placa Mãe: GIGABYTE GA-H97M-D3H Intel (LGA1150)
*HD: 1TB Seagate Barracuda 64MB Sata III 7200RPM (2x - RAID 0)
*HD²: SAMSUNG M3 Externo USB 5400RPM 1TB
*Placa de vídeo: Nvidia GTX660 2GB DDR5 192bit EVGA
*RAM: 8GB DDR3 1600MHZ Kingston HYPER X BEAST (2x4GB)
*Fonte: Corsair 600W Reais CX600M Modular - CP-9020060-WW (80 Plus Bronze)
*Gabinete: Gabinete Raidmax Super Hurricane Branco - 248WB
*Monitor: LG 23MP55HQ Full HD HDMI 23'
pelo que percebi o cleo aqui não esta conseguindo usar dll veja o log

********************************************
script SendKey
Local variables dump:
0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
289166 1279363982
********************************************
00000006&0: [00D6] IF 0
00000010&0: [0256] IS_PLAYER_PLAYING 0 // TRUE
00000015&1: [004D] GOTO_IF_FALSE -45
00000022&1: [00D6] IF 0
00000026&0: [0ADC] TEST_CHEAT "D" // TRUE
00000031&1: [004D] GOTO_IF_FALSE -45
00000038&1: [0050] GOSUB -52
00000052&1: [0AA2] LOAD_LIBRARY "USER32.DLL" -> 1997864960 // TRUE
00000069&1: [0AA4] GET_PROC_ADDRESS "KEYBD_EVENT" 1997864960 -> 0 // FALSE
00000090&0: [0AA5] CALL_FUNCTION 0x0 4 0 74 0 0 0
*********************************
- NexScripter CLEO - Intermediário
- Mensagens : 1240
Reputação : 99
Desde : 04/03/2013
Idade : 20
@Delmar grande escreveu:
- Código:
00000052&1: [0AA2] LOAD_LIBRARY "USER32.DLL" -> 1997864960 // TRUE
00000069&1: [0AA4] GET_PROC_ADDRESS "KEYBD_EVENT" 1997864960 -> 0 // FALSE
No Sanny Builder, vai em Ferramentas > Opções... > Formatos, no "Convertor de Case" coloca "Como é"
Veryzon escreveu:Checa se o GetProcAddress retornou algum endereço antes de usar. O comando CallFunc está sendo usado sem endereço.
Veja: "[0AA5] CALL_FUNCTION 0x0 4 0 74 0 0 0"
sim chequei aqui nesse script e realmente não esta retornado nada não consegui usar nenhuma dll

- Código:
{$CLEO .cs}
0000:
while true
wait 0 ms
if
Player.Defined($PLAYER_CHAR)
then
if
0ADC: test_cheat "D"
then
if 0AA2: 31@ = load_library "user32.dll" // IF and SET
then
0ACD: show_text_highpriority "carregou dll..." time 20
if 0AA4: 30@ = get_proc_address "keybd_event" library 31@ // IF and SET
then
0ACD: show_text_highpriority "carregou função..." time 20
0AA7: call_function 30@ num_params 4 pop 0 0x4a 0 0 0 error_code 2@
if 2@ <= 32
then 0664: printfloat "falha... : %d" 2@
end
end
0AA3: free_library 31@
end
/*teste 2*/
{0AB1: @SendKey_J 0}
end
end
end
{:SendKey_J
0AA2: 31@ = load_library "user32.dll" // IF and SET
0AA4: 30@ = get_proc_address "keybd_event" library 31@ // IF and SET
0AA5: call 30@ num_params 4 pop 0 0x4a 0 0 0
0AA3: free_library 31@
0AB2: 0}
- NexScripter CLEO - Intermediário
- Mensagens : 1240
Reputação : 99
Desde : 04/03/2013
Idade : 20
Isso ai, cagou pro que eu acabei de falar.
Nex' escreveu:@Delmar grande escreveu:
- Código:
00000052&1: [0AA2] LOAD_LIBRARY "USER32.DLL" -> 1997864960 // TRUE
00000069&1: [0AA4] GET_PROC_ADDRESS "KEYBD_EVENT" 1997864960 -> 0 // FALSE
No Sanny Builder, vai em Ferramentas > Opções... > Formatos, no "Convertor de Case" coloca "Como é"
isso agora pegou o get_proc_address agora falta pouco para funcionar.
- Código:
********************************************
script SendKey
Local variables dump:
0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
288660 1279363476
********************************************
00000006&0: [00D6] IF 0
00000010&0: [0256] IS_PLAYER_PLAYING 0 // TRUE
00000015&1: [004D] GOTO_IF_FALSE -45
00000022&1: [00D6] IF 0
00000026&0: [0ADC] TEST_CHEAT "D" // TRUE
00000031&1: [004D] GOTO_IF_FALSE -45
00000038&1: [0050] GOSUB -52
00000052&1: [0AA2] LOAD_LIBRARY "user32.dll" -> 1997864960 // TRUE
00000069&1: [0AA4] GET_PROC_ADDRESS "keybd_event" 1997864960 -> 1998253211 // TRUE
00000090&1: [0AA5] CALL_FUNCTION 0x771AEC9B 4 0 74 0 0 0
00000108&1: [0AA3] FREE_LIBRARY 1997864960
00000113&1: [0AB2] RET
*********************************
Você usou "RET" (0AB2:) sem usar 0AB1:
Você usou "gosub", tem que ser "return".
Você usou "gosub", tem que ser "return".
Me parece ser um problema de parâmetros da função agora.
Você precisa colocar os parâmetros de forma invertida no opcode.
Você precisa colocar os parâmetros de forma invertida no opcode.
- Código:
0AA7: call_function 30@ num_params 4 pop 0 params 0 0 0 0x4a error_code 2@
______________________________

Modifico quase qualquer coisa. :)
------------------>>>http://gtamodvicio.blogspot.com/ <<<------------------

Meu PC:
- Spoiler:
Configurações PC:
*Processador: Intel Core i7 4790K 4.00GHz LGA1150
*Placa Mãe: GIGABYTE GA-H97M-D3H Intel (LGA1150)
*HD: 1TB Seagate Barracuda 64MB Sata III 7200RPM (2x - RAID 0)
*HD²: SAMSUNG M3 Externo USB 5400RPM 1TB
*Placa de vídeo: Nvidia GTX660 2GB DDR5 192bit EVGA
*RAM: 8GB DDR3 1600MHZ Kingston HYPER X BEAST (2x4GB)
*Fonte: Corsair 600W Reais CX600M Modular - CP-9020060-WW (80 Plus Bronze)
*Gabinete: Gabinete Raidmax Super Hurricane Branco - 248WB
*Monitor: LG 23MP55HQ Full HD HDMI 23'
(mas o erro do RET ainda continua valendo)
@Junior_Djjr escreveu:(mas o erro do RET ainda continua valendo)
Eu nem tinha percebido, acabei focando na parte da função.



______________________________

Modifico quase qualquer coisa. :)
------------------>>>http://gtamodvicio.blogspot.com/ <<<------------------

Meu PC:
- Spoiler:
Configurações PC:
*Processador: Intel Core i7 4790K 4.00GHz LGA1150
*Placa Mãe: GIGABYTE GA-H97M-D3H Intel (LGA1150)
*HD: 1TB Seagate Barracuda 64MB Sata III 7200RPM (2x - RAID 0)
*HD²: SAMSUNG M3 Externo USB 5400RPM 1TB
*Placa de vídeo: Nvidia GTX660 2GB DDR5 192bit EVGA
*RAM: 8GB DDR3 1600MHZ Kingston HYPER X BEAST (2x4GB)
*Fonte: Corsair 600W Reais CX600M Modular - CP-9020060-WW (80 Plus Bronze)
*Gabinete: Gabinete Raidmax Super Hurricane Branco - 248WB
*Monitor: LG 23MP55HQ Full HD HDMI 23'
boa noticia deu certo consegui simular o a tecla j mudei para 0AA5: call 30@ num_params 4 pop 0 0 0 0 0x4a por não ser uma função e sim uma procedure
só que o player ficou paralisado
- Código:
{$CLEO .cs}
0000:
while true
wait 0 ms
if
Player.Defined($PLAYER_CHAR)
then
if
0ADC: test_cheat "D"
then
if 0AA2: 31@ = load_library "user32.dll" // IF and SET
then
/*0ACD: show_text_highpriority "carregou dll..." time 20*/
if 0AA4: 30@ = get_proc_address "keybd_event" library 31@ // IF and SET
then
/*0ACD: show_text_highpriority "carregou função..." time 20*/
{0AA7: call_function 30@ num_params 4 pop 0 params 0 0 0 0x4a error_code 2@}
0AA5: call 30@ num_params 4 pop 0 0 0 0 0x4a
{if 2@ <= 32
then 0664: printfloat "falha... : %d" 2@
end}
end
0AA3: free_library 31@
end
{teste 2}
/*0AB1: @SendKey_J 0*/
{gosub @SendKey_J}
end
end
end
{:SendKey_J
0AA2: 31@ = load_library "user32.dll" // IF and SET
0AA4: 30@ = get_proc_address "keybd_event" library 31@ // IF and SET
0AA5: call 30@ num_params 4 pop 0 0 0 0 0x4a
0AA3: free_library 31@
/*0AB2: ret 0*/
return}
só que o player ficou paralisado
Mas uma procedure é uma função@Delmar grande escreveu:boa noticia deu certo consegui simular o a tecla j mudei para 0AA5: call 30@ num_params 4 pop 0 0 0 0 0x4a por não ser uma função e sim uma procedure

A diferença do 0AA5 para o 0AA7 é que o segundo tem valor de retorno, e o primeiro não (é, os nomes no Sanny Builder não fazem sentido).
No GTA3script se chamam CALL_FUNCTION e CALL_FUNCTION_RETURN respectivamente.
Veja o script resumido
ao apertar D ele simula o J só que esta entrando em looping
- Código:
{$CLEO .cs}
0000:
while true
wait 0 ms
if
Player.Defined($PLAYER_CHAR)
then
if
0ADC: test_cheat "D"
then
if 0AA2: 31@ = load_library "user32.dll" // IF and SET
then
if 0AA4: 30@ = get_proc_address "keybd_event" library 31@ // IF and SET
then
0AA5: call 30@ num_params 4 pop 0 0 0 0 0x4a
end
0AA3: free_library 31@
end
end
end
end
ao apertar D ele simula o J só que esta entrando em looping

Problema resolvido estava faltando liberar a tecla obrigado a todos pela ajuda
http://tksinghal.blogspot.com.br/2011/04/how-to-press-and-hold-keyboard-key.html

- Código:
{$CLEO .cs}
const
KEYEVENTF_EXTENDEDKEY = 0x01
KEYEVENTF_KEYUP = 0x02
end
0000:
while true
wait 0 ms
if
Player.Defined($PLAYER_CHAR)
then
if
0ADC: test_cheat "D"
then
if 0AA2: 31@ = load_library "user32.dll" // IF and SET
then
if 0AA4: 30@ = get_proc_address "keybd_event" library 31@ // IF and SET
then
//Pressiona a tecla
0AA5: call 30@ num_params 4 pop 0 0 KEYEVENTF_EXTENDEDKEY 0 0x4a
wait 100
//Libera a tecla
0AA5: call 30@ num_params 4 pop 0 0 KEYEVENTF_KEYUP 0 0x4a
end
0AA3: free_library 31@
end
end
end
end
http://tksinghal.blogspot.com.br/2011/04/how-to-press-and-hold-keyboard-key.html
Página 1 de 2 • 1, 2 

Permissão deste fórum:
Você não pode responder aos tópicos neste fórum
|
|