Добавлен
Почему невозможно писать кодом на ЛУА карту в Reforged?? Нельзя конвертировать в текст триггер...Что делать?

Принятый ответ

Конвертировать триггер в текст в режиме Lua действительно нельзя. Для этого создается специальный Custom Script блок
Загруженные файлы
`
ОЖИДАНИЕ РЕКЛАМЫ...

Показан только небольшой набор комментариев вокруг указанного. Перейти к актуальным.
0
19
4 года назад
0
Похожие вопросы:

ответ
Но как переписать код на луа как можно быстрее?
Можно достать из карты war3map.j и сконвертировать в lua. После доработки напильником вполне работоспособно))

1
17
4 года назад
1
Конвертировать триггер в текст в режиме Lua действительно нельзя. Для этого создается специальный Custom Script блок
Загруженные файлы
Принятый ответ
0
11
4 года назад
0
специальный Custom Script блок
Там надо по аналогии с триггерами из JASS писать?
function Trig_PickHeroes_Actions()
    local u = GetTriggerUnit()
    if GetUnitTypeId(u) == 'O485' then
        PickHayate(u)
        Hayate(u)
    --elseif
    end
end

--===========================================================================
function InitTrig_PickHeroes()
    gg_trg_PickHeroes = CreateTrigger(  )
    TriggerRegisterPlayerSelectionEventBJ( gg_trg_PickHeroes, Player(0), true )
    TriggerAddAction( gg_trg_PickHeroes, Trig_PickHeroes_Actions() )
    udg_hash = InitHashtable()
end
Проверьте синтаксис плз, правильно? А то почему-то ошибок нет, а кастом код не работает((
Как мне на луа обратиться к региону? На жассе это было gg_rct_Region_001. А как на ЛУА?
0
17
4 года назад
0
if GetUnitTypeId(u) == FourCC('O485') then
Ко всем равкодам нужно теперь добавлять FourCC('XXXX') чтобы из строки сделать обычное представление в виде integer
Ещё неравенство из != превращается в ~=
С регионами вроде бы всё по старому
0
11
4 года назад
0
PyCCKuu_4eJl:
if GetUnitTypeId(u) == FourCC('O485') then
Ко всем равкодам нужно теперь добавлять FourCC('XXXX') чтобы из строки сделать обычное представление в виде integer
Ещё неравенство из != превращается в ~=
С регионами вроде бы всё по старому
Спасибо! А где можно посмотреть все альтернативы джассу для LUA? Типо как на луа переводить из string в integer, из real в string и т.д.?
У меня всё равно не работает((
Вот код функции, которая вызывается:
--Выбор хаяте
function PickHayate(u)
    local h = GetHandleId(u)
    if LoadBoolean(udg_hash,h,StringHash("PickBoolean")) == false then
         SetUnitPositionLoc( u, GetRectCenter(gg_rct_Hayate) )
         PanCameraToTimedLocForPlayer( Player(0), GetRectCenter(gg_rct_Hayate), 0 )
         SetUnitOwner( u, Player(0), false )
         SaveBoolean(udg_hash,h,StringHash("PickBoolean"), true)
    end
end
По синтаксису всё верно? Регион называется "Hayate"
Вот весь кастом код...
--Выбор хаяте
function PickHayate(u)

    --local h = GetHandleId(u)
    --if LoadBoolean(udg_hash,h,StringHash("PickBoolean")) == false then
         SetUnitPositionLoc( u, GetRectCenter(gg_rct_Hayate) )
         PanCameraToTimedLocForPlayer( Player(0), GetRectCenter(gg_rct_Hayate), 0 )
         SetUnitOwner( u, Player(0), false )
         --SaveBoolean(udg_hash,h,StringHash("PickBoolean"), true)
    --end
end

function Trig_PickHeroes_Actions()

    local u = GetTriggerUnit()
    if GetUnitTypeId(u) == FourCC('O485') then
        PickHayate(u)
        --Hayate(u)
    --elseif
    end
end

--===========================================================================
function InitTrig_PickHeroes()
    gg_trg_PickHeroes = CreateTrigger(  )
    TriggerRegisterPlayerSelectionEventBJ( gg_trg_PickHeroes, Player(0), true )
    TriggerAddAction( gg_trg_PickHeroes, Trig_PickHeroes_Actions() )
    udg_hash = InitHashtable()
end
Почему он может не работать?( Камера не переносится, владелец не меняется, перс не перемещается...
0
21
4 года назад
0
Возможно нет инициализации. Попробуйте внизу написать InitTrig_PickHeroes( ).
В TriggerAdAction уберите еще скобки у второго аргумента.
0
24
4 года назад
0
В луа не работает бредовый "синтаксис" когда кажддому триггеру создается функция инициализации т.к. не генерируется вызов этих функций, в отличии от жасса, в котором каждому триггеру автоматически генерируется функция инициализации и добавляется вызов этой функции в скрытую от пользователя общую функцию инициализации.
Рекомендую прочитать эту статью чтобы разобраться как обеспечить себе место в коде, которое выполнится при старте карты и куда можно добавить в том числе и инициализацию своего триггера.
0
11
4 года назад
0
ScopteRectuS:
Возможно нет инициализации. Попробуйте внизу написать InitTrig_PickHeroes( ).
В TriggerAdAction уберите еще скобки у второго аргумента.
Не помогло(
prog:
Рекомендую прочитать эту статью чтобы разобраться как обеспечить себе место в коде
Не понял, каждую функцию надо ещё вручную где-то добавить в карту?
0
16
4 года назад
Отредактирован Drulia_san
0
Если лень читать статью про инжект точки входа, сделай так:
Создай гуи триггер с событием "Инициализация карты" (Map Initialization), добавь туда действие "Custom script" и вставь в текст скрипта это:
entryPoint()
Потом объяви где-то функцию entryPoint:
function entryPoint()
	InitTrig_PickHeroes( )
end
И вызови из неё инит своего триггера, и руками туда добавляешь инит всех своих кастомных триггеров. Если у тебя есть общий код инициализации карты то функцию инициализации тоже вызови из entryPoint
В луа все триггеры ты создаешь вручную, инициализируешь вручную, вызываешь их инит тоже вручную как указано выше. Но глобальные переменные объявлять не надо если что, всё что не локалка - то глобалка.
0
21
4 года назад
0
Не понял, каждую функцию надо ещё вручную где-то добавить в карту?
Нет, я же сказал, что нужно инициализировать сначала ваш триггер, вызвав где-то функцию InitTrig_PickHeroes( ).
Показан только небольшой набор комментариев вокруг указанного. Перейти к актуальным.
Чтобы оставить комментарий, пожалуйста, войдите на сайт.