1 (изменено: ypppu, 2016-12-23 09:49:00)

Тема: AHK: Вопрос по вызову переменной

Добрый день! Не сочтите за ленивость, честное слово прочел справочник, но видимо не понимаю. Есть такой вот участок кода, он сейчас работает правильно:

PixelGetColor, Color, 795, 448, RGB
If RegExMatch(Color, "0x([A-F]\w[4-6]\w[2-4]\w|[7-9]\w[2-4]\w[1-2]\w|[2-3]\w1[1-6]0[C-E])")

Но мне нужно чтобы выражение [A-F]\w[4-6]\w[2-4]\w|[7-9]\w[2-4]\w[1-2]\w|[2-3]\w1[1-6]0[C-E] сначала записывалось в переменную, а уже в коде эта переменная вызывалась.

Я пробовал сначала на примере MsgBox, вот так:

ColorRed = [A-F]\w[4-6]\w[2-4]\w|[7-9]\w[2-4]\w[1-2]\w|[2-3]\w1[1-6]0[C-E]
MsgBox %ColorRed%

MsgBox выводит правильно, но как только я начинаю использовать эту же схему в нужном мне коде, ничего не получается! Вот так пробую:

ColorRed = [A-F]\w[4-6]\w[2-4]\w|[7-9]\w[2-4]\w[1-2]\w|[2-3]\w1[1-6]0[C-E]
PixelGetColor, Color, 795, 448, RGB
If RegExMatch(Color, "0x(%ColorRed%)")

Я как-то неправильно вызываю переменную в этом случае?

2 (изменено: stealzy, 2016-12-28 16:33:43)

Re: AHK: Вопрос по вызову переменной

В AutoHotkey есть два способа отличать переменную от строки.
Если командой подразумевается строка/число, то она пишется без обрамления, зато переменная обрамляется знаками %процента%.
Вместе можно писать так:

x := "ell", y := "world"
MsgBox H%x%o %y%!

Если командой подразумевается переменная, то она пишется без обрамления, числа также пишутся без обрамления, зато строка обрамляется "кавычками".
Кроме того, между любыми переменными/строками, которые вы хотите склеить (эта опреция называется контакенация, подробнее в справке в разделе Переменные и выражения - операторы в выражениях) следует поставить пробелы.
Вместе пишется так:

x := "ell", y := "world"
MsgBox % "H" x "o " y "!"
MsgBox % "H" . x . "o " . y . "!"

Понять какой вариант ожидает команда можно только из справки, но функции() всегда ожидают переменную.
Надеюсь я ответил на ваш вопрос.

3

Re: AHK: Вопрос по вызову переменной

stealzy У меня что-то совсем не получается, я решил уйти пока что от функции RegExMatch, к более простой ситуации... ну и все та же проблема, например:

Numpad4::
Otdacha = 76

Numpad5::
Otdacha = 176

Numpad6::
Otdacha = 25

...всякий код...

Click
Sleep, 50
mouseXY(0,%Otdacha%,50)

Изначально, когда я только одним стволом пользовался, я прописывал - mouseXY(0,75,50), и все было прекрасно, но сейчас появилась неоходимость использовать 3 ствола сразу, у которых разная отдача... и самым адекватным было бы решение, когда нажатием на нумпад 4,5 или 6, менять уровень отдачи... через переменную... но как эту переменную вызывать в функциях, я вот никак не пойму(((

4

Re: AHK: Вопрос по вызову переменной

eavolkov89, тему про стволы и отдачу нужно было создавать в другом разделе. Перенёс.

5

Re: AHK: Вопрос по вызову переменной

eavolkov89, Могу быть не правым, но по моему тут нужны кавычки. А именно:


Numpad4::
Otdacha = 76

Numpad5::
Otdacha = 176

Numpad6::
Otdacha = 25

...всякий код...

Click
Sleep, 50
mouseXY('0', Otdacha ,'50')
Win10: LTSC (21H2); AHK: ANSI (v1.1.36.02)