Второй вопрос (скорость замороженного игрока): проще (и надёжнее) всего через скрипт ACS, с вызовом SetActorProperty. То есть ACS-код должен выглядеть как-то так:
For ( int MultiplierToNormal = 0; MultiplierToNormal < 100; MultiplierToNormal++ )
{
SetActorProperty( 0, APROP_Speed, 0.6 + 0.004 * MultiplierToNormal );
Delay( 2 ); // Для ~5 секунд постепенно спадающей заморозки нужна задержка в 1.75.
}
Третий вопрос (актор "стены огня"): помнишь арч-вайла в Doom 2? Его атаку? Так вот, есть на порядки более гибкая версия функции переноса огня (A_Fire): A_Warp. Может даже без прямой линии. Вроде, то, что тебе нужно.
Четвёртый вопрос (дальность полёта снарядов): Можно сделать через Inventory-таймер, количество которого каждый цикл полёта декрементируется, а можно проще: через A_Countdown. Она работает с ReactionTime -- когда эта переменная достигает нуля, снаряд переходит в стейт "Death". Впрочем, если тебе не нужен переход именно в стейт "Death", лучше использовать кустарный таймер из инвентаря.
2 Герр Смертоносец:
Спасибо за инспекцию, жаль что код в порядке. Теперь придётся ломать голову, и хотя офсеты у меня всегда херово подогнаны, чё-т я сомневаюсь что дело в их аджасте.
2 JSO x:
Про файрвол ещё днём сам допёр , а за "чил" и дальность Гранд мерси!
Void Weaver Отключай по очереди фрагменты кода, сначала акторов, потом их отдельные стейты. И смотри, на чём баг появляется. Так гадать бесполезно, надо закономерности искать.
Блин, пацаны, я в отчаянии.
Потестил я значит, и нашёл что лагают все стэйты движения, т.е. атака, ходьба, смерть и даже труп (нейтральное состояние и freeze вроде не лагают). И что ещё хуже, в моём случае лаги усиливаются по мере увеличения пребывания актора в игровой сессии. А уж совсем край то что этим страдают ВСЕ мои акторы на базе спрайтов обеих Дьябл, просто тормоза вызываемые актором самого Дьяблы наиболее выраженные.
_D2_Diablo2.wad - если вдруг у кого найдётся время или желание провести инспекцию.
Void Weaver Я запустил твой вад. Никаких лагов нет, но актор ведет себя странно. Во-первых, он идет не к игроку - а от него, причем пройдет пару метров, затем потопчется на месте. Атаковать игрока не хочет (только 1 раз удалось выудить из него какую-то атаку). Дохнет быстро.
Ты что-то намудрил с джампами и вероятностями, советую переписать код нормально.
Также спрайты из игр дьябло1-2 крайне неудачные для дума, т.к. сделаны в изометрической проекции - в думе у актора часто срезаются ноги, когда он поворачивается боком. Сами-то спрайты неплохие, но вот перерисовать их из изометрии в нормальную дум-геометрию будет трудно...
Тестил под гздум 3-2-0.
Вот смотри - у тебя стэйт See неправильно записан. Должно быть так:
See:
DIWL ABCDEFGHIJKL 2 A_Chase
Loop
Актор сам выберет, когда ему атаковать в этом случае.
Также поправил код молнии, чтобы не исчезала быстро: стэйт Spawn нужно закольцевать (поставить Loop)
Spawn:
DLSS ABCDEFGHIJKLMNO 2 bright A_Explode(5, 8, 0)
Loop
Советую еще увеличить урон и подумать над альт-атаками, т.к. сейчас моб получился слабый, валится легко. Увеличть параметры урона и радиуса в A_Explode, чтобы был ощутимый урон.
Во-первых, он идет не к игроку - а от него, причем пройдет пару метров, затем потопчется на месте. Атаковать игрока не хочет (только 1 раз удалось выудить из него какую-то атаку).
Дык я там вроде в чейсе левый флаг ставил, norandomturn или типа того.
Shadowman:
Дохнет быстро.
Shadowman:
Советую еще увеличить урон и подумать над альт-атаками, т.к. сейчас моб получился слабый, валится легко. Увеличть параметры урона и радиуса в A_Explode, чтобы был ощутимый урон.
Да, я в курсе, это просто черновик. ) Как раз мои последние вопросы в этой теме были в основном о его абилках.
Shadowman:
Также спрайты из игр дьябло1-2 крайне неудачные для дума, т.к. сделаны в изометрической проекции - в думе у актора часто срезаются ноги, когда он поворачивается боком. Сами-то спрайты неплохие, но вот перерисовать их из изометрии в нормальную дум-геометрию будет трудно...
Да, я заметил. Некоторые спрайты ещё хуже для аджаста - Дуриэль или Консулы например стабильно инвалидны как офсеты ни подгоняй. (( Вообще-то, расчёт был на то что модеры самостоятельно выберут подходящие фрэймы из полного пака. Т. е. просто исключив некоторые фрэймы из спрайта можно получить более приглядную в плане геометрии анимацию.
Благодарствую за остальные замечания.
Выходит что дело либо в моей пекарне, либо в версии гоззы, либо, что более вероятно, в замусоренном конфиге оной. Буду копаться дальше.
ЕДИТ:
Shadowman:
P.S. Можешь прикрепить вад с остальными мобами?
Да я собственно с акторами толком не заморачивался, сейчас по большей части занят обработкой и переброской спрайтов. Если что тут моя тема с парой убогих черновадов в начале, чисто болванки. З. Ы. Там выложен деккорэйт Дуриэля - он багован, исчезает после атаки. Я там прописал "Goto Ready" вместо "Goto See".
Если что тут моя тема с парой убогих черновадов в начале, чисто болванки.
Вижу. Кстати, спрайты у тебя получаются четкими - мне знакомы вады с ресурсами дьябло1-2, но там спрайты какие-то размытые были.
все же проблему изометрического расположения спрайтов нужно как-то решать. Для гуманоидных мобов это проще сделать, чем для ползающих и т.п. (у кого горизонтальные параметры больше, чем вертикальные).
Глянул код Дюриэля - зачем ты пишешь goto Ready после Melee1 и Melee2?
Стэйт Ready вообще-то используется для оружия игрока, в декорэйтах мобов его нет (хотя можно и ввести, но тогда надо его записать, и записать его вызова).
После "Melee1" и "Melee2" ставь обычный goto See
Советую почитать вики на эту тему.
https://zdoom.org/wiki/Actor_states Если коротко:
Spawn - стэйт появления моба на карте. По команде A_Look - моб высматривает игрока. Как только заметил, переходит в стэйт See
See - стэйт, в котором моб ходит преследует игрока. Из этого стэйта случайным образом переходит к атакующим стэйтам (Melee - в ближнем бою, Missile - для дистанц. атак). Можно настроить их параметры в описании актора (например, указать минимальный радиус, с которого возможна дистанц. атака). Можно вызывать и свои атаки через использование A_JumpIf(условие, нужный стэйт).
Обычно после стэйтов атак и боли дается команта на переход в See (но можно поэкспериментировать, например, после стэйта Pain отправить моба на Missile - пусть даст сдачи).
С расположением спрайтов беда, умел бы - разобрался, но подозреваю что лечится только правкой каждого кадра, а этим я сейчас точно заниматься не буду. Мне бы с альфа-блэндингом исходных спрайтов разобраться.
На счёт Дуриэля
Void Weaver:
З. Ы. Там выложен деккорэйт Дуриэля - он багован, исчезает после атаки. Я там прописал "Goto Ready" вместо "Goto See".
Я ж говорю - ошибся, а пост отредачить забываю.
Shadowman:
Советую почитать вики на эту тему.
Её и покуриваю, но башка с непривычки пухнет. Проблема в том что я не технарь, да и с инглишем туговато.
Shadowman:
Обычно после стэйтов атак и боли дается команта на переход в See (но можно поэкспериментировать, например, после стэйта Pain отправить моба на Missile - пусть даст сдачи).
Да, прикольный тригггер. Heretic с хексенклана в своём моде так реализовывал лайтнинг-энчантед мобов из Дьябло2. Выглядит отпадно.
подозреваю что лечится только правкой каждого кадра
Да, только так. Когда-то еще лет 10 назад я пытался таким образом Мясника адаптировать - ноги правил, боковые позиции тоже. Но результаты давно утеряны, да и качество меня в итоге не устроило.
Кстати, советую не заморачиваться с кучей спрайтов для анимации смерти - все эти 8 позиций для каждого кадра в думе ни к чему, только место занимают. Достаточно одной позиции - наиболее выигрышной для дум-обзора.
Void Weaver:
Проблема в том что я не технарь
Это не имеет значения. было бы желание разобраться. но иногда проще учиться на примерах - посмотрел чужого моба в действии, залез в код, сообразил, что к чему и попробовал сделать подобное. А вики нужна обычно для уточнения параметров отдельных функций или флагов.
Void Weaver:
Да, прикольный тригггер.
При желании можно сделать весьма продвинутого моба, который будет выбирать разные типы атак в зависимости от условий, ставить щит, телепортироваться, вызывать подмогу и вообще вести себя вполне разумно Дело в скилле моддера.
Люди, кто-нибудь пользуется прогой для добавления новых анимаций текстур и флатам для бумовских вадов "BAM"? экспортирую такую текстовушку в два лумп файла ANIMATED, SWITCHES, добавляю их в XWE. Если с анимацией свичей и текстур (стен) все в порядке, то полы себя странно ведут. Начинаются все полы сразу прокручиваться и какая-то дискотека начинается прям. Т.е. пробегается анимация не по заданным полам, а вообще по всем. Кто-нибудь сталкивался с таким? может что-то не так прописал?
Void Weaver через флаг CMF_AIMDIRECTION и поворотом угла.
типа того
Скрытый текст:
BON2 A 18 A_CustomMissile("HealingThing76",10,-100,0,CMF_AIMDIRECTION)
TNT1 A 0 A_CustomMissile("HealingThing76",10,-60,0,CMF_AIMDIRECTION)
TNT1 A 0 A_CustomMissile("HealingThing76",10,-20,0,CMF_AIMDIRECTION)
TNT1 A 0 A_CustomMissile("HealingThing76",10,100,0,CMF_AIMDIRECTION)
TNT1 A 0 A_CustomMissile("HealingThing76",10,60,0,CMF_AIMDIRECTION)
TNT1 A 0 A_CustomMissile("HealingThing76",10,20,0,CMF_AIMDIRECTION)
Actor FirewallFlame
{
Radius 2
Height 2
//Speed 8
//Projectile
MaxStepHeight 500
RenderStyle Add
DamageType Fire
Alpha 0.90
+DROPOFF
+RIPPER
+FLOORHUGGER
+NoExplodeFloor
+NoDamageThrust
States
{
Spawn:
TNT1 A 0 bright A_Warp(AAPTR_TRACER, 0, 2, 0, 0, WARPF_NOCHECKPOSITION|WARPF_INTERPOLATE)
TNT1 A 0 bright A_Warp(AAPTR_TRACER, 0, 1, 0, 0, WARPF_NOCHECKPOSITION|WARPF_INTERPOLATE)
TNT1 A 0 bright A_Warp(AAPTR_TRACER, 0, 0, 0, 0, WARPF_NOCHECKPOSITION|WARPF_INTERPOLATE)
Death:
TNT1 A 0 bright A_CustomMissile("FlameW",0,0,0,CMF_AIMDIRECTION)
TNT1 A 0 bright A_CustomMissile("FlameW",0,1,0,CMF_AIMDIRECTION)
TNT1 A 0 bright A_CustomMissile("FlameW",0,2,0,CMF_AIMDIRECTION)
Но в итоге спаунится адский столб огня, вместо стены. Пытался вызвать несколько миссайлей одним варпом, но получался всё тот же столб.
Чому варпы не сдвигаются, в чём косяк?
1. Чем можно заставить моба периодически юзать миссайль атаки вплотную?
2. Как запретить юзать конкретную кастом миссайль атаку при дистанции меньше дозволенной? Т. е. хотелось бы что б работало как A_Jumpifcloser наоборот.
Здравствуйте. Задумал я тут сделать wad в GZDoom Builder-е под GZDoom. Но захотелось мне много-премного текстур, которые имеются в огромном количестве в другом порте - в skulltag-е. Можно конечно сделать wad под skulltag, но, как я понимаю, сей порт мёртв. Как я выяснил, всё изобилие текстур находится в файле "skulltag_data.pk3". Причём эти текстуры видны программой slade, а другими программами - нет. Поэтому вопрос: как получить текстуры из skulltag и использовать их в wad-е под GZDoom? (как это сделать с помощью slade я не понял)
PS
Если добавить "skulltag_data.pk3" в ресурсы, то вылетает такая ошибка:
Texture "CAMTX128" is overridden by CameraTexture with the same name in resource "skulltag_data.pk3".
Flat "CAMTX128" is overridden by CameraTexture with the same name in resource "skulltag_data.pk3".
Texture "CAMTX64" is overridden by CameraTexture with the same name in resource "skulltag_data.pk3".
Flat "CAMTX64" is overridden by CameraTexture with the same name in resource "skulltag_data.pk3".
Can't load an unnamed texture from "TEXTURE1". Please consider giving names to your resources.
Поэтому вопрос: как получить текстуры из skulltag и использовать их в wad-е под GZDoom?
Как вариант напрямую скопировать файлы текстур в отдельную папку textures и эту папку положить в свой рк3 с картой. В редакторе достаточно будет подключить этот архив с ресурсом.