Conditional key remapp?

Ask gaming related questions (AHK v1.1 and older)
roofik5
Posts: 23
Joined: 03 Jan 2021, 10:52

Conditional key remapp?

Post by roofik5 » 03 Dec 2021, 07:28

So I'm trying to remap key only if condition is true. As I've read on forum it's impossible to have remapp key in condition, how to do it correctly?
This is my code

Code: Select all

IniRead, xMANA, USTAWIENIA.ini, MANA, xMANA
IniRead, yMANA, USTAWIENIA.ini, MANA, yMANA
IniRead, MANAcolor, USTAWIENIA.ini, MANA, MANAcolor

IniRead, xSSA, USTAWIENIA.ini, SSA, xSSA
IniRead, ySSA, USTAWIENIA.ini, SSA, ySSA
IniRead, SSAcolor, USTAWIENIA.ini, SSA, SSAcolor


Loop,
{
If WinActive("Tibia")

	{

		PixelGetColor, Checkm, %xMANA%, %yMANA%, RGB
		PixelGetColor, Checks, %xSSA%, %ySSA%, RGB


If (Checkm == MANAcolor)
Space::
send {F1}
If (Checkm == MANAcolor And Checks == SSAcolor)
Space::
send {F1}{F2})

	}
	Sleep, 1244
	}
	return

User avatar
boiler
Posts: 16925
Joined: 21 Dec 2014, 02:44

Re: Conditional key remapp?

Post by boiler » 03 Dec 2021, 07:41

You have to use the #If directive:

Code: Select all

#If Checkm == MANAcolor

By the way, == is for case sensitive comparisons. You can use = otherwise.

roofik5
Posts: 23
Joined: 03 Jan 2021, 10:52

Re: Conditional key remapp?

Post by roofik5 » 03 Dec 2021, 07:41

Okay I think I've fixed that, but now IfWinActive doesn't work. Script is always running, even in web browser

Code: Select all

IniRead, xMANA, USTAWIENIA.ini, MANA, xMANA
IniRead, yMANA, USTAWIENIA.ini, MANA, yMANA
IniRead, MANAcolor, USTAWIENIA.ini, MANA, MANAcolor



IniRead, xSSA, USTAWIENIA.ini, SSA, xSSA
IniRead, ySSA, USTAWIENIA.ini, SSA, ySSA
IniRead, SSAcolor, USTAWIENIA.ini, SSA, SSAcolor

IniRead, xMIGHT, USTAWIENIA.ini, MIGHT, xMIGHT
IniRead, yMIGHT, USTAWIENIA.ini, MIGHT, yMIGHT
IniRead, MIGHTcolor, USTAWIENIA.ini, MIGHT, MIGHTcolor


IniRead, EXURAhot, USTAWIENIA.ini, EXURAhot, EXURAhot
IniRead, SSAhot, USTAWIENIA.ini, SSAhot, SSAhot
IniRead, MIGHThot, USTAWIENIA.ini, MIGHThot, MIGHThot

Space::
{
Loop,
{
If WinActive("Tibia")

	{

		PixelGetColor, Checkm, %xMANA%, %yMANA%, RGB
		PixelGetColor, CheckSSA, %xSSA%, %ySSA%, RGB
		PixelGetColor, CheckMIGHT, %xMIGHT%, %yMIGHT%, RGB

If (Checkm == MANAcolor)
send, {F1}
If (Checkm == MANAcolor)
send, {F1}
return
	}
		Else{}
	Sleep, 1244
	
	}

	return
}
return


PgDn::
Pause::

Suspend
Pause,,1

roofik5
Posts: 23
Joined: 03 Jan 2021, 10:52

Re: Conditional key remapp?

Post by roofik5 » 03 Dec 2021, 07:43

Okay, work perfect. Thank you

Code: Select all

IniRead, xMANA, USTAWIENIA.ini, MANA, xMANA
IniRead, yMANA, USTAWIENIA.ini, MANA, yMANA
IniRead, MANAcolor, USTAWIENIA.ini, MANA, MANAcolor



IniRead, xSSA, USTAWIENIA.ini, SSA, xSSA
IniRead, ySSA, USTAWIENIA.ini, SSA, ySSA
IniRead, SSAcolor, USTAWIENIA.ini, SSA, SSAcolor

IniRead, xMIGHT, USTAWIENIA.ini, MIGHT, xMIGHT
IniRead, yMIGHT, USTAWIENIA.ini, MIGHT, yMIGHT
IniRead, MIGHTcolor, USTAWIENIA.ini, MIGHT, MIGHTcolor


