Здравствуйте, гость ( Вход | Регистрация )

2 страниц V < 1 2  
Ответить в эту темуОткрыть новую тему
> Misc Uopilot - GML Прибамбасы к пилоту
Zeleax
сообщение 2.11.2012, 16:37
Сообщение #21


*********

ex-Moderator UOPilot
Сообщений: 2.440
Регистрация: 8.10.2010
Группа: Пользователи
Наличность: 0
Из: Киев
Пользователь №: 13.093



EL-GReeN писал:

Попробуйте скачать и запустить программу, запустить скрипт, потыкать пробел в винде, затем в игре, если все ок то заменить alarm на свой код.
Код
set linedelay 1
set #handleWin findwindow (Misc_uopilot)
set #result setwindowtext (#handleWin, misc e_stp0='if keyboard_check_direct(vk_space){clipboard_set_text("1000000")}else{clipboard_set_text("0000000")};')
set $x 0
:re
get clipboard $x //получение строки из буфера
set #spc PosEx(1000000 $x) //поиск строки в нём (пробел)
if #spc = 1 //если нажат пробел
alarm
end_if
goto re


Да буфер всегда забит, e_stp0 это переменная код в которой хранится в виде строки и постоянно выполняется, misc это просто команда что бы дать понять проге что это новый код для выполнения, остальное вы правильно написали.
Код
set #result setwindowtext (#handleWin, misc e_stp0='if keyboard_check_direct(vk_space){clipboard_set_text("1000000")}else{clipboard_set_text("0000000")};')

оно же:
Код
if keyboard_check_direct(vk_space)//проверка кнопки
{
    clipboard_set_text("1000000")//если условие тру, эта функция отправляет в буфер 1000000
}
else
{
    clipboard_set_text("0000000")//иначе
};

Комбинация кнопок так:
Код
if keyboard_check_direct(vk_space) and keyboard_check_direct(ord("A"))

Список кнопок:
vk_nokey клавиатурный код представляет, что не нажата никакая клавиша
vk_anykey клавиатурный код представляет, что нажата любая клавиша
vk_left клавиатурный код для клавиши стрелка "влево"
vk_right клавиатурный код для клавиши стрелка "вправо"
vk_up клавиатурный код для клавиши стрелка "вверх"
vk_down клавиатурный код для клавиши стрелка "вниз"
vk_enter клавиша Enter
vk_escape клавиша Escape
vk_space клавиша Space
vk_shift клавиша Shift
vk_control клавиша Ctrl
vk_alt клавиша Alt
vk_backspace клавиша Backspace
vk_tab клавиша Tab
vk_home клавиша Home
vk_end клавиша End
vk_delete клавиша Delete
vk_insert клавиша Insert
vk_pageup клавиша Pageup
vk_pagedown клавиша Pagedown
vk_pause клавиша Pause/Break
vk_printscreen клавиша Printscreen/SysRq
vk_f1 ... vk_f12 клавиатурные коды для функциональных клавиш F1 - F12
vk_numpad0 ... vk_numpad9 клавиши на цифровой клавиатуре
vk_multiply клавиша умножения на цифровой клавиатуре
vk_divide клавиша деления на цифровой клавиатуре
vk_add клавиша сложения на цифровой клавиатуре
vk_subtract клавиша вычитания на цифровой клавиатуре
vk_decimal клавиша десятичной точки на цифровой клавиатуре
Для символьных клавиш используйте, например ord('A'). (С заглавной буквы.) Для цифровых клавиш используйте ord('5')
vk_lshift клавиша левый Shift
vk_lcontrol клавиша левый Ctrl
vk_lalt клавиша левый Alt
vk_rshift клавиша правый Shift
vk_rcontrol клавиша правый Ctrl
vk_ralt клавиша правый Alt

Сообщение отредактировал Zeleax - 2.11.2012, 16:45


--------------------
Полезные советы - читать всем! UOWiki
Пользователь в офлайнеDelete PostОтправить личное сообщение
Вернуться в начало страницы
+Ответить с цитированием данного сообщения
EL-GReeN
сообщение 3.11.2012, 10:13
Сообщение #22


*****

Journeyman
Сообщений: 474
Регистрация: 18.7.2011
Группа: Пользователи
Наличность: 0
Из: Россия
Пользователь №: 13.815
Возраст: 32



