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