Что нового

Замена клавишь их кодом (+Darkfall авторей спам)

IIIaMaH

Новичок
Сообщения
15
Репутация
0
Суть проблемы в следующем:
В скрипте надо заменить {NUMPA1} на его клавиатурный код
для того чтобы скрипт в игре работал как с включенным нумлуком так и без.
(в автохоткее это решалось просто заменой NumPad1 на CS 04f)
кто знает как это реализовать в автоите?
Заранее благодарен!!!
WinWaitActive("Untitled - Darkfall Online")


;константа количество используемых реев
Const $num_ray = 5

; Объявляем переменные
;блок назначения клавишь для реев
Global $k_array[$num_ray] = ["+6","+7","+8","+9","+0"]
;["+6"] impale
;["+7"] Pungent Mist
;["+8"] Unholy Caress
;["+9"] Dragon's Breath
;["+0"] Insect Swarm
; end

; блок значений времени отката реев
Global $cd_array[$num_ray] = [ 6500, 14000, 14000, 14000, 13000]
;[14000] Impale [6500] Pungent Mist [14000] Unholy Caress [14000] Dragon's Breath [13000] Insect Swarm
; end

;инициируем переменную перегрузки времени
$time_reload = 0
;масив для хранения времени последнего каста каждого рея и переменная для перегрузки
Global $time_cast[$num_ray], $ray_key

; инициализация массива очередности реев
; будет выбран ближайший элемент массива с значением 1
Global $next_ray[$num_ray] = [1, 1, 1, 1, 1]
; end

; задаем горячую клавишу или сочетание клавиш для выбора рея и его каста
; Shift = +, Ctrl = ^, Alt = !
HotKeySet ("{NUMPAD1}", "RayScroll")
While 1
Sleep(100)
WEnd

;функция RayScroll
Func RayScroll ()
Send ("{F10 down}")
Send ("{F10 up}")
Sleep (258)
HotKeySet ("{NUMPAD1}")
Send ("{NUMPAD1 down}")
Send ("{NUMPAD1 up}")
HotKeySet ("{NUMPAD1}", "RayScroll")
Sleep (100)
$ray_key = RayLogic()
Send ($ray_key)
Sleep (79)
MouseClick("left")
$time_reload = TimerLogic()
Sleep (79)
EndFunc

Func RayLogic ()
$num = $num_ray - 1
Local $time
For $i = 0 to $num Step 1
$time = TimerDiff($time_cast[$i])
If $next_ray[$i] = 1 Then
$next_ray[$i] = 0
Return ($k_array[$i])
ElseIf $time >= $cd_array[$i] Then
$next_ray[$i] = 0
Return ($k_array[$i])
EndIf
Next
;Send ("end")
Return ("")
EndFunc

Func TimerLogic()
$key = $ray_key
$time = TimerInit()
$num = $num_ray - 1
For $i = 0 To $num Step 1
If $key = $k_array[$i] Then
$time_cast[$i] = $time
EndIf
Next
EndFunc
 

CreatoR

Must AutoIt!
Команда форума
Администратор
Сообщения
8 473
Репутация
2 403
Код:
ConsoleWrite('0x' & __KeyStr_To_vkCode("{Numpad1}"))