Добавлена возможность(через расширение) посылать нажатия кнопок и строк в окна:
Код
set linedelay 10
set #handleWin findwindow (Misc_uopilot)
//Open Notepad
set #result setwindowtext (#handleWin, misc execute_shell("notepad.exe",0))
wait 1000
//Type "W" in NotePads child window "EDIT"
set #result setwindowtext (#handleWin, misc sim_key_win(ord("W"),"Безымянный - Блокнот",true,"EDIT");)
//Press Enter  in NotePads child window "EDIT"
set #result setwindowtext (#handleWin, misc sim_key_win(vk_enter,"Безымянный - Блокнот",true,"EDIT");)
//Type a sentance in NotePads child window "EDIT"
set #result setwindowtext (#handleWin, misc sim_sentance_win("Строка (String)!@#$%^&*_+|asdqwertyzxc","Безымянный - Блокнот",true,"EDIT");)
end_script

Документация шедшая к расширению:

Simulate DLL - By GameFreak315

Description - Simulate DLL Basically simulates key presses in other programs and simulates mouse presses.

Functions -


int_dll - Initializes everything in the DLL.
___________________________________________________________________________

sim_key_win - Simulates a key press within a specified program, whether it be a character or other keyboard buttons.

argument0 - Key
The key to be sent to the specified program.
You can use -
ord("A") -- ord function
vk_enter -- vk_ function
65 -- Asci code

argument1 - Parent Window Caption
The caption of the program for the key to be sent to.
You can use -
Any string -- EX. "Untitled - Notepad"

argument2 - Use Child Window
Whether to send the key to a child window within the program.
You can use -
True or False

argument3 - Child Window Name
If you are sending a key to a child window within the program, the child windows caption. You can use WinSpy++ to find child windows.
You can use -
Any string -- EX. "EDIT"

___________________________________________________________________________

*Script must be imported*
sim_sentance_win - Same as sim_key_win but simulates a whole sentance and only keyboard characters.
argument0 - String
The string to be typed.
You can use -
Any keyboard character -- ABC, 123, :$]
EX. -- "Hello"

See sim_key_win for other arguments.

___________________________________________________________________________

Sim_key - Simulates a key press
argument0 - Key
The key to be pressed.
You can use -
ord("A") -- ord function
vk_enter -- vk_ function
65 -- Asci code

___________________________________________________________________________

*Script must be imported*
sim_sentance - Same as sim_key but simulates a whole sentance and only keyboard characters.
argument0 - String
The string to be typed.
You can use -
Any keyboard character -- ABC, 123, :$]
EX. -- "Hello"

___________________________________________________________________________

sim_key_combo - Simulates a combo key press, whether it be a character or other keyboard buttons.

argument0 - Key
The first key to be pressed.
You can use -
ord("A") -- ord function
vk_enter -- vk_ function
65 -- Asci code

argument1 - Key2
The second key to be pressed.
You can use -
ord("A") -- ord function
vk_enter -- vk_ function
65 -- Asci code

___________________________________________________________________________

sim_key_triple - Simulates a triple key press, whether it be a character or other keyboard buttons.

argument0 - Key
The first key to be pressed.
You can use -
ord("A") -- ord function
vk_enter -- vk_ function
65 -- Asci code

argument1 - Key2
The second key to be pressed.
You can use -
ord("A") -- ord function
vk_enter -- vk_ function
65 -- Asci code

argument2 - Key3
The third key to be pressed.
You can use -
ord("A") -- ord function
vk_enter -- vk_ function
65 -- Asci code
___________________________________________________________________________

mouse_click - Simulates a full mouse click, down and up.
argument0 - Mouse Button
The mouse button to be pressed.
You can use -
0 -- Mouse Left Button
1 -- Mouse Right Button
2 -- mouse Middle Button

___________________________________________________________________________

mouse_down - Simulates a mouse click down, without releasing.
argument0 - Mouse Button
The mouse button to be pressed down.
You can use -
0 -- Mouse Left Button
1 -- Mouse Right Button
2 -- mouse Middle Button

___________________________________________________________________________

mouse_up - Simulates a mouse release, releaving mouse_down.
argument0 - Mouse Button
The mouse button to be released.
You can use -
0 -- Mouse Left Button
1 -- Mouse Right Button
2 -- mouse Middle Button

