PUVer,
Эм зачем говорить? Я вот просто всегда записываю как я играю, молчу или матерюсь в головой чат или говорю сам с собой лол. Если стесняешься микрофон выключи.
ЛПХОХЫОПЫ, мне надо как можно больше биткоинов) просто сутки пытался намайнить и ничего
Ты хоть скажи что эти триггеры делают. И покажи что сам сделал.
call GroupEnumUnitsInRange(udg_G,a,b,200.,null)
loop
set u = FirstOfGroup(udg_G)
if IsTarget(u,c) кастомная функция then
call UnitDamageTarget(c,u,100,true,true,ATTACK_TYPE_NORMAL,DAMAGE_TYPE_MAGIC,null)
endif
call GroupRemoveUnit(udg_G,u)
exitwhen u == null
endloop
То есть вы хотите сказать что мне нужен один единственный триггер вообще на все события damage taken для разных способностей?
Это значит что у меня будет длиннющего кода триггер с сотнями if-ов каждый из которых будет проверяться на соответствие да ещё при каждой реакции damage taken.
Да у меня так и сделано. И это позволит учитывать влияние абилок друг на друга. Например усиление триггерного сплеша от триггерного крита.
Типо вот
function ALDSAct takes nothing returns nothing
local unit d
local unit c
local unit t = GetTriggerUnit()
local unit s = GetEventDamageSource()
local unit dc
local integer i
local integer id
local boolean b
local boolean cl
local boolean rl
local real r1
local real r2
local real r3
local real Dm = GetEventDamage()
local integer q
local integer w
local item IT
if GetUnitAbilityLevel(t,'B03H') > 0 and IsUnitType(s,UNIT_TYPE_HERO) and (Dm == 1. or GetUnitTypeId(t) == 'o00L') then
//call echo("start range attack hero "+R2S(Dm))
call SetUnitState(t,UNIT_STATE_LIFE,GetUnitState(t,UNIT_STATE_LIFE)+1.)
if GetUnitAbilityLevel(s,'A08V') > 0 and LoadInteger(udg_AssassinHash,GetHandleId(s),StringHash("BEAC")) == 0 and (GetRandomInt(1,100) <= 20 or GetUnitAbilityLevel(t,EMT()) > 0) then
call BestEye(s)
endif
if Dm > 0. and IsTarget(t,s) and GetUnitAbilityLevel(s,'A0NK') > 0 then
call MagicShot(s,GetUnitX(t),GetUnitY(t))
endif
if LoadBoolean(udg_AssassinHash,GetHandleId(s),StringHash("LSBB")) then
if LoadInteger(udg_AssassinHash,GetHandleId(s),StringHash("LSBD")) > 0 then
call LongSwordCheck(s)
else
call SaveInteger(udg_AssassinHash,GetHandleId(s),StringHash("LSBI"),LoadInteger(udg_AssassinHash,GetHandleId(s),StringHash("LSBI"))+1)
if LoadInteger(udg_AssassinHash,GetHandleId(s),StringHash("LSBI")) >= 4 then
call LongSwordAdd(s)
call SaveInteger(udg_AssassinHash,GetHandleId(s),StringHash("LSBI"),0)
endif
endif
endif
call HMCreate(s,t)
call UnitRemoveAbility(t,'B03H')
set Dm = 0.
endif
if Dm > 0. then
set i = 0
set id = 0
set b = false
set cl = false
set rl = false
set r1 = 0.
set r2 = 0.
set r3 = 0.
set q = GetPlayerId(GetOwningPlayer(s))
set w = GetPlayerId(GetOwningPlayer(t))
//set Dm = GetEventDamage()
set dc = RDC(s)
if GetUnitAbilityLevel(t,'B03I') > 0 then
call UnitAddAbility(t,'A086')
call UnitRemoveAbility(t,'B03I')
endif
if (GetUnitAbilityLevel(t,'B03H') > 0 or GetUnitAbilityLevel(s,'A0BI') > 0) and GetUnitTypeId(s) != 'e015' and not IsUnitType(s,UNIT_TYPE_HERO) then
call UnitAddAbility(t,'A087')
call UnitRemoveAbility(t,'B03H')
//call echo("range attack creep")
endif
if GetUnitTypeId(s) == 'e015' then
call UnitAddAbility(t,'A087')
set s = dc
//call echo("range attack hero "+R2S(Dm))
endif
//all block effect
if LoadBoolean(udg_AssassinHash,GetHandleId(t),StringHash("URB1")) and LoadBoolean(udg_AssassinHash,GetHandleId(t),StringHash("URB2")) == false and Dm > 0. then
call DDCUC(t,Dm,true)
call AssistanceSystem_Timer(Dm,t,s)
set Dm = 0.00
endif
//if GetUnitTypeId(s) != 'h02E' then
if GetUnitAbilityLevel(dc,'A0AO') > 0 and Dm > 0.and GetUnitTypeId(s) != 'h036' and not (GetUnitTypeId(s) == 'h02T' and GetUnitState(s,UNIT_STATE_MANA) == 100.) then
call DDCUC(t,Dm,true)
set Dm = 0.00
endif
if GetUnitAbilityLevel(dc,'B030') > 0 and Dm > 0. then
call DDCUC(t,Dm,true)
set Dm = 0.00
endif
if GetUnitAbilityLevel(t,'A0EX') > 0 and Dm < GetUnitState(t,UNIT_STATE_MAX_LIFE) then
call DelayedDamageCheck(t,Dm*.2)
set Dm = Dm*.8
endif
if Dm > 0. and GetUnitTypeId(t) == 'n01N' then
if FDFD(dc,t) <= 500. then
call IssueImmediateOrder(t,"stomp")
else
call DDCUC(t,Dm*.8,true)
set Dm = Dm*.2
endif
endif
Kind Ram,
У меня в аосе записываются все мобы с течении двух часов всё было норм (это и те что идут по линиям и в лесу), нужно лишь пересоздавать триггер каждые 5 минут. Это было проверено тысячами игр.
И опять же я не говорил что записывать всех, если тебе не нужны все юниты, записывай только тех что нужны, но триггер надо использовать один.
Kind Ram,
Зачем тебе динамические триггеры?
Я понимаю создавать триггеры только для используемых героев в арене например. Но так для чего ты их юзаешь? Отлов урона всё равно через глобальный триггер надо делать.
quq_CCCP,
У меня в аосе все юниты добавляются в один триггер с событиями урона, я его пересоздаю каждые 5 минут, за 2 часа игры ничего не фаталиоо, хотя туда добавляется каждый созданный моб. Не думаю что есть реально достижимый предел событий. Тем более если пересоздавать триггер.
» Wanderer: Акт 1 / Wanderer 0.14 final 1.26a
Эм зачем говорить? Я вот просто всегда записываю как я играю, молчу или матерюсь в головой чат или говорю сам с собой лол. Если стесняешься микрофон выключи.
» Wanderer: Акт 1 / Wanderer 0.14 final 1.26a
Ты бы хоть видеопрохождение записывал бы
» WarCraft 3 / Хеш таблица, childKey?
» WarCraft 3 / Дублируются вещи.
почему бы не давать опыт триггером, а не добавлением предмета?
» Проклятие судьбы - Curse of Fate / Проклятие судьбы - Curse of Fate
» WarCraft 3 / Как убрать время баффа "лечение"
для этого используют таймер на ноль
» WarCraft 3 / Почему почти все мои скачанные модели белые?
Путь текстур не прописал
» WarCraft 3 / мне нужны триггеры карты холи вар
мне надо как можно больше биткоинов) просто сутки пытался намайнить и ничего
Ты хоть скажи что эти триггеры делают. И покажи что сам сделал.
» WarCraft 3 / Не работает триггер на мультиплеер
Не видно приложенного файла
Ред. 16GB
» WarCraft 3 / Усиление (точнее название не могу придумать, сорри)
» WarCraft 3 / Усиление (точнее название не могу придумать, сорри)
То что я дал это весь код лол, что не ясно то?
Ред. 16GB
» WarCraft 3 / Усиление (точнее название не могу придумать, сорри)
В смысле локалка
Сохраняешь значение на хэндл юнита, а не таймера.
set dmg = LoadReal(udg_Hash,GetHandleId(c),StringHash("LBMDR"))
call SaveReal(udg_Hash,GetHandleId(c),StringHash("LBMDR"),dmg+20.)
» WarCraft 3 / Усиление (точнее название не могу придумать, сорри)
Ред. 16GB
» WarCraft 3 / Существует ли GetUnitsInRange(Enum) координатного варианта?
loop
set u = FirstOfGroup(udg_G)
if IsTarget(u,c) кастомная функция then
call UnitDamageTarget(c,u,100,true,true,ATTACK_TYPE_NORMAL,DAMAGE_TYPE_MAGIC,null)
endif
call GroupRemoveUnit(udg_G,u)
exitwhen u == null
endloop
» WarCraft 3 / Утечки в системе динамических триггеров
Вариант с одним триггером самый лучший, я уже объяснил почему, какие ещё проблемы?
Ред. 16GB
» WarCraft 3 / Утечки в системе динамических триггеров
Ред. 16GB
» WarCraft 3 / Утечки в системе динамических триггеров
У меня в аосе записываются все мобы с течении двух часов всё было норм (это и те что идут по линиям и в лесу), нужно лишь пересоздавать триггер каждые 5 минут. Это было проверено тысячами игр.
И опять же я не говорил что записывать всех, если тебе не нужны все юниты, записывай только тех что нужны, но триггер надо использовать один.
» WarCraft 3 / Утечки в системе динамических триггеров
Зачем тебе динамические триггеры?
Я понимаю создавать триггеры только для используемых героев в арене например. Но так для чего ты их юзаешь? Отлов урона всё равно через глобальный триггер надо делать.
Ред. 16GB
» WarCraft 3 / Проверьте, пожалуйста, триггеры!
Ну тогда ответ в том что, надо делать один глобальный триггер на урон, а в нём уже обрабатывать все абилки.
» WarCraft 3 / Проверьте, пожалуйста, триггеры!
» WarCraft 3 / Проверьте, пожалуйста, триггеры!
У меня в аосе все юниты добавляются в один триггер с событиями урона, я его пересоздаю каждые 5 минут, за 2 часа игры ничего не фаталиоо, хотя туда добавляется каждый созданный моб. Не думаю что есть реально достижимый предел событий. Тем более если пересоздавать триггер.
» WarCraft 3 / Отряд
Эм, отряд это глобальная переменная типо группа? Или что?
Ред. 16GB
» WarCraft 3 / Аура которая сбрасывается сразу после покидания зоны действия
Нафига тебе область если надо делать пик в группу в радиусе ауры+физ размер юнита (для полной точности) обычно он 32
» WarCraft 3 / Маленький конфуз
Ну отладку сделай, вызывается ли вообще триггер при атаке союзника, выведи текст в самом начале действия
return GetUnitAbilityLevel(GetTriggerUnit(),'B011')>0 and IsUnitType(GetAttacker(), UNIT_TYPE_GROUND)
endfunction
Ред. 16GB
» WarCraft 3 / Маленький конфуз
где отладка? и события триггера
и да можно заменить
форматирование не работает, найс