| 
		
	
		 | 
		   | 
	 
 
	
	
	
	
	   Arduino, Нажатия мыши и клавиатуры в обход защиты от кликеров  | 
	 
	    
	  | 
	           | 
	 
   
	 
  
 
	
		| DarkMaster | 
		
			
			
				   8.7.2023, 17:23
			 
			
			
		 | 
	 
	
		
        	
  
        		           
  
        		Модератор UOPilot 
        		Сообщений: 9.766 
        		Регистрация: 2.12.2008         		Группа: Супермодераторы Наличность: 30011         		
        		Пользователь №: 11.279
  
        		 
        	 
        	   
        | 
       
			
			А через мой дебаг запускал? На какой строке в arduino.lua зависает? Ну либо сам найди номер строки. Там проще будет. Я то думал, что скрипт работает, а железка просто игнорит команды - это сложно без железки диагностировать, а тут уже есть с чем работать. Мне чет кажется оно будет бесконечно крутить: Код      repeat         COMport = ffi.cast('int', ffi.C.CreateFileA('\\.\\COM' .. tostring(export_array.com), GENERIC_READ + GENERIC_WRITE, 0, nil, OPEN_EXISTING, FILE_FLAG_OVERLAPPED, nil))         if COMport == INVALID_HANDLE_VALUE then wait (1) end     until COMport ~= INVALID_HANDLE_VALUE
 
  
			
			
  -------------------- 
Скрипты UOPilot под заказ. Консультации по UOpilot 15$/час. Услуги Lua разработчика (не пилот, проекты, постоянка) Disсоrd: Kov____ Контакт актуален, подпись актуальна. 
					
		 | 
	 
	
		| 
			
		 | 
		
			
			
			
         	
          | 
	 
	| 
	
	 | 
 
 
	
		| Madeus | 
		
			
			
				   8.7.2023, 23:30
			 
			
			
		 | 
	 
	
		
        	 
  
        		     
  
        		Journeyman 
        		Сообщений: 319 
        		Регистрация: 19.11.2019         		Группа: Пользователи Наличность: 11574         		
        		Пользователь №: 19.451 
Возраст: 32
  
        		 
        	 
        	   
        | 
       
			
			Цитата(DarkMaster @ 8.7.2023, 17:23)   А через мой дебаг запускал? На какой строке в arduino.lua зависает? Ну либо сам найди номер строки. Там проще будет. Я то думал, что скрипт работает, а железка просто игнорит команды - это сложно без железки диагностировать, а тут уже есть с чем работать. Мне чет кажется оно будет бесконечно крутить: Код      repeat         COMport = ffi.cast('int', ffi.C.CreateFileA('\\.\\COM' .. tostring(export_array.com), GENERIC_READ + GENERIC_WRITE, 0, nil, OPEN_EXISTING, FILE_FLAG_OVERLAPPED, nil))         if COMport == INVALID_HANDLE_VALUE then wait (1) end     until COMport ~= INVALID_HANDLE_VALUE
 
 Запустил, именно этот кусок он и крутит.  
			
			
					
		 | 
	 
	
		| 
			
		 | 
		
			
			
			
         	
          | 
	 
	| 
	
	 | 
 
 
	
		| Madeus | 
		
			
			
				   9.7.2023, 18:27
			 
			
			
		 | 
	 
	
		
        	 
  
        		     
  
        		Journeyman 
        		Сообщений: 319 
        		Регистрация: 19.11.2019         		Группа: Пользователи Наличность: 11574         		
        		Пользователь №: 19.451 
