Первое отличается от второго названием, первое предпочтительнее ибо нативка. Ну несколько версий предметов, вот не помню работают ли формулы типа < DataA1 > в описании предметов, но вот уровни предметных абилок менять можно.
Потому что у модели для этих состояний предусмотрена именно такая анимация, это свойство модели и кроме как заставить триггерно юнита проигрывать нужную анимацию или переделывать модель путей нету.
Эмм а сделать через сферу чародея крови никак? У зданий куча точек, к примеру точки для крепления огня, пропиши их в сфере и установи модель того что тебе нужно, добавляя сферу зданию ты прилепиш к нему эти самые модели в точки крепления огня, здание развалится и.ничего удалять ненужно, само удалится.
Ну раз группы для вас ресурсоёмки используйте event units in range - этот ивент берт boolexpr, так же можно добавить любое условие триггеру на enterning unit.
Ну как бы там все одно да потому, код тот же что я описал выше, вот только проверять все надо в МУИ это раз, два время затраченное на синхронизацию может быть пипец каким большим...
function Trig_SyncStr_Actions takes nothing returns nothing
local string splayer = null
local player pl = Player(0)
if GetLocalPlayer() == pl then
call StoreString( udg_Data, "A", "B", "твоя строка!" )
endif
call TriggerSyncReady()
if GetLocalPlayer) == pl then
call SyncStoredString( udg_Data, "A", "B" )
endif
call TriggerSleepAction( 2.00 )
call TriggerSyncReady()
set splayer = GetStoredString( udg_Data, "A", "B" ) // выгрузи строку из кеша в локалку и делай с ней что хочешь
endfunction
//===========================================================================
function InitTrig_SyncStr takes nothing returns nothing
set gg_trg_SyncStr = CreateTrigger( )
call TriggerAddAction( gg_trg_SyncStr, function Trig_SyncStr_Actions )
endfunction
Триггер запускаем ExecuteTrigger а "Твоя строка" заменяется на глобальную переменную.
Триггено, перебираешь всех юнитов, и заставляешь кастовать их скиллы в самую подходящую цель.
Вот пример ИИ которое кастует спеллы как найдет цель в пределах досигаймости скилла, волну силы на расстоянии а громовую поступь вплотную.
Ну разумеется, абилку делаешь на основе аксид бомбы, бафф любойб на него и проверяешь, там бафф тут же удаляется после проверки, с такой системой небудут багатся всякие линки и прочие скиллы позволяющие уворачиваться от заклинаний и или снарядов. Тк. бафф один и негде более не юзается кроме как для отслеживания ничего не будет багатся.
Кароче при касте скилла добавляй событие на урон от кастера по цели, если цель получила 0.00 урона и у неё есть бафф способности, то значит снаряд попал, если нет то снаряд не попал в цель.
вот простенький пример такой системы:
код
scope DummyMissile
struct DMD
trigger trg
triggercondition trc
triggeraction tra
triggeraction extra
unit cast
unit targ
integer id
timer trix
boolean del
method FlushData takes nothing returns nothing
call DisableTrigger( .trg )
call TriggerRemoveCondition( .trg, .trc )
call TriggerRemoveAction( .trg, .tra )
call TriggerRemoveAction( .trg, .extra )
call TriggerClearActions( .trg )
call TriggerClearConditions( .trg )
call RemoveDataBX( .trg )
call RemoveDataBX( .trix )
call DestroyTrigger( .trg )
call DestroyTimer( .trix )
set this.trg = null
set this.trc = null
set this.tra = null
set this.extra = null
set this.cast = null
set this.targ = null
set this.trix = null
set this.id = 0
set this.del = false
endmethod
endstruct
function IsTargetHasBuff takes nothing returns boolean
local DMD st = GetDataBX( GetTriggeringTrigger( ) )
return GetEventDamage( ) == 0.00 and GetUnitAbilityLevel( st.targ, st.id ) > 0 and GetEventDamageSource( ) == st.cast and GetEventDamageSource( ) != DummyAttacker
endfunction
function Destroy_DMD takes nothing returns nothing
local DMD st = GetDataBX( GetExpiredTimer( ) )
call st.FlushData( )
call st.destroy( )
endfunction
function RemoveDMDBuff takes nothing returns nothing
local DMD st = GetDataBX( GetTriggeringTrigger( ) )
if st.del then
call UnitRemoveAbility( st.targ, st.id )
endif
call PauseTimer( st.trix )
call DisableTrigger( st.trg )
call TimerStart( st.trix, 0.00, false, function Destroy_DMD )
return
endfunction
function DummyMissile takes unit target, unit caster, integer buffid, real time, boolean del, code actions returns nothing
local DMD st = DMD.create( )
set st.cast = caster
set st.targ = target
set st.id = buffid
set st.del = del
set st.trix = CreateTimer( )
set st.trg = CreateTrigger( )
set st.trc = TriggerAddCondition( st.trg, Condition( function IsTargetHasBuff ) )
set st.tra = TriggerAddAction( st.trg, actions )
set st.extra = TriggerAddAction( st.trg, function RemoveDMDBuff )
call TriggerRegisterUnitEvent( st.trg, target, EVENT_UNIT_DAMAGED )
call TimerStart( st.trix, time, false, function Destroy_DMD )
call SetDataBX( st.trg, st )
call SetDataBX( st.trix, st )
endfunction
endscope
quq_CCCP:
при уроне все равно придется проверять на наличие таймера амулета защиты от магии или баффа оглушения от скилла
Простите, но начем с того что негейшен блокнит стан и все, мы не попали, а про отлов маг урона уже было, могу даже кинуть пример того как делается такое, на основе аксид бомбы или стана, работает как часы, блочится линками, можно увернутся всякими иллюзиями и блинками.
Простита а зачем? Для эффекта молнии? Можно сделать молнию триггерно, а так вроде можно отдать приказ на каст триггерно, не проверял но вроде у фрога в ульте см дамми юниты кастуют фрост нову в самого себя....
У нейтралов есть встроеный ИИ который их заставляет охранять место спауна, поэтому чтобы они бегали надо следить за тем какой они сейчас выполняют приказ и если они встали или развернулись снова отдавать приказ идти куда нужно.
Лучше использовать обычных игроков, у них нет ии которое будет пытаться вернуть юнитов на охрану позиции.
» WarCraft 3 / не работает call IssueTargetOrder(d, "thunderbolt, u)?
так же правильнее будет делать так
» WarCraft 3 / Как программно добавить/удалить морф алхимику?
» WarCraft 3 / Как программно добавить/удалить морф алхимику?
» WarCraft 3 / Как сделать кастомное описание предемтов во время игры?
Ну несколько версий предметов, вот не помню работают ли формулы типа < DataA1 > в описании предметов, но вот уровни предметных абилок менять можно.
» WarCraft 3 / Анимация "Горгулья" Работает не правильно.
» WarCraft 3 / можно ли триггерно сделать отображение манабаров?
» WarCraft 3 / Москиты и бафы (и красивые здания!)
» WarCraft 3 / Багается код
» WarCraft 3 / Багается код
» WarCraft 3 / Триггерный урон для способностей типа волна
Ред. quq_CCCP
» WarCraft 3 / Pick Up a ll items?
» WarCraft 3 / Триггерный урон
Ред. quq_CCCP
» WarCraft 3 / SyncStoredString не работает?
» WarCraft 3 / Урон по области врагам
Ред. quq_CCCP
» WarCraft 3 / SyncStoredString не работает?
» WarCraft 3 / Использsвание Способностей
Вот пример ИИ которое кастует спеллы как найдет цель в пределах досигаймости скилла, волну силы на расстоянии а громовую поступь вплотную.
» WarCraft 3 / Использsвание Способностей
» WarCraft 3 / Фаербол
» WarCraft 3 / Фаербол
Систему можно найти тут XATtach
» WarCraft 3 / Фаербол
вот простенький пример такой системы:
» WarCraft 3 / Фаербол
» WarCraft 3 / Фаербол
Урон и все остальное длаем полностью триггерно.
» WarCraft 3 / Как юзать скилллы на юнита под москитами.
» WarCraft 3 / Проблема с нейтралами
Лучше использовать обычных игроков, у них нет ии которое будет пытаться вернуть юнитов на охрану позиции.
» WarCraft 3 / Туман рики. Привет из доты.