|
|
|
|
Изменение положения юнита в пространстве
|
|
Metanol | Дата: Вторник, 05 Октября 2010, 21:13:42 | Сообщение # 1 |
Группа: Заблокированные
Сообщений: 4565
Награды: 11
Репутация: 1884
Блокировки:
| Подскажите как сделать такой тригг: Существует юнит который ходит вокруг карты по заданному маршруту по часовой стрелке. Если этого юнита убить, то того юнита, что убил, перенесёт в позицию равную расстояния между точкой в которой юнит был убит и центром карты, но на 180 градусов(тоесть что-то вроде - юнит был в точке Х = 4, значит перенести его в точку Х = -4 (ну это если приводить пример относительно оси Х ) Знает кто-нибудь как так сделать?
новый акк: http://warcraft3ft.info/index/8-70993
|
|
|
|
EdiTTORR | Дата: Вторник, 05 Октября 2010, 21:37:19 | Сообщение # 2 |
8 уровень
Группа: Проверенные
Сообщений: 585
Награды: 0
Репутация: 147
Блокировки:
| Code local unit u=GetDyingUnit() call CreateUnit(GetOwningPlayer(u),GetUnitTypeId(u),GetUnitX(u)+180,GetUnitY(u)+180) set u=null Скопируй или Custom Script.
Местами здесь.
Сообщение отредактировал EdiTTORR - Вторник, 05 Октября 2010, 22:12:08 |
|
|
|
[san9] | Дата: Вторник, 05 Октября 2010, 21:50:11 | Сообщение # 3 |
10 уровень
Группа: Проверенные
Сообщений: 1500
Награды: 1
Репутация: 286
Блокировки:
| Metanol, В чём проблема? Указываеш точку позиция юнита умирающий юнит. Потом двигаеш поляркой Боевая еденица - Двигать юнит мгновенно - точка с пол смещ - Позиция юнита убивающий юнит смещение на (математика - расстояние между точками tochka и центр зоны игровой карты) по отоношению 180 градусам.
|
|
|
|
EdiTTORR | Дата: Вторник, 05 Октября 2010, 21:51:44 | Сообщение # 4 |
8 уровень
Группа: Проверенные
Сообщений: 585
Награды: 0
Репутация: 147
Блокировки:
| [san9], я тебя на костре сожгу за полярки, пусть юзает код, он великолепен!
Местами здесь.
Сообщение отредактировал EdiTTORR - Вторник, 05 Октября 2010, 21:58:29 |
|
|
|
[san9] | Дата: Вторник, 05 Октября 2010, 21:55:19 | Сообщение # 5 |
10 уровень
Группа: Проверенные
Сообщений: 1500
Награды: 1
Репутация: 286
Блокировки:
| Quote (EdiTTORR) [san9], я тебя на костре сожгу за полярки, пусть юзает код, он великолепен! Я навёл на мыслю как. А jass\gui это его проблемы. Quote (EdiTTORR) local unit u=GetDyingUnit() call CreateUnit(GetOwningPlayer(u),GetUnitTypeId(u),GetUnitX(u)+180,GetUnitY(u)+180) set u=null
|
|
|
|
Kr0nus | Дата: Вторник, 05 Октября 2010, 22:01:16 | Сообщение # 6 |
6 уровень
Группа: Проверенные
Сообщений: 192
Награды: 0
Репутация: 220
Блокировки:
| EdiTTORR, У тебя в коде создание юнита,а ему надо : Quote (Metanol) того юнита, что убил
Сообщение отредактировал Kr0nus - Вторник, 05 Октября 2010, 22:01:33 |
|
|
|
EdiTTORR | Дата: Вторник, 05 Октября 2010, 22:03:14 | Сообщение # 7 |
8 уровень
Группа: Проверенные
Сообщений: 585
Награды: 0
Репутация: 147
Блокировки:
| Тупанул, [san9], Kr0nus спасибо что намекнули Code local unit u=GetDyingUnit() call SetUnitX(u,GetUnitX(u)+180) call SetUnitY(u,GetUnitY(u)+180) set u=null О:Позиция юнита+180 1)Поясню: сначала двигаешь труп, потом воскрешаешь. 2)Можно и так: сначала сохраняешь точку гибели, воскрешаешь, двигаешь. По мне 1 вериант лучше.
Местами здесь.
Сообщение отредактировал EdiTTORR - Вторник, 05 Октября 2010, 22:12:41 |
|
|
|
Metanol | Дата: Вторник, 05 Октября 2010, 22:23:43 | Сообщение # 8 |
Группа: Заблокированные
Сообщений: 4565
Награды: 11
Репутация: 1884
Блокировки:
| Чёт не работает. Можете написать действие в триггерном виде, а не в сокращёном?
новый акк: http://warcraft3ft.info/index/8-70993
|
|
|
|
EdiTTORR | Дата: Вторник, 05 Октября 2010, 22:28:50 | Сообщение # 9 |
8 уровень
Группа: Проверенные
Сообщений: 585
Награды: 0
Репутация: 147
Блокировки:
| CustomScript:local unit u=GetDyingUnit() //это в самом начале триггера CustomScript:call SetUnitX(u,GetUnitX(u)+180) CustomScript:call SetUnitY(u,GetUnitY(u)+180) CustomScript:set u=null а потом воскрешай его
Местами здесь.
|
|
|
|
Metanol | Дата: Вторник, 05 Октября 2010, 22:30:27 | Сообщение # 10 |
Группа: Заблокированные
Сообщений: 4565
Награды: 11
Репутация: 1884
Блокировки:
| EdiTTORR, напиши на обычных триггерах
новый акк: http://warcraft3ft.info/index/8-70993
|
|
|
|
EdiTTORR | Дата: Вторник, 05 Октября 2010, 22:36:57 | Сообщение # 11 |
8 уровень
Группа: Проверенные
Сообщений: 585
Награды: 0
Репутация: 147
Блокировки:
| Я знаю как это на об.триггерах? Я ими не пользуюсь. Те так сложно это в триггере сделать Custom Script-ом?(действие где-то возле wait)
Местами здесь.
Сообщение отредактировал EdiTTORR - Вторник, 05 Октября 2010, 22:41:56 |
|
|
|
[san9] | Дата: Вторник, 05 Октября 2010, 22:38:49 | Сообщение # 12 |
10 уровень
Группа: Проверенные
Сообщений: 1500
Награды: 1
Репутация: 286
Блокировки:
| EdiTTORR, А где подсчёт от точки умирающего юнита до центра? Както так будет Code local unit u = GetKillingUnit() local unit a = GetDyingUnit() local real x = GetUnitX(a) local real y = GetUnitY(a) local location i = Location( x,y) local real r = DistanceBetweenPoints(i,GetRectCenter(GetPlayableMapRect())) set x = GetUnitX(u)+r*Cos(180) set y = GetUnitY(u)+r*Cos(180) call SetUnitPosition (u,x,y) set a = null set u = null
Сообщение отредактировал [san9] - Вторник, 05 Октября 2010, 22:39:13 |
|
|
|
Metanol | Дата: Вторник, 05 Октября 2010, 22:41:03 | Сообщение # 13 |
Группа: Заблокированные
Сообщений: 4565
Награды: 11
Репутация: 1884
Блокировки:
| EdiTTORR, мне пишет ошибку: отсутствует оператор кода.
новый акк: http://warcraft3ft.info/index/8-70993
|
|
|
|
EdiTTORR | Дата: Вторник, 05 Октября 2010, 22:42:50 | Сообщение # 14 |
8 уровень
Группа: Проверенные
Сообщений: 585
Награды: 0
Репутация: 147
Блокировки:
| [san9], ты гений! Metanol, мне не пишет
Местами здесь.
|
|
|
|
[san9] | Дата: Вторник, 05 Октября 2010, 22:48:09 | Сообщение # 15 |
10 уровень
Группа: Проверенные
Сообщений: 1500
Награды: 1
Репутация: 286
Блокировки:
| Metanol, Ты случайно не так встовляеш? Code CustomScript:call SetUnitX(u,GetUnitX(u)+180) Вместо Code call SetUnitX(u,GetUnitX(u)+180) Добавлено (05-10-2010, 22:48) --------------------------------------------- Metanol, И кстате на будущее если не знаеш Надо встовлять по строчке если используеш CS. Тоесть: 1 действие: local unit u = GetKillingUnit() 2 действие: local unit a = GetDyingUnit() и т.д
|
|
|
|
EdiTTORR | Дата: Вторник, 05 Октября 2010, 22:50:44 | Сообщение # 16 |
8 уровень
Группа: Проверенные
Сообщений: 585
Награды: 0
Репутация: 147
Блокировки:
| [san9], пару ошибочек было Code local unit u=GetDyingUnit() local real x=GetRectCenterX(bj_mapInitialPlayableArea)-GetUnitX(u) local real y=GetRectCenterY(bj_mapInitialPlayableArea)-GetUnitY(u) call SetUnitX(u,GetUnitX(u)+SquareRoot(x*x+y*y)*Cos(180)) call SetUnitY(u,GetUnitY(u)+SquareRoot(x*x+y*y)*Sin(180)) set u=null
Местами здесь.
Сообщение отредактировал EdiTTORR - Вторник, 05 Октября 2010, 22:54:12 |
|
|
|
Metanol | Дата: Вторник, 05 Октября 2010, 22:53:14 | Сообщение # 17 |
Группа: Заблокированные
Сообщений: 4565
Награды: 11
Репутация: 1884
Блокировки:
| [san9], помогло, но тригг работает не так. Мне надо чтобы юнит перемещался по такому принципу: Чёрная точка - это центр карты. А красные и синие линии показывают в качестве примера как должно поменятся положение юнита(разумеется сразу переместиться в точку, а не по дуге(просто в качестве графического примера привёл, что нужно)).
новый акк: http://warcraft3ft.info/index/8-70993
|
|
|
|
[san9] | Дата: Вторник, 05 Октября 2010, 22:59:33 | Сообщение # 18 |
10 уровень
Группа: Проверенные
Сообщений: 1500
Награды: 1
Репутация: 286
Блокировки:
| Metanol, А зачем это? Как ты сказал так оно и перемещает) Quote (Metanol) в позицию равную расстояния между точкой в которой юнит был убит и центром карты
|
|
|
|
Metanol | Дата: Вторник, 05 Октября 2010, 23:02:59 | Сообщение # 19 |
Группа: Заблокированные
Сообщений: 4565
Награды: 11
Репутация: 1884
Блокировки:
| EdiTTORR, в твоём новом тригге у меня ошибок теперь больше и они повторяются: Неподходящий тип указаного оператора Отсутствует символ ) Отсутствует название Отсутствует название Отсутствует оператор кода Отсутствует оператор кода Отсутствует оператор кода Добавлено (05-10-2010, 23:02) --------------------------------------------- [san9], по триггу он перемещает не так: А так:
новый акк: http://warcraft3ft.info/index/8-70993
|
|
|
|
[san9] | Дата: Вторник, 05 Октября 2010, 23:03:15 | Сообщение # 20 |
10 уровень
Группа: Проверенные
Сообщений: 1500
Награды: 1
Репутация: 286
Блокировки:
| Metanol, Чтото ты запутал) Давай ещё раз чёткий вопрос))
|
|
|
|
Metanol | Дата: Вторник, 05 Октября 2010, 23:07:10 | Сообщение # 21 |
Группа: Заблокированные
Сообщений: 4565
Награды: 11
Репутация: 1884
Блокировки:
| [san9], ну смотри: Есть центр карты, а есть юнит который стоит на 500 от центра карты(юг), если этого юнита убить, то тот кто убил будет перенесён на 500 от центра карты, но уже на север.
новый акк: http://warcraft3ft.info/index/8-70993
|
|
|
|
[san9] | Дата: Вторник, 05 Октября 2010, 23:10:20 | Сообщение # 22 |
10 уровень
Группа: Проверенные
Сообщений: 1500
Награды: 1
Репутация: 286
Блокировки:
| Metanol, Ну так ты поставь сам градус. 180 это градус по которому ты сказал двигать.
|
|
|
|
Metanol | Дата: Вторник, 05 Октября 2010, 23:13:49 | Сообщение # 23 |
Группа: Заблокированные
Сообщений: 4565
Награды: 11
Репутация: 1884
Блокировки:
| [san9], вот теперь работает. Надо было поставить ноль, а не 180. Ошибся в числах.
новый акк: http://warcraft3ft.info/index/8-70993
|
|
|
|
kurtdn | Дата: Вторник, 05 Октября 2010, 23:51:14 | Сообщение # 24 |
7 уровень
Группа: Проверенные
Сообщений: 374
Награды: 0
Репутация: 45
Блокировки:
| Саня,а зачем у тебя локалка i если ты ее не используешь?
|
|
|
|
[san9] | Дата: Среда, 06 Октября 2010, 00:06:34 | Сообщение # 25 |
10 уровень
Группа: Проверенные
Сообщений: 1500
Награды: 1
Репутация: 286
Блокировки:
| Quote (kurtdn) Саня,а зачем у тебя локалка i если ты ее не используешь? Использую local real r = DistanceBetweenPoints(i,GetRectCenter(GetPlayableMapRect()))
|
|
|
|
|
|
|
|
|
|
|