В константанх, не помню как называется, убирается галочка, чтоб опыт не начислялся глобально(т.е. по всей карте), настраиваешь таблицу уменьшения опыта, можешь настроить кол опыта на каждый уровень.
M1n3rva, это я знаю. У меня были проблемы с использованием считывания/записи группы в хэш в таймере: вроде как не получалось передать локальной группе значение без "CreateGroup()", тоесть без создания нового хэндла. Старая ссылка терялась и это вызывало утечки групп. С "ForGroup" подобного не наблюдалось.
Конечно, ты подумай как можно юзать группу, которой нет) создал группу и юзаешь, и ничего терятся не будет, ведь в конечном итоге ты в хеш грузишь даже не группу, а юнитов группы. quq_CCCP, мне нравится название переменных, но спасибо)
Ну извини, действие не мгновенно, почти всегда заставит тебя юзать таймер и записывать всё в хеш или глобалки.
И да, действие не мгновенное тоже можно сделать, причем легко через цикл:
2 группы, с одной удаляем в другую кидаем(если нельзя,чтоб группа руинилась)
Цикл, в теле создаем таймер под каждого юнита
Сохраняем в хеш под хэндлИд таймера
Ну а дальше ты понял)
фор групп - не использован.
Да а почему бы и нет? Разница не большая. Что цикл будет перебирать (хотя цикл у тебя какой-то странный. Из под условия можно вынести удаление юнита из группы и поиск первого юнита) , что ForGroup. Для каждой ситуации определенный метод имеет преимущество. Мне вообще удобно не пользовать ForGroup. Я обычно делаю сразу отбор и действия в GroupEnumUnits...
А за странность извините, я просто писал не задумываясь код, чисто для вопроса... ну а разница чисто в том, что для forgroup нужна отдельная функция, и она не может же принимать аргументы(если может, то просветите) в итоге, если я хочешь нанести дмг, то мне нужен метод, чтоб перенести юнита, в функцию, где он уже наносит каждому члену группы урон(например). GF RaiseD:
Да вроде нормально. Хотя, помнится, в некоторых случаях приходится использовать ForGroup, например если у тебя группа не локальная и не одноразовая, или когда юнита удалять из группы нельзя/не нужно. Если у тебя группа используется в качестве фильтра - нормально. Есть ряд случаев когда подходит только ForGroup.
Насчет удаление юнита, циклом тоже можно, просто создаешь вторую группу и помере удаления с одной группы закидуешь в другую, а после выполнения всех действий перекидываешь всех обратно
Бескосячных русификаторов не существует ) никогда таких не видел, тебе либо нужно юзать англ версию, либо разобраться как эти функции работают(запомнить или самому править русификатор)
Чтоб понять что функция делает, ну примерно, я бы сделал бы так на твоем месте:
Выбрал бы ее
Потом конвертировал триггер в код и посмотрел, что она делает
quq_CCCP, Таааааааааааак) сам принцип работы манабёрна и реализацию я понял, единственное, если есть возможность, можно поподробней про DataBX и что, к чему, когда суммонятся иллюзии
call TriggerRegisterUnitEvent( gg_trg_Summon_Manaburn_Images, Runner, EVENT_UNIT_SUMMON )
И откуда константы типо 1.34 и 0.405?
Без орбов такая система превращается в баганный шлак.
Либо делать на орбах, либо наносить весь урон от спеллов триггерно и ловить тот, который нанесен не со спелла.
Хмм, играл недавно в ЖнА, там у Скелета, есть ульта каждый 5-й удар наносит дмг, не является орбом( на предмет баганости, абилку не проверял quq_CCCP:
Могу скинуть свой кастом манабурн - использует рунные браслеты, учитывает все маг резисты как положено.
nvc123, не пойдет, карта здоровая и юниты должны спавниться по всей площади.
Что-то не могу такие функции найти, где именно их искать?
Функции в редакторе триггеров) чтоб не спавлись на вершинах гор, в окне декораций, есть блокираторы пути. И и если не прав, то поправте, перед тем как создать юниты, берёшь случайную точку и проверяешь, чтоб в определённом радиусе не было декораций циклом, но на ГУИ не сделаешь такой цикл, так что прочитать нужно элементарное про JASS, циклишь действие на создание точки, пока не будет такой точки, которая будет в определённом радиусе от декораций(аналогично можно сделать с периодическим таймером), если же юнит сравнится на горе, то там блокираторы путей и его от туда спихнуть должно.
Крч перед тем как делать почитай, я думаю и на форуме куча таких темок пылится - знания сила
Если да, то заводишь глобальную переменную bool IsSpell = false, перед нанесением урона в коде даёшь ей true, после - обратно false. В триггере, который срабатывает на получение урона, первым действием ставишь локалку булёвую, которая ==IsSpell. Вуаля, ты отслеживаешь весь урон с абилок, а что не урон с абилок, то есть урон с руки.
Сам так всегда делал, никогда не понимал пляски с бубнами и прочими орбами. Оно, конечно, проще идеологически, но по факту намного геморройнее: добавлять орб, проверять орб, удалять орб, подменять реальный орб триггерно...
Кстати, можно по такой же схеме через логические переменные указывать тип урона, например, чистый, физический (почему бы и не давать с абилок физический урон?) или магический, от этого вообще что угодно можно пилить, хоть кучу видов брони, хоть цветовые индикаторы разного типа урона.
Нет, не все абилки тригерные, около 85%. И да вариант юзать болиан не плохая идея
Я так понял болиан тру
Нанесли урон
Болиан фолс? И это в триггере со спеллом
Идея орбов мне тоже не нравится, либо я чего-то не догнал. Но выдавать орб я не могу ибо в карте есть предметы с орбом и другие орб спеллы quq_CCCP:
Чистый урон у стандартных спеллов только у клиф атаки разрушителя, остальные разновидности магического урона - даже мины и суицид подрывной бригады снижается браслетами.
Ну вот как раз таки я триггерными спеллами бахаю чистым(5-10% скиллов) GF RaiseD:
А этот твой "возврат" должен блокировать входящий урон? И какой урон он должен возвращать? Любой?
Не знаю поможет или нет, вроде есть ивент где игрок навводит на юнит/объект можно потанцевать с бубном от этого. Опять же если я прав и такой ивент существует
ledoed, M1n3rva, загвостка в том, что я заходил в свою тест мапу(там есть проверка id и приказов). Включил проверку id, нажал на дерево и вышел код, аналогичный приказу smart.
А ты мне скажи, какое действие в варе юнитом выполняется без приказов? Не зря же в РО есть настраевамая строка под приказы
Не сильно силён в этом, но если бы у меня не было бы выбора, я пробнул бы создать какой-то скилл пустышку с целью дерево и проверял ивент его применения или завершения каста и т.д.
Ещё раз объясняю с кодом приказа смарт - это как-бы универсальный приказ, многие приказ заменяется им, но при таких условиях, что ты наводишь на цель приказа, приказуешь нужный приказ(будто твой харвест, этэк или ещё что-то), при повторном приказе не сводя курсор с цели вызовет приказ смарт(нажатием ПКМ)
Опять же, мне попросту нужен return damage при этом идёт на простой абилке панцырь с шипами, вариант выдавать орб юниту, который атакует не к чему хорошему не приведёт, ибо у атакующего может быть другой орб
Мне больше нравится мой/твой первый вариант~nvc123:
дмг определяется до того как отнимаются хп
насколько я помню надо запомнить дмг и хп юнита
дать браслеты
запустить таймер на 0 секунд
в таймере сверить хп юнита с предыдущим значением
если оно не уменьшилось значит урон магический
но лучше всего юзать орбы
Если создавать БД, то проще создать БД на все скиллы с чистым дмг, чем мудохаться с орбами
Т.е. мне нужно выдать орб всем юнитам?( выдавать орб юниту который атакует на n сек) и при получении дмг таргетом, убирать орб у атакующего юнита? ибо мне нужен эффект от шипов только еще и для ранджи Tobi123:
Физ дамаг отлавливается орбом. А все орбы из оригинала можно легко сделать триггерно.
По подробней с триггерными орбами, я такого нигде не видел
harvest и smart это код приказа
По-идеи смарт это - если ты жмешь просто правой кнопкой(ПКМ) по дереву(вообще почему либо), но есть нюанс, когда ты наводишь впервые на дерево и нажимаешь идет команда добывать дерево(т.е. поидеи харвест) и если не отводить мышку с дерево и продолжать клацать ПКМ по дереву то идет команда смарт.
Ну а харвест это приказ на добывание дерева
Но одними приказами я не представляю как сделать
Ну а чего полностью не сделать кастом Iplate ? Эта багнутая абилка, она делает юнитов на мгновение неуязвимыми - вот они и не получают урона.
Подбрасывай юнитов триггерно, оглушение - молот бурь, ну и наноси сколько влезет урона.
Рук с одного места расстут, чтоб подкидывать и все эффекты настраивать( как лучше всего такое реализовать?Если триггерно неуязвимость снимать перед дмг?
Исправил так, В РО юниты в воздухе 1с, добавил таймер на 1с для нанесение дмг.
function Trig_PD_Conditions takes nothing returns boolean
return GetSpellAbilityId() == 'A012'
endfunction
function BuffPD takes nothing returns boolean
return GetUnitAbilityLevel(GetFilterUnit(), 'B006') > 0 == true
endfunction
function DamagePD1 takes nothing returns nothing
timer t = GetExpiredTimer()
integer b = GetHandleId(t)
real i = LRh(b,2)
unit u1 = LUh(b,1)
unit u =LUh(b,0)
call SetUnitInvulnerable(u,false)
call UnitDamageTarget(u1,u,i,true,true,ATTACK_TYPE_NORMAL, DAMAGE_TYPE_NORMAL,null)
DestroyTimer(t)
t = null
u = null
u1 = null
endfunction
function DamagePD takes nothing returns nothing
integer a = GetHandleId(gg_trg_PD)
group g = LGh(a,0)
real i = LRh(a,2)
unit u1 = LUh(a,1)
unit u = GetEnumUnit()
if IsUnitInGroup(u,g) == false then
timer t = CreateTimer()
integer b = GetHandleId(t)
GroupAddUnit(g,u)
SGh(a,0,g)
SUh(b,0,u)
SUh(b,1,u1)
SRh(b,2,i)
TimerStart(t,1,false,function DamagePD1)
endif
u = null
u1 = null
g = null
endfunction
function TimerPD takes nothing returns nothing
integer a = GetHandleId(gg_trg_PD)
unit u = LUh(a,1)
group g = LGh(a,0)
timer t = GetExpiredTimer()
group g1 = CreateGroup()
location l = GetUnitLoc(u)
integer i = LIh(a,3)+1
SIh(a,3,i)
GroupEnumUnitsInRangeOfLoc(g1,l,900,Condition(function BuffPD))
ForGroup(g1,function DamagePD)
if i == 20
DestroyTimer(t)
DestroyGroup(g)
FlushChildHashtable(udg_hash,a)
endif
DestroyGroup(g1)
RemoveLocation(l)
g = null
g1 = null
u = null
t = null
l = null
endfunction
function Trig_PD_Actions takes nothing returns nothing
unit u = GetSpellAbilityUnit()
D(GetUnitName(u))
integer a = GetHandleId(gg_trg_PD)
real i = GetUnitAbilityLevel(u,'A012')*0.25*GetHeroStr(u,true)+0.5*GetHeroStr(u,true)
group g = CreateGroup()
timer t = CreateTimer()
SGh(a,0,g)
SUh(a,1,u)
SRh(a,2,i)
TimerStart(t,0.02,true,function TimerPD)
u = null
g = null
t = null
endfunction
//===========================================================================
function InitTrig_PD takes nothing returns nothing
set gg_trg_PD = CreateTrigger()
call TriggerRegisterAnyUnitEventBJ( gg_trg_PD, EVENT_PLAYER_UNIT_SPELL_EFFECT )
call TriggerAddCondition( gg_trg_PD, Condition( function Trig_PD_Conditions ) )
call TriggerAddAction( gg_trg_PD, function Trig_PD_Actions )
endfunction
M1n3rva, а предметные абилки дать лень?
они вроде не отображаются
на крайняк в спелбук и апай их
В спелбуке они у меня не апаються, ну вплане я не могу дать спелбук и на прямую апать спелл в спелл буке... ауры же апаються. А делать на каждый лвл спеллбук( лень)
Тока аура регена не дет (точнее бафф не отображается) на юните, хотя эффект идет.
Вроде бы у 'Aasl' (аура замедления торнадо) была галочка не показывать иконку, но она не работает, мб это зависит от значения игровых констант.
Все остальные ауры, если у них не указан бафф они берут его по умолчанию из слк таблицы, были доспехи веры, значит будет брать бафф доспехов...
Вздор. Апается все в спелл-буке, сам делал так и делаю до сих пор. На JASS. Найти пустое заклинание. И что за аура, если не секрет?
Значит пойду еще раз пробывать... аура простая, я бы даже аурой это бы не назвал, просто пассивный скилл на юнита(героя) дает мс, ас, реген хп.
Юзнул ауру смерти и ауру выносливости, наглашаю на том. чтоб выбор пал именно на это из-за того, что у меня не получилось апать в спеллбуке способности от предметов
Заклинание и так убрано, при этом вар автоматом их ставит на стандартное... способности предмета в спеллбуке не апаються) я линив, чтоб делать 5 спеллбуков на все 5 лвл)Ну по крайне мере мои руки не позволили апнуться способностям в спеллбуке(
» WarCraft 3 / Получение опыта в области.
» WarCraft 3 / нормально ли такое юзать?
quq_CCCP, мне нравится название переменных, но спасибо)
» WarCraft 3 / нормально ли такое юзать?
И да, действие не мгновенное тоже можно сделать, причем легко через цикл:
2 группы, с одной удаляем в другую кидаем(если нельзя,чтоб группа руинилась)
Цикл, в теле создаем таймер под каждого юнита
Сохраняем в хеш под хэндлИд таймера
Ну а дальше ты понял)
фор групп - не использован.
» WarCraft 3 / нормально ли такое юзать?
GF RaiseD: Насчет удаление юнита, циклом тоже можно, просто создаешь вторую группу и помере удаления с одной группы закидуешь в другую, а после выполнения всех действий перекидываешь всех обратно
» WarCraft 3 / //!textmacro
Пишу
!textmacro t takes s
---Body textmacro---
!endtextmacro
Сохраняю, все нормально
Дописываю
!runtextmacr t(s)
Ctrl+s
Ошибка
» WarCraft 3 / //!textmacro
» WarCraft 3 / Система отлова ударов
» WarCraft 3 / что это? (Русификатор Триггеров)
Чтоб понять что функция делает, ну примерно, я бы сделал бы так на твоем месте:
Выбрал бы ее
Потом конвертировал триггер в код и посмотрел, что она делает
» WarCraft 3 / Система отлова ударов
call TriggerRegisterUnitEvent( gg_trg_Summon_Manaburn_Images, Runner, EVENT_UNIT_SUMMON )
И откуда константы типо 1.34 и 0.405?
» WarCraft 3 / Система отлова ударов
quq_CCCP: Было бы не плохо, заранее спасибо
Ред. M1n3rva
» WarCraft 3 / Проблема с застрявшими юнитами
Крч перед тем как делать почитай, я думаю и на форуме куча таких темок пылится - знания сила
Ред. M1n3rva
» WarCraft 3 / Любимый отлов урона)
Я так понял болиан тру
Нанесли урон
Болиан фолс? И это в триггере со спеллом
Идея орбов мне тоже не нравится, либо я чего-то не догнал. Но выдавать орб я не могу ибо в карте есть предметы с орбом и другие орб спеллы
quq_CCCP: Ну вот как раз таки я триггерными спеллами бахаю чистым(5-10% скиллов)
GF RaiseD: Возвращать физ.дмг(дмг с руки).
» WarCraft 3 / Как отменить продажу предмета в магазин через триггеры
Ред. M1n3rva
» WarCraft 3 / "Удар по дереву"
Не сильно силён в этом, но если бы у меня не было бы выбора, я пробнул бы создать какой-то скилл пустышку с целью дерево и проверял ивент его применения или завершения каста и т.д.
Ещё раз объясняю с кодом приказа смарт - это как-бы универсальный приказ, многие приказ заменяется им, но при таких условиях, что ты наводишь на цель приказа, приказуешь нужный приказ(будто твой харвест, этэк или ещё что-то), при повторном приказе не сводя курсор с цели вызовет приказ смарт(нажатием ПКМ)
» WarCraft 3 / Любимый отлов урона)
Мне больше нравится мой/твой первый вариант~nvc123: Если создавать БД, то проще создать БД на все скиллы с чистым дмг, чем мудохаться с орбами
» WarCraft 3 / Любимый отлов урона)
Tobi123: По подробней с триггерными орбами, я такого нигде не видел
» WarCraft 3 / "Удар по дереву"
Ред. M1n3rva
» WarCraft 3 / "Удар по дереву"
По-идеи смарт это - если ты жмешь просто правой кнопкой(ПКМ) по дереву(вообще почему либо), но есть нюанс, когда ты наводишь впервые на дерево и нажимаешь идет команда добывать дерево(т.е. поидеи харвест) и если не отводить мышку с дерево и продолжать клацать ПКМ по дереву то идет команда смарт.
Ну а харвест это приказ на добывание дерева
Но одними приказами я не представляю как сделать
Ред. M1n3rva
» WarCraft 3 / Пронзающая смерть
Исправил так, В РО юниты в воздухе 1с, добавил таймер на 1с для нанесение дмг.
» WarCraft 3 / бафф ауры
» WarCraft 3 / бафф ауры
2/3/4/5/6 реген хп
10/20/30/40/50 ас
5/10/15/20/25 мс
quq_CCCP: Как я понял, только улучшениями я могу это сделать?
» WarCraft 3 / бафф ауры
PhysCraft: Значит пойду еще раз пробывать... аура простая, я бы даже аурой это бы не назвал, просто пассивный скилл на юнита(героя) дает мс, ас, реген хп.
Юзнул ауру смерти и ауру выносливости, наглашаю на том. чтоб выбор пал именно на это из-за того, что у меня не получилось апать в спеллбуке способности от предметов
» WarCraft 3 / бафф ауры
» WarCraft 3 / Приват константы
» WarCraft 3 / Почему выбивает в главное меню при проверке карты?