Написал скрипт, который должен вызывать футмена при кликании мышкой на карту (знаю, что можно на 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
27
3 года назад
Отредактирован MpW
0
если вы перевели в режим луа карту. то тут ругается либо из-за end - либо тут лишнюю end дописали где-то или не закрыли блок. у меня было очень много блоков в блоков, блоков в цикле. Когда переносил на lua, случайно дописал end. И потом ругался, долго искал. У вас как не знаю)
в режиме луа обычно ругают на всякие jass-вские !=, set, endif, endfunction, loop. А еще типы пример: local real a не пропустит такое, надо local a. Короче невосприимчивы для lua кода синтаксис. Не пропускает. Это хорошо, можно подправить
0
32
3 года назад
0
Вот ответ
Карта в режиме Jass
Загруженные файлы
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, я тоже не знал долгое время)

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