; #INTERNAL FUNCTION# ===================================================================
; Name:      		__KeyStr_To_vkCode
; Description:      Return hex-code for passed string (in format of HotKeySet() function).
;
; Parameter(s):     $sKeyStr - String in format of HotKeySet() function.
;
; Requirement(s):   None.
;
; Return Value(s):  On Success - Returns "_IsPressed compatible" hex-code.
;                   On Failure - Returns 0 and set @error to 1.
;
; Author(s):       	MrCreatoR
; Note(s):          
;===============================================================================
Func __KeyStr_To_vkCode($sKeyStr)
	Local $sRet_Keys = "", $aDelim_Keys[1]
	
	Local $aKeys = StringSplit("{LMouse}|{RMouse}|{}|(MMouse}|{}|{}|{}|{BACKSPACE}|{TAB}|{}|{}|{}|{ENTER}|{}|{}|{SHIFT}|{CTRL}|{ALT}|{PAUSE}|{CAPSLOCK}|{}|{}|{}|{}|{}|{}|{ESC}|{}|{}|{}|{}|{SPACE}|{PGUP}|{PGDN}|{END}|{HOME}|{LEFT}|{UP}|{RIGHT}|{DOWN}|{SELECT}|{PRINTSCREEN}|{}|{PRINTSCREEN}|{INSERT}|{DEL}|{}|0|1|2|3|4|5|6|7|8|9|{}|{}|{}|{}|{}|{}|{}|a|b|c|d|e|f|g|h|i|j|k|l|m|n|o|p|q|r|s|t|u|v|w|x|y|z|{LWIN}|{RWIN}|{APPSKEY}|{}|{SLEEP}|{Numpad0}|{Numpad1}|{Numpad2}|{Numpad3}|{Numpad4}|{Numpad5}|{Numpad6}|{Numpad7}|{Numpad8}|{Numpad9}|{NUMPADMULT}|{NUMPADADD}|{}|{NUMPADSUB}|{NUMPADDOT}|{NUMPADDIV}|{F1}|{F2}|{F3}|{F4}|{F5}|{F6}|{F7}|{F8}|{F9}|{F10}|{F11}|{F12}|{F13}|{F14}|{F15}|{F16}|{F17}|{F18}|{F19}|{F20}|{F21}|{F22}|{F23}|{F24}|{}|{}|{}|{}|{}|{}|{}|{}|{NUMLOCK}|{}|{}|{}|{}|{}|{}|{}|{}|{}|{}|{}|{}|{}|{}|{}|{SHIFT}|{SHIFT}|{CTRL}|{CTRL}|{ALT}|{ALT}|{BROWSER_BACK}|{BROWSER_FORWARD}|{BROWSER_REFRESH}|{BROWSER_STOP}|{BROWSER_SEARCH}|{BROWSER_FAVORITES}|{BROWSER_HOME}|{VOLUME_MUTE}|{VOLUME_DOWN}|{VOLUME_UP}|{MEDIA_NEXT}|{MEDIA_PREV}|{MEDIA_STOP}|{MEDIA_PLAY_PAUSE}|{LAUNCH_MAIL}|{LAUNCH_MEDIA}|{LAUNCH_APP1}|{LAUNCH_APP2}|{}|{}|;|{+}|,|{-}|.|/|`|{}|{}|{}|{}|{}|{}|{}|{}|{}|{}|{}|{}|{}|{}|{}|{}|{}|{}|{}|{}|{}|{}|{}|{}|{}|{}|[|\|]|'", "|")
	
	If StringRegExp($sKeyStr, "\A\[[^\[\]]+\]\z") Then
		$sKeyStr = StringRegExpReplace($sKeyStr, "\A\[|\]\z", "")
		$sKeyStr = StringRegExpReplace($sKeyStr, "(.)", "\1|")
		$sKeyStr = StringRegExpReplace($sKeyStr, "\|+$", "")
		
		$aDelim_Keys = StringSplit($sKeyStr, "")
	EndIf
	
	For $i = 1 To $aKeys[0]
		If $aDelim_Keys[0] > 1 Then
			For $j = 1 To $aDelim_Keys[0]
				If $aKeys[$i] = $aDelim_Keys[$j] Then $sRet_Keys &= Hex($i, 2) & "|"
			Next
		Else
			If $aKeys[$i] = $sKeyStr Then Return Hex($i, 2)
		EndIf
	Next
	
	If $sRet_Keys = "" Then Return SetError(1, 0, $sKeyStr)
	Return StringRegExpReplace($sRet_Keys, "\|+$", "")
EndFunc
 
Автор
I

IIIaMaH

Новичок
Сообщения
15
Репутация
0
Если не сложно, можно прокоментировать!
То что consolewrite выдает что то в поток, а суть функции пока туго доходит!
 
Автор
I

IIIaMaH

