ArcadeBR » Geral » Montagem e Eletrônica


  1. amaral

    amaral

    membro expert
    Joined: fev '10
    Posts: 261


    oi sera que alguem pode me ajudar eu baixei a multijogos caseira do brbranco mas eu queria usar a tecla esc para fechar os emuladores como faço para configurar a tecla esc ?

    pelos os topicos antigos eu fiz assim

    ;****************************************
    ;Autoit V3
    ;Autor brbranco
    ;Data 22/04/2008
    ;Objetivo: Controlar o emulador brmamep.exe
    ;****************************************

    ;ajustas as opções
    AutoItSetOption("WinTitleMatchMode", 4)
    AutoItSetOption("RunErrorsFatal", 0)

    ;verifica se o advmenu passou o nome da rom
    If NOT $CmdLine[0] = 1 Then
    SplashImageOn("", "..\auxiliar\image\mensa1.gif", 220, 40, -1, -1, 1)
    SoundPlay("..\auxiliar\som\advfaltajogo.wav",1)
    SplashOff()
    Exit ( 0 )
    EndIf

    ;verifica se o arquivo aumame.ini existe
    If Not FileExists("aumame.ini") Then
    SplashImageOn("", "..\auxiliar\image\mensa2.gif", 220, 40, -1, -1, 1)
    Sleep(10000)
    SplashOff()
    Exit ( 0 )
    EndIf

    ;abre o arquivo aumame.ini, e verifica os parametros necessarios.
    Global $mamepar1
    $mamepar1=IniRead("aumame.ini","EXECUTAVEL","NOME","")
    If $mamepar1="" Then
    SplashImageOn("", "..\auxiliar\image\mensa3.gif", 220, 40, -1, -1, 1)
    Sleep(10000)
    SplashOff()
    Exit ( 0 )
    EndIf

    ;verifica se existe algum parametro adicional a ser passado para o emulador
    $mamepar2=IniRead("aumame.ini","PARAMETRO","COMANDO","")
    If $mamepar2="" Then
    $mamepar2 = $CmdLine[1]
    Else
    $mamepar2 = ($CmdLine[1] & " " & $mamepar2 )
    EndIf

    ;abre o joytokey
    $drive=StringLeft(@ScriptDir,2)
    If Not ProcessExists("joytokey.exe") Then
    $exe_joy = ShellExecute("joytokey.exe", "brmamep", $drive & "\arcade\joytokey")
    if @error Then
    SplashImageOn("", "..\auxiliar\image\mensa4.gif", 220, 40, -1, -1, 1)
    Sleep(10000)
    SplashOff()
    FechaEmulador()

    Local $EMULADOR, $FECHOU

    Exit(0)
    EndIf
    EndIf

    ;chama o emulador
    $exe_mame = ShellExecute($mamepar1, $mamepar2, @ScriptDir,"open",@SW_HIDE)
    If @error Then
    SplashImageOn("", "..\auxiliar\image\mensa5.gif", 220, 40, -1, -1, 1)
    SoundPlay("..\auxiliar\som\erroemuexe.wav")
    SplashOff()
    Exit(0)
    EndIf

    WinWaitActive("classname=brmamep", "",10)
    HotKeySet("{ESC}", "sair") ;Define "esc" como Hotkey para sair
    HotKeySet("5", "PegaFicha") ;intala o hotkey, usando a tecla "5" , ficha
    HotKeySet("1", "EnviaFicha") ;intala o hotkey, usando a tecla "1", start

    ;rotina de loop
    GLOBAL $lopping
    $lopping=1
    While $lopping
    sleep(100)
    WEnd
    Exit(0)

    ;função que irá verificar o estado do emulador e fecha-lo caso necessario
    Func FechaEmulador()
    Local $emulador, $fechou

    ;remove os hotkeys
    HotKeySet("{ESC}")
    HotKeySet("5")
    HotKeySet("1")

    ;envia um ESC para o emulador
    if Not WinActive("classname=brmamep") Then
    WinActivate ("classname=brmamep")
    EndIf

    Send("{ESC DOWN}")
    Sleep(100)
    Send("{ESC UP}")

    ;mostra a menssagem
    SplashImageOn("", "..\auxiliar\image\mensa6.gif", 220, 40, -1, -1, 1)
    SoundPlay("..\auxiliar\som\fechaemu.wav",1)
    $fechou=WinWaitClose("classname=brmamep","", 5)
    if Not $fechou Then
    ProcessClose($mamepar1)
    EndIf

    ;fecha o joytokey
    If ProcessExists("joytokey.exe") Then
    if Not WinActive("classname=TApplication") Then
    WinActivate ("classname=TApplication")
    EndIf
    Send("{LALT}FX")
    EndIf

    SplashOff()
    ;encerra a rotina principal
    $lopping=0
    EndFunc

    ;função responssavel por armazenar as fichas
    Func PegaFicha()
    Local $atual, $valor, $contador, $calcula, $adiciona
    ;lê os dados atuais
    $atual=IniRead("..\advmenu.ini","FICHEIRO","FICHAS","0")
    $contador=IniRead("..\advmenu.ini","FICHEIRO","CONTADOR","0")
    $valor=IniRead("..\advmenu.ini","CONFIGURACAO","TEMPOPORFICHA","600000")
    $calcula=(Number($atual) + Number($valor))
    $adiciona=(Number($contador)+1)
    ;grava os novos valores
    IniWrite("..\advmenu.ini","FICHEIRO","FICHAS",String($calcula))
    IniWrite("..\advmenu.ini","FICHEIRO","CONTADOR",String($adiciona))
    SoundPlay("..\auxiliar\som\coin.wav")
    EndFunc

    ;função responssavel por enviar a ficha para o emulador
    Func EnviaFicha()
    Local $atual, $valor, $calcula
    ;lê os dados atuais
    $atual=IniRead("..\advmenu.ini","FICHEIRO","FICHAS","0")
    $valor=IniRead("..\advmenu.ini","CONFIGURACAO","TEMPOPORFICHA","600000")

    ;se as fichas já foram enviadas, então envia um start
    If Number($atual) < Number($valor) Then
    HotKeySet("1")
    Send("{1 down}")
    sleep(100)
    Send("{1 up}")
    HotKeySet("1", "EnviaFicha")
    SoundPlay("..\auxiliar\som\semficha.wav") ;informa que não há mais fichas
    Return ;sai sem enviar a ficha
    EndIf

    ;atualiza a quantidade de fichas
    $calcula=(Number($atual) - Number($valor))
    IniWrite("..\advmenu.ini","FICHEIRO","FICHAS",String($calcula))

    ;envia a ficha para o emulador
    Send("{5 down}")
    sleep(100)
    Send("{5 up}")
    EndFunc

    mas quando eu preciono o esc, fecha o emulador mas não encerra o script, e não volta para o menu de escolha,só fica na tela do explorer, o que eu faço? alguem pode me ajudar?

    Publicado 4 meses atrás #

  2. Belini

    Belini

    fórum admin
    Joined: mai '09
    Posts: 1,675


    @amaral sempre que criar uma hotkey você deve atribuir uma função à ela e esta função deve ter o mesmo nome da hotkey criada, o seu erro é que criou a hotkey com um nome e a função com outro nome veja:

    HotKeySet("{ESC}", "sair") ;Define "esc" como Hotkey para sair

    func FechaEmulador(); aqui deve ter o mesmo nome da hotkey criada para a função

    OBS: Ou você muda o nome da hotkey para "fechaemulador" ou muda a função para "sair"

    Geralmente as pessoas se adptam ao mundo, algumas pessoas tentam adaptar o mundo a elas e se tornam grandes líderes.
    Publicado 4 meses atrás #
  3. amaral

    amaral

    membro expert
    Joined: fev '10
    Posts: 261


    belini ,estou começando a mecher no autoit agora, como posso fazer para mudar a função para sair ?,

    func FechaEmulador(); aqui deve ter o mesmo nome da hotkey criada para a função
    tem como me explicar como posso fazer isso?

    Publicado 4 meses atrás #
  4. airhead

    airhead

    membro expert
    Joined: abr '09
    Posts: 327


    amaral

    o que o Belini disse foi o seguinte:

    nessa parte do códogo...

    HotKeySet("{ESC}", "sair") ;Define "esc" como Hotkey para sair

    ... você definiu que a hotkey "ESC" chamará a função "sair".

    Então "sair" é o nome de uma função no seu script.

    As funções começam com Func nome_da_função() e terminam com EndFunc (veja no código postado mais acima e procure identificar as funções e seus respectivos nomes).

    Você irá notar que não existe uma função chamada "Func sair()" mas sim uma como o nome "func FechaEmulador()".

    Então o que você deve fazer é:
    1 - trocar o nome da função na definição da hotkey (de HotKeySet("{ESC}", "sair") para HotKeySet("{ESC}", "FechaEmulador"); ou

    2 - trocar o nome da função na descrição da função(de "Func FechaEmulador()" para "Func sair()).

    _________________
    "A gente muda o mundo quando muda a mente,
    Quando a mente muda, o mundo muda com a gente!"
    Publicado 4 meses atrás #

  5. amaral

    amaral

    membro expert
    Joined: fev '10
    Posts: 261


    poxa valeu mesmo assim que eu chegar em casa vou testar um abração

    Publicado 4 meses atrás #

  6. amaral

    amaral

    membro expert
    Joined: fev '10
    Posts: 261


    o script ficou muito bom, vou terminar a minha multijogos e vou upar para quem quiser testar, claro que não vou colocar nem as roms e smaps,apenas lembrando que estou aprendendo a mecher no autoit,e é para teste,assim que eu terminar ela eu faço o upload

    Publicado 4 meses atrás #
  7. amaral

    amaral

    membro expert
    Joined: fev '10
    Posts: 261


    @belini
    @airhead

    o script funcionou beleza mas agora tenho outro problema, eu coloco 1 credito e entra 4 e as vezes até 6 ou 7 creditos de uma vez só como posso resolver isso?

    Publicado 4 meses atrás #

  8. airhead

    airhead

    membro expert
    Joined: abr '09
    Posts: 327


    Veja nessa parte do código:

    WinWaitActive("classname=brmamep", "",10)
    HotKeySet("{ESC}", "sair") ;Define "esc" como Hotkey para sair
    HotKeySet("5", "PegaFicha") ;intala o hotkey, usando a tecla "5" , ficha
    HotKeySet("1", "EnviaFicha") ;intala o hotkey, usando a tecla "1", start

    Você definiu como hotkey uma tecla usada pelo emulador (considerando que você não alterou as teclas no BrMame).

    Assim, ao apertar a tecla "5" você estará enviando um crédito ao emulador e ao mesmo tempo chamando a função programada para enviar crédito.

    As teclas a serem usadas como hotkey NÃO podem ser teclas usadas pelo emulador!!

    Publicado 4 meses atrás #

  9. amaral

    amaral

    membro expert
    Joined: fev '10
    Posts: 261


    eu estou usando a tecla k para dar credito e a tecla 5 para dar credito no mame,mas mesmo assim esta dando muitos creditos,deixa eu explicar, quando eu coloco credito fora do jogo, no advmenu eu coloco um credito e entra uns 10 de uma vez, ai eu escolho o jogo e todos os creditos que coloquei passa para o jogo,dentro do jogo eu coloco credito e entra normalmente, é só na lista de escolha mesmo o que pode ser?

    Publicado 4 meses atrás #

  10. User has not uploaded an avatar

    lobao

    novo usuário
    Joined: fev '10
    Posts: 3


    isso pode ser problema no joytokey nele tem um local onde vc meche na sencibilidade do baotao q vai usar talvez seja isso

    Publicado 4 meses atrás #


Resposta »

Você deve fazer login para publicar.