Всем привет.
Хочу подменить в мапе war3map.lua на свой кастомный.
Изначальная идея - реализовать hot redeploy скриптов во время работы в редакторе.
Но как только я подменяю war3map.lua, ниче не меняется. Ни в случае с открытым World Editor, ни с закрытым.
Жалуется, что не может сохранить war3map.w3i.
Тут в принципе не важно jass или lua. Вопрос именно в том, как технически правильно подменять скрипты ?

Принятый ответ

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

Показан только небольшой набор комментариев вокруг указанного. Перейти к актуальным.
0
1
4 года назад
0
Doc:
Давай. Если не получится, то я скину свой скрипт, как буду у ПК, там все достаточно просто.
всё перепроверил с чистого листа, получилось, спасибо.
правда в идеале хотелось бы иметь хот редеплой.
но пока не нашел никакого способа.
0
2
4 года назад
0
STORM_:
Doc:
Давай. Если не получится, то я скину свой скрипт, как буду у ПК, там все достаточно просто.
всё перепроверил с чистого листа, получилось, спасибо.
правда в идеале хотелось бы иметь хот редеплой.
но пока не нашел никакого способа.
и по-хорошему, чтобы не затирались скрипты после пересохранения карты в предакторе
0
29
4 года назад
0
правда в идеале хотелось бы иметь хот редеплой.
Имеется в виду в самой игре или что?
и по-хорошему, чтобы не затирались скрипты после пересохранения карты в предакторе
Для этого придется сначала вытаскивать скрипт из оригинальной карты, затем собирать твои скрипты + этот в один и пихать обратно. Это не сильно сложно.
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
Мой скрипт. Большая часть кода здесь отвечает за автоматический перезапуск игры.
Принятый ответ
0
2
4 года назад
Отредактирован theSTORM
0
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"
бтв, где можно почитать про эти файлы ?
1
29
4 года назад
Отредактирован Doc
1
Не в самой, при работе в World Editor, например, чтобы не перезапускать его
Так перезапускать и не нужно, файл карты ведь копируется.
Какие значения у %arguments% и %~dp0% ?
Никаких, эту строчку я у кого-то скопировал.
бтв, где можно почитать про эти файлы ?
На hiveworkshop есть туториалы
0
17
4 года назад
0
теоретически можно сохранить карту как папку, заменять оригинальный скрипт на свой, и потом уже собирать в архив
0
23
4 года назад
0
шел 2020 а они не знают что карта терь можно работать как с папкой и написать сборку текушего папки с обновленым кодом и прелоад варкрафта через map
0
29
4 года назад
0
Я в целом не знал, что можно запускать саму игру, используя фолдер, но да, если так можно, то скрипт будет проще.
Показан только небольшой набор комментариев вокруг указанного. Перейти к актуальным.
Чтобы оставить комментарий, пожалуйста, войдите на сайт.