0
votes

**Hello everyone! I recently started experimenting with autohotkey. In this particular script i need help with isolating and only running a part of the script.

This Autohotkey script interacts with a game. I have playable Characters A - D. I want to automatically activate a macro depending on the choosen character. (And also deactivate any other macros if the Character is beeing switched) To determine which character is beeing picked i use the IMAGESEARCH command.

Now my Question: is it possible to only run one macro of multiple ones inside the same script? As far as i'm concerned i get problems with "same hotkey already present" errors. It would be really nice if this was somehow possible, altough i couldn't find anything particular about this as it's kinda hard to describe and search for.

I'm very very thankful for all answers you can give me to this topic :)**

#IfWinActive Program

If WinActive("ahk_exe Program.exe")
    CoordMode, Pixel


;SELECTION CHECKS;



K0:

    $~LButton:: 
        Sleep, 100
    ImageSearch, FoundX, FoundY, 53, 1233, 2491, 1287,*2 C:\Users\XYZ\Desktop\CharacterA.png

    if ErrorLevel = 2
        SoundBeep, 750, 500

    else if ErrorLevel = 1
        goto K1

    else

        goto CharacterA
return

K1:

    ImageSearch, FoundX, FoundY, 53, 1233, 2491, 1287,*2 C:\Users\XYZ\Desktop\CharacterB.png

    if ErrorLevel = 2
        SoundBeep, 750, 500

    else if ErrorLevel = 1
        goto K2

    else
        goto CharacterB
return

K2:

    ImageSearch, FoundX, FoundY, 53, 1233, 2491, 1287,*2 C:\Users\XYZ\Desktop\CharacterC.png

    if ErrorLevel = 2
        SoundBeep, 750, 500

    else if ErrorLevel = 1
        goto K3

    else
        goto CharacterC
return

K3:

    ImageSearch, FoundX, FoundY, 53, 1233, 2491, 1287,*2 C:\Users\XYZ\Desktop\CharacterD.png

    if ErrorLevel = 2
        SoundBeep, 750, 500

    else if ErrorLevel = 1
        goto K0

    else
        goto CharacterD
return


;Chars;



;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
CharacterA:
 SoundPlay, C:\Users\XYZ\Desktop\CA_Voiceline.wav

examplemacro

    Return
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;




;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
CharacterB:
 SoundPlay, C:\Users\XYZ\Desktop\CB_Voiceline.wav

examplemacro

    Return
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;




;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
CharacterC:
 SoundPlay, C:\Users\XYZ\Desktop\CC_Voiceline.wav

examplemacro

    Return  
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;




;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
CharacterD:
 SoundPlay, C:\Users\XYZ\Desktop\CD_Voiceline.wav

examplemacro

    Return  
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
1

1 Answers

0
votes

I believe you can use the gosub command to achieve this. You can read more on this command here.

The changes in your script if I am understanding the flow you are going for would be changing all of the goto Character* lines to:

else

        gosub CharacterA

Currently untested, however I will return later today and update once I have time to fully test results.