SmoksTER
offline
Опыт:
483Активность: |
Передача в функцию группу юнитов, как?
вчера взялся за джас чисто ради спортивного интереса=) написал необходимую функцию, суть которой нанесение дамага + всмлывающий текст (Число этого дамага) - собстно ради того что бы не писать везде где понадобится данное действие кучу тригеров.
Итак.. Функция вызывается по её названию и параметрами:
вызываться функция должна sc из любого тригера
С таргетом путем передачи юнитов Кастующего = u и таргет каста u2 - все работает (мб и не сложно но первая функция все таки =) )
Думал аое касты будут так же работать только надо будет сделать Пикнутый юнит = u2 (во время пика юнитов в радиусе) и фигугадал =)
вопрос 1) как реализовать передачу в функцию юнитов из тригера типо:
pick every unit in (в радиусе 400 от позиции кастера (логические условия..))
цикл - действия cs: call damage ( GetSpellAbilityUnit(), "тут должен передаваться u2", 1, udg_attack[GetConvertedPlayerId(GetOwningPlayer(GetSpellAbilityUnit()))], udg_deff[GetConvertedPlayerId(GetOwningPlayer("тут должен передаваться u2"))], 600,00) вопрос 2) не получается присвоить integer A значение массива udg_attack[...] в самой функции
для этого пишу
local integer a = udg_attack[GetConvertedPlayerId(GetOwningPlayer(GetOwningPlayer(u2))] как использовать в функции 2 глобальные переменные (использовать их значения)
вопрос 3) в момент передачи значения через cs: игрок Красный=1?(а не 0) судя по дамагу так и есть...
хм... надеюсь мое изложение сути проблемы будет понятным не только мне =) |
03.02.2011, 09:06 | #1
+0/−0
Профиль |
Приват |
Поиск |
Цитата |
IP: Записан
|
Dreii
define{name=Dreii age=17}
offline
Опыт:
5,246Активность: |
SmoksTER, юзай хеш
|
03.02.2011, 11:31 | #2
+0/−0
Профиль |
Приват |
Поиск |
Цитата |
IP: Записан
|
SmoksTER
offline
Опыт:
483Активность: |
Dreii:
в джасе? или тригерах?=)
если в тригерах... возможно это и есть лучший вариант решения моей простой функции, но дело в том что джас то интереснее, поэтому и взялся. |
03.02.2011, 11:54 | #3
+0/−0
Профиль |
Приват |
Поиск |
Цитата |
IP: Записан
|
Hanabishi
COOL STATUS
offline
Опыт: отключен
|
SmoksTER, про GetEnumUnit() никогда не слышал?)
Hanabishi добавил:
|
03.02.2011, 13:09 | #4
+0/−0
Профиль |
Приват |
Поиск |
Цитата |
IP: Записан
|
SmoksTER
offline
Опыт:
483Активность: |
Hanabishi:
GetEnumUnit() пробовал, и на всякий случай попробовал GetFilterUnit()
а GetTriggerUnit() - передает кастера столько раз сколько раз идет пик (сколько юнитов проходят логические проверки в радиусе 400) собстно при написании "этого чуда" =) я думал что она будет работать с Picked Unit который как я узнал в момент написания превращается в GetEnumUnit()
по идее... должно передавать?... т.е. искать ошибку в других местах? или пробовать другие способы передачи? Отредактировано SmoksTER, 03.02.2011 в 13:42. |
03.02.2011, 13:15 | #5
+0/−0
Профиль |
Приват |
Поиск |
Цитата |
IP: Записан
|
Hanabishi
COOL STATUS
offline
Опыт: отключен
|
SmoksTER, GetEnumUnit() и возвращает как раз пикнутого юнита ищи ошибки |
03.02.2011, 13:20 | #6
+0/−0
Профиль |
Приват |
Поиск |
Цитата |
IP: Записан
|
SmoksTER
offline
Опыт:
483Активность: |
Ребят, вопрос 1 исчерпан, попробовал закоментить строку ожидания перед нанесением дамага. поставил GetEnumUnit() и все стало работать, хотя не понял это если между u и u2 расстояние предположим 400 / speed то должно быть ожидание перед дамагом 0,67 секунды если я ничего не путаю.
Есть подозрение что функция используется много раз (равное кол-ву юнитов в радиусе) и поэтому не успевает нанести повреждение, т.к. начинается каждый раз снова раньше чем проходит вэйт в 0.67 секунды... прав ли я?
а то я думал функции джаса "локальны" столько функций работают в один раз сколько к ним обращаещься...
собственно вырисовывается вопрос =) как придать функции эти "свойства локальной переменной" что бы её могли юзать разные игроки в один момент и т.д.
и еще если вообще убрать паузу даже при работе с таргетом, и сделать вызов функции после аналогичного вэйта, будет ли возможно использовать её в таком виде разными игроками, юнитами и т.д.? |
03.02.2011, 13:42 | #7
+0/−0
Профиль |
Приват |
Поиск |
Цитата |
IP: Записан
|
Hanabishi
COOL STATUS
offline
Опыт: отключен
|
SmoksTER, пик юнитов сравним с циклом, т.е. следующий виток не пойдёт пока не закончится первый, отсюда если есть вейт - он его ждёт, и только потом начинает обрабатыать следующего юнита
если вейт так необходим, то юзай таймер+хэш а сможет ли работать сразу для всех - зависит от того, как ты это реализуешь |
03.02.2011, 21:54 | #8
+0/−0
Профиль |
Приват |
Поиск |
Цитата |
IP: Записан
|
DioD
offline
Опыт:
45,134Активность: |
без реального кода данная тема лишена смысла, сначала пиши код, а потом пиши контерные линии\строки\данные которые ты не можешь передать.
закрыто, как сделаешь пиши новую тему. напоминаю, что для передачи данных куда либо нужен якорь, нет якоря, неоткуда брать данные. |
04.02.2011, 10:24 | #9
+0/−0
Профиль |
Приват |
Поиск |
Цитата |
IP: Записан
|