E aí pessoal tudo bem !?

Depois de muito tempo sem trabalhar com multijogos, um amigo me perguntou se era possível colocar um contador de tempo regressivo para os jogos do Super Nintendo no arcade dele, eu respondi que sim e resolvi fazer...

Depois de uma breve pesquisa vi que era possível fazer com AutoHotkey, que além de mais fácil, a compatibilidade com outras versões do windows (7, 10...), é maior.
O resultado ficou bem satisfatório (Testado e aprovado na rua), funcionando perfeitamente.

Para o funcionamento correto do script é necessário uma série de configurações no emulador e programas utilizados.

Ferramentas utilizadas no projeto:

AutoHotkey: Desenvolvimento.

AutoHotkey WindowSpy: Vem junto com a instalação do autohotkey e é muito útil para verificar o nome e a classe da janela, posição do mouse na tela, etc..

Xpadder: Programa que emula teclado ou mouse em joystick (incrível o que se pode fazer com ele).

Emuladores: Znes e Snes9x.

Teste realizados no windows 7 e 10.

O script sobrepõe qualquer JANELA aberta inclusive a área de trabalho e a barra de tarefas do windows sendo muito útil para várias aplicações (Visto que a maioria dos emuladores e jogos de PC, pode ser colocado em modo janela fullscreen).

O código está literalmente comentado, explicando o que cada linha faz, mas, caso tenham alguma dúvida fiquem a vontade para perguntar, responderei assim que possível.

PS: O mesmo projeto foi feito em C# utilizando directx, porém, devido a problemas de compatibilidades só funciona em Windows 10.

Espero que gostem.

Luis Slipcar

Imagem do contador:

Link


Código:
;========================================================================================
; Autor:	Luis Slipcar
; Função do Script:
;	Criar um contador de tempo regressivo para controlar jogos de console ex: Snes
;	Ao chegar a 0 (Zero), os controles param de funcionar,
;	Voltando seu funcionamento normal ao ser depositado um novo crédito (Tempo).
;========================================================================================

;===Inicio do Script==========================

; Variaveis globais
cor := "Black"
min := 00
sec := 00
flag := 0

; Leitura do arquivo ini

; Sessão [config]
IniRead, emulador, contadorSnes.ini, config, janelaEmulador

; Sessão [creditos]
IniRead, som, contadorSnes.ini, creditos, somCredito
IniRead, tempoFicha, contadorSnes.ini, creditos, tempoCredito

; Sessão [overlay]
IniRead, corTexto, contadorSnes.ini, overlay, cor
IniRead, posX, contadorSnes.ini, overlay, posicaoX
IniRead, posY, contadorSnes.ini, overlay, posicaoY

; Sessão [overlay]
IniRead, xpadder, contadorSnes.ini, controles, caminho
IniRead, perfilX1, contadorSnes.ini, controles, perfilXpadder1
IniRead, perfilX2, contadorSnes.ini, controles, perfilXpadder2
IniRead, perfilX3, contadorSnes.ini, controles, perfilXpadder3
IniRead, perfilX4, contadorSnes.ini, controles, perfilXpadder4
IniRead, perfilX5, contadorSnes.ini, controles, perfilXpadder5

; Espera o emulador abrir
WinWait, %emulador%

; Leva o ponteiro do mouse para fora da tela
MouseMove, 900, 600

; Coloca o emulador em fullscreen
IfWinExist %emulador%
{
	WinActivate %emulador%
	Send {ENTER}
}

; Cria o contador.
Gui +LastFound +AlwaysOnTop -Caption +ToolWindow
Gui, Color, %cor%

; Tamanho da fonte.
Gui, Font, s32

; Mostra o texto na cor indicada (cWhite).
Gui, Add, Text, vMyText c%corTexto%, %min%:%sec%

; Transparecia da cor.
WinSet, TransColor, %cor% 150

; Atualiza contagem a cada um segundo.
SetTimer, atualizaContagem, 1000

; Chama a rotina de atualizacao.
Gosub, atualizContagenn

; Mostra o overlay na posicao indicada (x e y).
Gui, Show, x%posX% y%posY% NoActivate

return

atualizaContagem:
if(sec == 0) {
		if(min == 0) {			
			if(flag == 0){
			Run %xpadder% %perfilX1% %perfilX2%
			flag = 1
			}
			return
		}
	sec := 59
	min--
}
;sec --

; Atualiza e mostra as variaveis
GuiControl,, MyText, %min%:%sec%
return

; F1 Adiciona credito (10 min.)
F1::
SoundPlay, %som%
min += %tempoFicha%
sec += 01
flag = 1

; Carrega os perfis de controle
Run %xpadder% %perfilX3% %perfilX4%
return

; Reinicia e zera o script
F2::Reload

; Fecha o emulador e o script
F4::
IfWinExist, %emulador%
    WinClose
	
; Carrega perfil do menu
Run %xpadder% %perfilX5% %perfilX1%

ExitApp
	
;=============Fim do Script================================


Arquivo ini:

[config]
janelaEmulador=Snes9X v1.55 for Windows (Nome ou Classe da Janela do Emulador)

[creditos]
somCredito=C:\Multijogos\sons\coin.wav    (Som ao apertar o botão de crédito)
tempoCredito=10    (Tempo em minutos de duração do crédito)

[overlay]
cor=White     (Cor do texto pode ser o nome ou o código RBG)
posicaoX=500     (posição X e Y onde será mostrado o contador)
posicaoY=500


[controles]
caminho=C:\Multijogos\Xpadder\xpadder.exe    (Caminho do programa)
perfilXpadder1=vazio       (Perfis dos controles utilizados no programa)
perfilXpadder2=vazio2
perfilXpadder3=SnesPlayer1
perfilXpadder4=SnesPlayer2
perfilXpadder5=MenuDeJogos
obs: Existem Traps(Nível Easy), no código para evitar o Copy Cola

Download do Executável:
Download