Хм, а в чем разница таймера с периодик CustomScript на запуск функции движения для всех юнитов в группе? Для каждого юнита будет своя рандомная точка. Или принципиальной разницы нет?
Нет, я не понимаю что такое таймер и как правильно с ним работать, ибо четких статей о работе с таймерами не нашел и изучаю его методом тыка с помощью крох понятий о таймерах с других статей. Спасибо за ссылки, но там не по теме как минимум с- vJass' ом, а про оптимизацию.
Старт таймера в цикле дает запуск для срабатывания следующего таймера и в цикле тут уже после if - сотни таймеров одновременно не будет.
Разобраться в уже написанном триггере на джассе я могу, а вот сам пока пишу не идеально, с чем и проблемы. Хватит высокомерия.
Размер карты-то изначально известен, можно обойтись и рандомом между статичными цифирями. Думал над этим вариантом тоже, значит будем пользовать его. nvc123:
к слову этот вообще не рабочий ибо количество итераций циклов может превысить лимит потока и тогда триггер просто обрубится
Ставить таймеры по 0.5 сек? Такого вида?
loop
exitwhen IsUnitDeadBJ(BET) or BECo > 20
if (TimerGetRemaining(t) <= 0) then
call MoveLocation( p, GetRandomReal ( X1, X2), GetRandomReal (Y1, Y2))
call SetUnitMoveSpeed( BET, 500.00 )
call IssuePointOrderLocBJ( BET, "move", p )
set BECo = BECo + 0.5
call TimerStart(t, 0.5, false, null)
endif
endloop
Нужна модель стрелка верхом на баране, по аналогии с дворфийскими горцами из ВоВ.
Можно совместить 2 модели: стандартного стрелка с моделькой барана (есть в базе), только убрать анимацию низа стрелка при беге и барана при атаке, соотв. при атаке двигается верх стрелка, при беге - баран. Броня на баране опциональна (если импорт из ВоВ, только я там такого не нашел).
Анимации стандартные. Сроки не ограничены.
Название: Горный баран Метод: Не важен MUI: Обязательно Цель: Пассивная, сам юнит Количество уровней: 1 Описание: После исследования улучшения, юнит способен преодолевать подъемы/спуски на 1 уровень, но скорость во время преодоления замедляется до 200. Не может преодолевать подъем/спуск на 2 уровня, или 1+1 (сразу через 1 клетку еще один подъем, но не спуск). Визуально важно, чтобы юниты не летали друг над другом или над юнитами без способности. Технические характеристики: Крайне желательно обойтись без областей, так как на карте их будет слишком много. Однако подозреваю, что без них впринципе не обойтись.
Ясно, буду склеивать, единственное неудобство - копаться в большом триггере. Для нового спелла практичнее наверно будет сделать отдельный триггер, протестить, отполировать и подклеить в большой.
Через что уничтожаешь? Если через килл, то конечно умирает и нейтральный.
Если наносить от какого-то даммика урон в мильены, то не умрет нейтральный.
Можно от даммика развеяние нежити за 0.01 сек.
Заменять можно, внося значение золота в переменную и потом, создавая новый рудник, ставить количество золота в него из переменной, благо это даже в ГУИ реализовано.
А не легче, Target unit of ability being cast равно Casting unit в условиях?
чем оно легче? Не проверял, мб и так работает.
Сейчас у меня так сделано, работает. Легче тем, что 2 действия в редакторе, а не 4))).
Остался только один вопрос: как отделить иллюзий, созданных жезлом иллюзий (предметом), от способности героя? Поставить разные баффы? Базовый двойник, а на способность героя двойник2?
О, спасибо, столько накидали)
Разобрался кстати, почему не захватывало на суммонед - иллюзия не сразу создается, нужен вейт ~0.2 сек. Melissa:
Вызывает боевую единицу.
Тип вызванной = тип вызывающего
^ отлов иллюзии, если цель сам воин
А не легче, Target unit of ability being cast равно Casting unit в условиях? Melissa:
Триггерно иллюзию ведь не создать (для Last created unit)
дать руну со способностью жезла иллюзий ему
Я имел ввиду триггерно создать иллюзию через CreateUnit, т.е. полностью триггером, без любых способностей. quq_CCCP:
Почему это нет, Event_Unit_Summon и Summoned unit (событие именно конкретный юнит вызвал), так же EventUnitInRect (входит в область) и условие IsUnitIllusion И проверяем на бафф от жезла иллюзий у иллюзии (GetUnitAbilityLevel( u, 'B000') > 0)
А как в первом и втором способе исключить жезл иллюзий? Вторичные действия способности подразумевают именно иллюзию от использования способности.
ADD:
В игре есть еще способности, вешающие этот же баф, поэтому цели с бафом могут не быть целями каста, в таком случает считаются как с 1 стаком. (+50 манадамага)
Название; Чародейская стрела
МУИ: обязательно
Способ исполнения: Jass/GUI+Jass (желательно без v-/cJass)
Уровни: 5
Описание:
Герой метает во врага стрелу, которая снижает его броню на 2 ед. на 6 сек. и наносит 20/40/60/80/100 урона. Повторное метание стрелы в эту же цель в течении 6 сек. (пока висит дебаф!) поглощает до 10/20/30/40/50 доп. маны героя и наносит на соотв. урона больше, стакается бесконечно.
Если вокруг цели есть враги с этим же дебафом (400 аое), они взрываются, нанося себе половину от урона по первой цели (включая бонусный урон от маны) и с них снимается этот дебаф.
Примечания: При взрыве с основной цели дебаф не снимается и урон от взрыва ей не наносится. Если с цели сдиспелить дебаф, весь накопленный бонусный урон от маны обнуляется. Мана отнимается не сразу после каста, а при попадании по цели.
Пример: 5 ур. заклинания
1 каст: 100 урона и дебаф, взрыв на 50 урона
2 каст: 100 урона + 50 от маны +обновление дебафа, взрыв на 75 урона
3 каст: 100 урона +100 от маны (100 и поглощается) + обновление дебафа, взрыв на 100 урона
4 каст: 100 урона + 123 от маны (весь манапул после каста) + обновление дебафа, взрыв на 111 урона.
5 каст по цели без дебафа: 100 урона + дебаф, взрыв на 50 урона.
Странно, дома под рукой свежую версию не взял, может с чем-то конфликтует, может модель не та и прочее. Завтра переберу все заново.
ЗЫ уже было такое, что на чистой карте работает отлично, а на основной конфликты непонятно с чем.
Нда, действительно, сейчас нормально работает. Хотя я уже его столько раз менял, что мог сам исправить незаметно ошибку.
Один вопрос: что это было? Не захватывало из триг\каст юнит. Какая-то ошибка редактора реальна?
Так как по механике варика происходит замена юнита, любые Triggering unit или Casting unit к нему уже не относятся.
Вот это странно звучит
Странно, но это так: пробовал эффектом отследить, пробовал с дебагом. Если просто пикать юнитов без задержки, то в массив вносится два юнита, причем по первому урон всегда 0. Эффект без задержки не появляется на юните. С задержкой все ок (переход около 0.1 сек, меньше не пробовал). Еще прикол, что если дамажить кодом типа
function BRDamage takes integer i2 returns nothing
local unit u = udg_BRCaster[i2]
local real h = GetUnitStateSwap(UNIT_STATE_LIFE, u)
if udg_BRCount[i2] <= 20 then
call SetUnitLifeBJ( u, ( h - ( 0.02 * h ) ) )
call DisplayTextToForce( bj_FORCE_PLAYER[0], ( R2S(h) + " - " + I2S(udg_BRCount[i2]) ) ) // дебаг
set udg_BRCount[i2]=udg_BRCount[i2]+1
else
set udg_BRCaster[i2]=udg_BRCaster[udg_BRC]
set udg_BRCount[i2]=udg_BRCount[udg_BRC]
set udg_i2=udg_i2-1
set udg_BRC=udg_BRC-1
endif
set u = null
set h = 0
endfunction
и ивент "приводит способность в действие", то после окончания Эликсира первого юнита продолжает дамажить те же 10 сек. С "начинает направлять способность" такого нет. Т.е. Эликсир действует 2 раза - сначала меняет юниты один раз, по окончанию, снова переводит из 2 в 1. Вот такая особенность Эликсира ярости.
Суть способности: абила юзается, юнит заменяется другим с другим типом атаки, уроном и пр., но он получает дамаг в виде 4% от текущего хп в сек (я сделал по 2% каждые 0.5 сек, можно и меньше). Действует 10 сек.
Кастера отловить не проблема, проблема в том, что по механике варика (как написано в стартпосте) при Эликсире кастер заменяется другим юнитом, и все триг юнит, каст юнит и т.д. не относятся к нему. А мне нужно отловить итогового юнита и к нему применять действия (в моем случае периодик дамаг раз в 0.5 сек по 2% от текущего хп)
Можно баф, можно способность (все равно у героя изначально 2 уник способности), но и для того и для того нужен вейт в 0.1 сек, чего желательно избежать.
З.Ы. Сейчас работает нормально, но хочу оптимизировать и убрать вейт.
Нашел вот такой подобный кусок, правда он основан на библиотеках и с- или vJass и для предмета, но буду на его основе чего-то думать.
function OnAttack takes Item itm returns nothing
local Tower tower = itm.getCarrier()
set itm.userInt = itm.userInt +1
if itm.userInt == 5 then
call tower.addAttackCrit()
set itm.userInt = 0
endif
endfunction
создаём в ро способность на основе отравляющей атаки/сферы льда/любого другого орба с бафом со временем действия 0,01 сек
пихаем её в спелбук
запрещаем этот спелбук и даём его всем юнитам
если при получении урона на юните есть баф нашего орба значит урон нанесён рукой
иначе не рукой
как ты отлавливаешь урон с руки? Я не понял вообще причём тут орбы и огненный плащ.
Сейчас у меня счетчик срабатывает от любого урона через DamageTaken, в том числе и от огненного плаща, чего я хочу избежать. Через AttackingUnit работает криво-косо.
З.Ы. В ГУИ по быстрому посмотрел, нет условий на переменную с типом атаки, а сама переменная-то есть.
И чистый урон, у самого так сделано, но не нравится что все портит Огненный плащ, например, а ломать орбы не хочется юниту, он милишный.
И отображается крит неполный, попробую с GetEventDamage()
Суть критов была каждый 5й удар 100% крит.
Делал через AttackingUnit, но там настроить убирание спелбука с критом тяжело, так как для юнита с долгим замахом (тот же блейдмастер, у него от события Attacking до нанесения урона 1.15 сек) спелбук убирается до собственно нанесения урона и крита нет. Ставить вейты можно, но ненужно+влияет скорость атаки, будет успевать сделать по 2 крита при статичном вейте. 16GB:
ну вот допустим это 1.8-х крит из моей карты. Думаю тут ясно, что где
А Dm чему равен? Вне куска кода, сама суть вопроса)
Делал с DamageTaken*X, только при таком расчете крит сильно занижается.
Допустим, крит х3, дамаг 100. У цели снижение получаемого урона на 50%. Т.е. крит будет считаться от 50 дмг = 150 дамага всего будет наноситься триггерно, а получать - 150*0.5=75 урона всего. Вместо (100*3)/50=150. И цифирь крита будет отображаться не 300!, а 150!. Хотя базовые криты отображаются как раз в виде 300!.
А, не, не критично.
Хотел сделать триггерные криты, а откуда цифири базового дамага для них брать - хз. Будет значит рандом между мин.дмг+стат и макс.дмг+стат * множитель.
А по дамагтайпу не отследить? У обычной атаки вроде тип Физ-обычный, у других такого нет вроде.
» WarCraft 3 / Нужна помощь со спеллом.
» WarCraft 3 / Нужна помощь со спеллом.
Старт таймера в цикле дает запуск для срабатывания следующего таймера и в цикле тут уже после if - сотни таймеров одновременно не будет.
Разобраться в уже написанном триггере на джассе я могу, а вот сам пока пишу не идеально, с чем и проблемы. Хватит высокомерия.
» WarCraft 3 / Нужна помощь со спеллом.
nvc123: Ставить таймеры по 0.5 сек? Такого вида?
» WarCraft 3 / Нужна модель? - Вам сюда!
Можно совместить 2 модели: стандартного стрелка с моделькой барана (есть в базе), только убрать анимацию низа стрелка при беге и барана при атаке, соотв. при атаке двигается верх стрелка, при беге - баран. Броня на баране опциональна (если импорт из ВоВ, только я там такого не нашел).
Анимации стандартные. Сроки не ограничены.
» WarCraft 3 / Способности и алгоритмы на заказ
Заказ
Метод: Не важен
MUI: Обязательно
Цель: Пассивная, сам юнит
Количество уровней: 1
Описание: После исследования улучшения, юнит способен преодолевать подъемы/спуски на 1 уровень, но скорость во время преодоления замедляется до 200. Не может преодолевать подъем/спуск на 2 уровня, или 1+1 (сразу через 1 клетку еще один подъем, но не спуск). Визуально важно, чтобы юниты не летали друг над другом или над юнитами без способности.
Технические характеристики: Крайне желательно обойтись без областей, так как на карте их будет слишком много. Однако подозреваю, что без них впринципе не обойтись.
» WarCraft 3 / Оптимизация: один большой или много мелких?
» WarCraft 3 / Ребят в чём проблема? (нестандартный рудник проклятый)
» WarCraft 3 / Захват созданных иллюзий в переменные
Ред. Impertus
» WarCraft 3 / Захват созданных иллюзий в переменные
Разобрался кстати, почему не захватывало на суммонед - иллюзия не сразу создается, нужен вейт ~0.2 сек.
Melissa: А не легче, Target unit of ability being cast равно Casting unit в условиях?
Melissa: Я имел ввиду триггерно создать иллюзию через CreateUnit, т.е. полностью триггером, без любых способностей.
quq_CCCP: А как в первом и втором способе исключить жезл иллюзий? Вторичные действия способности подразумевают именно иллюзию от использования способности.
» WarCraft 3 / Способности и алгоритмы на заказ
В игре есть еще способности, вешающие этот же баф, поэтому цели с бафом могут не быть целями каста, в таком случает считаются как с 1 стаком. (+50 манадамага)
» WarCraft 3 / Способности и алгоритмы на заказ
МУИ: обязательно
Способ исполнения: Jass/GUI+Jass (желательно без v-/cJass)
Уровни: 5
Описание:
Герой метает во врага стрелу, которая снижает его броню на 2 ед. на 6 сек. и наносит 20/40/60/80/100 урона. Повторное метание стрелы в эту же цель в течении 6 сек. (пока висит дебаф!) поглощает до 10/20/30/40/50 доп. маны героя и наносит на соотв. урона больше, стакается бесконечно.
Если вокруг цели есть враги с этим же дебафом (400 аое), они взрываются, нанося себе половину от урона по первой цели (включая бонусный урон от маны) и с них снимается этот дебаф.
Примечания: При взрыве с основной цели дебаф не снимается и урон от взрыва ей не наносится. Если с цели сдиспелить дебаф, весь накопленный бонусный урон от маны обнуляется. Мана отнимается не сразу после каста, а при попадании по цели.
1 каст: 100 урона и дебаф, взрыв на 50 урона
2 каст: 100 урона + 50 от маны +обновление дебафа, взрыв на 75 урона
3 каст: 100 урона +100 от маны (100 и поглощается) + обновление дебафа, взрыв на 100 урона
4 каст: 100 урона + 123 от маны (весь манапул после каста) + обновление дебафа, взрыв на 111 урона.
5 каст по цели без дебафа: 100 урона + дебаф, взрыв на 50 урона.
Ред. Impertus
» WarCraft 3 / Обращение к юниту после морфа "Эликсиром ярости"
Нда, действительно, сейчас нормально работает. Хотя я уже его столько раз менял, что мог сам исправить незаметно ошибку.
Один вопрос: что это было? Не захватывало из триг\каст юнит. Какая-то ошибка редактора реальна?
» WarCraft 3 / Обращение к юниту после морфа "Эликсиром ярости"
» WarCraft 3 / Обращение к юниту после морфа "Эликсиром ярости"
Ред. Impertus
» WarCraft 3 / Обращение к юниту после морфа "Эликсиром ярости"
Ред. Impertus
» WarCraft 3 / Обращение к юниту после морфа "Эликсиром ярости"
» WarCraft 3 / Обращение к юниту после морфа "Эликсиром ярости"
» WarCraft 3 / Обращение к юниту после морфа "Эликсиром ярости"
Ред. Impertus
» WarCraft 3 / Захват урона юнита
Ред. Impertus
» WarCraft 3 / Захват урона юнита
» WarCraft 3 / Захват урона юнита
И отображается крит неполный, попробую с GetEventDamage()
» WarCraft 3 / Захват урона юнита
Делал через AttackingUnit, но там настроить убирание спелбука с критом тяжело, так как для юнита с долгим замахом (тот же блейдмастер, у него от события Attacking до нанесения урона 1.15 сек) спелбук убирается до собственно нанесения урона и крита нет. Ставить вейты можно, но ненужно+влияет скорость атаки, будет успевать сделать по 2 крита при статичном вейте.
16GB:
» WarCraft 3 / Захват урона юнита
Допустим, крит х3, дамаг 100. У цели снижение получаемого урона на 50%. Т.е. крит будет считаться от 50 дмг = 150 дамага всего будет наноситься триггерно, а получать - 150*0.5=75 урона всего. Вместо (100*3)/50=150. И цифирь крита будет отображаться не 300!, а 150!. Хотя базовые криты отображаются как раз в виде 300!.
» WarCraft 3 / Захват урона юнита
Хотел сделать триггерные криты, а откуда цифири базового дамага для них брать - хз. Будет значит рандом между мин.дмг+стат и макс.дмг+стат * множитель.
» WarCraft 3 / Захват урона юнита