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


[ Новые сообщения · Участники · Правила форума · Поиск · RSS ]
  • Страница 1 из 2
  • 1
  • 2
  • »
Модератор форума: PUVer, SirNikolas, Ty3uK  
Форум о Warcraft 3 » Раздел для картостроителей » Вопросы по картостроению » Изменение положения юнита в пространстве
Изменение положения юнита в пространстве
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], я тебя на костре сожгу за полярки, пусть юзает код, он великолепен! lol

Местами здесь.


Сообщение отредактировал 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

lol


 

Kr0nusДата: Вторник, 05 Октября 2010, 22:01:16 | Сообщение # 6
6 уровень
Группа: Проверенные
Сообщений: 192
Награды: 0
Репутация: 220
Блокировки:
EdiTTORR, У тебя в коде создание юнита,а ему надо :
Quote (Metanol)
того юнита, что убил

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, мне не пишет blink


Местами здесь.
 

[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)

:D

Добавлено (05-10-2010, 22:48)
---------------------------------------------
Metanol,
И кстате на будущее если не знаеш :D
Надо встовлять по строчке если используеш 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,
Ну так ты поставь сам градус.

Quote (|san9|)
Cos(180)

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()))


 

Форум о Warcraft 3 » Раздел для картостроителей » Вопросы по картостроению » Изменение положения юнита в пространстве
  • Страница 1 из 2
  • 1
  • 2
  • »
Поиск:

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