Что нового

Полупрямое управление в ивке

Zuzik

Знающий
Сообщения
45
Репутация
5
Честно скажу бота забросил, щас как-то не до него.
Но тут родилась другая идейка.

Полупрямое управлени, через аутоит.
Нажимаем стрелочки аутоит эмулирует даблклики по определённым зонам.
Код простой как два пальца....(тут только четыре направления реализованны, и не слишком манёвренные повороты)
Код:
$x=1280/8
$y=1024/8
func left()
	MouseClick ( "left",$x*3,$y*4 ,2,5)
EndFunc
func right()
	MouseClick ( "left",$x*5,$y*4 ,2,5)
EndFunc
func up()
	MouseClick ( "left",$x*4,$y*3 ,2,5)
EndFunc
func down()
	MouseClick ( "left",$x*4,$y*5 ,2,5)
EndFunc

While 1
	HotKeySet ( "{up}","up")
	HotKeySet ( "{down}","down")
	HotKeySet ( "{left}","left")
	HotKeySet ( "{right}","right")
WEnd



Всё бы хорошо, но есть одно НО. Камера при дабл клике не вращается вместе с кораблём.(
Это портит все планы.
Идей у меня нет. Но вдруг кого заинтересует возможность полетать?)
 

spider_xr

Знающий
Сообщения
14
Репутация
7
обычно в таких играх есть кнопка центрования камеры и игрока, дабавь кликанье по ней после каждого смешения(некоторое время или величену отклонения)

если это вообще комунибуть нужно.
 

Belfigor

Модератор
Локальный модератор
Сообщения
3 591
Репутация
938
Эта кнопка позволяет лишь приблизить камеру к кораблю, но не задать ей ротацию относительно корабля :smile:
 

AllWay

Знающий
Сообщения
16
Репутация
9
Zuzik сказал(а):
...
Всё бы хорошо, но есть одно НО. Камера при дабл клике не вращается вместе с кораблём.(
Это портит все планы.
Идей у меня нет. Но вдруг кого заинтересует возможность полетать?)
Задача: Повернуть камеру после дабл клика
Решение: Использовать команду MouseClickDrag ( "button", x1, y1, x2, y2 [, speed] )

Ver#1 ;ручное перемещение камеры
ALT+лево-право-вверх-низ (управление камерой)
CTRL+вверх-низ (приблизить-отдалить)

Код:
$x=1280/8
$y=1024/8
func CAMup()
	Opt("MouseClickDownDelay", 50)  
	MouseClickDrag("left", 640, $y*3.1, 640, $y*3, (2)) 
EndFunc

func CAMdown()
	Opt("MouseClickDownDelay", 50)  
	MouseClickDrag("left", 640, $y*5, 640, $y*5.1, (2)) 
EndFunc

func CAMleft()
	Opt("MouseClickDownDelay", 50)  
	MouseClickDrag("left", $x*3.1, 512, $x*3, 512, (2)) 
EndFunc
func CAMright()
    Opt("MouseClickDownDelay", 50)  
	MouseClickDrag("left", $x*5, 512, $x*5.1, 512, (2)) 
EndFunc

func CAMin()
MouseWheel("up", 5)
EndFunc

func CAMout()
MouseWheel("down", 5)
EndFunc

While 1
	HotKeySet ( "!{up}","CAMup") ;ALT+UP - камера вверх
    HotKeySet ( "!{down}","CAMdown") ;ALT+DOWN - камера вниз
	HotKeySet ( "!{left}","CAMleft") ;ALT+LEFT - камера влево
    HotKeySet ( "!{right}","CAMright") ;ALT+RIGHT - камера вправо

	HotKeySet ( "^{up}","CAMin") ;CTRL+UP - приблизить камеру
    HotKeySet ( "^{down}","CAMout") ;CTRL+DOWN - отдалить камеру
WEnd


Ver#2 ; перемещение камеры после дабл клика (ALL in ONE)

