SetUnitX и SetUnitY
|
|
oleg_best_oleg | Дата: Пятница, 03 Февраля 2012, 11:28:04 | Сообщение # 1 |
Группа: Заблокированные
Сообщений: 1726
Награды: 0
Репутация: 654
Блокировки:
| Можно пример, как периодически двигать юнита с помощью SetUnitX, SetUnitY ?
|
|
|
|
Banzay89 | Дата: Пятница, 03 Февраля 2012, 11:31:16 | Сообщение # 2 |
9 уровень
Группа: Проверенные
Сообщений: 858
Награды: 1
Репутация: 77
Блокировки:
| кусочек кода с мит хука моего
Code function Meat_Hook_Actions_BACK_WITH takes nothing returns nothing local timer tt=GetExpiredTimer() local integer id=GetHandleId(tt) local unit g=LoadUnitHandle(udg_H, id, 0) local integer n=LoadInteger(udg_H, id, 5) local unit d if n!=0 then set d=LoadUnitHandle(udg_H, id, n) call SetUnitX(g,GetUnitX(d)) call SetUnitY(g,GetUnitY(d)) call RemoveUnit(d) set n=n-1 call SaveInteger(udg_H, id, 5, n) else call PauseTimer(tt) call FlushChildHashtable(udg_H, id) call DestroyTimer(tt) endif set tt=null set d=null set g=null endfunction
|
|
|
|
oleg_best_oleg | Дата: Пятница, 03 Февраля 2012, 11:37:28 | Сообщение # 3 |
Группа: Заблокированные
Сообщений: 1726
Награды: 0
Репутация: 654
Блокировки:
| Quote (Banzay89) GetUnitX(d) GetUnitY(d) Это получается позиция юнита "d" ?
|
|
|
|
Ty3uK | Дата: Пятница, 03 Февраля 2012, 11:44:40 | Сообщение # 4 |
Группа: Ветераны
Сообщений: 6125
Награды: 2
Репутация: 1617
Блокировки:
| Используй GetWidgetX/Y - работает быстрее. Бтв, устанавливать позицию через SetUnitX/Y без чека координат на выход за пределы карты- верный путь к случайному вылету
|
|
|
|
oleg_best_oleg | Дата: Пятница, 03 Февраля 2012, 11:49:30 | Сообщение # 5 |
Группа: Заблокированные
Сообщений: 1726
Награды: 0
Репутация: 654
Блокировки:
| Quote (Ty3uK) GetWidgetX/Y А оно двигает без сбивания приказа ?
|
|
|
|
Ty3uK | Дата: Пятница, 03 Февраля 2012, 11:50:01 | Сообщение # 6 |
Группа: Ветераны
Сообщений: 6125
Награды: 2
Репутация: 1617
Блокировки:
| Оно не двигает, а дает координату юнита -_-
|
|
|
|
FkoFF | Дата: Пятница, 03 Февраля 2012, 11:50:13 | Сообщение # 7 |
Группа: Заблокированные
Сообщений: 4356
Награды: 1
Репутация: 1413
Блокировки:
| Перемещением куда?
local real x = GetUnitX(someunit) local real y = GetUnitY(someunit)
call SetUnitX(someunit, x+расстояние*Cos(угол*bj_DEGTORAD)) call SetUnitY(someunit, y+расстояние*Sin(угол*bj_DEGTORAD))
не действует на здания, не отменяет текущий приказ (юнит будет продолжать выполнять оный приказ). Работает быстрее чем setunitpos. П.С - это смещение по полярным координатам, безутечное в принципе.
|
|
|
|
Ty3uK | Дата: Пятница, 03 Февраля 2012, 11:54:15 | Сообщение # 8 |
Группа: Ветераны
Сообщений: 6125
Награды: 2
Репутация: 1617
Блокировки:
| Бж дегтурад заменяем на .017, а гетюниткоордината на гетвиджет координата. И будет ок. Бтв, если нужно двигать на известный угол, то его лучше сразу в радианах написать. Вроде все
|
|
|
|
oleg_best_oleg | Дата: Пятница, 03 Февраля 2012, 11:54:28 | Сообщение # 9 |
Группа: Заблокированные
Сообщений: 1726
Награды: 0
Репутация: 654
Блокировки:
| Quote (FkoFF) Перемещением куда? Ну думал попробовать сделать перемещения кастера прямо.
Quote (FkoFF) local real x = GetUnitX(someunit) local real y = GetUnitY(someunit)
call SetUnitX(someunit, x+расстояние*Cos(угол*bj_DEGTORAD)) call SetUnitY(someunit, y+расстояние*Sin(угол*bj_DEGTORAD)) Спасибо, попробую.
|
|
|
|
[DUОS] | Дата: Пятница, 03 Февраля 2012, 11:56:25 | Сообщение # 10 |
Группа: Заблокированные
Сообщений: 6279
Награды: 9
Репутация: 1708
Блокировки:
| Quote (FkoFF) local real x = GetUnitX(someunit) local real y = GetUnitY(someunit) Trash detected. Используем GetWidgetX и GetWidgetY.
|
|
|
|
FkoFF | Дата: Пятница, 03 Февраля 2012, 11:58:53 | Сообщение # 11 |
Группа: Заблокированные
Сообщений: 4356
Награды: 1
Репутация: 1413
Блокировки:
| Quote (Ty3uK) Бж дегтурад заменяем на .017, а гетюниткоордината на гетвиджет координата. И будет ок. Бтв, если нужно двигать на известный угол, то его лучше сразу в радианах написать. Вроде все вызов переменной бж_дегтурад не очень то нагрузка, про гетвиджет все верно и спорить нет смысла. Бтв, кажись дегтурад - жирная дробь и замена её на короткую может спровоцировать погрешность (впрочем переписать от руки ту дробь целиком тоже никто не запрещает).
Ответ дан, темку крою )
|
|
|
|