| 
		
	
	
	
	
	   Misc Uopilot - GML Прибамбасы к пилоту | 
	 
	    
	  | 
	           | 
	 
   
	 
  
 
	
		| EL-GReeN | 
		
			
			
				   29.7.2012, 19:58
			 
			
			
		 | 
	 
	
		
        	 
  
        		     
  
        		Journeyman 
        		Сообщений: 474 
        		Регистрация: 18.7.2011         		Группа: Пользователи Наличность: 0         		Из: Россия 
        		Пользователь №: 13.815 
Возраст: 32
  
        		 
        	 
        	   
        | 
       
			
			Misc Uopilot ловит из буфера спец ключ misc и то что после него исполняет, функции и синтаксис должны быть на GML (это JS подобный язык в движке Game Maker).
Код set linedelay 20 set clipboard misc window_set_showborder(0) //Границы вокруг окна (0-1). set clipboard misc window_set_rectangle(600,0,400,20) //Позиция и растягивание размера окна (x, y, w, h). set clipboard misc window_set_stayontop(1) //Поверх всего (0-1). set clipboard misc t1x=4; t1y=2; t1t='Хп:' //Обьект текст1 (t1x=x, t1y=y, t1t=text) set clipboard misc t2x=100; t2y=2; t2t='Мп:' //Обьект текст2 set clipboard misc t3x=200; t3y=2; t3t='Стам:' //Обьект текст3 set clipboard misc t4x=300; t4y=2; t4t='Голд:' //Обьект текст4 set #hp 0 :re2 set clipboard misc t1t='Хп: ' + '#hp' //Динамическое изменение текста1 wait 100 set #hp #hp + 5 if #hp < 101 goto re2 end_if  end_script Вариант 2: Код set linedelay 2 set #handleWin findwindow (Misc_uopilot) //Получение хендла окна миска set #result setwindowtext (#handleWin, misc window_set_showborder(0)) //Границы вокруг окна (0-1). set #result setwindowtext (#handleWin, misc window_set_rectangle(600,0,400,20)) //Позиция и растягивание размера окна (x, y, w, h). set #result setwindowtext (#handleWin, misc window_set_stayontop(1)) //Поверх всего (0-1). set #result setwindowtext (#handleWin, misc t1x=4; t1y=2; t1t='Хп:') //Обьект текст1 (t1x=x, t1y=y, t1t=text) set #result setwindowtext (#handleWin, misc t2x=100; t2y=2; t2t='Мп:') //Обьект текст2 set #result setwindowtext (#handleWin, misc t3x=200; t3y=2; t3t='Стам:') //Обьект текст3 set #result setwindowtext (#handleWin, misc t4x=300; t4y=2; t4t='Голд:') //Обьект текст4 set #hp 0 :re2 set #result setwindowtext (#handleWin, misc t1t='Хп: ' + '#hp') //Динамическое изменение текста1 wait 100 set #hp #hp + 5 if #hp < 101 goto re2 end_if  end_script Выключается нажатием искейпа если активно его окно, либо из скрипта: 
Код set clipboard misc game_end() Изменение размера окна: 
Код set clipboard misc room_set_width(0,400) //Ширина (0, w). wait 20 set clipboard misc room_set_height(0,20) //Высота (0, h). wait 20 set clipboard misc room_restart()//Перезапуск окна, после этого все настройки сбиваются, поэтому делается в первую очередь. wait 20 end_script  
Выполнение кода в миске происходит 1 раз при таком обращении: Код set clipboard misc room_set_height(0,20) или в альтернативном: set #handleWin findwindow (Misc_uopilot) //Получение хендла окна миска set #result setwindowtext (#handleWin, misc e_stp0='draw_rect_screen(1100,0,1150,20)') (Функция room_set_height(0,20) заносится в строковую переменную и выполняется, после чего переменная очищается(это может быть и не функция а большой кусок кода)) Для многократного выполнения есть спец переменные в которых код не очищается и выполняется 1 раз каждый шаг, шаг можно изменить, и пока он по умолчанию 5мс (200 раз в секунду=фпс 200) Обычные функции требующие постоянного выполнения должны быть в событии Step: e_stp0, e_stp1, e_stp2... e_stp10 Функции рисования должны быть в событии Draw:(за исключением функций рисования вне окна, они могут быть в step) e_drw0, e_drw1, e_drw2... e_drw10 Также есть таймерные события отличающиеся от step только тем что выполняются раз в 10, 100, 1000 шагов(IMG: style_emoticons/default/sad.gif)для повышения производительности) e_slow10 e_slow100 e_slow1000 Таким образом можно засунуть свой код в строковую переменную(например e_slow10), обработчик будет постоянно его выполнять до тех пор пока не завершена программа или не будет очищена переменная: Код set clipboard misc e_slow10='room_set_height(0,20)' set clipboard misc e_slow10=''  
Отличие лишь в том что при таком обращении код помещается не в буфер а в заголовок окна миска, где он успешно отлавливается и выполняется, затем заголовок возвращается в исходное состояние:(misc_uopilot). Код set linedelay 0 set #handleWin findwindow (Misc_uopilot) //Получение хендла окна миска set #result setwindowtext (#handleWin, misc e_stp0='draw_rect_screen(1100,0,1150,20)') //Установка кода в качестве заголовка, через несколько мс вернется обратно //Обратная связь set $x 100 set #result setwindowtext (#handleWin, misc clipboard_set_text(string(random($x)))// Ответ будет в буфере set #result setwindowtext (#handleWin, misc room_caption=string(random($x))//Ответ будет в заголовке wait 2 set $x2 GetWindowtext (#handleWin) //Получаем ответ из заголовка, можно не успеть забрать или опоздать, до изменения заголовка обратно wait 20 get clipboard $x //Получаем ответ из буфера, намного надежнее msg $x $x2 end_script Графика на экране: 
Есть функции рисования которых нет в документации (потому что они из дллки), полезны тем что в отличие от стандартных позволяют рисовать вне окна то есть в любом месте экрана: (линии, текст, прямоугольники) Код set linedelay 20 set clipboard misc set_pen(1,c_red) //Установка ширины линии и цвета(ширина, цвет). set clipboard misc set_brush(c_lime) //Установка цвета прямоугольника(цвет). set clipboard misc e_slow100='draw_rect_screen(1100,0,1150,20)' //Функция рисования прямоугольников на экране(лево, право, верх, низ). set clipboard misc e_drw0='draw_rect_screen(1155,0,1175,20)' set clipboard misc e_slow10='draw_line_screen(10,10,300,10)' //Функция рисования линий на экране(x1, y1, x2, y2). set clipboard misc e_stp0='draw_text_screen(1000,1,"Misc Uopilot",c_aqua)'//Функция рисования текста на экране(x, y, текст, цвет). //еще есть рисование текстуры но по крайней мере у меня оно начинает глючить через несколько минут //set clipboard misc pic = load_bitmap("1test.bmp") //Загрузка текстуры. //set clipboard misc e_stp1='draw_bitmap_screen(pic,400,0)'//Функция рисования текстуры на экране(x, y, текст, цвет). end_script Пример обратной связи: 
Код set $x 100 set clipboard misc clipboard_set_text(string(random($x))) wait 20 get clipboard $x set clipboard "" msg $x end_script Скачать Misc Uopilot и документацию: 
Дополнительное дополнение добавленное позже: 
Дополнительно по миску, это отдельная программка, может взаимодействовать с пилотом, скомпилирована в движке game maker 8.0(или 8.1) . Миск может ВСЕ что есть в этом движке через выполнение кода движка (GML внутренний язык движка для программирования), именно этот код посылается из пилота в миск. Из этого следует, что для того что бы хорошо понять как работать с миском нужно знать этот движок. Если вы не знаете этот двиг, вы все равно можете хорошо понять что к чему если вы программист, по примерам, по приложенной документации движка. Если вы не знаете ни движок ни программирование (нормальное), вы не сможете хорошо понять как использовать миск, если только не потратите много времени на осознание и медитацию над пилотом и GM (время может быть меньше если вы уже знаете пилот, javascript и зашкаливает мотивация). Под "хорошо понять что к чему" имеется ввиду возможность делать действительно сложные вещи, такие как сеть, навороченный интерфейс или сложная игровая графика с логикой. Развивать миск можно но только в направлении уменьшения кода задач пользователей и удобства. http://rutracker.org/forum/viewtopic.php?t=2573603 Game Maker v8.0 Pro  
			
			
  -------------------- 
					
		 | 
	 
	
		| 
			
		 | 
		
			
			
			
         	
          | 
	 
	| 
	
	 | 
 
 
 
	
		   | 
		   | 
	 
 
	Ответов	 
	
		| EL-GReeN | 
		
			
			
				   3.11.2012, 10:13
			 
			
			
		 | 
	 
	
		
        	 
  
        		     
  
        		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.
 
  
			
			
  -------------------- 
					
		 | 
	 
	
		| 
			
		 | 
		
			
			
			
         	
          | 
	 
	| 
	
	 | 
 
 
 
	Сообщений в этой теме 
	   EL-GReeN   Misc Uopilot - GML Прибамбасы к пилоту   29.7.2012, 19:58    DarkMaster   А более приземленно можно пояснить что это такое? ...   29.7.2012, 22:16     EL-GReeN   
