Написал скрипт, который должен вызывать футмена при кликании мышкой на карту (знаю, что можно на 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
карта пример прилагается. дело не программе, а в кривых руках)
Загруженные файлы
`
ОЖИДАНИЕ РЕКЛАМЫ...

Показан только небольшой набор комментариев вокруг указанного. Перейти к актуальным.
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, не так ли?
27
Fly123, тогда все хорошо, никакие программы не нужны. тут у вас ошибка, нужно исправлять ошибки синтаксиса. просто ты в карте выбираешь один язык. Если выбираешь lua, то все пишешь только на lua. Выше скинул учебник примеры. Я примерно в интернете нашел и скомуниздил, что-то сам добавлял. И так далее.
14
МрачныйВорон:
Fly123, тогда все хорошо, никакие программы не нужны.
Я так понимаю, такого быть не должно? Это после того, как я сохранил код в VSCode и карту. Теперь у меня вар не видит мапу, а редактор её не открывает. Есть кака-нибудь статья, где это всё подробно расжёвано (конечно её нет, но я всё-равно спрошу)?
upd: это произошло после того, как я закрыл карту и сохранил скрипт в VSCode,е. Походу VSCode финты выкидывает.
Загруженные файлы
27
Fly123, такое не должно быть. как вы создаете? lua-код куда сохраняете? прямо в карту? я в карту никогда не сохранял. так мне сложно помочь, тк. я не знаю причин.
самый простой вариант это copy-past, т.е. редактируете код в VsCode. Копируете весь код и вставляете в CustomScript. пример В рефорджете можно создать CustomScript, и туда код вставлять. Или кидаете все в шапку, тогда в шапке будет мешанина из разных систем. Запускаете смотрите. А что код в lua в VsCode можете сохранить отдельно.
Второй способ прямо из редактора запускать игру. это надо редактор настроить
на сайте/форуме не содержится объяснения как чего делать (для нубов конечно). я сам догадался из той статьи. До этого меня берги научил пользоваться программой для совместной работы, она запускала игру прямо, просто код вставлял. но она потом перестала работать. И мне уже лень ее снова запускать, настраивать. работаю в VsCode copy-paste
14
МрачныйВорон:
самый простой вариант это copy-past, т.е. редактируете код в VsCode. Копируете весь код и вставляете в CustomScript. Ля, я не знал, что так можно.
27
Fly123, я тоже не знал долгое время)

если вы применяете этот способ, то тебе нужно изучить эту статьи. она хукает, то есть заменяет функцию. я так понял, что вы можете много скриптов наделать и инициировать) я плохо понимаю) но суть я понял
Показан только небольшой набор комментариев вокруг указанного. Перейти к актуальным.
Чтобы оставить комментарий, пожалуйста, войдите на сайт.