IniRead, EXURAhot, USTAWIENIA.ini, EXURAhot, EXURAhot
IniRead, SSAhot, USTAWIENIA.ini, SSAhot, SSAhot
IniRead, MIGHThot, USTAWIENIA.ini, MIGHThot, MIGHThot
Loop,
{
#If WinActive("Tibia")
Space::
{


	{

		PixelGetColor, Checkm, %xMANA%, %yMANA%, RGB
		PixelGetColor, CheckSSA, %xSSA%, %ySSA%, RGB
		PixelGetColor, CheckMIGHT, %xMIGHT%, %yMIGHT%, RGB

If (Checkm = MANAcolor)
send, {F1}
If (Checkm = MANAcolor)
send, {F1}
return
	}

	Sleep, 1244
	
	}

	return
}
return


PgDn::
Pause::

Suspend
Pause,,1

User avatar
boiler
Posts: 16925
Joined: 21 Dec 2014, 02:44

Re: Conditional key remapp?

Post by boiler » 03 Dec 2021, 07:46

There are other things about the code that don’t look quite right, depending on what you’re trying to accomplish, such as putting a loop around a hotkey definition.

roofik5
Posts: 23
Joined: 03 Jan 2021, 10:52

Re: Conditional key remapp?

Post by roofik5 » 03 Dec 2021, 11:18

Yea well, I know it's not perfect. I'm not programmer just making scripts for my own usage for game. :|

At least it works fine as I want to.
If there is something to improve I would be helpful for any advices.

It's my final code. It reads variables from INI file and then check in game some states and depending on them with "space" it's sending some hotkeys.

Code: Select all

IniRead, xMANA, USTAWIENIA.ini, MANA, xMANA
IniRead, yMANA, USTAWIENIA.ini, MANA, yMANA
IniRead, MANAcolor, USTAWIENIA.ini, MANA, MANAcolor
IniRead, MANAhot, USTAWIENIA.ini, MANAhot, MANAh


IniRead, xSSA, USTAWIENIA.ini, SSA, xSSA
IniRead, ySSA, USTAWIENIA.ini, SSA, ySSA
IniRead, SSAcolor, USTAWIENIA.ini, SSA, SSAcolor

IniRead, xMIGHT, USTAWIENIA.ini, MIGHT, xMIGHT
IniRead, yMIGHT, USTAWIENIA.ini, MIGHT, yMIGHT
IniRead, MIGHTcolor, USTAWIENIA.ini, MIGHT, MIGHTcolor



IniRead, EXURAhot, USTAWIENIA.ini, EXURAhot, EXURAhot
IniRead, SSAhot, USTAWIENIA.ini, SSAhot, SSAhot
IniRead, MIGHThot, USTAWIENIA.ini, MIGHThot, MIGHThot

Loop,
{
#If WinActive("Tibia")
Space::
{


	{

		PixelGetColor, CheckMANA, %xMANA%, %yMANA%, RGB
		PixelGetColor, CheckMIGHT, %xMIGHT%, %yMIGHT%, RGB
		PixelGetColor, CheckSSA, %xSSA%, %ySSA%, RGB
		

If (CheckMANA = MANAcolor) && (CheckSSA != SSAcolor) && (CheckMIGHT != MIGHTcolor)
Send, {%EXURAhot%}{%SSAhot%}{%MIGHThot%}{%MANAhot%}
Else If (CheckSSA != SSAcolor) && (CheckMIGHT != MIGHTcolor)
Send, {%SSAhot%}{%MIGHThot%}{%MANAhot%}
Else If (CheckMANA = MANAcolor) && (CheckSSA != SSAcolor)
Send, {%EXURAhot%}{%MANAhot%}{%SSAhot%}
Else If (CheckMANA = MANAcolor) && (CheckMIGHT != MIGHTcolor)
Send, {%EXURAhot%}{%MANAhot%}{%MIGHThot%}
Else If (CheckMIGHT != MIGHTcolor)
Send, {%MANAhot%}{%MIGHThot%}
Else If (CheckSSA != SSAcolor)
Send, {%MANAhot%}{%SSAhot%}
Else If (CheckMANA == MANAcolor)
Send, {%EXURAhot%}{%MANAhot%}
Else 
Send, {%MANAhot%}




	}

	Sleep, 144
	
	}

	return
}
return


PgDn::
Pause::

Suspend
Pause,,1

Post Reply

Return to “Gaming Help (v1)”