А более приземленно можно пояснить что это такое?...   29.7.2012, 22:32    Zeleax   Мне тоже и интересно - что там есть такого, чего н...   29.7.2012, 22:24    DarkMaster   Дык есть плагины, которые позволяют передавать стр...   29.7.2012, 22:34    DarkMaster   EL-GReeN, я те в глаз дам. Сейчас сижу смотрю на ф...   29.7.2012, 23:59    Zeleax   А не лучше ли направить усилия на разработку соотв...   30.7.2012, 11:28     EL-GReeN   
А не лучше ли направить усилия на разработку соот...   30.7.2012, 12:24    WKnight   Начиная с версии 1.07 beta x, пилот умеет общаться...   30.7.2012, 12:31     Zeleax   Буфер сегодня ковырял, подозреваю что ускорить его...   30.7.2012, 12:37    WKnight   Буфер как-раз по этому поводу и ковырял.
Есть зар...   30.7.2012, 12:58    EL-GReeN   Добавил еще 1 способ обращения через заголовок, от...   30.7.2012, 16:10    DarkMaster   Собственно с темой надо что-то делать. Терять ее в...   2.8.2012, 3:56    EL-GReeN   Предлагаю эту тему оставить как есть найти не проб...   2.8.2012, 12:01    DarkMaster   шибко не вчитывался,  вроде норм. Завтра тему поле...   2.8.2012, 12:45    WKnight   Буфер поправлен, а про какие операции с файлами и ...   3.8.2012, 2:37    Zeleax   Да это я для обощения ситуации написал. Траблов вр...   3.8.2012, 9:13    asdvo1ty   Ссылки побились. Перезалейте, пожалуйста.   4.9.2012, 12:38    Zeleax   EL-GReeN писал:
Попробуйте скачать и запустить пр...   2.11.2012, 16:37    Zeleax   Хороший пример использования проверки зажатых клав...   17.3.2013, 14:15    IvaniuS   скажу больше - для удобства можно писать текст про...   18.3.2013, 16:05    Zeleax   так ведь можно просто одну длинную строку разбить ...   18.3.2013, 20:30 
	
 
	2 чел. читают эту тему (гостей: 2, скрытых пользователей: 0) 
	Пользователей: 0  
 
        				  
  | 
 |