lioloisigisi,
В том то и дело. Я не имею доступа к карте "30 min" но там очень удобная система волн. Потому думал мне смогут помочь те кто играли и шарят за эту систему.
TechnoViking, Количество юнитов нападающего просто не должно переваливать за предел(определённое число). У меня просто лаги в карте появляются и чтобы избавиться от них, хотелось бы уменьшить количество юнитов нападающего на карте в данный момент времени, но при этом оставить постоянный натиск.
function Delete_Destructable takes nothing returns nothing
local timer t = GetExpiredTimer() //Наш таймер - истёкший
local integer h = GetHandleId(t) //Узнаём id таймера
local destructable tree //Достаём цель из значения 2
local integer i = 1
loop
exitwhen i > 10
set tree = LoadDestructableHandle(hash,h,i)
call KillDestructable(tree)
set i = i + 1
endloop
call DestroyTimer(t) //Уничтожаем таймер
//Очищаем хеш-таблицу, чтобы избежать утечек и наложений
call FlushChildHashtable(hash,h) //Очищаем ключ по id
//Не забываем устранять утечки
set tree = null
set t = null
endfunction
function Hashtable_Actions takes nothing returns nothing
local unit Caster = GetSpellAbilityUnit()
local destructable Tree
local location Target = GetSpellTargetLoc()
local timer t = CreateTimer()
local integer h = GetHandleId(t)
//Сохраняем объекты с ключом - id таймера
//Создаём деревья
local integer i = 1
loop
exitwhen i > 10
call CreateDestructableLoc( 'LTlt', PolarProjectionBJ(GetSpellTargetLoc(), 200.00, ( I2R(i) * 36.00 )), GetRandomDirectionDeg(), 1.00, GetRandomInt(1, 10) )
call SaveDestructableHandle(hash,h,bj_forLoopAIndex,GetLastCreatedDestructable())
call SetDestructableAnimationBJ( GetLastCreatedDestructable(), "birth" )
call SetDestructableLife( GetLastCreatedDestructable(), I2R(GetHeroStatBJ(bj_HEROSTAT_INT, GetTriggerUnit(), true)) )
set i = i + 1
endloop
// call TimerStart(t,10,true,function Delete_Destructable)
endfunction
function Hashtable_Cond takes nothing returns boolean
return GetSpellAbilityId() == 'A014'
endfunction
//===========================================================================
function InitTrig_Hashtable takes nothing returns nothing
local trigger ForestKeeperTrees = CreateTrigger()
local integer index
set index = 0
loop
call TriggerRegisterPlayerUnitEvent(ForestKeeperTrees,Player(index),EVENT_PLAYER_UNIT_SPELL_CAST,null)
index = index + 1
exitwhen index >= 16
endloop
call TriggerAddCondition( ForestKeeperTrees, Condition(function Hashtable_Cond) )
call TriggerAddAction( ForestKeeperTrees, function Hashtable_Actions )
endfunction
Borodach, nazarpunk, Если вам не трудно, можете пожалуйста проверить код. С хэш-таблицами работаю впервые, потому не знаю в чём ошибка. Деревья через 10 сек не разрушаются.
Borodach,
А как тогда считывать момент, когда нужно добавить некоторое кол-во хп юниту? Сейчас попробовал с условием хп юнита больше или равно максимальное хп юнита - полученный урон. Не сработало... Я просто тот ещё хлебушек в отлове урона.
Код в студию, приказ способности можно узнать банальным дебагом, просто триггер с событием юнит отдал приказ, и дебаг сообщением с номером приказа, берем юзаем свиток защиты ручками и смотрим.
Я кстати пытался это сделать, но мне за все действия писало 0
» WarCraft 3 / Система нападения
В том то и дело. Я не имею доступа к карте "30 min" но там очень удобная система волн. Потому думал мне смогут помочь те кто играли и шарят за эту систему.
» WarCraft 3 / Хэш-таблицы
» WarCraft 3 / Способность фуры из Доты
» WarCraft 3 / Щит аббадона или же пассивка воина свет из ЖНА
Выдаёт ошибку при запуске.
» WarCraft 3 / Щит аббадона или же пассивка воина свет из ЖНА
А как тогда считывать момент, когда нужно добавить некоторое кол-во хп юниту? Сейчас попробовал с условием хп юнита больше или равно максимальное хп юнита - полученный урон. Не сработало... Я просто тот ещё хлебушек в отлове урона.
» WarCraft 3 / IssueImmediateOrderById
» WarCraft 3 / Как заблокировать кнопку в меню