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

Показан только небольшой набор комментариев вокруг указанного. Перейти к актуальным.
24
Там же в той теме в комментах мной расписаны некоторые нюансы настройки EmmyLua в вскоде, в составе другого плагина, правда...
14
prog:
Там же в той теме в комментах мной расписаны некоторые нюансы настройки EmmyLua в вскоде, в составе другого плагина, правда...
Да, я видел. Но мне с этим проще возится уже. Но ты всё-равно молодец.
24
Не, ну дело то ваше, долбитесь как хотите. Я рассказал про более вменяемый способ? Рассказал. Все, моя совесть чиста.
14
МрачныйВорон:
ага
Всё, VSCode заработал как нужно, но при попытке сохранить карту, в которой CS ссылается на код Lua, опять выдаёт ошибку мол "Jass юзаешь, да?!", хотя его там нет: онли Lua, и сами параметры совпадают. А код самой карты мне показывает как и раньше - непонятной и перекомканой писаниной (как на скринах выше). Ты мне сегодня помог намного больше, чем стоило бы (наверное), но не мог бы ты открыть эту карту у себя и посмотреть, что с ней не так? Там тот самый триггер я оставил, только отключил его через меню.
Загруженные файлы
27
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
карта пример прилагается. дело не программе, а в кривых руках)
Загруженные файлы
Принятый ответ
14
МрачныйВорон:
карта пример прилагается. --дело не программе, а в кривых руках)
Так, я проверил твой код (и гуи-триггер), потом создал свой скрипт, который вначале собирался - работает. Остался лишь один вопрос - если писать кастомный скрипт (оказывается там нужно было копировать его в "Новую функцию", а не "Личный сценарий", как я думал), с ссылкой на GUI (я имею введу как у ты сделал: событие и CS на ГУИ, а сам код на Lua, на скриншоте), это сильные проблемы вызовет? Например, если я в Events в ГУИ напишу "Времени прошло: 2 сек" и через Actions и "Новой функции (Lua)" создам, например мультиборд, то это будет считаться за ГУИшный мультиборд, или за Lua (это я к тому, что пишут "Пиши на Lua/JASS, тогда не будет утекать всё". Или нужно такие скрипты только-только на Lua писать (всё умещать в "Новая функция"), чтобы не утекало? прошу не бить меня палками по пяткам, если мои вопросы кажутся глупыми и раздражающими
27
Fly123, я думаю в режиме луа все гуишные функции пишутся на луа. Весь код конвертируется в lua, можно открыть war3map.lua после сохранялки. war3map.lua заменил наш war3map.j. Можете писать хоть на гуи, хоть возится с lua-кодом. Все переведется в lua. Когда вы lua-режим подключали, вы выбирали в чем сохранится.
Тут с lua кодом сложнее, надо внимательным быть. Бывает одна ошибка вызывает дохера времени на ее поиск/устранение. Долго нужно разбираться. А на гуи наверн попроще вам будет. Можно так и так, как вам удобнее.
33
МрачныйВорон, Пили гайд луа для новичков в варкарфте. У тебя само хорошо получится, начиная от перевод карты в режим луа и режим папку, и заканчивая простейшими триггерами и функциями... Я со своими словами не могу
27
Bergi_Bear, так тут все есть, осталось дописать немного. проблема в том, что у человека нет понимания как это работает. как запустить и прочее. я сам не очень то понимаю некоторые моменты.
14
МрачныйВорон:
Bergi_Bear, так тут все есть, осталось дописать немного. проблема в том, что у человека нет понимания как это работает. как запустить и прочее.
Ну да, ни черта не ясно, на самом деле. Оказалось, что "моя" функция не работала, работала только твоя. Попробовал заменить footman на doomguard в скриптах - всё-равно спаунятся футманы. Это какой-то кошмар. Ладно, в любом случае, спасибо тебе большое за помощь, с тем, что помог VSCode настроить и пытался объяснить.

Bergi_Bear:
МрачныйВорон, Пили гайд луа для новичков в варкарфте.
Nazar же хорошо в Lua разбирается, разве нет? Может ему было бы проще его написать? (если его не затруднит, конечно)
33
От Назара последний ресурс на сайте, больше года назад
Показан только небольшой набор комментариев вокруг указанного. Перейти к актуальным.
Чтобы оставить комментарий, пожалуйста, войдите на сайт.