11

» WarCraft 3 / Нужна помощь со спеллом.

Хм, а в чем разница таймера с периодик CustomScript на запуск функции движения для всех юнитов в группе? Для каждого юнита будет своя рандомная точка. Или принципиальной разницы нет?
11

» WarCraft 3 / Нужна помощь со спеллом.

Нет, я не понимаю что такое таймер и как правильно с ним работать, ибо четких статей о работе с таймерами не нашел и изучаю его методом тыка с помощью крох понятий о таймерах с других статей. Спасибо за ссылки, но там не по теме как минимум с- vJass' ом, а про оптимизацию.
Старт таймера в цикле дает запуск для срабатывания следующего таймера и в цикле тут уже после if - сотни таймеров одновременно не будет.
Разобраться в уже написанном триггере на джассе я могу, а вот сам пока пишу не идеально, с чем и проблемы. Хватит высокомерия.
11

» WarCraft 3 / Нужна помощь со спеллом.

quq_CCCP:
Без локейшенов, набери
	GetRandomReal( GetRectMinX( bj_mapInitialPlayableArea ), GetRectMaxX( bj_mapInitialPlayableArea )  )
Для Y думаю догадаешся как найти...
Размер карты-то изначально известен, можно обойтись и рандомом между статичными цифирями. Думал над этим вариантом тоже, значит будем пользовать его.
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
11

» WarCraft 3 / Нужна модель? - Вам сюда!

Нужна модель стрелка верхом на баране, по аналогии с дворфийскими горцами из ВоВ.
Можно совместить 2 модели: стандартного стрелка с моделькой барана (есть в базе), только убрать анимацию низа стрелка при беге и барана при атаке, соотв. при атаке двигается верх стрелка, при беге - баран. Броня на баране опциональна (если импорт из ВоВ, только я там такого не нашел).
Анимации стандартные. Сроки не ограничены.
11

» WarCraft 3 / Способности и алгоритмы на заказ

Заказ

Название: Горный баран
Метод: Не важен
MUI: Обязательно
Цель: Пассивная, сам юнит
Количество уровней: 1
Описание: После исследования улучшения, юнит способен преодолевать подъемы/спуски на 1 уровень, но скорость во время преодоления замедляется до 200. Не может преодолевать подъем/спуск на 2 уровня, или 1+1 (сразу через 1 клетку еще один подъем, но не спуск). Визуально важно, чтобы юниты не летали друг над другом или над юнитами без способности.
Технические характеристики: Крайне желательно обойтись без областей, так как на карте их будет слишком много. Однако подозреваю, что без них впринципе не обойтись.
11

» WarCraft 3 / Оптимизация: один большой или много мелких?

Ясно, буду склеивать, единственное неудобство - копаться в большом триггере. Для нового спелла практичнее наверно будет сделать отдельный триггер, протестить, отполировать и подклеить в большой.
11

» WarCraft 3 / Ребят в чём проблема? (нестандартный рудник проклятый)

Через что уничтожаешь? Если через килл, то конечно умирает и нейтральный.
  1. Если наносить от какого-то даммика урон в мильены, то не умрет нейтральный.
  2. Можно от даммика развеяние нежити за 0.01 сек.
  3. Заменять можно, внося значение золота в переменную и потом, создавая новый рудник, ставить количество золота в него из переменной, благо это даже в ГУИ реализовано.
11

» WarCraft 3 / Захват созданных иллюзий в переменные

Melissa:
А не легче, Target unit of ability being cast равно Casting unit в условиях?
чем оно легче? Не проверял, мб и так работает.
Сейчас у меня так сделано, работает. Легче тем, что 2 действия в редакторе, а не 4))).
Остался только один вопрос: как отделить иллюзий, созданных жезлом иллюзий (предметом), от способности героя? Поставить разные баффы? Базовый двойник, а на способность героя двойник2?
11

» WarCraft 3 / Захват созданных иллюзий в переменные

О, спасибо, столько накидали)
Разобрался кстати, почему не захватывало на суммонед - иллюзия не сразу создается, нужен вейт ~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)
А как в первом и втором способе исключить жезл иллюзий? Вторичные действия способности подразумевают именно иллюзию от использования способности.
Т.е. все способы окольные, печально.
11

» WarCraft 3 / Способности и алгоритмы на заказ

nvc123:
Impertus, ману кастера или цели?
Кастера конечно
ADD:
В игре есть еще способности, вешающие этот же баф, поэтому цели с бафом могут не быть целями каста, в таком случает считаются как с 1 стаком. (+50 манадамага)
11

» WarCraft 3 / Способности и алгоритмы на заказ

Внимание, заказ сложный!
Название; Чародейская стрела
МУИ: обязательно
Способ исполнения: 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 урона.
11

» WarCraft 3 / Обращение к юниту после морфа "Эликсиром ярости"

