Executar um programa a partir de um evento
Enviado: 21 Nov 2020, 09:36
Queria invocar um .exe quando acontecesse algum evento específicio. A ideia meio é chamar esse exe quando o cj sofrer algum dano, existe algum comando pra isso?
onde modders nascem
https://forum.mixmods.com.br/
Batch?bisnaguitos escreveu: ↑21 Nov 2020, 14:38não precisa ser propriamente um .exe, pode ser um bath.
basicamente eu quero acender um led com um microcontrolador e depois implementar isso de alguma forma para aumentar a experiencia no jogo
cmd /c echo|set /p=%f %f %f|clip (pode botar ela num DUMP...ENDDUMP mesmo) e chamar o procedure enviando ela e um 0 (que não sei o que é, lembrando que no CLEO é invertido, o 0 vem antes e depois o ponteiro pro buffer com a string).Sim, batch. Foi erro de digitação mas acho que o forum passou por algum problema e eu nao consegui editar. Enfim, era exatamente isso que eu precisava. Muito obrigado!Junior_Djjr escreveu: ↑21 Nov 2020, 14:45Batch?bisnaguitos escreveu: ↑21 Nov 2020, 14:38não precisa ser propriamente um .exe, pode ser um bath.
basicamente eu quero acender um led com um microcontrolador e depois implementar isso de alguma forma para aumentar a experiencia no jogo
https://www.mixmods.com.br/2018/04/coor ... das-e.html
Ele usa batch para copiar a coordenada e ângulo. Você pode ver o código dele, como ele fez.
É basicamente carregar kernel32.dll, pegar o procedure WinExec, gerar a stringcmd /c echo|set /p=%f %f %f|clip(pode botar ela num DUMP...ENDDUMP mesmo) e chamar o procedure enviando ela e um 0 (que não sei o que é, lembrando que no CLEO é invertido, o 0 vem antes e depois o ponteiro pro buffer com a string).
SET_SCRIPT_EVENT_CHAR_DAMAGE (algo assim).Código: Selecionar tudo
SCRIPT_START
{
NOP
LVAR_INT dll
LVAR_INT proc
LVAR_INT batch
LVAR_INT procalloc
LVAR_INT lib
GET_LABEL_POINTER Dll (dll)
GET_LABEL_POINTER Proc (proc)
GET_LABEL_POINTER Batch (batch)
main:
WAIT 1000
IF IS_KEY_PRESSED 49
STRING_FORMAT (dll) "kernell32.dll"
STRING_FORMAT (proc) "WinExec"
LOAD_DYNAMIC_LIBRARY $dll lib
GET_DYNAMIC_LIBRARY_PROCEDURE $proc lib procalloc
STRING_FORMAT (batch) "cmd /c C:/"
CALL_FUNCTION procalloc 0 2 $batch
PRINT_STRING_NOW "Comando inserido com sucesso. " 5000
ENDIF
GOTO main
}
SCRIPT_END
Dll:
DUMP
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
ENDDUMP
Proc:
DUMP
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
ENDDUMP
Batch:
DUMP
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
ENDDUMPhttps://www.mixmods.com.br/2020/09/scrlog.htmlbisnaguitos escreveu: ↑22 Nov 2020, 19:54Tentei adaptar o código para GTA3SCRIPT mas só crasha até agora, consegue me dizer o que está errado?

Você poderia usar um ASI no jogo ao invés de um EXE separado para realizar essa função e evitar ficar abrindo o processo sempre, Não sei exato como está atualmente, mas até um tempo atrás o Windows não gostava de ficar abrindo e fechando processos e handles, o melhor seria manter carregado e chamar uma função do ASI, pode até fazer pelo script CLEO mesmo, só que ao invés de usar load no Kernel32.dll, você coloca o nome do seu ASI mesmo e usa o get proc address para pegar suas próprias funções exportadas com export "C" e __declspec(dllexport).bisnaguitos escreveu: ↑21 Nov 2020, 14:38basicamente eu quero acender um led com um microcontrolador e depois implementar isso de alguma forma para aumentar a experiencia no jogo