Написал скрипт, который должен вызывать футмена при кликании мышкой на карту (знаю, что можно на GUI, но не суть). При попытке сохранить карту выдаёт ошибку (на скрине). Скрины кода и ошибки прилагаю. Сам код также прилагаю. Хочу узнать, почему WE быкует на меня в данной ситуации и не принимает завершение функции.
код
function onMouseClick()
CreateUnitByName(
GetLocalPlayer(),
'Footman',
BlzGetTriggerPlayerMouseX(),
BlzGetTriggerPlayerMouseY(),
120
)
end
Скрины -
Только прошу не кричать "У нас за такой код *подставить_способ_экзекуции* устраивали!"

Fly123, эх ладно. вы все не правильно делаете.
  1. вы мне скинули абсолютно пустую карту с отключенным триггером. А где код? Она у меня норм без проблем запустилась.
  2. вам для работы с lua лучше отказаться от гуи. Вы лишаетесь большого инструмента.
  3. Пример Назарова смотрите с движением снарядов ссылка. там показывают. Ну он же есть. Берете пример prog с хуком, и вставляете триггеры
  4. неправильное событие у вас стоит, тк координаты мыши не получить
это какой то простой код, видимо вы пытаетесь понять как запустить. два показательных примера покажу:
первый - вставляете код
do -- создаём область видимости, чтоб не конфликтовать с другим кодом

    local InitGlobalsOrigin = InitGlobals -- хукаем функцию InitGlobals
	function InitGlobals()
		InitGlobalsOrigin()
            -- в этом моменте прошла инициализация карты и можно смело работать
                FogEnableOff()
                FogMaskEnableOff()
                --создаем триггеры
                local MouseMove = CreateTrigger(  )
                TriggerRegisterPlayerMouseEventBJ( MouseMove, Player(0), bj_MOUSEEVENTTYPE_MOVE )
                TriggerAddAction( MouseMove, function()
                    --CreateUnitByName(GetLocalPlayer(),'footman',BlzGetTriggerPlayerMouseX(),BlzGetTriggerPlayerMouseY())
                    print("координаты: "..BlzGetTriggerPlayerMouseX()..","..BlzGetTriggerPlayerMouseY())
                    CreateUnit(Player(0),FourCC('hfoo'),BlzGetTriggerPlayerMouseX(),BlzGetTriggerPlayerMouseY(),0)
                    
                end)
            
        --end
	end
end
второй - с использованием гуи
    function onMouseClick()
        --CreateUnitByName(GetLocalPlayer(),'footman',BlzGetTriggerPlayerMouseX(),BlzGetTriggerPlayerMouseY())
        print("координаты: "..BlzGetTriggerPlayerMouseX()..","..BlzGetTriggerPlayerMouseY())
        CreateUnit(Player(0),FourCC('hfoo'),BlzGetTriggerPlayerMouseX(),BlzGetTriggerPlayerMouseY(),0)
                    
    end
карта пример прилагается. дело не программе, а в кривых руках)
Загруженные файлы
`
ОЖИДАНИЕ РЕКЛАМЫ...

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

ответ
У вас не работает, потому что вы перезаписали нативки на свои функции. В луа не нужно ничего объявлять. Всё работает и так из коробки.

27
если вы перевели в режим луа карту. то тут ругается либо из-за end - либо тут лишнюю end дописали где-то или не закрыли блок. у меня было очень много блоков в блоков, блоков в цикле. Когда переносил на lua, случайно дописал end. И потом ругался, долго искал. У вас как не знаю)
в режиме луа обычно ругают на всякие jass-вские !=, set, endif, endfunction, loop. А еще типы пример: local real a не пропустит такое, надо local a. Короче невосприимчивы для lua кода синтаксис. Не пропускает. Это хорошо, можно подправить
13
Компилятор же явно указал на место где ошибка... После OnMouseClick не хватает скобок

Bergi_Bear, действительно
33
так же будет баг, если будет открыто 2 карты в редакторе одна в J Другая в Lua, приоритет у Джасса и начнёт карта на луа проверяться как джасс, стоит это тоже помнить
14
Bergi_Bear:
так же будет баг, если будет открыто 2 карты в редакторе одна в J Другая в Lua, приоритет у Джасса и начнёт карта на луа проверяться как джасс, стоит это тоже помнить
Блин, какая-то лажа. Я же выбрал Lua в параметрах карты. Не нужно юзать же никакие проги дополнительные, шоб её перевести в Lua, не так ли?
Показан только небольшой набор комментариев вокруг указанного. Перейти к актуальным.
Чтобы оставить комментарий, пожалуйста, войдите на сайт.