7

» WarCraft 3 / Получение опыта в области.

В константанх, не помню как называется, убирается галочка, чтоб опыт не начислялся глобально(т.е. по всей карте), настраиваешь таблицу уменьшения опыта, можешь настроить кол опыта на каждый уровень.
В этой статье есть формулы расчета опыта, да и почитай статьи по WE, там вроде все есть.
7

» WarCraft 3 / нормально ли такое юзать?

GF RaiseD:
M1n3rva, это я знаю. У меня были проблемы с использованием считывания/записи группы в хэш в таймере: вроде как не получалось передать локальной группе значение без "CreateGroup()", тоесть без создания нового хэндла. Старая ссылка терялась и это вызывало утечки групп. С "ForGroup" подобного не наблюдалось.
Конечно, ты подумай как можно юзать группу, которой нет) создал группу и юзаешь, и ничего терятся не будет, ведь в конечном итоге ты в хеш грузишь даже не группу, а юнитов группы.
quq_CCCP, мне нравится название переменных, но спасибо)
7

» WarCraft 3 / нормально ли такое юзать?

Ну извини, действие не мгновенно, почти всегда заставит тебя юзать таймер и записывать всё в хеш или глобалки.
И да, действие не мгновенное тоже можно сделать, причем легко через цикл:
2 группы, с одной удаляем в другую кидаем(если нельзя,чтоб группа руинилась)
Цикл, в теле создаем таймер под каждого юнита
Сохраняем в хеш под хэндлИд таймера
Ну а дальше ты понял)
фор групп - не использован.
7

» WarCraft 3 / нормально ли такое юзать?

EnergyFrost:
Да а почему бы и нет? Разница не большая. Что цикл будет перебирать (хотя цикл у тебя какой-то странный. Из под условия можно вынести удаление юнита из группы и поиск первого юнита) , что ForGroup. Для каждой ситуации определенный метод имеет преимущество.
Мне вообще удобно не пользовать ForGroup. Я обычно делаю сразу отбор и действия в GroupEnumUnits...
А за странность извините, я просто писал не задумываясь код, чисто для вопроса... ну а разница чисто в том, что для forgroup нужна отдельная функция, и она не может же принимать аргументы(если может, то просветите) в итоге, если я хочешь нанести дмг, то мне нужен метод, чтоб перенести юнита, в функцию, где он уже наносит каждому члену группы урон(например).
GF RaiseD:
Да вроде нормально. Хотя, помнится, в некоторых случаях приходится использовать ForGroup, например если у тебя группа не локальная и не одноразовая, или когда юнита удалять из группы нельзя/не нужно. Если у тебя группа используется в качестве фильтра - нормально. Есть ряд случаев когда подходит только ForGroup.
Насчет удаление юнита, циклом тоже можно, просто создаешь вторую группу и помере удаления с одной группы закидуешь в другую, а после выполнения всех действий перекидываешь всех обратно
7

» WarCraft 3 / //!textmacro

Суть ошибки,
Пишу
!textmacro t takes s
---Body textmacro---
!endtextmacro
Сохраняю, все нормально
Дописываю
!runtextmacr t(s)
Ctrl+s
Ошибка
7

» WarCraft 3 / что это? (Русификатор Триггеров)

Бескосячных русификаторов не существует ) никогда таких не видел, тебе либо нужно юзать англ версию, либо разобраться как эти функции работают(запомнить или самому править русификатор)
Чтоб понять что функция делает, ну примерно, я бы сделал бы так на твоем месте:
Выбрал бы ее
Потом конвертировал триггер в код и посмотрел, что она делает
7

» WarCraft 3 / Система отлова ударов

quq_CCCP, Таааааааааааак) сам принцип работы манабёрна и реализацию я понял, единственное, если есть возможность, можно поподробней про DataBX и что, к чему, когда суммонятся иллюзии
call TriggerRegisterUnitEvent( gg_trg_Summon_Manaburn_Images, Runner, EVENT_UNIT_SUMMON )
И откуда константы типо 1.34 и 0.405?
7

» WarCraft 3 / Система отлова ударов