Возраст: 32
  
        		 
        	 
        	   
        | 
       
			
			Цитата(DarkMaster @ 9.7.2023, 16:49)   порт открыть он не может. Попробуй ручками дописать номер порта вместо tostring(export_array.com) либо вообще задать порт строкой, можно попробовать задать его аналогично io.open открыть он не может порт этот. так же было бы совсем не лишним посмотреть правильно ли он находит номер порта и вывести в лог export_array.com https://learn.microsoft.com/en-us/windows/w...api-createfileaтут можно почитать про параметры с которыми можно поиграть. Ком порт он определяет правильно. В общем проблема была в пути к ком порту, не нужны там \\.\\ Строка должна выглядеть так для windows 11 COMport = ffi.cast('int', ffi.C.CreateFileA('COM' .. tostring(export_array.com), GENERIC_READ + GENERIC_WRITE, 0, nil, OPEN_EXISTING, FILE_FLAG_OVERLAPPED, nil)) Спасибо, что напомнил про dbg и ткнул куда копать)  
			
			
					
		 | 
	 
	
		| 
			
		 | 
		
			
			
			
         	
          | 
	 
	| 
	
	 | 
 
 
	
		| Kangoshi | 
		
			
			
				   23.7.2023, 0:23
			 
			
			
		 | 
	 
	
		
        	
  
        		  
  
        		Neophyte 
        		Сообщений: 36 
        		Регистрация: 9.8.2011         		Группа: Пользователи Наличность: 0         		
        		Пользователь №: 13.878
  
        		 
        	 
        	   
        | 
       
			
			Цитата(DarkMaster @ 10.7.2023, 18:41)    Это была ошибка изначально. Там должно быть вообще: \\.\COM* но все \ нужно удваивать для экранирования. Соответственно в одном месте был экран, во втором нет.
 
 А что насчёт звёздочки после COM?  (IMG: style_emoticons/default/huh.gif)  '\\\\.\\COM*' должно быть или '\\\\.\\COM' ? И раз уж привлёк внимание, как нажимать end? Строка в arduino.lua: export_array["end"] = 0xD5. Могу, конечно, переименовать во что-то отличное от end, но просто интересно как это сделать с таким "синтаксисом". А так же клавиши / и * с нумпада, точнее не могу найти их кодов для этого драйвера.  
			
			
					
		 | 
	 
	
		| 
			
		 | 
		
			
			
			
         	
          | 
	 
	| 
	
	 | 
 
 
	
		| DarkMaster | 
		
			
			
				   23.7.2023, 22:49
			 
			
			
		 | 
	 
	
		
        	
  
        		           
  
        		Модератор UOPilot 
        		Сообщений: 9.766 
        		Регистрация: 2.12.2008         		Группа: Супермодераторы Наличность: 30011         		
        		Пользователь №: 11.279
  
        		 
        	 
        	   
        | 
       
			
			извездочка подразумевалась под замену номером порта. Код  --lua local key = {     mouse_1 = 0x01, -- VK_LBUTTON Left mouse button     mouse_2 = 0x02, -- VK_RBUTTON Right mouse button     --0x03 -- VK_CANCEL Control-break processing     mouse_middle = 0x04, -- VK_MBUTTON Middle mouse button (three-button mouse)     mouse_4 = 0x05, -- VK_XBUTTON1 X1 mouse button     mouse_5 = 0x06, -- VK_XBUTTON2 X2 mouse button     --0x07 -- Undefined     backspace = 0x08, -- VK_BACK BACKSPACE key     tab = 0x09, -- VK_TAB TAB key     --0x0A-0B -- Reserved     --0x0C -- VK_CLEAR CLEAR key     enter = 0x0D, -- VK_RETURN ENTER key     --0x0E-0F -- Undefined     shift = 0x10, -- VK_SHIFT SHIFT key     ctrl = 0x11, -- VK_CONTROL CTRL key     alt = 0x12, -- VK_MENU ALT key     pause = 0x13, -- VK_PAUSE PAUSE key     caps_lock = 0x14, -- VK_CAPITAL CAPS LOCK key     --0x15 -- VK_KANA IME Kana mode     --0x15 -- VK_HANGUEL IME Hanguel mode (maintained for compatibility; use VK_HANGUL)     --0x15 -- VK_HANGUL IME Hangul mode     --0x16 -- Undefined     --0x17 -- VK_JUNJA IME Junja mode     --0x18 -- VK_FINAL IME final mode     --0x19 -- VK_HANJA IME Hanja mode     --0x19 -- VK_KANJI IME Kanji mode     --0x1A -- Undefined     esc = 0x1B, -- VK_ESCAPE ESC key     escape = 0x1B, -- VK_ESCAPE ESC key     --0x1C -- VK_CONVERT IME convert     --0x1D -- VK_NONCONVERT IME nonconvert     --0x1E -- VK_ACCEPT IME accept     --0x1F -- VK_MODECHANGE IME mode change request     spacebar = 0x20, -- VK_SPACE SPACEBAR     page_up = 0x21, -- VK_PRIOR PAGE UP key     page_down = 0x22, -- VK_NEXT PAGE DOWN key     ["end"] = 0x23, -- VK_END END key     _end = 0x23, -- VK_END END key     home = 0x24, -- VK_HOME HOME key     left = 0x25, -- VK_LEFT LEFT ARROW key     up = 0x26, -- VK_UP UP ARROW key     right = 0x27, -- VK_RIGHT RIGHT ARROW key     down = 0x28, -- VK_DOWN DOWN ARROW key     --0x29 -- VK_SELECT SELECT key     --0x2A -- VK_PRINT PRINT key     --0x2B -- VK_EXECUTE EXECUTE key     print_screen = 0x2C, -- VK_SNAPSHOT PRINT SCREEN key     insert = 0x2D, -- VK_INSERT INS key     delete = 0x2E, -- VK_DELETE DEL key     --0x2F -- VK_HELP HELP key     ["0"] = 0x30, -- 0 key     ["1"] = 0x31, -- 1 key     ["2"] = 0x32, -- 2 key     ["3"] = 0x33, -- 3 key     ["4"] = 0x34, -- 4 key     ["5"] = 0x35, -- 5 key     ["6"] = 0x36, -- 6 key     ["7"] = 0x37, -- 7 key     ["8"] = 0x38, -- 8 key     ["9"] = 0x39, -- 9 key     --0x3A-40 -- Undefined     a = 0x41, -- A key     b = 0x42, -- B key     c = 0x43, -- C key     d = 0x44, -- D key     e = 0x45, -- E key     f = 0x46, -- F key     g = 0x47, -- G key     h = 0x48, -- H key     i = 0x49, -- I key     j = 0x4A, -- J key     k = 0x4B, -- K key     l = 0x4C, -- L key     m = 0x4D, -- M key     n = 0x4E, -- N key     o = 0x4F, -- O key     p = 0x50, -- P key     q = 0x51, -- Q key     r = 0x52, -- R key     s = 0x53, -- S key     t = 0x54, -- T key     u = 0x55, -- U key     v = 0x56, -- V key     w = 0x57, -- W key     x = 0x58, -- X key     y = 0x59, -- Y key     z = 0x5A, -- Z key     A = 0x41, -- A key     B = 0x42, -- B key     C = 0x43, -- C key     D = 0x44, -- D key     E = 0x45, -- E key     F = 0x46, -- F key     G = 0x47, -- G key     H = 0x48, -- H key     I = 0x49, -- I key     J = 0x4A, -- J key     K = 0x4B, -- K key     L = 0x4C, -- L key     M = 0x4D, -- M key     N = 0x4E, -- N key     O = 0x4F, -- O key     P = 0x50, -- P key     Q = 0x51, -- Q key     R = 0x52, -- R key     S = 0x53, -- S key     T = 0x54, -- T key     U = 0x55, -- U key     V = 0x56, -- V key     W = 0x57, -- W key     X = 0x58, -- X key     Y = 0x59, -- Y key     Z = 0x5A, -- Z key     win = 0x5B, -- VK_LWIN Left Windows key (Natural keyboard)     --0x5C -- VK_RWIN Right Windows key (Natural keyboard)     --0x5D -- VK_APPS Applications key (Natural keyboard)     --0x5E -- Reserved     sleep = 0x5F, -- VK_SLEEP Computer Sleep key     num_0 = 0x60, -- VK_NUMPAD0 Numeric keypad 0 key     num_1 = 0x61, -- VK_NUMPAD1 Numeric keypad 1 key     num_2 = 0x62, -- VK_NUMPAD2 Numeric keypad 2 key     num_3 = 0x63, -- VK_NUMPAD3 Numeric keypad 3 key     num_4 = 0x64, -- VK_NUMPAD4 Numeric keypad 4 key     num_5 = 0x65, -- VK_NUMPAD5 Numeric keypad 5 key     num_6 = 0x66, -- VK_NUMPAD6 Numeric keypad 6 key     num_7 = 0x67, -- VK_NUMPAD7 Numeric keypad 7 key     num_8 = 0x68, -- VK_NUMPAD8 Numeric keypad 8 key     num_9 = 0x69, -- VK_NUMPAD9 Numeric keypad 9 key     ["num_*"] = 0x6A,     num_multiply = 0x6A, -- VK_MULTIPLY Multiply key     ["num_+"] = 0x6B,     num_plus = 0x6B, -- VK_ADD Add key     --0x6C -- VK_SEPARATOR Separator key     ["num_-"] = 0x6D,     num_minus = 0x6D, -- VK_SUBTRACT Subtract key     ["num_."] = 0x6E,     num_del = 0x6E, -- VK_DECIMAL Decimal key     ["num_/"] = 0x6F,     num_devide = 0x6F,     num_slash = 0x6F, -- VK_DIVIDE Divide key     F1 = 0x70, -- VK_F1 F1 key     F2 = 0x71, -- VK_F2 F2 key     F3 = 0x72, -- VK_F3 F3 key     F4 = 0x73, -- VK_F4 F4 key     F5 = 0x74, -- VK_F5 F5 key     F6 = 0x75, -- VK_F6 F6 key     F7 = 0x76, -- VK_F7 F7 key     F8 = 0x77, -- VK_F8 F8 key     F9 = 0x78, -- VK_F9 F9 key     F10 = 0x79, -- VK_F10 F10 key     F11 = 0x7A, -- VK_F11 F11 key     F12 = 0x7B, -- VK_F12 F12 key     F13 = 0x7C, -- VK_F13 F13 key     F14 = 0x7D, -- VK_F14 F14 key     F15 = 0x7E, -- VK_F15 F15 key     F16 = 0x7F, -- VK_F16 F16 key     F17 = 0x80, -- VK_F17 F17 key     F18 = 0x81, -- VK_F18 F18 key     F19 = 0x82, -- VK_F19 F19 key     F20 = 0x83, -- VK_F20 F20 key     F21 = 0x84, -- VK_F21 F21 key     F22 = 0x85, -- VK_F22 F22 key     F23 = 0x86, -- VK_F23 F23 key     F24 = 0x87, -- VK_F24 F24 key     f1 = 0x70, -- VK_F1 F1 key     f2 = 0x71, -- VK_F2 F2 key     f3 = 0x72, -- VK_F3 F3 key     f4 = 0x73, -- VK_F4 F4 key     f5 = 0x74, -- VK_F5 F5 key     f6 = 0x75, -- VK_F6 F6 key     f7 = 0x76, -- VK_F7 F7 key     f8 = 0x77, -- VK_F8 F8 key     f9 = 0x78, -- VK_F9 F9 key     f10 = 0x79, -- VK_F10 F10 key     f11 = 0x7A, -- VK_F11 F11 key     f12 = 0x7B, -- VK_F12 F12 key     f13 = 0x7C, -- VK_F13 F13 key     f14 = 0x7D, -- VK_F14 F14 key     f15 = 0x7E, -- VK_F15 F15 key     f16 = 0x7F, -- VK_F16 F16 key     f17 = 0x80, -- VK_F17 F17 key     f18 = 0x81, -- VK_F18 F18 key     f19 = 0x82, -- VK_F19 F19 key     f20 = 0x83, -- VK_F20 F20 key     f21 = 0x84, -- VK_F21 F21 key     f22 = 0x85, -- VK_F22 F22 key     f23 = 0x86, -- VK_F23 F23 key     f24 = 0x87, -- VK_F24 F24 key     --0x88-8F -- Unassigned     num_lock = 0x90, -- VK_NUMLOCK NUM LOCK key     scroll_lock = 0x91, -- VK_SCROLL SCROLL LOCK key     --0x92-96 -- OEM specific     --0x97-9F -- Unassigned     shift_left = 0xA0, -- VK_LSHIFT Left SHIFT key     shift_right = 0xA1, -- VK_RSHIFT Right SHIFT key     ctrl_left = 0xA2, -- VK_LCONTROL Left CONTROL key     ctrl_right = 0xA3, -- VK_RCONTROL Right CONTROL key     menu_left = 0xA4, -- VK_LMENU Left MENU key     menu_right = 0xA5, -- VK_RMENU Right MENU key     browser_back = 0xA6, -- VK_BROWSER_BACK Browser Back key     browser_forward = 0xA7, -- VK_BROWSER_FORWARD Browser Forward key     browser_refresh = 0xA8, -- VK_BROWSER_REFRESH Browser Refresh key     browser_stop = 0xA9, -- VK_BROWSER_STOP Browser Stop key     browser_search = 0xAA, -- VK_BROWSER_SEARCH Browser Search key     browser_favorites = 0xAB, -- VK_BROWSER_FAVORITES Browser Favorites key     browser_home = 0xAC, -- VK_BROWSER_HOME Browser Start and Home key     mute = 0xAD, -- VK_VOLUME_MUTE Volume Mute key     volume_down = 0xAE, -- VK_VOLUME_DOWN Volume Down key     volume_up = 0xAF, -- VK_VOLUME_UP Volume Up key     media_next = 0xB0, -- VK_MEDIA_NEXT_TRACK Next Track key     media_prev = 0xB1, -- VK_MEDIA_PREV_TRACK Previous Track key     media_stop = 0xB2, -- VK_MEDIA_STOP Stop Media key     media_play = 0xB3, -- VK_MEDIA_PLAY_PAUSE Play/Pause Media key     media_pasue = 0xB3, -- VK_MEDIA_PLAY_PAUSE Play/Pause Media key     launch_mail = 0xB4, -- VK_LAUNCH_MAIL Start Mail key     launch_media = 0xB5, -- VK_LAUNCH_MEDIA_SELECT Select Media key     launch_app_1 = 0xB6, -- VK_LAUNCH_APP1 Start Application 1 key     launch_app_2 = 0xB6, -- VK_LAUNCH_APP1 Start Application 2 key     --0xB8-B9 -- Reserved     [";"] = 0xBA, -- VK_OEM_1 Used for miscellaneous characters; it can vary by keyboard. For the US standard keyboard, the ';:' key     [":"] = 0xBA, -- VK_OEM_1 Used for miscellaneous characters; it can vary by keyboard. For the US standard keyboard, the ';:' key     ["+"] = 0xBB, -- VK_OEM_PLUS For any country/region, the '+' key     [","] = 0xBC, -- VK_OEM_COMMA For any country/region, the ',' key     ["-"] = 0xBD, -- VK_OEM_MINUS For any country/region, the '-' key     ["."] = 0xBE, -- VK_OEM_PERIOD For any country/region, the '.' key     ["/"] = 0xBF, -- VK_OEM_2 Used for miscellaneous characters; it can vary by keyboard. For the US standard keyboard, the '/?' key     ["?"] = 0xBF, -- VK_OEM_2 Used for miscellaneous characters; it can vary by keyboard. For the US standard keyboard, the '/?' key     ["`"] = 0xC0, -- VK_OEM_3 Used for miscellaneous characters; it can vary by keyboard. For the US standard keyboard, the '`~' key     ["~"] = 0xC0, -- VK_OEM_3 Used for miscellaneous characters; it can vary by keyboard. For the US standard keyboard, the '`~' key     --0xC1-D7 -- Reserved     --0xD8-DA -- Unassigned     ["["] = 0xDB, -- VK_OEM_4 Used for miscellaneous characters; it can vary by keyboard. For the US standard keyboard, the '[{' key     ["{"] = 0xDB, -- VK_OEM_4 Used for miscellaneous characters; it can vary by keyboard. For the US standard keyboard, the '[{' key     ["\\"] = 0xDC, -- VK_OEM_5 Used for miscellaneous characters; it can vary by keyboard. For the US standard keyboard, the '\|' key     ["|"] = 0xDC, -- VK_OEM_5 Used for miscellaneous characters; it can vary by keyboard. For the US standard keyboard, the '\|' key     ["]"] = 0xDD, -- VK_OEM_6 Used for miscellaneous characters; it can vary by keyboard. For the US standard keyboard, the ']}' key     ["}"] = 0xDD, -- VK_OEM_6 Used for miscellaneous characters; it can vary by keyboard. For the US standard keyboard, the ']}' key     ["'"] = 0xDE, -- VK_OEM_7 Used for miscellaneous characters; it can vary by keyboard. For the US standard keyboard, the 'single-quote/double-quote' key     ['"'] = 0xDE, -- VK_OEM_7 Used for miscellaneous characters; it can vary by keyboard. For the US standard keyboard, the 'single-quote/double-quote' key     --0xDF -- VK_OEM_8 Used for miscellaneous characters; it can vary by keyboard.     --0xDF -- VK_OEM_8 Used for miscellaneous characters; it can vary by keyboard.     --0xE0 -- Reserved     --0xE1 -- OEM specific     --0xE2 -- VK_OEM_102 Either the angle bracket key or the backslash key on the RT 102-key keyboard     --0xE3-E4 -- OEM specific     --0xE5 -- VK_PROCESSKEY IME PROCESS key     --0xE6 -- OEM specific     --0xE7 -- VK_PACKET Used to pass Unicode characters as if they were keystrokes.      -- The VK_PACKET key is the low word of a 32-bit Virtual Key value used for non-keyboard input methods.     -- For more information, see Remark in KEYBDINPUT, SendInput, WM_KEYDOWN, and WM_KEYUP     --0xE8 -- Unassigned     --0xE9-F5 -- OEM specific     --0xF6 -- VK_ATTN Attn key     --0xF7 -- VK_CRSEL CrSel key     --0xF8 -- VK_EXSEL ExSel key     --0xF9 -- VK_EREOF Erase EOF key     play = 0xFA, -- VK_PLAY Play key     zoom = 0xFB, -- VK_ZOOM Zoom key     --0xFC -- VK_NONAME Reserved     --0xFD -- VK_PA1 PA1 key     --0xFE -- VK_OEM_CLEAR Clear key }
  return key
 
 
 когда-то писал себе хоткеи. для тяжелых случаев можете детектор использовать: Код 
  --lua local dbg           = require[[lua_plugins\mydbg]] local ffi           = require[[ffi]] local rmem          = ffi.cast print = log print "clear" print "mode compact" local cfg, fi, open, click = {},{},{},{}
 
 
  local winapi do     -- У меня пути не стандартные, чтобы избежать свинарника.     -- Поэтому тут есть пара "лишних" строк.     -- Сохраняем _текущие_ пути по которым ищутся модули.     local back = package.path     -- Дописываю путь по которому у меня лежат модули.     package.path = "lua_plugins\\winapi\\?.lua;"..package.path     -- Подгружаем собственно модуль.     -- Хз почему, но грузить нужно именно так.     -- Просто require 'winapi' не пашет.     winapi = require 'winapi'     --ext.lg(winapi)     -- Подгружаем кусок отвечающий за клавиатуру     require[[winapi.keyboard]]     -- Возвращаем пути поиска модулей на исходные.     package.path = back
  end
  -- Поолучаем состояние клавиши: -- state - нажата/отжата -- toggle - для лампочек горит/не горит. --local state, toggle = GetKeyState(0x14) --log(tostring(state),tostring(toggle))
  local state_arr = {}
 
  while 1 do     for i = 0, 255 do         local state, toggle = winapi.GetKeyState(i)         if state and not state_arr[i] then             state_arr[i] = true             log(string.format("%.3f", os.clock())..": "..i.." down")         elseif not state and state_arr[i] then             state_arr[i] = false             log(string.format("%.3f", os.clock())..": "..i.." up")         end     end     wait(1) end
 
 
 
  Сообщение отредактировал DarkMaster - 20.11.2023, 6:53 
			
			
  -------------------- 
