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

Показан только небольшой набор комментариев вокруг указанного. Перейти к актуальным.
0
13
3 года назад
0
Компилятор же явно указал на место где ошибка... После OnMouseClick не хватает скобок

Bergi_Bear, действительно
0
32
3 года назад
0
так же будет баг, если будет открыто 2 карты в редакторе одна в J Другая в Lua, приоритет у Джасса и начнёт карта на луа проверяться как джасс, стоит это тоже помнить
1
27
3 года назад
1
вот статья раздел 17
0
14
3 года назад
0
Bergi_Bear:
так же будет баг, если будет открыто 2 карты в редакторе одна в J Другая в Lua, приоритет у Джасса и начнёт карта на луа проверяться как джасс, стоит это тоже помнить
Блин, какая-то лажа. Я же выбрал Lua в параметрах карты. Не нужно юзать же никакие проги дополнительные, шоб её перевести в Lua, не так ли?
1
27
3 года назад
Отредактирован MpW
1
Fly123, тогда все хорошо, никакие программы не нужны. тут у вас ошибка, нужно исправлять ошибки синтаксиса. просто ты в карте выбираешь один язык. Если выбираешь lua, то все пишешь только на lua. Выше скинул учебник примеры. Я примерно в интернете нашел и скомуниздил, что-то сам добавлял. И так далее.
0
14
3 года назад
Отредактирован Fly123
0
МрачныйВорон:
Fly123, тогда все хорошо, никакие программы не нужны.
Я так понимаю, такого быть не должно? Это после того, как я сохранил код в VSCode и карту. Теперь у меня вар не видит мапу, а редактор её не открывает. Есть кака-нибудь статья, где это всё подробно расжёвано (конечно её нет, но я всё-равно спрошу)?
upd: это произошло после того, как я закрыл карту и сохранил скрипт в VSCode,е. Походу VSCode финты выкидывает.
Загруженные файлы
1
27
3 года назад
Отредактирован MpW
1
Fly123, такое не должно быть. как вы создаете? lua-код куда сохраняете? прямо в карту? я в карту никогда не сохранял. так мне сложно помочь, тк. я не знаю причин.
самый простой вариант это copy-past, т.е. редактируете код в VsCode. Копируете весь код и вставляете в CustomScript. пример В рефорджете можно создать CustomScript, и туда код вставлять. Или кидаете все в шапку, тогда в шапке будет мешанина из разных систем. Запускаете смотрите. А что код в lua в VsCode можете сохранить отдельно.
Второй способ прямо из редактора запускать игру. это надо редактор настроить
на сайте/форуме не содержится объяснения как чего делать (для нубов конечно). я сам догадался из той статьи. До этого меня берги научил пользоваться программой для совместной работы, она запускала игру прямо, просто код вставлял. но она потом перестала работать. И мне уже лень ее снова запускать, настраивать. работаю в VsCode copy-paste
0
14
3 года назад
0
МрачныйВорон:
самый простой вариант это copy-past, т.е. редактируете код в VsCode. Копируете весь код и вставляете в CustomScript. Ля, я не знал, что так можно.
1
27
3 года назад
Отредактирован MpW
1
Fly123, я тоже не знал долгое время)

если вы применяете этот способ, то тебе нужно изучить эту статьи. она хукает, то есть заменяет функцию. я так понял, что вы можете много скриптов наделать и инициировать) я плохо понимаю) но суть я понял
0
14
3 года назад
Отредактирован Fly123
0
МрачныйВорон:
Короче, copy-past не работает. Я копирую весь код, он вставляет кусок. В шапку пробовал копипастить, он всё-равно показывает, что мол карта jASS, хотя я точно ставил Lua и перезапускал обновлял. Не работает ничего.

МрачныйВорон:
Fly123, я тоже не знал долгое время)
у тебя вот такого в VSCode никогда не было? Он пишет что мол версия какая-то "переделанная", и что нужно обновить. Я нажимаю на галочку, он удаляет все, что выделено красным и оставляет эту функцию с созданием юнита, после чего карта перестаёт открыватся в редакторе и варкрафт её больше не видит.
(лишний end я добавил чисто для проверки)
Загруженные файлы
1
27
3 года назад
Отредактирован MpW
1
Fly123, попробуйте на чистой карте перевести в режим lua, потом написать че-нибудь простенькое на lua. И запустить. Если запустится, значит в у вас в коде.
Сейчас без кода, и карты говорить не о чем. просто не могу понять, что вы делаете. и что у вас работает/не работает. верхние скрины ничего не говорят по сути мне.
были бы пошаговые действия +скрины, код и карта.

вызов функции происходит так:
onMouseClick()

у тебя вот такого в VSCode никогда не было? Он пишет что мол версия какая-то "переделанная", и что нужно обновить. Я нажимаю на галочку, он удаляет все, что выделено красным и оставляет эту функцию с созданием юнита, после чего карта перестаёт открыватся в редакторе и варкрафт её больше не видит.
такого никогда не было. Надо у умельцев спрашивать. Там нужно EmmyLua установить. И тогда встроенные скрипты common blizzard будет работать в файлах типа lua.
Показан только небольшой набор комментариев вокруг указанного. Перейти к актуальным.
Чтобы оставить комментарий, пожалуйста, войдите на сайт.