___________________________________________________________________________

mouse_scroll - Simulates a mouse scroll up or down.
argument0 - Scroll Direction
The direction to scroll.
You can use -
0 -- Up
1 -- Down

___________________________________________________________________________

Terms -
Use DLL with care.
I am not responsible for anything that happens to you, your computer, or others computers when using this DLL.

Have fun, and remember credit is 100% appreciated.


--------------------
Пользователь в офлайнеDelete PostОтправить личное сообщение
Вернуться в начало страницы
+Ответить с цитированием данного сообщения
Zeleax
сообщение 17.3.2013, 14:15
Сообщение #23


*********

ex-Moderator UOPilot
Сообщений: 2.440
Регистрация: 8.10.2010
Группа: Пользователи
Наличность: 0
Из: Киев
Пользователь №: 13.093



Хороший пример использования проверки зажатых клавиш от IvaniuS:
1 клик
Код
set linedelay 1
set #handleWin findwindow (Misc_uopilot)
set #result setwindowtext (#handleWin, misc e_stp0='if keyboard_check_direct(ord('W')){clipboard_set_text("10 W")}else if keyboard_check_direct(ord('E')){clipboard_set_text("10 E")}else if keyboard_check_direct(ord('R')){clipboard_set_text("10 R")}else if keyboard_check_direct(ord('F')){clipboard_set_text("10 F")}else if keyboard_check_direct(ord('4')){clipboard_set_text("10 4")}else if keyboard_check_direct(ord('3')){clipboard_set_text("10 3")}else{clipboard_set_text("0")};')
set $buffer 0
:re
  get clipboard $buffer
  set #spc PosEx(10 $buffer)
  if #spc = 1
     set $dotakey copy ($buffer 3 1)
      if $true <> $buffer
        get mouse_pos #cpx #cpy
        send $dotakey
        kleft #cpx, #cpy
      end_if
      set $true $buffer
  else
   set $true 0
  end_if
goto re


Сообщение отредактировал Zeleax - 17.3.2013, 14:15


--------------------
Полезные советы - читать всем! UOWiki
Пользователь в офлайнеDelete PostОтправить личное сообщение
Вернуться в начало страницы
+Ответить с цитированием данного сообщения
IvaniuS
сообщение 18.3.2013, 16:05
Сообщение #24


****

Apprentice
Сообщений: 113
Регистрация: 8.1.2012
Группа: Пользователи
Наличность: 0
Из: Одесса
Пользователь №: 14.471
Возраст: 22



скажу больше - для удобства можно писать текст программы в тхт файле и потом вгружать его в массив и подставлять, а то сильно длинная строчка получаеться.
В таком вот виде :
Код

set linedelay 1
load_array %progtext D:\UOPilot\progtext.txt
set #handleWin findwindow (Misc_uopilot)
set #result setwindowtext (#handleWin, misc e_stp0=%progtext[1,1])
set $buffer 0
:re
  get clipboard $buffer
  set #spc PosEx(10 $buffer)
  if #spc = 1
     set $dotakey copy ($buffer 3 1)
      if $true <> $buffer
        get mouse_pos #cpx #cpy
        send $dotakey
        kleft #cpx, #cpy
      end_if
      set $true $buffer
  else
   set $true 0
  end_if
goto re
Пользователь в офлайнеDelete PostОтправить личное сообщение
Вернуться в начало страницы
+Ответить с цитированием данного сообщения
Zeleax
сообщение 18.3.2013, 20:30
Сообщение #25


*********

ex-Moderator UOPilot
Сообщений: 2.440
Регистрация: 8.10.2010
Группа: Пользователи
Наличность: 0
Из: Киев
Пользователь №: 13.093



так ведь можно просто одну длинную строку разбить на несколько коротких, а потом соединить


--------------------
Полезные советы - читать всем! UOWiki
Пользователь в офлайнеDelete PostОтправить личное сообщение
Вернуться в начало страницы
+Ответить с цитированием данного сообщения

2 страниц V < 1 2
Ответить в эту темуОткрыть новую тему
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 

- Текстовая версия | Версия для КПК Сейчас: 27.4.2024, 11:20
Designed by Nickostyle