Странно, дома под рукой свежую версию не взял, может с чем-то конфликтует, может модель не та и прочее. Завтра переберу все заново.
ЗЫ уже было такое, что на чистой карте работает отлично, а на основной конфликты непонятно с чем.
Нда, действительно, сейчас нормально работает. Хотя я уже его столько раз менял, что мог сам исправить незаметно ошибку.
Один вопрос: что это было? Не захватывало из триг\каст юнит. Какая-то ошибка редактора реальна?
11

» WarCraft 3 / Обращение к юниту после морфа "Эликсиром ярости"

Не обязательно глобалка, локалка тоже не захватывает. Кого дамажить-то, если без перменной?)
11

» WarCraft 3 / Обращение к юниту после морфа "Эликсиром ярости"

Так как по механике варика происходит замена юнита, любые 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 сек.
11

» WarCraft 3 / Обращение к юниту после морфа "Эликсиром ярости"

Я уже почитал, понял и сделал (не хочется конечно хэш-таблами грузить, их уже 5)
Спрашивал только на предмет возможно упущенной стандартной функции, раз такими окольными путями приходится идти.
11

» WarCraft 3 / Обращение к юниту после морфа "Эликсиром ярости"

Кастера отловить не проблема, проблема в том, что по механике варика (как написано в стартпосте) при Эликсире кастер заменяется другим юнитом, и все триг юнит, каст юнит и т.д. не относятся к нему. А мне нужно отловить итогового юнита и к нему применять действия (в моем случае периодик дамаг раз в 0.5 сек по 2% от текущего хп)
11

» WarCraft 3 / Обращение к юниту после морфа "Эликсиром ярости"

Можно баф, можно способность (все равно у героя изначально 2 уник способности), но и для того и для того нужен вейт в 0.1 сек, чего желательно избежать.
З.Ы. Сейчас работает нормально, но хочу оптимизировать и убрать вейт.
11

» WarCraft 3 / Захват урона юнита

Нашел вот такой подобный кусок, правда он основан на библиотеках и с- или 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
11

» WarCraft 3 / Захват урона юнита

nvc123:
создаём в ро способность на основе отравляющей атаки/сферы льда/любого другого орба с бафом со временем действия 0,01 сек
пихаем её в спелбук
запрещаем этот спелбук и даём его всем юнитам
если при получении урона на юните есть баф нашего орба значит урон нанесён рукой
иначе не рукой
Вот тут про орбы
16GB:
как ты отлавливаешь урон с руки? Я не понял вообще причём тут орбы и огненный плащ.
Сейчас у меня счетчик срабатывает от любого урона через DamageTaken, в том числе и от огненного плаща, чего я хочу избежать. Через AttackingUnit работает криво-косо.
З.Ы. В ГУИ по быстрому посмотрел, нет условий на переменную с типом атаки, а сама переменная-то есть.
11

» WarCraft 3 / Захват урона юнита

И чистый урон, у самого так сделано, но не нравится что все портит Огненный плащ, например, а ломать орбы не хочется юниту, он милишный.
И отображается крит неполный, попробую с GetEventDamage()
11

» WarCraft 3 / Захват урона юнита

Суть критов была каждый 5й удар 100% крит.
Делал через AttackingUnit, но там настроить убирание спелбука с критом тяжело, так как для юнита с долгим замахом (тот же блейдмастер, у него от события Attacking до нанесения урона 1.15 сек) спелбук убирается до собственно нанесения урона и крита нет. Ставить вейты можно, но ненужно+влияет скорость атаки, будет успевать сделать по 2 крита при статичном вейте.
16GB:
ну вот допустим это 1.8-х крит из моей карты. Думаю тут ясно, что где
А Dm чему равен? Вне куска кода, сама суть вопроса)
11

» WarCraft 3 / Захват урона юнита

Делал с DamageTaken*X, только при таком расчете крит сильно занижается.
Допустим, крит х3, дамаг 100. У цели снижение получаемого урона на 50%. Т.е. крит будет считаться от 50 дмг = 150 дамага всего будет наноситься триггерно, а получать - 150*0.5=75 урона всего. Вместо (100*3)/50=150. И цифирь крита будет отображаться не 300!, а 150!. Хотя базовые криты отображаются как раз в виде 300!.
11

» WarCraft 3 / Захват урона юнита

А, не, не критично.
Хотел сделать триггерные криты, а откуда цифири базового дамага для них брать - хз. Будет значит рандом между мин.дмг+стат и макс.дмг+стат * множитель.
А по дамагтайпу не отследить? У обычной атаки вроде тип Физ-обычный, у других такого нет вроде.
11

» WarCraft 3 / Захват урона юнита

С помощью какой строки? И не переводить ли весь урон атак на триггерную основу?
(Можно из DamageTaken + Attacking unit мб?)