Пол ночи дрючил эту функцию - не чекает блокироку внутри стэйта и всё тут. Х_х Сегодня ещё пошаманю, если не взлетит оставлю как есть.
Есть у кого соображения:
1) почему зависает варпнутая стенка (+DROPOFF +FLOORHUGGER)
, тогда как варпнутое "кольцо костей" нет?
2) почему эта же стенка не коцает летающие объекты (типа горгулий), тогда как наземные вполне жарятся.
Firewall warper
Скрытый текст:
Actor FirewallFlame
{
States
{
Spawn:
TNT1 A 0 A_FaceTarget
TNT1 A 0 A_Warp(AAPTR_TRACER,0,0,0,0,WARPF_NOCHECKPOSITION|WARPF_INTERPOLATE)
TNT1 A 0 A_SpawnItemEx("FlameW",0,-250,0,0,0,-10)
...
TNT1 A 0 A_SpawnItemEx("FlameW",0,-10,0,0,0,-10)
TNT1 A 0 A_SpawnItemEx("FlameW",0,0,0,0,0,-10)
TNT1 A 0 A_SpawnItemEx("FlameW",0,10,0,0,0,-10)
...
TNT1 A 0 A_SpawnItemEx("FlameW",0,250,0,0,0,-10)
Stop
}
}
ЕДИТ:
Наверное я просто рукожопый но с A_CheckBlock у меня в итоге ничего не получилось, зато идеальное решение было найдено в A_CheckLOF:
Скрытый текст:
DIRN G 2 bright A_Recoil(-10)
DIRN G 0 fast A_CheckLOF("ChargeEND",CLOFF_JUMPENEMY|CLOFF_JUMPFRIEND|CLOFF_JUMPOBJECT|CLOFF_JUMPNONHOSTILE|CLOFF_JUMP_ON_MISS|CLOFF_CHECKPARTIAL|CLOFF_SETTARGET|CLOFF_NOAIM,96,0,360,10,0,0,AAPTR_DEFAULT)
получился почти идеальный линейный чардж.
Стенку тоже удалось "спустить на землю" - просто задал отрицательное значение zvelocity.
Добавлено спустя 1 день 16 часов 7 минут 54 секунды:
А вот со вторым вопросом по стенке буду весьма признателен если кто поможет.
Присоединяюсь.
Честно говоря сначала тоже подумал что неправильно прочёл написанное JSO x или же он сам опечатался, но в оригинале формулировка такая же. 0_о
Для меня, как для непосвящённого, звучит абсурдно.
Офк я не спец, но ты не находишь что заданные параметры несколько странны для вращения?
Я не думаю что необходимо задействовать все три свойства; попробуй для начала оставить +ROTATING и Rotation-Speed 10 (значение -10 вроде должно задать вращение в противоположную сторону), затем уже задай специфический вектор например.
Я не думаю что необходимо задействовать все три свойства; попробуй для начала оставить +ROTATING и Rotation-Speed 10 (значение -10 вроде должно задать вращение в противоположную сторону), затем уже задай специфический вектор например.
YURA_111, Void Weaver, всё просто: в оригинальном Doom'е координата высоты почти не учитывалась. То есть можно было нажать на кнопку, что выше тебя на два твоих роста (часто используется в спидранах на MAP11: "Circle of death" в Doom II), быть укушенным пинки, что находится много ниже/много выше игрока, и так далее. Точно по тому же принципу в ванили действует и взрывы от ракет и бочек.
Собственно, предложенный мною флаг убирает стандартный просчёт от взрыва в ZDoom'е и его производных, которые учитывают ещё и высоту. По Z-координате с этим поднятым флагом взрыв распространяется бесконечно.
1) Чем можно задать условие типа "если цель "летающая", то джамп к определённой атаке"?
Просто проверка на высоту не катит поскольку актор c +DROPOFF и большим значением MaxStepHeight, поэтому нужна проверка на свойство или флаг какой-нибудь (типа FLOAT или NOGRAVITY, они же у всех летающих, да?), для тех кто не соприкасается с полом и\или до кого не добраться вплотную.
2) Я правильно понимаю что зависимость наносимого мили урона от пройденной дистанции можно задать только скриптом?
Чем можно задать условие типа "если цель "летающая", то джамп к определённой атаке"?
В Jumpif использовать CallACS("скриптнейм")==1, в ACS исполнить скрипт от имени цели по SetActivatorToTarget(0) и далее CheckFlag с SetResultValue (1), если проверка пройдена. Флаги проверять FLOAT и NOGRAVITY.
Void Weaver:
2) Я правильно понимаю что зависимость наносимого мили урона от пройденной дистанции можно задать только скриптом?
Ну можно, например, заняться онанизмом с юзерварами, добавляя на каждый шаг A_SetUserVar("user_name",user_name+1), а потом используя накопленное значение для расчёта.
Ну можно, например, заняться онанизмом с юзерварами, добавляя на каждый шаг A_SetUserVar("user_name",user_name+1), а потом используя накопленное значение для расчёта.
О! Тогда я для начала пожалуй передёрну. В моём случае скорее даже более рационально добавить ~10 строк в рамках loop.
-------
Бтв, люди добрые, подскажите существует ли какой-нибудь универсальный утилитарный (для тестинга) вад который записывает\выводит нанесённый актором урон в консоль или на экран?
Defines the obituary string for this actor. For weapons, this property can be used either directly on the weapon or on the puff for hitscan or rail attacks, but it should be on the projectile instead for missile attacks.
Можно ли (и как?), не прибегая к скриптам, прописать собственный обит для разных акторов-"абилок" одного актора-"хозяина"?