Вчера я задавал вопрос, и когда я получил советы, то занялся делом, почитал статью про хеш таблицы сделал всё максимально приближенно к тому, что там, но к сожалению не работает, и я не могу понять, где именно. Подскажите, что я сделал не правильно??
Я сделал на основе нескольких триггеров, в первом я добавляю созданных юнитов и привязанное к ним здание в Хеш-таблицу.
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, хеш-таблицы — это проще простого. Они не требуют множество действий для работы. Достаточно только понять принцип.
`
ОЖИДАНИЕ РЕКЛАМЫ...

Показан только небольшой набор комментариев вокруг указанного. Перейти к актуальным.
0
11
5 лет назад
0
Тогда вопрос остаётся актуальным, где я совершил ошибку, что ничего не работает??
2
32
5 лет назад
2
где я совершил ошибку
когда проигнорировал сообщение про луа, там не нужны хештаблицы.
0
16
5 лет назад
Отредактирован DracoL1ch
0
прежде чем кричать, куда переходить, спросите, где автор будет в карту свою играть. 90 к 1, что на гарене, где никогда не будет патча выше 1.26
0
29
5 лет назад
0
DracoL1ch, нужно стремиться к светлому будущему, а не утягивать всех в пучину 1.26 с костылями и гареной с полтора землекопа.
1
16
5 лет назад
1
а в батлнете не полтора землекопа, понял принял
0
28
5 лет назад
0
DracoL1ch, я в свою карту быстро набираю лобби в баттлнете.
0
4
5 лет назад
Отредактирован Black Soul
0
ArhiMEN:
Я посмотрел, но возникла проблема. Я тупой и не могу написать также, но моменте добаления юнита в хеш таблицу. Я Save Handle of (Last created unit) as 0 of (а дальше я не нашёл, как добавть "Key(Constructed structure))" in Hash
и соответсвенно любое другое действие, где прописанно Key
Так не нужно ничего самому делать. Я прикрепил к тому сообщению карту. В ней я уже все сделал сам. Тебе осталось только скопировать триггеры оттуда в свою карту и заменить юнитов на тех, которые тебе нужны. Вот та карта:
Bergi_Bear, хеш-таблицы — это проще простого. Они не требуют множество действий для работы. Достаточно только понять принцип.
Принятый ответ
0
29
5 лет назад
0
хеш-таблицы — это проще простого.
Хэштаблицы проще чем lua?
0
4
5 лет назад
0
NazarPunk, не знаю, насколько сложен Lua, но хеш-таблицы очень легко освоить, как я написал выше. Достаточно только понять принцип их работы.
0
29
5 лет назад
0
но хеш-таблицы очень легко освоить
Хэштаблицы это неповоротливый костыль, который можно использовать только для хранения this структуры по хэндлу таймера.
0
4
5 лет назад
0
NazarPunk, почему? Везде, где использовал, отлично работали. В той наработке, которую я сделал, они работали так, как нужно, хоть там и не таймер. Хеш-таблица — универсальный хранитель информации.
Показан только небольшой набор комментариев вокруг указанного. Перейти к актуальным.
Чтобы оставить комментарий, пожалуйста, войдите на сайт.