Не подскажете, как можно изменить урон от демона/зомбимэна на лету с изменением CVAR'ы, на ZScript'е и не заменяя классы? У меня такое только получилось со скоростью и здоровьем. Просто думаю, что так смогу сохранить максимальную совместимость с другими модами (как раз полностью изменённый void атаки зомбимэна ломал у меня игру в Doom 4 Vanilla, например).
Вот мой код:
Скрытый текст:
extend class UnionDoom_Events
{
//
//Demon Damage
//
int union_old_demon_damage;
void ApplyDamageToDemon(Actor thing)
{
switch(union_demon_damage)
{
case 0:
thing.SetDamage(thing.Default.Damage);
break;
case 1:
thing.SetDamage(Random(1, 10) * 4);
break;
case 2:
thing.SetDamage(Random(1, 8) * 4);
break;
}
}
void ChangeDemonDamage()
{
let iterator = ThinkerIterator.Create("Demon");
Actor a;
while (a = Actor(iterator.Next()))
{
ApplyDamageToDemon(a);
}
}
}
Первым кейсом устанавливаю дефолтное значение, вдруг кто-то будет переписывать класс и урон. Событие вызываю по проверке изменения CVAR'ы в UiTick(). Знаю о DamageFunction(), но не получается её использовать, так как GZDoom ругается на неизвестную функцию (может thing.DamageFunction() писать неверно, на самом деле, кхех). Пока способа не нашёл. Damage тоже не получалось использовать.
WorldThingSpawned() и WorldThingRevived() тоже использую.
Представим, что у нас есть оружие А, которое не тратит патроны. И представим, что у нас каждого патрона ноль, а также есть все оружия в инвентаре. В таком случае, при подборе патронов, гздум автоматом сменит на то оружие, которое умеет ими стрелять, и у которого selection order выше
Как сделать так, чтобы наше оружие А никогда не переключалось на другое при подборе патронов?
Если я выставлю оружию А минимальный selection order (ибо чем он меньше, тем выше приоритет), то при стрельбе из других оружий, когда закончатся патроны, оно всегда будет менять на наше оружие А, что неприемлемо
Есть ли какой-то простой способ запрета на автосмену конкретного оружия?
Иными словами, если в руках бензопила, то при подборе пуль/дроби/ракет/энергии не надо чтобы менялось на другие оружия, но если я стреляю из бфж и кончаются патроны, то надо чтобы сменилось например на двустволку, а не на бензопилу
Не подскажете, как можно изменить урон от демона/зомбимэна на лету
Не проще просто давать монстру поверап типа такого: "PowerDamage" ??
Несмотря на то, что в вики указано что это для игрока, монстрам тоже можно выдавать и оно работает (я как-то здесь демонстрировал)
Народ, помню тут когда-то кидали ссылку, не могу найти: нужна информация по лимитам гздумного ACS, например по максимальной длине массива
И еще: если задать global массив, а синтаксис там такой, что его размерность не указывается, то сколько там будет переменных, и сколько оперативки он займет?
Есть полезный материал по моддингу на DeHackED? С чего начать вообще, человеку, который на низком уровне разбирается в Дикорейте. Хочется сделать мод, совместимый вплоть до DoSBox.
Есть полезный материал по моддингу на DeHackED? С чего начать вообще, человеку, который на низком уровне разбирается в Дикорейте. Хочется сделать мод, совместимый вплоть до DoSBox.
У меня фундаментальный вопрос по картостроению в GZDoom. Наверняка он здесь задавался (может, даже мной ), но вразумительного ответа на него я сейчас не знаю, почему его и задаю.
Есть карта в формате UDMF. Есть желание построить многоэтажное помещение, в котором этажи соединяются секторными порталами (пишу сразу: полностью перейти на 3D-полы вариант никоим образом не рассматривается, это будет каша из секторов, см. один из туториалов на вики — порталы мне нужны не только для производительности, но и для собственного удобства ), и, думаю, понятно, как именно: лестница из секторов (или тех же 3D-полов, кстати) "пропускается" через порталы в полу и в потолке, и всё замечательно работает.
А теперь по существу — мне нужны лифты. Если пассажирские лифты я ещё могу реализовать с помощью TeleportInSector, то грузовые возвращают меня к извечной проблеме движка Doom — псевдотрёхмерности. Я хочу сделать грузовой лифт как открытую платформу, перемещающуюся между заданными этажами, чтобы игрок мог видеть, что он перемещается (в пассажирском можно заблокировать обзор дверями, здесь это будет выглядеть по-идиотски). Если сделать очень высокий сектор-шахту, то непонятно, как потом к нему присоединять связанные порталами этажи (лайндефными порталами? Но ведь они работают по всей своей высоте...); если сделать на каждом этаже по куску шахты лифта, то потом не пустишь платформу через них. У модели будут проблемы с коллизиями (они мне не подходят и по другим причинам). Можно ли как-нибудь обойти ограничения?
DOOMGABR На русском вряд ли сейчас найдёшь подобные гайды. Не говорю, что их не было, просто сейчас дехакед у нас используется (в основном) теми, кто с ним знаком лет десять уж точно (а новоприбывшие, видя ограничения языка, возвращаются к здуму). Могу посоветовать программу WHackEd4, у неё достаточно простой и понятный интерфейс (там сразу всё на виду).
Ещё, когда почитаешь гайды, можешь поковырять дехакеды из относительно новых мегавадов (например, TNT: Revilution — там есть турели, Doom Zero — есть лостсоул из альфы, а у пулемётчика изменён звук стрельбы), посмотреть, как там всё сделано, какая структура у текстового дехакеда. Однако это скорее теория.
N00b2015 Сделай как в дюке. Перекрытие высотой с думера, во время прохождения перекрытия телепорт.
Нижняя часть перекрытия показывает верхний сектор порталом. Верхняя нижний.
Возможно можно проще, мне пара чёрных магий в голову пришла.
Попробую нарисовать тестовый уровень.
Даже попробовал туда импа поставить. Он удивился, но исправно съездил вверх-вниз.
Я ещё думал о варианте когда внутри лифта 3-4 портала находится чтобы делать сложные формы со слопами. Но передумал. На ночь глядя не хочется таким заниматься )
ZZYZX Большое спасибо! Мне вполне хватит "простого варианта". Это действительно похоже на Duke/Blood Так, кстати, (достаточно) нетрудно поставить на лифт панель управления и какие-нибудь ящики, сделав Sector_SetLink (а вот как сделать лайндефное ограждение?.. попробую для него тоже использовать 3D-пол).
Я вот только не понимаю, почему высоты у портальных секторов не 128, зачем они перекрываются по вертикали?
N00b2015 Потому что не отображается нижняя текстура лифта при доезжании его до верха (т.к. он уходит в пол верхнего сектора этой текстурой)
Из-за этого сделан зазор в один пиксель, чтобы доезжая до верха лифт выезжал из пола и соответственно его нижняя текстура отрисовывалась.
то при отражении от щита кентавра или спелла ересиарха в хексене, отраженный снаряд не будет дамажить игрока
Как сделать, чтобы отраженные от ересираха/кентавра снаряды такого плана гарантированно дамажили игрока при попадании? Что конкретно у снаряда отвечает за то, кого в данный момент игры он будет дамажить? И если есть много разных способов решения проблемы - какой самый простой?
Интересует либо декорейт/ацс либо зскрипт/ацс
И второй вопрос: BounceCount 5 значит что снаряд 5 раз отражается от стен/пола/потолка/и т д, и на 6-й раз взрывается. Как сделать так, чтобы при отражении от ересираха/кентавра, счетчик "уже прозошедших" отскоков обнулялся? Т.е. если например снаряд отскочил от стенки 4 раза, и на 5-й раз попал в щит кентавра, то после кентавра он еще мог 5 раз удариться об стенку, и только после этого взрывался? Ну кроме случаев, если он попал в игрока раньше
theleo_ua Я бы попробовал ALLOWBOUNCEONACTORS (без BOUNCEONACTORS). Хотя, наверное, я ответил слишком поздно.
DOOMGABR Палитру — это вроде того, как в некоторых вадах (ZPack вроде, торменторовские какие-то) синий заменяется на более мягкий голубой? Тогда нужно в свой вад скопировать PLAYPAL (это первый ламп что в doom.wad, что в doom2.wad), изменить его, как нужно (с помощью слейда и/или экспортировав как png и обработав в графическом редакторе). Затем нужно перестроить COLORMAP (правая кнопка мыши по PLAYPAL; Palette; Generate Colormaps). Если что, zdoom не использует COLORMAP, это нужно для более "ванильных" портов.