N00b2015, да, мой прокол - про размер момент я упустил. Пока ужал до 5 мегабайт. Прошу прощения.
Касаемо мода - сейчас ситуация следующая: скрипты соединил в один файл:
После того, как поменял следующий после номера вызова скрипта аргумент на 0, почему-то внезапно подумалось, что теперь эта вещь должна действовать на любых уровнях.
Но теперь возникли следующие проблемы.
Первая - когда начинается новая игра, стандартная музыка внезапно меняется на боевую (когда даже не ведётся какого-либо боя и/или на тебя ещё никто не обратил внимание).
Вторая. В скрипте 981 пришлось закоммитить следующую строку:
Скрытый текст:
//pick_what_song_play = random(0, 7);
Поскольку если на тебя начинают обращать внимание, появляется постоянное перебирание композиций и игра начинает лагать - ведь random. Хотя не такого поведения я ожидал. Думал - один раз случайно задаст одну из существующих музык и всё. А он почему-то их во время боя выбирает. Насчёт акторов с пометкой "BOSS" не проверял, как будет себя вести - по идее, в модификации также есть вещь, которая позволяет переключать музыку, если тебя заметил босс.
И, наконец, следующий сценарий:
если в начале игры убить всех монстров консольной командой, а потом заспавнить три любых противника и уничтожить их, музыка становится стандартной. А когда снова спавнишь такое же количество и они среагировали на игрока - музыка снова становится боевой. Почему только в данном случае работает идея - ответа пока не нашёл.
Вот обновлённый файл. Если можно, подскажите пожалуйста, что здесь не так.
Благодарю за внимание.
Xtor Хотелось бы посмотреть немодифицированный рандомайзер. Там всё правильно работает?
Код длинный и непонятный, мне кажется, на zscript можно сделать покороче (и при этом без ACS).
N00b2015, пожалуйста.
Да, в том всё корректно работает, но там всего два трека.
Вот видео, под которым я нашёл базу для того, чтобы посмотреть, как оно устроено и можно ли привести к своей идее.
Вот сам файл.
Один задаётся в начале игры и перезаписывает тему уровня, другой - когда на тебя "озираются" задаваемое количество монстров (по умолчанию выставлено 30).
Возможно, я немного перемудрил, но там строго задаются определённые треки через SetMusic в ZScript. И нет фичи, чтобы возвращалась музыка, опять же, заданная в MAPINFO.
А здесь я хотел сделать "динамичную" смену посредством использования ACS потому, что это первое, что пришло в голову и, как казалось, адекватно сработает.
А после этого там, где должна включаться музыка, создать целую переменную index = random(0, 6) и вызвать S_ChangeMusic(songs_name[index]). Если что, S_ChangeMusic работает и с "*" в качестве аргумента.
Так что необходимости в ACS здесь нет.
N00b2015, мне стало непомерно стыдно. Большое спасибо за наводку на вещи, которые были буквально "перед носом". Не было возможности уделить достаточного внимания моддингу и маппингу ввиду напряжённого течения жизни, а теперь показалась такая возможность.
Скрипты точно были излишеством. Получается, мой непомерный ум пытался всё только усложнить теперь всё работает как надо.
И музыку выбирает одну из представленных)
Останется мне только потом разобраться, как назначить кастомную музыку в intermission заместо стандартной для каждого эпизода в первой части Дума и других уровней второй - и всё)
Xtor За что стыдно-то? Каждый уделяет этому столько времени, сколько захочет. Если что, в этом деле умение гуглить (и, возможно, общие сведения об устройстве движка) куда важнее знания всех технических подробностей. Если интересен zscript, лучше всего разбирать на кусочки gzdoom.pk3, а в отдельных (но, замечу, не таких уж редких) случаях и в сам код gzdoom (он открытый, вот репозиторий; основная логика игры написана вроде вся на C/C++). ZScript оперирует понятиями достаточно низкого уровня, поэтому с его помощью можно сделать куда больше, чем на DECORATE/ACS, и иногда более изящными способами.
Насчёт intermission: можно посмотреть, как сделано здесь (код находится в pk7).
Предисловие:
Я играю в doom2 с портом GZDooM версии g2.1.pre-1307-g4e1723e и модом "Kyle's DooM RPG" https://i.iddqd.ru/viewtopic.php?t=479. Однако в процессе прохождения hell on earth на сложности ARMAGEDDON (последняя) на уровне Dead simple (MAP07) я столкнулся с проблемой: после всех "манкубусов" стены (двери) не опускались и не выпускали арахнотронов . Это само по себе ещё не страшно, поскольку есть возможность использовать ту секретку. Но при прохождении с вадом hellonearthstarterpack.wad (https://i.iddqd.ru/viewtopic.php?t=899) той секретки уже нет. Одно из возможных решений: изменение карты. Используемая программа - Doom builder 2.1.2.1553.
Вопросы:
1) Как "привязать" дверь к монстрам (сделать открытие двери после зачистки)? Надеюсь обойдётся без скриптов.
2) Как сделать двойные двери так, чтобы нижняя часть опускалась вниз, а верхняя - вверх?
3) Почему выше описанная проблема возникает?
1) Как исправить ошибку, когда по команде give everything даётся ещё и ванильное оружие, помимо оружия из мода?
2) Подскажите параметры запуска SLADE 3, чтобы сразу открывался соурс порт, без всяких окон и запускал MAP01 на сложности UV?
3) Новый берсерк не переключает на новый кулак. Код:
Скрытый текст:
ACTOR PoEbaluNa : Berserk
{
States
{
Pickup:
TNT1 A 0 A_GiveInventory("PowerStrength")
TNT1 A 0 HealThing(100)
TNT1 A 0 A_SelectWeapon("Kulak")
Stop
}
}
Насколько я помню, вся эта хургада с тегом 666/667 прописана в MAPINFO лумпе, и при сочетании нескольких модов всё это склонно конфликтовать. Хотя у меня были случаи, когда просто на какой-то версии гоззы теги с какого-то перепугу в одних случаях вдруг не срабатывали, а в других срабатывали.
Короче, если не лезть в дебри, вот две консольных команды, приводящие "вручную" к срабатыванию залипшего тега в мистических случаях:
"special 21 666 8"
"special 240 667 8"
В котором SS_START и S_END - маркеры, начинающие и завершающие список спрайтов, а TRE3A0 и CND2A0 - спрайты.
Есть wad.deh - в котором задана замена имён определённых спрайтов
Text 4 4
COL3TRE3
Text 4 4
COL4CND2
И есть wad.wad, в котором содержатся Патчи, флеты с соответствующими маркерами, лампы PNAMES и TEXTURE1, графика с названиями уровней, а так же музыка и сами уровни.
При последовательном подключении к Chocolate-doom трёх файлов:
-deh wad.deh -file sprites.wad wad.wad
Спрайты работают и отображаются нормально.
После переноса содержимого из sprites.wad в wad.wad строка подключения к Chocolate-Doom сокращается:
-deh wad.deh -file wad.wad
Но, вад не хочет запускаться, а выдаёт ошибку R_Installspritelump: Bad frame characters in lump 3582
Вопрос: что я делаю не так? Как правильно перенести спрайты в ванильный вад, чтобы оно работало?
Народ есть кто-то, кто использует alt_Hud встроенный в GZDOOM? Вообщем из-за большого количества пушек они не помещаются на экран. Пушки и патроны показаны в правой части экрана. Как сделать в этом ХУДе чтобы патроны показывались в левой части?
P.S. никогда не имел дела с ХУДами поэтому просьба объяснить "на пальцах"
Привет всем.
Ищу способ ограничить ёмкость оружейного слота. Чтобы вот больше одного оружия на слот носить было нельзя. Насколько сложна в реализации подобная задумка? Как именно это должно выглядеть?
Порт GZDoom последней версии
Есть несколько способов сделать это -- и в Decorate, и в ACS, и в ZScript. Во всех случаях
a) Нужно проверять при подборе нового оружия на принадлежность к слоту какого-то другого, который должен конфликтовать; или
b) Для каждого слота хранить счётчик текущего количества оружия.
Отличие идёт в том, какие возможности представляет тот или иной скрипт и какая у него парадигма. Но здесь уже (относительно) детали, которые для каждого языка с нуля долго слишком расписывать -- ZDoom wiki Decorate, ACS и ZScript, эта и эта тема, а также собственный разбор подобной реализации в, например, AEons of Death (аккуратно: внутри свалка та ещё) и Contra Doom в помощь.
P. S.: пока искал ещё что-нибудь в абзац, наткнулся мод, жутко похожий на твой аватар...
Нихао.
Задам лоховской вопросик. Где взять или как выдернуть карту из д2? Конкретно пока хотелось бы мап01 хочется для себя кое-что поковырять.
Я честно попытался поискать в разделе, но многогодичное отсутствие выбило из моей головы всю логику поиска в т.ч и возможные поисковые запросы.
Конечно, можно ее нарисовать, но хотелось бы титя в титю и задницу не ободрать.
Естественно, из самого д2. При помощи Билдера или Слейда, как самых доступных редакторов. Открыть при помощи программы сам ВАД-файл, выбрать нужную карту и сохранить как отдельный файл.
Ну, проще всего -- открываешь MAP01 в IWAD "doom2.wad" в формате "Doom 2" в [GZ-/Ultimate] Doom Builder [2] или его аналогах (насчёт Slade не уверен), а потом нажимаешь на "Save map into...".
Второй вариант -- также открываешь doom2.wad, но не сохраняешь, а выделяешь всё прямоугольником (зажатием ЛКМ) и Ctrl+C / Ctrl+V в новый уровень.
В-третьих, можно через Slade просто скопировать маркер "MAP01" и следующие за ним "SECTORS", "THINGS", ... -- до маркера "MAP02" -- в новый WAD и сохранить уже его.