Вчера я задавал вопрос, и когда я получил советы, то занялся делом, почитал статью про хеш таблицы сделал всё максимально приближенно к тому, что там, но к сожалению не работает, и я не могу понять, где именно. Подскажите, что я сделал не правильно??
Я сделал на основе нескольких триггеров, в первом я добавляю созданных юнитов и привязанное к ним здание в Хеш-таблицу.
function Trig_Create_Groops_____________________u_Conditions takes nothing returns boolean
if ( not ( GetUnitTypeId(GetTriggerUnit()) == 'h003' ) ) then
return false
endif
return true
endfunction
function Trig_Create_Groops_____________________u_Actions takes nothing returns nothing
local unit q
local unit w = GetTriggerUnit()
local group g
local integer h
local integer j = GetHandleId(w)
call CreateNUnitsAtLoc( 3, 'h00C', GetOwningPlayer(GetTriggerUnit()), GetUnitLoc(GetTriggerUnit()), bj_UNIT_FACING )
set q = GetLastCreatedUnit()
call GroupAddUnitSimple( q, g )
set h = GetHandleId(q)
call SaveUnitHandle(udg_hash,j,1,w)
call SaveGroupHandle(udg_hash,h,1,g)
set q = null
set w = null
set g = null
endfunction
//===========================================================================
function InitTrig_Create_Groops_jass takes nothing returns nothing
set gg_trg_Create_Groops_jass = CreateTrigger( )
call TriggerRegisterAnyUnitEventBJ( gg_trg_Create_Groops_jass, EVENT_PLAYER_UNIT_UPGRADE_FINISH )
call TriggerAddCondition( gg_trg_Create_Groops_jass, Condition( function Trig_Create_Groops_____________________u_Conditions ) )
call TriggerAddAction( gg_trg_Create_Groops_jass, function Trig_Create_Groops_____________________u_Actions )
endfunction
Во втором триггере я при использовании способности, которая находиться в здании передвигаю тех 3-х юнитов.
function Trig_Move2_jass_Conditions takes nothing returns boolean
if ( not ( GetSpellAbilityId() == 'A000' ) ) then
return false
endif
return true
endfunction
function Trig_Move2_jass_Func001A takes nothing returns nothing
call IssuePointOrderLoc( GetEnumUnit(), "move", GetSpellTargetLoc() )
endfunction
function Trig_Move2_jass_Actions takes nothing returns nothing
local unit cast = GetTriggerUnit()
local integer h = GetHandleId(cast)
local group movegroup
set movegroup = LoadGroupHandle(udg_hash, h,1)
call ForGroupBJ( movegroup, function Trig_Move2_jass_Func001A )
endfunction
//===========================================================================
function InitTrig_Move2_jass takes nothing returns nothing
set gg_trg_Move2_jass = CreateTrigger( )
call TriggerRegisterAnyUnitEventBJ( gg_trg_Move2_jass, EVENT_PLAYER_UNIT_SPELL_EFFECT )
call TriggerAddCondition( gg_trg_Move2_jass, Condition( function Trig_Move2_jass_Conditions ) )
call TriggerAddAction( gg_trg_Move2_jass, function Trig_Move2_jass_Actions )
endfunction
Я решил связать группу из 3-х юнитов и здание через id здания, рядом с которым они создаются. Как я понимаю в первом триггере всё идёт нормально, но а во втором только до момента выбора группы. Прошу исправить мне в коде то, в чём я ошибся или хотя бы объяснить, где у меня происходит баг.
Заранее спасибо)
Принятый ответ
ArhiMEN:
Так не нужно ничего самому делать. Я прикрепил к тому сообщению карту. В ней я уже все сделал сам. Тебе осталось только скопировать триггеры оттуда в свою карту и заменить юнитов на тех, которые тебе нужны. Вот та карта:Я посмотрел, но возникла проблема. Я тупой и не могу написать также, но моменте добаления юнита в хеш таблицу. Я Save Handle of (Last created unit) as 0 of (а дальше я не нашёл, как добавть "Key(Constructed structure))" in Hash
и соответсвенно любое другое действие, где прописанно Key
Bergi_Bear, хеш-таблицы — это проще простого. Они не требуют множество действий для работы. Достаточно только понять принцип.
`
ОЖИДАНИЕ РЕКЛАМЫ...
Чтобы оставить комментарий, пожалуйста, войдите на сайт.
Отредактирован Black Soul
Я думаю если вы начали это изучать, то изучайте самое последнее и крутое средство, это даже полезно будет
и соответсвенно любое другое действие, где прописанно Key
Отредактирован DracoL1ch