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

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

Показан только небольшой набор комментариев вокруг указанного. Перейти к актуальным.
17
if GetUnitTypeId(u) == FourCC('O485') then
Ко всем равкодам нужно теперь добавлять FourCC('XXXX') чтобы из строки сделать обычное представление в виде integer
Ещё неравенство из != превращается в ~=
С регионами вроде бы всё по старому
11
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
Почему он может не работать?( Камера не переносится, владелец не меняется, перс не перемещается...
21
Возможно нет инициализации. Попробуйте внизу написать InitTrig_PickHeroes( ).
В TriggerAdAction уберите еще скобки у второго аргумента.
24
В луа не работает бредовый "синтаксис" когда кажддому триггеру создается функция инициализации т.к. не генерируется вызов этих функций, в отличии от жасса, в котором каждому триггеру автоматически генерируется функция инициализации и добавляется вызов этой функции в скрытую от пользователя общую функцию инициализации.
Рекомендую прочитать эту статью чтобы разобраться как обеспечить себе место в коде, которое выполнится при старте карты и куда можно добавить в том числе и инициализацию своего триггера.
11
ScopteRectuS:
Возможно нет инициализации. Попробуйте внизу написать InitTrig_PickHeroes( ).
В TriggerAdAction уберите еще скобки у второго аргумента.
Не помогло(
prog:
Рекомендую прочитать эту статью чтобы разобраться как обеспечить себе место в коде
Не понял, каждую функцию надо ещё вручную где-то добавить в карту?
15
Если лень читать статью про инжект точки входа, сделай так:
Создай гуи триггер с событием "Инициализация карты" (Map Initialization), добавь туда действие "Custom script" и вставь в текст скрипта это:
entryPoint()
Потом объяви где-то функцию entryPoint:
function entryPoint()
	InitTrig_PickHeroes( )
end
И вызови из неё инит своего триггера, и руками туда добавляешь инит всех своих кастомных триггеров. Если у тебя есть общий код инициализации карты то функцию инициализации тоже вызови из entryPoint
В луа все триггеры ты создаешь вручную, инициализируешь вручную, вызываешь их инит тоже вручную как указано выше. Но глобальные переменные объявлять не надо если что, всё что не локалка - то глобалка.
21
Не понял, каждую функцию надо ещё вручную где-то добавить в карту?
Нет, я же сказал, что нужно инициализировать сначала ваш триггер, вызвав где-то функцию InitTrig_PickHeroes( ).
11
Нет, я же сказал, что нужно инициализировать сначала ваш триггер, вызвав где-то функцию InitTrig_PickHeroes( ).
Я в событиях вызвал
Загруженные файлы
15
DopaMine:
Нет, я же сказал, что нужно инициализировать сначала ваш триггер, вызвав где-то функцию InitTrig_PickHeroes( ).
Я в событиях вызвал
Еще раз. У тебя ничего не будет работать, пока ты не сделаешь точку входа. Если ты её не сделал - выше мной описано как.
21
DopaMine, напишите InitTrig_PickHeroes( ) внизу 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

InitTrig_PickHeroes()
Если так заработает, то переместите потом туда, где у вас инициализируется всё остальное.
24
ScopteRectuS, Drulia_san, Вот только такая конструкция вызывается ДО инициализации и при срабатывании сборщика мусора триггеры созданые таким образом могут потеряться. Будете потом ловить странный сложно воспроизводимый баг "триггеры вдруг перестали работать, что делать". Поэтому нужен инжект в оригинальный процесс инициализации.
Показан только небольшой набор комментариев вокруг указанного. Перейти к актуальным.
Чтобы оставить комментарий, пожалуйста, войдите на сайт.