2

» WarCraft 3 / Lua remote debugger

pro100master:
а чем не угодил пользовательский дебаг?
Пользовательский дебаг - это писать в повсеместно print ? Если так, то это максимально неудобно и неэффективно.
Doc:
Был опыт дебаггинга луа в других средах. В т.ч. Luajit, который в десятки/сотни раз быстрее обычного луа. Даже в нем дебаггинг чего-либо невозможен из-за особенностей виртуальной машины (дебаггер реализован посредством вызова коллбека на каждую пройденную строчку кода, поэтому цикл из 5 строк по 100 элементам делает 500 очень медленных вызовов). В большинстве случаев брейкпоинтов в дебаггере просто не дождаться.
в intellij idea с EmmyLua плагином есть встроенный remote debugger, который в рамках IDE работает хорошо, там можно переопределить порт, но как к wc3 подцепиться, пока нет идей
2

» WarCraft 3 / Lua remote debugger

Doc:
Нужен модуль debug, его в вк3 отключили сейчас
Во-вторых отладка луа стандартными средствами почти бесполезна, слишком сильно проседает перформанс.
откуда инфа про проседание перформанса ? был опыт запуска ? может можно как-то подменить встроенный lua интерпретатор на кастомный ?
2

» WarCraft 3 / подменить war3map.lua на свой кастомный

Doc:
правда в идеале хотелось бы иметь хот редеплой.
Имеется в виду в самой игре или что?
и по-хорошему, чтобы не затирались скрипты после пересохранения карты в предакторе
Для этого придется сначала вытаскивать скрипт из оригинальной карты, затем собирать твои скрипты + этот в один и пихать обратно. Это не сильно сложно.
setlocal EnableDelayedExpansion

if exist pid.txt (
    set /P pid=<pid.txt
    echo !pid!
    taskkill /F /PID !pid!
)

set map=output\map.w3x

mkdir output
xcopy ..\test_stuff_map.w3x %map%* /Y

"tools\MPQEditor.exe" add "%map%" "war3map.lua" "war3map.lua"
"tools\MPQEditor.exe" add "%map%" "testdialog.fdf" "TestDialog.fdf"
"tools\MPQEditor.exe" add "%map%" "ui_list.toc" "ui_list.toc"

set game=E:\games\Warcraft III Public Test\x86_64\Warcraft III.exe

start "" "%game%" -loadfile "%~dp0%map%" -windowmode windowedfullscreen %arguments%

for /F "TOKENS=2,3,*" %%a in ('tasklist /FI "IMAGENAME eq Warcraft III.exe"') do set MyPID=%%b
echo %MyPID% > pid.txt
Мой скрипт. Большая часть кода здесь отвечает за автоматический перезапуск игры.
Спасибо.
Переменные теперь окружения интересуют)
Какие значения у %arguments% и %~dp0% ?
%map% я так понял - это путь, где будет лежать результирующая мапа,
а %game% путь до exe варика
Doc:
Имеется в виду в самой игре или что?
Не в самой, при работе в World Editor, например, чтобы не перезапускать его
Doc:
"tools\MPQEditor.exe" add "%map%" "testdialog.fdf" "TestDialog.fdf"
"tools\MPQEditor.exe" add "%map%" "ui_list.toc" "ui_list.toc"
бтв, где можно почитать про эти файлы ?
2

» WarCraft 3 / подменить war3map.lua на свой кастомный

STORM_:
Doc:
Давай. Если не получится, то я скину свой скрипт, как буду у ПК, там все достаточно просто.
всё перепроверил с чистого листа, получилось, спасибо.
правда в идеале хотелось бы иметь хот редеплой.
но пока не нашел никакого способа.
и по-хорошему, чтобы не затирались скрипты после пересохранения карты в предакторе
2

» WarCraft 3 / подменить war3map.lua на свой кастомный

Doc:
Блин ну чем вы читаете то? Говорю же скопировать файл нужно, тогда этот файл ничем не будет занят.
но результат я не вижу
Я не понимаю, что это значит, в самом редакторе никакого результата не будет видно в любом случае. Результат будет в игре.
Имею в виду, что результата в игре нет. Попробую всё перепроверить и пошагово описать, что делаю
2

» WarCraft 3 / подменить war3map.lua на свой кастомный

Doc:
А что конкретно должно меняться внутри редактора? Правильный метод - копировать карту скриптом в другое место, подменять код в ней (я делаю с помощью MPQEditor.exe) и запускать ее.
Ожидаю просто появление новых скриптов. При пересохранении он всё перетирает и жалуется, что не может сохранить war3map.w3i.
При запуске карты скрипты просто не появляются.
Doc:
А что конкретно должно меняться внутри редактора? Правильный метод - копировать карту скриптом в другое место, подменять код в ней (я делаю с помощью MPQEditor.exe) и запускать ее.
Если речь про MPQ формат, то MPQEditor.exe не может подменить скрипт, т.к. процесс занят редактором, если с закрытым редактором делать, то скрипт подменит, но результат я не вижу