В общем, немного поразмыслив с другом, вышли на Jass. Но пока не все так радужно.
Jass:
function Cast_Proc takes nothing returns nothing
local unit u = GetSpellTargetUnit()
local player p = GetOwningPlayer(u)
local integer g
local integer w
call UnitSetConstructionProgress( u, 100 )
call UnitSetUpgradeProgress( u, 100 )
set g = GetPlayerState(p, PLAYER_STATE_RESOURCE_GOLD)
set w = GetPlayerState(p, PLAYER_STATE_RESOURCE_LUMBER)
set udg_activated_restore = true
call IssueImmediateOrderById(u, 851976)
call SetPlayerStateBJ( p, PLAYER_STATE_RESOURCE_GOLD, g )
call SetPlayerStateBJ( p, PLAYER_STATE_RESOURCE_LUMBER, w )
endfunction
function Cast_Condition takes nothing returns boolean
return GetSpellAbilityId() == udg_ability_restore
endfunction
//===========================================================================
function InitTrig_Cast takes nothing returns nothing
set gg_trg_Cast = CreateTrigger( )
call TriggerRegisterAnyUnitEventBJ(gg_trg_Cast, EVENT_PLAYER_UNIT_SPELL_EFFECT)
call TriggerAddCondition(gg_trg_Cast, Condition(function Cast_Condition))
call TriggerAddAction( gg_trg_Cast, function Cast_Proc )
endfunction
function CancelOrder takes nothing returns nothing
local unit u = GetTriggerUnit()
local integer uid= GetTrainedUnitType()
local integer rid= GetResearched()
local unit su
if uid > 0 then
set su=CreateUnit(GetOwningPlayer(u), uid, GetWidgetX(u), GetWidgetY(u), bj_UNIT_FACING)
call IssuePointOrderByIdLoc(su, 851986, GetUnitRallyPoint(u))
elseif rid > 0 then
call SetPlayerTechResearched(GetOwningPlayer(u), rid, GetPlayerTechCount(GetOwningPlayer(u), rid, true) + 1)
endif
set udg_activated_restore = false
endfunction
function RestokeCheck takes nothing returns boolean
return udg_activated_restore
endfunction
//===========================================================================
function InitTrig_CancelOrder takes nothing returns nothing
set gg_trg_CancelOrder = CreateTrigger( )
call TriggerRegisterAnyUnitEventBJ(gg_trg_CancelOrder, EVENT_PLAYER_UNIT_UPGRADE_CANCEL)
call TriggerRegisterAnyUnitEventBJ(gg_trg_CancelOrder, EVENT_PLAYER_UNIT_RESEARCH_CANCEL)
call TriggerRegisterAnyUnitEventBJ(gg_trg_CancelOrder, EVENT_PLAYER_UNIT_TRAIN_CANCEL)
call TriggerAddCondition(gg_trg_CancelOrder, Condition(function RestokeCheck))
call TriggerAddAction( gg_trg_CancelOrder, function CancelOrder )
endfunction
Extremator, Про это я знаю, но это не то
Требуется чтобы после использования способности по зданию, то что исследует здание: "исследования / обучение юнитов" были завершены
Extremator, В общём, на карте Extreme AoS перед началом выбирается раса, и добавляется в "Клетку-Trainer" 4 юнита. Их можно убрать, либо добавить новых, триггеры коем образом это подчитывают.
Вот как показано здесь, добавил +2 юнита, теперь их 6
После определенного времени, игра выпускает юнитов, и каким-то образом создает в области круга 6 идентичных юнитов (по моему варианту-копирует). И вот я не понимаю, как он это реализовал.
Ред. Seletun
» WarCraft 3 / Иконка главного здания Отрекшихся
» WarCraft 3 / Триггер - мгновенное завершение обучения
» WarCraft 3 / Триггер - мгновенное завершение обучения
Ред. Seletun
» WarCraft 3 / Триггер - мгновенное завершение обучения
» WarCraft 3 / Триггер - мгновенное завершение обучения
Требуется чтобы после использования способности по зданию, то что исследует здание: "исследования / обучение юнитов" были завершены
Ред. Seletun
» WarCraft 3 / Триггер - мгновенное завершение обучения
Как же это ещё реализовать
» WarCraft 3 / Триггер - копирование массово отряда
оказывается мне действительно нужен был (тип выбранного юнита)
» WarCraft 3 / Триггер - копирование массово отряда
» Icons Library / [Пак Иконок] Rpg Equipment Items 1