В общем настроил Cheapack, все работает, карта нормально собирается и war3map.lua тоже. Но я никак не могу достучаться до скриптов, как будто они как-то неправильно работают.
init.lua
BJDebugMsg('pfff')
print('pfff print')

do
    local f = InitGlobals()
    function InitGlobals()
        f()

        print('print')
        BJDebugMsg('print')
        -- All post InitGlobals initializations
        test()

    end
end
test.lua
BJDebugMsg('pfff')
print('pfff print')


function sum(a, b) return a + b end

function test()
    TimerStart(CreateTimer(), 1, false, function()
        BJDebugMsg('test')
		print('test print')
        --print(sum(1))
        -- CreateUnit(Player(0),FourCC('hpea'),0,0,180)
        -- CreateUnit(FourCC('hpea'),Player(0),0,0)
    end)
end
Итоговый war3map.lua(часть)
function InitGlobals()
end

--CUSTOM_CODE
BJDebugMsg('pfff')
print('pfff print')

do
    local f = InitGlobals()
    function InitGlobals()
        f()

        print('print')
        BJDebugMsg('print')
        -- All post InitGlobals initializations
        test()

    end
end
BJDebugMsg('pfff')
print('pfff print')


function sum(a, b) return a + b end

function test()
    TimerStart(CreateTimer(), 1, false, function()
        BJDebugMsg('test')
		print('test print')
        --print(sum(1))
        -- CreateUnit(Player(0),FourCC('hpea'),0,0,180)
        -- CreateUnit(FourCC('hpea'),Player(0),0,0)
    end)
end
Собственно я пытаюсь достучаться до скриптов как и просто в пустом скрипте так и через хук функции InitGlobals, а потом еще и в таймере, который этот InitGlobals запускает. Ни один текст не выводится, то есть вообще ничего не запускается.
Карту перед запуском сохранял, как было написано в гайде Cheapack
До этого пытался использовать warcraft-vscode, там вроде работало но ультра-криво, я запускал map.w3x, сохранял ее, потом заходил на ту же карту только в .build и только тогда war3map.lua уживался и работал, но это другая история, здесь так вообще ничего не реагирует, кто нибудь поможет?
(Приложил фотки кому проще на них смотреть)

Чтоб не мучаться с хуками, можно использовать Total Initialization.
`
ОЖИДАНИЕ РЕКЛАМЫ...
26
Наверное, надо так
do
    function MarkGameStarted()
        print('pfff print')
    end
end
результат
Загруженные файлы
3
Наверное, надо так
do
    function MarkGameStarted()
        print('pfff print')
    end
end
результат
Круто, сработало. Почему вообще эта функция решила запуститься? Тогда почему в моем коде не работает измененная функция InitGlobals? И насколько мне известно все инструкции скрипта выполняются в любом случае при старте так почему тогда не работают мои принты в самой внешней области?(До этого на карте созданной warcraft-vscode подобное сработало) крче я немного запутался
Этот комментарий удален
26
Почему вообще эта функция решила запуститься?
Ну MarkGameStarted() это функция из варкрафта.
А вообще, я не шарю как всё это работает, просто в какой-то статье попалась на глаза эта конструкция, и с тех пор её юзаю в качестве точки входа, кек.
3
Еще заметил что я в f записывал результат функции InitGlobals а не саму функцию, мда
30
Чтоб не мучаться с хуками, можно использовать Total Initialization.
Принятый ответ
3
Чтоб не мучаться с хуками, можно использовать Total Initialization.
Я скопировал их код в отдельный файл, но теперь карта просто не запускается, в меню выходит
30
NatriY, их код должен быть в самом верху при сборке.
3
NatriY, их код должен быть в самом верху при сборке.
Заработало, спасибо
Чтобы оставить комментарий, пожалуйста, войдите на сайт.