не видит звук захода в фонтан (в конце 1го уровня), который вроде формируется этой строкой: call CreateUnit(Player(i-1),'hrif',x,y-60,90)
с этим отмена, это стандартный звук массового телепорта, в который превращён этот rifleman \Abilities\Spells\Human\MassTeleport\MassTeleportTarget.wav который успешно отловился
а вот звук фоновой музыки, которую ещё можно включать и выключать, т.е. тригерить обращение к mp3 файлу - вот странно что не отлавливается
задача - найти 100% листфайл к чужой карте
но иногда удается отыскать только 90% листфайл
и теперь дилемма - что лучше 0% листфайл или 90% листфайл?
например третий человек скачает оригинал, а там 0%. и ему сидеть депротектить, а еще если он не знает как
а тут рядом лежит карта с 90% листфайлом, не проще ли ему скачать её и работать уже с ней? основная цель - не испортить оригинальную карту, но внедрить туда 90% листфайл
понятно, что если есть 100% листфайл, то можно просто перепаковать без заморочек и всё
или вторая цель - бывают карты, которые настолько испохаблены автором, что не заливаются на эпиквар
так вот, условно даже без поиска листфайла, просто внедрить туда один исправленный w3i, чтобы карта успешно залилась на эпик, ну эта вторая цель в принципе решена в первом посте этой темы
только w3i wts j ничем не отличаются технически от листфайла, просто MPQ Editor эти файлы может залить в карту с 0% листфайлом, а листфайл в эту же карту он отказывается лить. т.е. цель - найти софт, который может залить листфайл в карту
причем результат зависит от разных карт и может быть неудовлетворительным (на некоторых картах после добавления полного листфайла поверх пустого - карта при открытии в WinMPQ показывает все имена, а при открытии этой же карты через MPQ Editor считывает только старый листфайл и не показывает имена)
вот прикрепил карту с внедрённым новым списком, в которой есть такой глюк
даже не помогает, если в WinMPQ не просто добавить листфайл поверх прошлого, а старый сначала удалить а потом новый добавить - хотя по предварительным тестам срабатывает, если 2 раза удалить листфайл и добавить (удалить, добавить, закрыть winmpq, запустить winmpq, открыть карту, удалить, добавить). только после второго раза нормально отображается в обоих софтулях. причем работает только с закрытием winmpq а с "reopen mpq" не работает
т.е. надо найти кнопку "удалить старые версии файлов" из mpq, а где она такая? (т.к. MPQ хранит все версии файлов, если была перезапись поверх, а не удаление + добавление)
далее прикрепляю его дополнительным листфайлом в ладик мпку и потом перепаковываю карту
как это сделать если листфайл не полный? не 100%
как его вставить вместо пустого старого листфайла?
этот же вопрос задан в шапке вопроса
и у меня получилось это сделать только 1 софтом из 4х, причем результат зависит от разных карт и может быть неудовлетворительным (на некоторых картах после добавления полного листфайла поверх пустого - карта при открытии в WinMPQ показывает все имена, а при открытии этой же карты через MPQ Editor считывает только старый листфайл и не показывает имена, но повторюсь это не на всех картах так, иногда обе софтулины показывают полный список)
т.е. вопрос не в формировании листфайла, а во внедрении уже готового 90% листфайла в карту
после запуска игры в корне появится файл LoadFile.txt
примечание: в корне варика
Прикрепляю свой mix для выгрузки ListfileConstructor.mix
не желаешь создать отдельный ресурс с этим файлом? это пушка
По сути аналог сканера из мпку эдитора
мпку едитор просит путь к папке и сам запускает варик, поэтому никакие сторонние лоадеры, в том числе JN Loader и карты, которые через него запускаются - недоступны. а твой же метод автономен, удобен и работает с JN Loader на 1.28.5 в том числе, это прекрасно, я давно о таком realtime-JN-1.28 способе мечтал, последние 2 года
но иногда тянет дополнительные файлы
депротект вещь суровая, и даже имея 10 разных способов вытянуть листфайл - все равно часто не удается собрать его на 100%, поэтому твой 11й способ будет совсем не лишним
первый опыт использования твоего mix:
LoadFile.txt можно переименовать в !LoadFile.txt или _LoadFile.txt, чтобы он был сверху списка или zLoadFile.txt чтобы в конце списка
но не видит фоновую музыку Green Greens.mp3, которая играет со старта, хотя она активируется также как и звук прыжка через CreateSound + StartSound , музыку вкл выкл можно командой -music
не видит звук захода в фонтан (в конце 1го уровня), который вроде формируется этой строкой: call CreateUnit(Player(i-1),'hrif',x,y-60,90)
файл забивается задвойками и жирнеет при каждом запуске, по этому нужно не забывать его удалять
хех, за 3 года опыта депротекта указанный тобой "минус" фактически ничто, по сравнению со всем остальным неудобством, с чем придется столкнуться и каким широким объёмом софта и знаний пользоваться. примерно как слон и муха
MPQEditor - в принципе отказывается делать любые манипуляции с этим файлом - ни удаление, ни добавление (там где он уже удалён) не работает WinMPQ - и удаляет и добавляет MoPaQ 2000 MPQ2k - при удалении (listfile) пишет Failed, поверх тоже не добавляет MPQ Master - не добавляет
JN Loader из официальных ссылок не полный (в том числе в шапке этой темы).
при первом запуске он докачивает dll для связи с m16 (пока не докачает - не запустится нормально)
но докачивает он очень коряво и может так этого и не сделать за 30 перезапусков и 2 часа
поэтому вот готовые файлы уже докачанные, которые сразу работают с 1.28.5 и ничего не докачивают (на сегодняшний день)
из новшеств - во время запуска появляется такое окошко, которое надо закрыть на крестик и после этого нормально запустится JN-варкрафт
если вспомнить, что исходники JN Loader открыты и лежат на гитхабе - было бы хорошо, если нашелся бы человек, который смог бы пересобрать JN Loader, который бы не стучался в Корею в m16, а нормально быстро запускался бы
тем более на Ирине уже пару лет функционирует патч 1.28.5 и там отлично играется через JN Loader в JN карты с друзьями по сети
на хайве найден способ запуска версий с 1.28 по ~1.31 в мультиокнах
используется связка ForceBindIP + Sandboxie
работает не идеально (не работает на 1.26 и не работает на JNLoader), но что-то запустить да можно
function ColorPlayerClassic takes string s, integer i returns string
if 1==0 then
elseif i==1 then
return Color00PlayerRedClassic(s)
elseif i==2 then
return Color01PlayerBlueClassic(s)
elseif i==3 then
return Color02PlayerCyanClassic(s)
elseif i==4 then
return Color03PlayerPurpleClassic(s)
elseif i==5 then
return Color04PlayerYellowClassic(s)
elseif i==6 then
return Color05PlayerOrangeClassic(s)
elseif i==7 then
return Color06PlayerGreenClassic(s)
elseif i==8 then
return Color07PlayerPinkClassic(s)
elseif i==9 then
return Color08PlayerLightGrayClassic(s)
elseif i==10 then
return Color09PlayerLightBlueClassic(s)
elseif i==11 then
return Color10PlayerAquaClassic(s)
elseif i==12 then
return Color11PlayerBrownClassic(s)
endif
return null
endfunction
Reforged
Код
function ColorPlayerReforged takes string s, integer i returns string
if 1==0 then
elseif i==1 then
return Color00PlayerRedReforged(s)
elseif i==2 then
return Color01PlayerBlueReforged(s)
elseif i==3 then
return Color02PlayerCyanReforged(s)
elseif i==4 then
return Color03PlayerPurpleReforged(s)
elseif i==5 then
return Color04PlayerYellowReforged(s)
elseif i==6 then
return Color05PlayerOrangeReforged(s)
elseif i==7 then
return Color06PlayerGreenReforged(s)
elseif i==8 then
return Color07PlayerPinkReforged(s)
elseif i==9 then
return Color08PlayerLightGrayReforged(s)
elseif i==10 then
return Color09PlayerLightBlueReforged(s)
elseif i==11 then
return Color10PlayerAquaReforged(s)
elseif i==12 then
return Color11PlayerBrownReforged(s)
elseif i==13 then
return Color12PlayerMaroonReforged(s)
elseif i==14 then
return Color13PlayerNavyReforged(s)
elseif i==15 then
return Color14PlayerTurquoiseReforged(s)
elseif i==16 then
return Color15PlayerVioletReforged(s)
elseif i==17 then
return Color16PlayerWheatReforged(s)
elseif i==18 then
return Color17PlayerPeachReforged(s)
elseif i==19 then
return Color18PlayerMintReforged(s)
elseif i==20 then
return Color19PlayerLavenderReforged(s)
elseif i==21 then
return Color20PlayerCoalReforged(s)
elseif i==22 then
return Color21PlayerSnowReforged(s)
elseif i==23 then
return Color22PlayerEmeraldReforged(s)
elseif i==24 then
return Color23PlayerPeanutReforged(s)
endif
return null
endfunction
function ColorPlayer takes string s, integer i returns string
if 1==0 then
elseif i==1 then
return ColorPlayerRed(s)
elseif i==2 then
return ColorPlayerBlue(s)
elseif i==3 then
return ColorPlayerCyan(s)
elseif i==4 then
return ColorPlayerPurple(s)
elseif i==5 then
return ColorPlayerYellow(s)
elseif i==6 then
return ColorPlayerOrange(s)
elseif i==7 then
return ColorPlayerGreen(s)
elseif i==8 then
return ColorPlayerPink(s)
elseif i==9 then
return ColorPlayerLightGray(s)
elseif i==10 then
return ColorPlayerLightBlue(s)
elseif i==11 then
return ColorPlayerAqua(s)
elseif i==12 then
return ColorPlayerBrown(s)
endif
return null
endfunction
elseif SubString(s,0,3)=="-s " then
if S2R(SubString(s,3,999))>0 and S2R(SubString(s,3,999))<101 then
set Dancer_speed=S2R(SubString(s,3,999))
call DisableTrigger(Dancer_t)
call TriggerRemoveAction(Dancer_t, Dancer_Act0)
set Dancer_t=CreateTrigger()
call TriggerRegisterTimerEvent(Dancer_t,Dancer_speed,true)
set Dancer_Act0=TriggerAddAction(Dancer_t,function Dancer_Main)
endif
на это
elseif SubString(s,0,3)=="-s " then
if S2R(SubString(s,3,999))>0 and S2R(SubString(s,3,999))<101 then
set Dancer_speed=S2R(SubString(s,3,999))
call DisableTrigger(Dancer_t)
call TriggerRemoveAction(Dancer_t, Dancer_Act0)
call DestroyTrigger(Dancer_t)
set Dancer_t=null
set Dancer_Act0=null
set Dancer_t=CreateTrigger()
call TriggerRegisterTimerEvent(Dancer_t,Dancer_speed,true)
set Dancer_Act0=TriggerAddAction(Dancer_t,function Dancer_Main)
endif
короче
второе решение на таймере примерно такое - через непериодический но с перезапуском и возможностью запаузить:
сам код не напишешь - никто не напишет
function Main takes nothing returns nothing
local timer t = CreateTimer()
call DestroyTimer(GetExpiredTimer())
//Actions
if pause==0 then
call TimerStart(t, time, false, function Main)
endif
set t = null
endfunction
function time_main takes nothing returns nothing
set time=2
endfunction
function pause_main takes nothing returns nothing
set pause=1
endfunction
НО
это решение оплимитно
поэтому нормальное решение только одно и оно в шапке
либо садить этот таймер на отдельный оплимито-обходный триггер и всем говорить, что это решение на таймере
LastUchiha: О господи, библиотеки и структуры, а полегче никак нельзя? Не обязательно что-бы мудрёно как то было.
по меркам варика это не такой большой код, всего 200 строк
это тебе не 2000 строк только для одной поддержки синхронизации
по сути у тебя выбора то нету, можешь сам написать
в принципе это не сложно делается:
если отследить применение абилки тригером - такое возможно?
то просто в цикл загоняешь
снимаешь координаты ГЕРОЕВ или ЮНИТОВ + StopSound() + StartSound() для тех, кто проходит по условиям
это на 20 строк пишется
LastUchiha: что-бы он воспроизвелся для всех тех у кого в радиусе обзора применяющий игрок
а если ты хочешь, чтобы учитывалось не по положению юнитов, а именно по текущим координатам камеры игрока - то добро пожаловать в дебри синхронизации по 2000 строк, либо вкатывайся в JN или reforged
Ред. host_pi
» WarCraft 3 / Как добавить listfile в карту? [депротект]
\Abilities\Spells\Human\MassTeleport\MassTeleportTarget.wav
который успешно отловился
Ред. host_pi
» WarCraft 3 / Как добавить listfile в карту? [депротект]
но иногда удается отыскать только 90% листфайл
и теперь дилемма - что лучше 0% листфайл или 90% листфайл?
например третий человек скачает оригинал, а там 0%. и ему сидеть депротектить, а еще если он не знает как
а тут рядом лежит карта с 90% листфайлом, не проще ли ему скачать её и работать уже с ней?
основная цель - не испортить оригинальную карту, но внедрить туда 90% листфайл
понятно, что если есть 100% листфайл, то можно просто перепаковать без заморочек и всё
так вот, условно даже без поиска листфайла, просто внедрить туда один исправленный w3i, чтобы карта успешно залилась на эпик, ну эта вторая цель в принципе решена в первом посте этой темы
только w3i wts j ничем не отличаются технически от листфайла, просто MPQ Editor эти файлы может залить в карту с 0% листфайлом, а листфайл в эту же карту он отказывается лить.
т.е. цель - найти софт, который может залить листфайл в карту
Ред. host_pi
» WarCraft 3 / Как добавить listfile в карту? [депротект]
Ред. host_pi
» WarCraft 3 / Как добавить listfile в карту? [депротект]
как его вставить вместо пустого старого листфайла?
этот же вопрос задан в шапке вопроса
и у меня получилось это сделать только 1 софтом из 4х, причем результат зависит от разных карт и может быть неудовлетворительным (на некоторых картах после добавления полного листфайла поверх пустого - карта при открытии в WinMPQ показывает все имена, а при открытии этой же карты через MPQ Editor считывает только старый листфайл и не показывает имена, но повторюсь это не на всех картах так, иногда обе софтулины показывают полный список)
т.е. вопрос не в формировании листфайла, а во внедрении уже готового 90% листфайла в карту
» WarCraft 3 / Как добавить listfile в карту? [депротект]
» WarCraft 3 / Как добавить listfile в карту? [депротект]
с такими гайдами сам по себе смысл этого вопроса из шапки отпадает
Ред. host_pi
» WarCraft 3 / Как добавить listfile в карту? [депротект]
WinMPQ - и удаляет и добавляет
MoPaQ 2000 MPQ2k - при удалении (listfile) пишет Failed, поверх тоже не добавляет
MPQ Master - не добавляет
Ред. host_pi
» WarCraft 3 / Как добавить listfile в карту? [депротект]
Ред. host_pi
» WarCraft 3 / как понять что в Jass коде не так?
юзай pjass, он быстро покажет ошибки в j коде (не все, но основные)
Ред. host_pi
» WarCraft 3 / JN Loader
при первом запуске он докачивает dll для связи с m16 (пока не докачает - не запустится нормально)
но докачивает он очень коряво и может так этого и не сделать за 30 перезапусков и 2 часа
поэтому вот готовые файлы уже докачанные, которые сразу работают с 1.28.5 и ничего не докачивают (на сегодняшний день)
из новшеств - во время запуска появляется такое окошко, которое надо закрыть на крестик и после этого нормально запустится JN-варкрафт
Ред. host_pi
» WarCraft 3 / Warcraft III - MultiWindow
там вообще через webui\gluemanager.js + gameId:e.state.selectedGameId и хостить может только первое окно
» WarCraft 3 / Warcraft III - MultiWindow
используется связка ForceBindIP + Sandboxie
работает не идеально (не работает на 1.26 и не работает на JNLoader), но что-то запустить да можно
Ред. host_pi
» WarCraft 3 / Создание и добавление нового чит-кода для singleplayer
» WarCraft 3 / ЦВЕТ - как из игры получить точные значения playercolor в RGB кодировке ?
Ред. host_pi
» WarCraft 3 / ЦВЕТ - как из игры получить точные значения playercolor в RGB кодировке ?
Vanilla
Reforged
» Администрация XGM / где кнопка создать подпроект?
» Администрация XGM / где кнопка создать подпроект?
» WarCraft 3 / ЦВЕТ - как из игры получить точные значения playercolor в RGB кодировке ?
» WarCraft 3 / Радужный текст
Ред. host_pi
» WarCraft 3 / как изменить время внутри таймерного периодического триггера?
второе решение на таймере примерно такое - через непериодический но с перезапуском и возможностью запаузить:
сам код не напишешь - никто не напишет
это решение оплимитно
поэтому нормальное решение только одно и оно в шапке
либо садить этот таймер на отдельный оплимито-обходный триггер и всем говорить, что это решение на таймере
Ред. host_pi
» WarCraft 3 / Внеочередная ошибка при запуске карты
» WarCraft 3 / Как сделать звук который будет слышен в поле зрения игрока? World Editor
Ред. host_pi
» WarCraft 3 / Одновременный краш у всех игроков
а то ты не туда пишешь так то
пиши близам в сапорт калифорнию, что у них платный продукт критует
Ред. host_pi
» WarCraft 3 / Как сделать звук который будет слышен в поле зрения игрока? World Editor
это тебе не 2000 строк только для одной поддержки синхронизации
по сути у тебя выбора то нету, можешь сам написать
если отследить применение абилки тригером - такое возможно?
то просто в цикл загоняешь
снимаешь координаты ГЕРОЕВ или ЮНИТОВ + StopSound() + StartSound() для тех, кто проходит по условиям
это на 20 строк пишется