Скрипты UOPilot под заказ. Консультации по UOpilot 15$/час. Услуги Lua разработчика (не пилот, проекты, постоянка) Disсоrd: Kov____ Контакт актуален, подпись актуальна. 
					
		 | 
	 
	
		| 
			
		 | 
		
			
			
			
         	
          | 
	 
	| 
	
	 | 
 
 
	
		| Kangoshi | 
		
			
			
				   24.7.2023, 19:34
			 
			
			
		 | 
	 
	
		
        	
  
        		  
  
        		Neophyte 
        		Сообщений: 36 
        		Регистрация: 9.8.2011         		Группа: Пользователи Наличность: 0         		
        		Пользователь №: 13.878
  
        		 
        	 
        	   
        | 
       
			
			Коды не те, но я нашёл  вот тут.Для / и * с нумпада это 0xDC и 0xDD. Но я так и не понял зачем это в файле arduino.lua: export_array["end"] = 0xD5 и как это написать в скрипте. hw.key (hw. а дальше что? Я просто не в курсе синтаксиса, но пробовал разные варианты - ничего не работает.  
			
			
					
		 | 
	 
	
		| 
			
		 | 
		
			
			
			
         	
          | 
	 
	| 
	
	 | 
 
 
	
		| DarkMaster | 
		
			
			
				   13.10.2024, 20:55
			 
			
			
		 | 
	 
	
		
        	
  
        		           
  
        		Модератор UOPilot 
        		Сообщений: 9.766 
        		Регистрация: 2.12.2008         		Группа: Супермодераторы Наличность: 30011         		
        		Пользователь №: 11.279
  
        		 
        	 
        	   
        | 
       
			
			Всмысле? А зачем тут второй пилот? Код  -- task.add(name, timeout, button) -- добавляет задачу -- name    - имя -- timeout - минимальное время между нажатиями -- button  - клавиша которую нажимать -- -- task.push([name]) -- Проверяет таймеры и при необходимости -- нажимает кнопки. -- name    - опциональный параметр, какую задачу проверить. --           Если не указывать, то проверит все задачи. --           Значение по умолчанию: nil.
  local task = {} task.add  = function(name, timeout, button) end task.push = function(name) end do     local data = {}     task.add = function(name, timeout, button)         data[name] = {}         data[name].timeout  = timeout         data[name].button   = button         data[name].last_use = -1 - timeout     end
      task.push = function(name)         if name then             if (data[name].last_use + data[name].timeout) < os.clock() then                 data[name].last_use = os.clock()                 -- нажать клавишу                 hw.key(data[name].button)                 print(name)             end         else             for name, elem in pairs(data) do                 if (elem.last_use + elem.timeout) < os.clock() then                     elem.last_use = os.clock()                     -- нажать клавишу                     hw.key(data[name].button)                     print(name)                 end             end         end     end end
  -- Добавляем задачи task.add("heal",   3, "F1") task.add("attack", 5, "F2")
  -- Жмем в бесконечном цикле while 1 do     task.push()     -- Для разгрузки камня.     wait(50) end
 
 print можете выкинуть - оно для наглядности. Для теста так же можете убрать hw.key и просто вывод в лог посмотреть, как они срабатывают.  
			
			
  -------------------- 
Скрипты UOPilot под заказ. Консультации по UOpilot 15$/час. Услуги Lua разработчика (не пилот, проекты, постоянка) Disсоrd: Kov____ Контакт актуален, подпись актуальна. 
					
		 | 
	 
	
		| 
			
		 | 
		
			
			
			
         	
          | 
	 
	| 
	
	 | 
 
 
	
		| Zenogiasu | 
		
			
			
				   17.4.2025, 21:09
			 
			
			
		 | 
	 
	
		
        	
  
        		   
  
        		Novice 
        		Сообщений: 59 
        		Регистрация: 3.12.2022         		Группа: Пользователи Наличность: 0         		
        		Пользователь №: 20.434 
Возраст: 28
  
        		 
        	 
        	   
        | 
       
			
			Авантрюристы приветствую. Правильно ли я пониваю, если мыши надо переместиться допустим из координат 100 100 в координаты 200 100, а шаг стоит 4, получается каждый микромув будет на одинаковые 4 пикселя, итого 25 движений по 4? Этот момент мне несколько не нравится. Пару лет назад, когда использовал другую прогу, массово отлетел, потому-что когда двигал камеру через форсиковский winapiexec ступил и сделал статичные шаги x x + 3, и так двигалось пока не достигнет цели. После этого сделал рандом x + 3 + random (4) и нормально стало. Полагаю если постоянно на 4 пикселя будет двигаться камера это детектиться может, если очень захотеть. Как сделать так чтобы хотябы не в рамках одного мува шаги задавались рандомно, но хотябы чисто каждый отельный вызов мува был с рандомным шагом? Можно было бы каждый раз задавать этот рандом, но прочитал что если каждый раз перезадавать переменные из шапки то это черевато зависаниями. Я обычно исподльзовал цикл, в котором каждый раз шажочек в рамках одного мува к цели задавался рандомно по сути.  Второе, у меня в цикле также и рамндомные вайты между каждый микрошагом аля 1 + рандом 10. Можно ли в этом случае поставить задержку между шагами 0? ничего страного не случится? В общем можно ли как-то настроить чтобы курсор перемещался моментально в нужные координаты без всяких шагов и паузами между ними, которые я обычно регулирую сам в рамках конкретных задач. Код  local x, y = mouse_pos ("abs")     if step == 1 then         hw.mouse.move (x + 15 + math.random (15), y - math.random (7))         step = 0     else         hw.mouse.move (x + 15 + math.random (15), y + math.random (7))         step = 1     end     wait (1 + math.random (15))
 
 вот ето мой кусочек из цикла, тут получается какие рандомы не задавай в перемещениями, мышь всеравно будет по 4 пикселя двигаться вплаво. Если туда вставить в цикл перед каждым перемещением, это не будет вызывать проблем с зависамними итд? hw.set_offset_mousemove(1+math.random (5)) hw.set_delay_mousemove(1+math.random (5))  
			
			
					
		 | 
	 
	
		| 
			
		 | 
		
			
			
			
         	
          | 
	 
	| 
	
	 | 
 
 
 
	
		 | 
		   | 
	 
 
	29 чел. читают эту тему (гостей: 29, скрытых пользователей: 0) 
	Пользователей: 0  
 
        				  
  | 
 |