Код:
$x=1280/8
$y=1024/8
func left()
	Opt("MouseClickDelay", 100)  
	Opt("MouseClickDownDelay", 50)  
	MouseClick ( "left",$x*3,$y*4 ,2,5)
	
	Opt("MouseClickDownDelay", 50)  
	MouseClickDrag("left", $x*3.1, 512, $x*3, 512, (2)) 
EndFunc
func right()
    Opt("MouseClickDelay", 100)  
	Opt("MouseClickDownDelay", 50)  
	MouseClick ( "left",$x*5,$y*4 ,2,5)
	
	Opt("MouseClickDownDelay", 50)  
	MouseClickDrag("left", $x*5, 512, $x*5.1, 512, (2)) 
EndFunc
func up()
	Opt("MouseClickDelay", 100)  
	Opt("MouseClickDownDelay", 50)  
	MouseClick ( "left",$x*4,$y*3 ,2,5)

	Opt("MouseClickDownDelay", 50)  
	MouseClickDrag("left", 640, $y*3.1, 640, $y*3, (2)) 
EndFunc
func down()
	Opt("MouseClickDelay", 100)  
	Opt("MouseClickDownDelay", 50)  
	MouseClick ( "left",$x*4,$y*5 ,2,5)
	
	Opt("MouseClickDownDelay", 50)  
	MouseClickDrag("left", 640, $y*5, 640, $y*5.1, (2)) 
EndFunc

func CAMup()
	Opt("MouseClickDownDelay", 50)  
	MouseClickDrag("left", 640, $y*3.1, 640, $y*3, (2)) 
EndFunc

func CAMdown()
	Opt("MouseClickDownDelay", 50)  
	MouseClickDrag("left", 640, $y*5, 640, $y*5.1, (2)) 
EndFunc

func CAMleft()
	Opt("MouseClickDownDelay", 50)  
	MouseClickDrag("left", $x*3.1, 512, $x*3, 512, (2)) 
EndFunc
func CAMright()
    Opt("MouseClickDownDelay", 50)  
	MouseClickDrag("left", $x*5, 512, $x*5.1, 512, (2)) 
EndFunc

func CAMin()
MouseWheel("up", 5)
EndFunc

func CAMout()
MouseWheel("down", 5)
EndFunc

While 1
    HotKeySet ( "{up}","up")
    HotKeySet ( "{down}","down")
	HotKeySet ( "{left}","left")
    HotKeySet ( "{right}","right")

	HotKeySet ( "!{up}","CAMup") ;ALT+UP - камера вверх
    HotKeySet ( "!{down}","CAMdown") ;ALT+DOWN - камера вниз
	HotKeySet ( "!{left}","CAMleft") ;ALT+LEFT - камера влево
    HotKeySet ( "!{right}","CAMright") ;ALT+RIGHT - камера вправо

	HotKeySet ( "^{up}","CAMin") ;CTRL+UP - приблизить камеру
    HotKeySet ( "^{down}","CAMout") ;CTRL+DOWN - отдалить камеру
WEnd
 

Belfigor

Модератор
Локальный модератор
Сообщения
3 591
Репутация
938
Перемещение камеры это конечно хорошо, но как ты узнаешь куда камера смотрит прежде чем начать ее перемещать? Полезешь в память? Если залезешь и даш результаты думаю весь раздел ботоводов дружно скинется тебе исками на премию :smile:. Автоит - это не та платформа где не зная программные x,y,z,r, а располагая лишь графическими данными объекта можно будет организовать комфортное перемещение из пункта А в пункт Б по средством ручного управления :smile:
 

AllWay

Знающий
Сообщения
16
Репутация
9
Belfigor сказал(а):
Перемещение камеры это конечно хорошо, но как ты узнаешь куда камера смотрит прежде чем начать ее перемещать? ...
Как вариант, включить тактическую карту. Плоскость карты проходит через центр корабля, одна из 4 ближайших цифр (5) находится точно перед носовой частью корабля. Исходя из ее положения определяется куда смотрит камера.
 

Belfigor

Модератор
Локальный модератор
Сообщения
3 591
Репутация
938
Удачи вам в ваших начинаниях
. А что по мне, то тема мертвующая и бесполезная :smile:
 
Верх