Сейчас 19:41:00 Понедельник, 25 ноября, 2024 год
[ x ] Главная ⇒ Форум ⇐ RSS Файлы Cтатьи Картинки В о й т и   или   з а р е г и с т р и р о в а т ь с я


[ Новые сообщения · Участники · Правила форума · Поиск · RSS ]
  • Страница 1 из 1
  • 1
Модератор форума: PUVer, SirNikolas, Ty3uK  
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 без чека координат на выход за пределы карты- верный путь к случайному вылету

╭∩╮(︶︿︶)╭∩╮
"Ульта Тайда мне в жопу!" © k0fe1n
Статьи: MUI-1|MUI-2|Шрифт
Полезности: JASP|JNGP|Уголок библиотек
 

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
Блокировки:
Оно не двигает, а дает координату юнита -_-

╭∩╮(︶︿︶)╭∩╮
"Ульта Тайда мне в жопу!" © k0fe1n
Статьи: MUI-1|MUI-2|Шрифт
Полезности: JASP|JNGP|Уголок библиотек
 

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, а гетюниткоордината на гетвиджет координата. И будет ок. Бтв, если нужно двигать на известный угол, то его лучше сразу в радианах написать. Вроде все

╭∩╮(︶︿︶)╭∩╮
"Ульта Тайда мне в жопу!" © k0fe1n
Статьи: MUI-1|MUI-2|Шрифт
Полезности: JASP|JNGP|Уголок библиотек
 

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, а гетюниткоордината на гетвиджет координата. И будет ок. Бтв, если нужно двигать на известный угол, то его лучше сразу в радианах написать. Вроде все

вызов переменной бж_дегтурад не очень то нагрузка, про гетвиджет все верно и спорить нет смысла.
Бтв, кажись дегтурад - жирная дробь и замена её на короткую может спровоцировать погрешность (впрочем переписать от руки ту дробь целиком тоже никто не запрещает).

Ответ дан, темку крою )


 

  • Страница 1 из 1
  • 1
Поиск:

Copyright © 2006 - 2024 Warcraft3FT.info При копировании материалов c сайта ставьте, пожалуйста, активную обратную ссылку на нас • Design by gReeB04ki ©
Хостинг от uCoz