Tobi123:
Без орбов такая система превращается в баганный шлак.
Либо делать на орбах, либо наносить весь урон от спеллов триггерно и ловить тот, который нанесен не со спелла.
Хмм, играл недавно в ЖнА, там у Скелета, есть ульта каждый 5-й удар наносит дмг, не является орбом( на предмет баганости, абилку не проверял
quq_CCCP:
Могу скинуть свой кастом манабурн - использует рунные браслеты, учитывает все маг резисты как положено.
Было бы не плохо, заранее спасибо
7

» WarCraft 3 / Проблема с застрявшими юнитами

GoblinSpore:
nvc123, не пойдет, карта здоровая и юниты должны спавниться по всей площади.
Что-то не могу такие функции найти, где именно их искать?
Функции в редакторе триггеров) чтоб не спавлись на вершинах гор, в окне декораций, есть блокираторы пути. И и если не прав, то поправте, перед тем как создать юниты, берёшь случайную точку и проверяешь, чтоб в определённом радиусе не было декораций циклом, но на ГУИ не сделаешь такой цикл, так что прочитать нужно элементарное про JASS, циклишь действие на создание точки, пока не будет такой точки, которая будет в определённом радиусе от декораций(аналогично можно сделать с периодическим таймером), если же юнит сравнится на горе, то там блокираторы путей и его от туда спихнуть должно.
Крч перед тем как делать почитай, я думаю и на форуме куча таких темок пылится - знания сила
7

» WarCraft 3 / Любимый отлов урона)

Clamp:
ОП, спелы все триггерные?

Если да, то заводишь глобальную переменную bool IsSpell = false, перед нанесением урона в коде даёшь ей true, после - обратно false. В триггере, который срабатывает на получение урона, первым действием ставишь локалку булёвую, которая ==IsSpell. Вуаля, ты отслеживаешь весь урон с абилок, а что не урон с абилок, то есть урон с руки.

Сам так всегда делал, никогда не понимал пляски с бубнами и прочими орбами. Оно, конечно, проще идеологически, но по факту намного геморройнее: добавлять орб, проверять орб, удалять орб, подменять реальный орб триггерно...

Кстати, можно по такой же схеме через логические переменные указывать тип урона, например, чистый, физический (почему бы и не давать с абилок физический урон?) или магический, от этого вообще что угодно можно пилить, хоть кучу видов брони, хоть цветовые индикаторы разного типа урона.
Нет, не все абилки тригерные, около 85%. И да вариант юзать болиан не плохая идея
Я так понял болиан тру
Нанесли урон
Болиан фолс? И это в триггере со спеллом
Идея орбов мне тоже не нравится, либо я чего-то не догнал. Но выдавать орб я не могу ибо в карте есть предметы с орбом и другие орб спеллы
quq_CCCP:
Чистый урон у стандартных спеллов только у клиф атаки разрушителя, остальные разновидности магического урона - даже мины и суицид подрывной бригады снижается браслетами.
Ну вот как раз таки я триггерными спеллами бахаю чистым(5-10% скиллов)
GF RaiseD:
А этот твой "возврат" должен блокировать входящий урон? И какой урон он должен возвращать? Любой?
Возвращать физ.дмг(дмг с руки).
7

» WarCraft 3 / Как отменить продажу предмета в магазин через триггеры

Не знаю поможет или нет, вроде есть ивент где игрок навводит на юнит/объект можно потанцевать с бубном от этого. Опять же если я прав и такой ивент существует
7

» WarCraft 3 / "Удар по дереву"

Mrachny:
ledoed, M1n3rva, загвостка в том, что я заходил в свою тест мапу(там есть проверка id и приказов). Включил проверку id, нажал на дерево и вышел код, аналогичный приказу smart.
А ты мне скажи, какое действие в варе юнитом выполняется без приказов? Не зря же в РО есть настраевамая строка под приказы
Не сильно силён в этом, но если бы у меня не было бы выбора, я пробнул бы создать какой-то скилл пустышку с целью дерево и проверял ивент его применения или завершения каста и т.д.
Ещё раз объясняю с кодом приказа смарт - это как-бы универсальный приказ, многие приказ заменяется им, но при таких условиях, что ты наводишь на цель приказа, приказуешь нужный приказ(будто твой харвест, этэк или ещё что-то), при повторном приказе не сводя курсор с цели вызовет приказ смарт(нажатием ПКМ)
7