Новичок
Сообщения
15
Репутация
0
Честно говоря ничего не понял :(
Можно тупо написать код для клавиши и как вставить в код скрипта?
 
Автор
I

IIIaMaH

Новичок
Сообщения
15
Репутация
0
Решил проблему добавив 2ю строку HotKeySet ("{END}", "RayScroll")
 

CreatoR

Must AutoIt!
Команда форума
Администратор
Сообщения
8 473
Репутация
2 403
Автор
I

IIIaMaH

Новичок
Сообщения
15
Репутация
0
CreatoR сказал(а):
IIIaMaH [?]
Решил проблему добавив 2ю строку HotKeySet ("{END}", "RayScroll")
:wacko: Как оно связано с проблемой описанной в первом сообщений?

[?]
Суть проблемы в следующем:
В скрипте надо заменить {NUMPA1} на его клавиатурный код
...для того чтобы скрипт в игре работал как с включенным нумлуком так и без.
 
Автор
I

IIIaMaH

Новичок
Сообщения
15
Репутация
0
0х61 это буковка "а" :wacko:
Код:
HotKeySet ("{NUMPAD1}", "NoName")
While 1
	Sleep (100)
WEnd
Func NoName()
$l = Chr (0x61)
Send ("{" & $l &"}")
EndFunc

вот попробуй в блокноте нум1 клацнуть :'(

Если не сложно напиши как вставить в HotKeySet просто циферками а то у меня вечно ошибку выдает
 
Автор
I

IIIaMaH

Новичок
Сообщения
15
Репутация
0
А все эти 61 и пр видимо от сюда:
_IsPressed
--------------------------------------------------------------------------------

Check if key has been pressed


#Include <Misc.au3>
_IsPressed($s_hexKey[, $v_dll = 'user32.dll'])




Параметры

$s_hexKey key to check for
$v_dll Optional: Handle to dll or default to user32.dll



Возвращаемое значение

Success: Returns 1 if true.
Failure: Returns 0 if false.



Замечания

01 Left mouse button
02 Right mouse button
04 Middle mouse button (three-button mouse)
05 Windows 2000/XP: X1 mouse button
06 Windows 2000/XP: X2 mouse button
08 BACKSPACE key
09 TAB key
0C CLEAR key
0D ENTER key
10 SHIFT key
11 CTRL key
12 ALT key
13 PAUSE key
14 CAPS LOCK key
1B ESC key
20 SPACEBAR
21 PAGE UP key
22 PAGE DOWN key
23 END key
24 HOME key
25 LEFT ARROW key
26 UP ARROW key
27 RIGHT ARROW key
28 DOWN ARROW key
29 SELECT key
2A PRINT key
2B EXECUTE key
2C PRINT SCREEN key
2D INS key
2E DEL key
30 0 key
31 1 key
32 2 key
33 3 key
34 4 key
35 5 key
36 6 key
37 7 key
38 8 key
39 9 key
41 A key
42 B key
43 C key
44 D key
45 E key
46 F key
47 G key
48 H key
49 I key
4A J key
4B K key
4C L key
4D M key
4E N key
4F O key
50 P key
51 Q key
52 R key
53 S key
54 T key
55 U key
56 V key
57 W key
58 X key
59 Y key
5A Z key
5B Left Windows key
5C Right Windows key
60 Numeric keypad 0 key
61 Numeric keypad 1 key
62 Numeric keypad 2 key
63 Numeric keypad 3 key
64 Numeric keypad 4 key
65 Numeric keypad 5 key
66 Numeric keypad 6 key
67 Numeric keypad 7 key
68 Numeric keypad 8 key
69 Numeric keypad 9 key
6A Multiply key
6B Add key
6C Separator key
6D Subtract key
6E Decimal key
6F Divide key
70 F1 key
71 F2 key
72 F3 key
73 F4 key
74 F5 key
75 F6 key
76 F7 key
77 F8 key
78 F9 key
79 F10 key
7A F11 key
7B F12 key
7C-7F F13 key - F16 key
80H-87H F17 key - F24 key
90 NUM LOCK key
91 SCROLL LOCK key
A0 Left SHIFT key
A1 Right SHIFT key
A2 Left CONTROL key
A3 Right CONTROL key
A4 Left MENU key
A5 Right MENU key




Связана с функциями

None.
но они не корелируются с параметрами которые воспринимает Send:

Стандартные символы
Char... Dec Hex Описание
32 20 Space
! 33 21 Exclamation mark
" 34 22 Quotation mark (&quot; in HTML)
# 35 23 Cross hatch (number sign)
$ 36 24 Dollar sign
% 37 25 Percent sign
& 38 26 Ampersand
` 39 27 Closing single quote (apostrophe)
( 40 28 Opening parentheses
) 41 29 Closing parentheses
* 42 2a Asterisk (star, multiply)
+ 43 2b Plus
, 44 2c Comma
- 45 2d Hyphen, dash, minus
. 46 2e Period
/ 47 2f Slant (forward slash, divide)
0 48 30 Zero
1 49 31 One
2 50 32 Two
3 51 33 Three
4 52 34 Four
5 53 35 Five
6 54 36 Six
7 55 37 Seven
8 56 38 Eight
9 57 39 Nine
: 58 3a Colon
; 59 3b Semicolon
< 60 3c Less than sign
= 61 3d Equals sign
> 62 3e Greater than sign
? 63 3f Question mark
@ 64 40 At-sign
A 65 41 Uppercase A
B 66 42 Uppercase B
C 67 43 Uppercase C
D 68 44 Uppercase D
E 69 45 Uppercase E
F 70 46 Uppercase F
G 71 47 Uppercase G
H 72 48 Uppercase H
I 73 49 Uppercase I
J 74 4a Uppercase J
K 75 4b Uppercase K
L 76 4c Uppercase L
M 77 4d Uppercase M
N 78 4e Uppercase N
O 79 4f Uppercase O
P 80 50 Uppercase P
Q 81 51 Uppercase Q
R 82 52 Uppercase R
S 83 53 Uppercase S
T 84 54 Uppercase T
U 85 55 Uppercase U
V 86 56 Uppercase V
W 87 57 Uppercase W
X 88 58 Uppercase X
Y 89 59 Uppercase Y
Z 90 5a Uppercase Z
[ 91 5b Opening square bracket
\ 92 5c Reverse slant (Backslash)
] 93 5d Closing square bracket
^ 94 5e Caret (Circumflex)
_ 95 5f Underscore
` 96 60 Opening single quote
a 97 61 Lowercase a
b 98 62 Lowercase b
c 99 63 Lowercase c
d 100 64 Lowercase d
e 101 65 Lowercase e
f 102 66 Lowercase f
g 103 67 Lowercase g
h 104 68 Lowercase h
i 105 69 Lowercase i
j 106 6a Lowercase j
k 107 6b Lowercase k
l 108 6c Lowercase l
m 109 6d Lowercase m
n 110 6e Lowercase n
o 111 6f Lowercase o
p 112 70 Lowercase p
q 113 71 Lowercase q
r 114 72 Lowercase r
s 115 73 Lowercase s
t 116 74 Lowercase t
u 117 75 Lowercase u
v 118 76 Lowercase v
w 119 77 Lowercase w
x 120 78 Lowercase x
y 121 79 Lowercase y
z 122 7a Lowercase z
{ 123 7b Opening curly brace
| 124 7c Vertical line
} 125 7d Cloing curly brace
~ 126 7e Tilde (approximate)
 127 7f Delete (rubout), cross-hatch box
 

CreatoR

Must AutoIt!
Команда форума
Администратор
Сообщения
8 473
Репутация
2 403
IIIaMaH [?]
0х61 это буковка "а"
При чём здесь “буковка”? 0x61 это представляющий Hex-код для {Numpad1}.

как вставить в HotKeySet просто циферками
Никак, только разве что если использовать HotKey - Установка горячих клавиш.

Если я правильно понял, тебе нужно примерно вот что:

Код:
HotKeySet("{NUMPAD1}", "NoName")

While 1
    Sleep(10)
WEnd

Func NoName()
    HotKeySet(@HotKeyPressed)
    Send(@HotKeyPressed)
    HotKeySet(@HotKeyPressed, "NoName")
EndFunc
 
Автор
I

IIIaMaH

Новичок
Сообщения
15
Репутация
0
Не совсем вт привожу по новой скрипт (добавился автобег по идее по нажатию шифт+рмаус, но не работает):
Код:
WinWaitActive("Untitled - Darkfall Online")
#Include <Misc.au3>



;константа количество используемых реев
Const $num_ray = 5
;константа правая клавиша мыши
$rmouse = 0x02

; Объявляем переменные
;блок назначения клавишь для реев
Global $k_array[$num_ray] = ["+6","+7","+8","+9","+0"]
;["+6"] impale
;["+7"] Pungent Mist
;["+8"] Unholy Caress
;["+9"] Dragon's Breath
;["+0"] Insect Swarm
; end

; блок значений времени отката реев
Global $cd_array[$num_ray] = [14000, 6500, 14000, 14000, 13000]
;[14000] Impale [6500] Pungent Mist [14000] Unholy Caress [14000] Dragon's Breath  [13000] Insect Swarm
; end 

;инициируем переменную перегрузки времени
$time_reload = 0
;масив для хранения времени последнего каста каждого рея и переменная для перегрузки
Global $time_cast[$num_ray], $ray_key

; инициализация массива очередности реев
; будет выбран ближайший элемент массива с значением 1
Global $next_ray[$num_ray] = [1, 1, 1, 1, 1]
; end 

; задаем горячую клавишу или сочетание клавиш для выбора рея и его каста
; Shift = +, Ctrl = ^, Alt = !
HotKeySet ("{NUMPAD1}", "RayScroll")
HotKeySet ("{END}", "RayScroll")
HotKeySet ("+{"&$rmouse&"}", "SprintRun")
While 1
    Sleep(100)
WEnd

;функция RayScroll
Func RayScroll ()
	Send ("{F10}")
	Sleep (258)
	HotKeySet ("{NUMPAD1}")
	Send ("{NUMPAD1}")
	HotKeySet ("{NUMPAD1}", "RayScroll")
	Sleep (100)
	$ray_key = RayLogic()
	Send ($ray_key)
	Sleep (79)
	MouseClick("left")
	$time_reload = TimerLogic()
	Sleep (79)
EndFunc

Func RayLogic ()
	$num = $num_ray - 1
	Local $time 
	For $i = 0 to $num Step 1
		$time = TimerDiff($time_cast[$i])
    If $next_ray[$i] = 1 Then
		$next_ray[$i] = 0
		Return ($k_array[$i])
	ElseIf $time >= $cd_array[$i] Then
		$next_ray[$i] = 0
		Return ($k_array[$i])
	EndIf
	Next
	;Send ("end")
	Return ("")
EndFunc

Func TimerLogic()
	$key = $ray_key
	$time = TimerInit()
	$num = $num_ray - 1
	For $i = 0 To $num Step 1
		If $key = $k_array[$i] Then
			$time_cast[$i] = $time
		EndIf
	Next
EndFunc

;SprintRun Func
Func SprintRun()
	If _IsPressed ("6A") Then
		Send ("{NUMPADMULT UP}")
		Send ("{NUMPADMULT DOWN}")
		Return ("")
	EndIf
	Send ("{NUMPADMULT DOWN}")
	;Send ("m")
EndFunc
Нумпад1 нужен был по коду для того чтоб исключить влияние нумлок состояния.
Отсылка нумпад1 в функции это просто моя лень переназначить клавишу хотбар1 в самой игре.
Суть проблемы в следующем 0х61 также как и 0х02 автоит не воспринимает (проверка в блокноте выдает по 0х61 букву "а" по 0х02 просто ничего не происходит раскладка клавы не причем.
Вот я и немогу понять где я косячу при написании.
 
Автор
I

IIIaMaH

Новичок
Сообщения
15
Репутация
0
ладно по сути вопрос с нумпадом решился а про мышку спрошу отдельной темой!
 
Верх