Вчера я задавал вопрос, и когда я получил советы, то занялся делом, почитал статью про хеш таблицы сделал всё максимально приближенно к тому, что там, но к сожалению не работает, и я не могу понять, где именно. Подскажите, что я сделал не правильно??
Я сделал на основе нескольких триггеров, в первом я добавляю созданных юнитов и привязанное к ним здание в Хеш-таблицу.
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
28
5 лет назад
Отредактирован PT153
0
просто займет оно очень много времени и сил, т.к. оно слишком громоздкое и учитывает много всего.
Не думаю, на сайте есть наработка сохранения молний через хеш, её чуть под себя обновить и 50% готово.
NazarPunk:
Хватит всем набирать код руками, ноги выбор мастеров.
Выходит, что Lua - это ноги? Я думал, что наоборот.
0
4
5 лет назад
0
PT153, я имел ввиду не только сохранение молний, а полностью все заклинание.
0
26
5 лет назад
0
NazarPunk, очень интересно стало, что за способность, где молнии бросают кастеры, дамажит из них та, что сильнее, но сосут здоровье оба, при этом при касте друг на друга создаётся лишь одна молния, есть ещё особенности?
0
28
5 лет назад
0
8gabriel8, он же ссылку кинул.
Black Soul:
полностью все заклинание.
Я пока вижу только проблему, когда в одну цель несколько похищений.
0
29
5 лет назад
0
Я пока вижу только проблему, когда в одну цель несколько похищений.
И ещё одна проблема, если делать лимит целей: нужно обрывать drain, которому меньше всего жить осталось.
0
4
5 лет назад
0
PT153:
Я пока вижу только проблему, когда в одну цель несколько похищений.
Да. Ему много всего нужно учитывать при этом (например, равномерное распределение, первый кастер дамажит других и т.д.), поэтому это заклинание сложное.
0
26
5 лет назад
0
PT153:
он же ссылку кинул.
Сначала не понял, что это ссылка, два раза пересмотрел, только тогда нашёл. Наверное, плохо различаю тёмно-синий и чёрный текст, так как еле замечаю такие ссылки.
0
28
5 лет назад
0
8gabriel8, было бы неплохо ссылки подчёркивать.
Показан только небольшой набор комментариев вокруг указанного. Перейти к актуальным.
Чтобы оставить комментарий, пожалуйста, войдите на сайт.