» WarCraft 3 / Любимый отлов урона)

Опять же, мне попросту нужен return damage при этом идёт на простой абилке панцырь с шипами, вариант выдавать орб юниту, который атакует не к чему хорошему не приведёт, ибо у атакующего может быть другой орб
Мне больше нравится мой/твой первый вариант~nvc123:
дмг определяется до того как отнимаются хп
насколько я помню надо запомнить дмг и хп юнита
дать браслеты
запустить таймер на 0 секунд
в таймере сверить хп юнита с предыдущим значением
если оно не уменьшилось значит урон магический
но лучше всего юзать орбы
Если создавать БД, то проще создать БД на все скиллы с чистым дмг, чем мудохаться с орбами
7

» WarCraft 3 / Любимый отлов урона)

Т.е. мне нужно выдать орб всем юнитам?( выдавать орб юниту который атакует на n сек) и при получении дмг таргетом, убирать орб у атакующего юнита? ибо мне нужен эффект от шипов только еще и для ранджи
Tobi123:
Физ дамаг отлавливается орбом. А все орбы из оригинала можно легко сделать триггерно.
По подробней с триггерными орбами, я такого нигде не видел
7

» WarCraft 3 / "Удар по дереву"

По-идеи добывать ресурсы - это спелл, уловить применение спелла и дать опыт
7

» WarCraft 3 / "Удар по дереву"

harvest и smart это код приказа
По-идеи смарт это - если ты жмешь просто правой кнопкой(ПКМ) по дереву(вообще почему либо), но есть нюанс, когда ты наводишь впервые на дерево и нажимаешь идет команда добывать дерево(т.е. поидеи харвест) и если не отводить мышку с дерево и продолжать клацать ПКМ по дереву то идет команда смарт.
Ну а харвест это приказ на добывание дерева
Но одними приказами я не представляю как сделать
7

» WarCraft 3 / Пронзающая смерть

Принятый ответ
quq_CCCP:
Ну а чего полностью не сделать кастом 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
7

» WarCraft 3 / бафф ауры

nvc123:
M1n3rva, а предметные абилки дать лень?
они вроде не отображаются
на крайняк в спелбук и апай их
В спелбуке они у меня не апаються, ну вплане я не могу дать спелбук и на прямую апать спелл в спелл буке... ауры же апаються. А делать на каждый лвл спеллбук( лень)
7

» WarCraft 3 / бафф ауры

Обычный спелл героя, 5 лвл:
2/3/4/5/6 реген хп
10/20/30/40/50 ас
5/10/15/20/25 мс
quq_CCCP:
Ас можно добавить перчатками, мс тапками а реген кольцом регена - так же если бонусы только растут апргрейды в помощь.
Как я понял, только улучшениями я могу это сделать?
7

» WarCraft 3 / бафф ауры

quq_CCCP:
Тока аура регена не дет (точнее бафф не отображается) на юните, хотя эффект идет.
Вроде бы у 'Aasl' (аура замедления торнадо) была галочка не показывать иконку, но она не работает, мб это зависит от значения игровых констант.
Все остальные ауры, если у них не указан бафф они берут его по умолчанию из слк таблицы, были доспехи веры, значит будет брать бафф доспехов...
Это я уже понял)
PhysCraft:
Вздор. Апается все в спелл-буке, сам делал так и делаю до сих пор. На JASS. Найти пустое заклинание. И что за аура, если не секрет?
Значит пойду еще раз пробывать... аура простая, я бы даже аурой это бы не назвал, просто пассивный скилл на юнита(героя) дает мс, ас, реген хп.
Юзнул ауру смерти и ауру выносливости, наглашаю на том. чтоб выбор пал именно на это из-за того, что у меня не получилось апать в спеллбуке способности от предметов
7

» WarCraft 3 / бафф ауры

Заклинание и так убрано, при этом вар автоматом их ставит на стандартное... способности предмета в спеллбуке не апаються) я линив, чтоб делать 5 спеллбуков на все 5 лвл)Ну по крайне мере мои руки не позволили апнуться способностям в спеллбуке(
Загруженные файлы
7

» WarCraft 3 / Приват константы

По-идеи вот чудо архив, с чудо докфайлом, который объясняет многое и позволяет понять многим про многое, если не лень)
Загруженные файлы