Автор | Сообщение |
DOOMGABR = Warrant Officer =
| 1176 |
Doom Rate: 1.87 Posts quality: +773 |
Отправлено: 24.11.16 23:58:07 | | | А как сделать свой шрифт в моде аля как это реализовано в Project Brutality | |
|
| |
DeXiaZ - 1st Lieutenant -
| 1702 |
Doom Rate: 2.29 Posts quality: +493 |
Отправлено: 25.11.16 12:36:12 | | | DOOMGABR, взять эту прогу и использовать. Для остальных элементов графики - заменять в wad файле соответственные графические файлы (смотреть в IWADах).
У меня вопрос. Мне нужно сделать так, чтобы при убийства монстра, он отлетал далеко. Weapon.kickback как-то не подходит, потому что мне нужно, чтобы монстр отлетал ТОЛЬКО при смерти, а не всегда при попадании в монстра.
В альтернативу я накатал такой код (от монстра лишь часть стэйтов):
Death:
TROO A 0 A_NoBlocking
TROO A 0 A_Scream
TROO A 0 A_CustomMissile("DeadImpS",25,0,225,CMF_AIMDIRECTION|CMF_ABSOLUTEANGLE)
Stop
XDeath:
TROO A 0 A_NoBlocking
TROO A 0 A_Scream
TROO A 0 A_CustomMissile("DeadImpS",25,0,225,CMF_AIMDIRECTION|CMF_ABSOLUTEANGLE)
Stop
}
}
//Flying away dead corpses
actor DeadImpS : Rocket 30000
{
scale 0.2
Health 40
Projectile
-SOLID
+SKULLFLY
+NOBLOCKMONST
+THRUGHOST
+THRUACTORS
+THRUSPECIES
-ROCKETTRAIL
SeeSound "none"
DeathSound "none"
States
{
Spawn:
TROO A 1
Loop
Death:
TROO A 0
Stop
}
}
Это работало кое-как ранее, но через раз. Когда я сделал большую карту в длину (реально большую) - эффект перестал работать совсем. Поэтому я стал уже лепить в стейт Death/XDeath уже самые разные флаги (сейчас вы видите их), но это не помогает ситуации.
Короче говоря, я натуральный быдлокодер и всё на соплях у меня держится, но я уже неделю время от времени мучаю код и никуда не сдвигаюсь, и это начинает раздражать, ибо дедлайн есть определенный.
Суть в том, чтобы монстр только при смерти отлетал далеко, минуя любые препятствия (для комичности ситуации, если что). Как именно сделано - неважно, лишь бы работало. Заранее благодарю. | |
|
1 |
3 |
3 |
|
|
| |
alekv - Colonel -
| | 4168 |
Doom Rate: 1.87 Posts quality: +949 |
Отправлено: 25.11.16 13:47:26 | | | Fantom A_Recoil(-1) в стейте смерти, если еще сильнее пиши -4.. -10 или +10 если надо что бы в другую сторону отбрасывало. Можно еще и A_ChangeVelocity(...) использовать, но хз зачем.
DOOMGABR По шрифтам можешь почитать тут [Руководство]Шрифты в портах. |
|
|
1 |
3 |
1 |
|
|
| |
DeXiaZ - 1st Lieutenant -
| 1702 |
Doom Rate: 2.29 Posts quality: +493 |
Отправлено: 25.11.16 14:25:49 | | | alekv, не очень подходит - иногда монстр остается на месте, а еще он ударяется в препятствия на карте вроде двери. Ноуклипная кукла улетала без проблем вперед.
Если что, у меня платформер с видом сбоку. Подробнее говорить не могу, этот проект должен был быть вообще в секрете до последнего, но я не осиливаю.
UPD: Если что, смерть не анимирована больше никак. Тот же спрайт импа, только отлетает. Он отлетал за пределы карты и это было хорошо, пока система не стала давать сбои почти в 100% случаев. | |
|
1 |
3 |
3 |
|
|
| |
ZZYZX - UAC Commissar -
| | 6284 |
Doom Rate: 1.65 Posts quality: +1630 |
Отправлено: 25.11.16 14:43:47 | | | Попробуй сделать фастпроджектайл, который при смерти проверяет наличие монстров рядом A_RadiusGive, и если есть монстры с 0хп, то пушит прочь от проджектайла с какой-то скоростью. И пользовать этот фастпроджектайл вместо A_CustomBulletAttack.
Схема такая: в Death проджектайла сначала вызываешь ацс, чтобы запомнить текущее положение проджектайла в глобальной переменной ацс (X,Y,Z). Потом сразу после этого делаешь A_RadiusGive итема с флагами RGF_MONSTERS и ещё какими тебе там надо (луркай A_RadiusGive) Итем должен наследоваться от CustomInventory и вызывать ацс при поднимании (Pickup). После этого считаешь направление до проджектайла (по сохранённым X/Y/Z против GetActorX/Y/Z монстра-активатора итема) и пушишь монстра через SetActorVelocity.
Да, ВСЕ перечисленные скрипты надо вызывать через ACS_(Named)ExecuteWithResult! Иначе будет лагать и работать через жопу. |
|
|
2 |
2 |
1 |
|
|
| |
alekv - Colonel -
| | 4168 |
Doom Rate: 1.87 Posts quality: +949 |
Отправлено: 25.11.16 18:42:32 | | | Fantom: | alekv, не очень подходит - иногда монстр остается на месте, а еще он ударяется в препятствия на карте вроде двери. Ноуклипная кукла улетала без проблем вперед.
Если что, у меня платформер с видом сбоку. Подробнее говорить не могу, этот проект должен был быть вообще в секрете до последнего, но я не осиливаю.
UPD: Если что, смерть не анимирована больше никак. Тот же спрайт импа, только отлетает. Он отлетал за пределы карты и это было хорошо, пока система не стала давать сбои почти в 100% случаев. |
Ну как это так работает через раз, значит в чем-то есть причина.. A_ChangeVelocity юзай, не должно быть проблем.. Возможно надо давать скорость объекту в кадре с 1 тиком.. т.е. TROO A 1 A_ChangeFla(NOINTERACTION,TRUE)// что бы не ударялся TROO A 1 A_ChangeVelocity(velx+10,vely,velz,CVF_REPLACE)// Так же скорость будет зависеть еще и от гравитации выставленной на уровне. Если +10 слишком медленно, то мб надо флоат писать т.е. 10.0, там тестить надо, у меня и так и так норм работает.
Ну и A_Recoil тоже должно норм работать. Вообще странно что оно не работает. При смерти монстр в любом случае попадает в стейт смерти и если гозза проигнорила функцию, значит не успела ее выполнить, как вот с спавнИтемЕх бывает
Или может я не понял сути проблемы.. ? | |
|
1 |
3 |
1 |
|
|
| |
DeXiaZ - 1st Lieutenant -
| 1702 |
Doom Rate: 2.29 Posts quality: +493 |
Отправлено: 25.11.16 20:20:23 | | | ZZYZX, спасибо за вариант, оставлю это на план Z, ибо это крайне костыльный вариант.
alekv: | Или может я не понял сути проблемы.. ?
|
Возможно.
Итак, у меня была тестовая карта. Я создал тот код в декорейте (ну, он был не в точности таким, но весьма похожим). Он работал - монстры улетали при смерти. Потом я создал НУЖНУЮ мне карту. Она с видом сбоку, спроектированная в одну линию. Её длина 22907.
После этого эффект перестал работать. Я понял, что с такой длиной движок (gzdoom) не хочет рендерить такую вот куклу-ракету почему-то (хотя файрболы монстров все еще видно). Я попробовал другие варианты (чутка упростил карту, убрал всякие текстуры неюзанные и прочее) - не помогло. Я тогда стал искать другие варианты. Не помогают. Поэтому обратился сюда.
Добавлено спустя 34 секунды:
Я попробовал уже миксовать - я делал куклу реальным актором, который шел в стейт смерти и рекойлом толкался - но почему-то он не толкается, а "так" - хотя бы появляется.
Добавлено спустя 13 часов 47 минут 50 секунд:
Заставил работать стабильно, и выглядит это даже лучше, чем в собственной бете кода (когда монстры всё же отлетали, хоть и не всегда):
Death:
TROO A 0 A_NoBlocking
TROO A 0 A_Scream
TROO A 0 a_spawnitemex("DeadImpS")
Stop
XDeath:
TROO A 0 A_NoBlocking
TROO A 0 A_Scream
TROO A 0 a_spawnitemex("DeadImpS")
Stop
}
}
//Flying away dead corpses
actor DeadImpS : DoomImp 30000
{
scale 0.2
Health 0
-SOLID
+NOBLOCKMONST
+THRUACTORS
+THRUSPECIES
SeeSound "none"
DeathSound "none"
States
{
Spawn:
TROO A 0
Goto death
Death:
TROO A 999 A_Recoil(100)
XDeath:
TROO A 999 A_Recoil(100)
Stop
}
}
Да, это крайне костыльный метод, но не пришлось с ACS извращаться. alekv, с меня причитается - твой ник будет в credits, я бы до A_Recoil сам бы не допёр, спасибо! | |
|
1 |
3 |
3 |
|
|
| |
Cartoteka = UAC Gunner =
| 74 |
Doom Rate: 2 Posts quality: +63 |
Отправлено: 26.11.16 19:50:47 | | | Всем привет.
Можно ли как-то сделать так, чтобы определённые спрайты не имели коллизии? | |
|
| |
TesaQ = Warrant Officer =
| 1149 |
Doom Rate: 1.72 Posts quality: +368 |
Отправлено: 26.11.16 21:15:58 | | | Cartoteka поставь актору флажок -SOLID |
|
|
| |
DeXiaZ - 1st Lieutenant -
| 1702 |
Doom Rate: 2.29 Posts quality: +493 |
Отправлено: 26.11.16 21:28:53 | | | Cartoteka, определенные СПРАЙТЫ?
Просто если речь идет за то, чтобы спрайты одного и того же актора обладали разными параметрами коллизии, то придется подключать ссылки на других акторов каким-то очень костыльным методом.
Вкратце, либо флаг ставишь "-SOLID", либо, что посоветую я: "+NOCLIP". Можно ставить оба. |
|
|
1 |
3 |
3 |
|
|
| |
Cartoteka = UAC Gunner =
| 74 |
Doom Rate: 2 Posts quality: +63 |
Отправлено: 26.11.16 21:46:25 | | | Fantom: | определенные СПРАЙТЫ? |
Я имел в виду спрайты из секции Obstacles. Деревья там, бочка с огнём, колонны. Вооот. Извините, если непонятно написал. | |
|
| |
DeXiaZ - 1st Lieutenant -
| 1702 |
Doom Rate: 2.29 Posts quality: +493 |
Отправлено: 26.11.16 22:16:54 | | | Cartoteka, ничего страшного, просто стоит понимать, что "спрайты" - это как кожа. Кожу отдельно от человека нельзя назвать человеком.
Редактируем мы в программном смысле не спрайты, а "actors".
В общем, -SOLID или +NOCLIP помогут. Удачи! |
|
|
1 |
3 |
3 |
|
|
| |
ZZYZX - UAC Commissar -
| | 6284 |
Doom Rate: 1.65 Posts quality: +1630 |
Отправлено: 26.11.16 22:20:23 | | | Fantom: | Просто если речь идет за то, чтобы спрайты одного и того же актора обладали разными параметрами коллизии |
A_ChangeFlag("NOCLIP", false) A_ChangeFlag("NOCLIP", true) |
|
|
2 |
2 |
1 |
|
|
| |
Cartoteka = UAC Gunner =
| 74 |
Doom Rate: 2 Posts quality: +63 |
Отправлено: 26.11.16 23:16:11 | | | И ещё один, наверное, довольно глупый вопрос. Где это править? Я изначально думал, что это можно будет сделать в SLADE, но либо это делается не там, либо я не нашёл, где это нужно сделать. | |
|
| |
DeXiaZ - 1st Lieutenant -
| 1702 |
Doom Rate: 2.29 Posts quality: +493 |
Отправлено: 26.11.16 23:20:13 | | | Cartoteka, Slade - это программа для редактирования. Она отлично подходит для того, о чем ты спрашивал.
Это дело делается в decorate. Но я так понимаю, этого файла в твоем ваде/пк3 нет. Значит, его нужно создать и вбивать коды, которые будут изменять оригинальные, или же дополнять. |
|
|
1 |
3 |
3 |
|
|
| |
aivar242 - 2nd Lieutenant -
| 1408 |
Doom Rate: 1.64 Posts quality: -18 |
Отправлено: 27.11.16 03:34:11 | | | Как узнать, где находится итем в (любой из оригинальных вадов) игре, например Мегасфера? Чтобы поближе к началу уровня, и не топать до неё в конец того же уровня через 10 дверей. Никак не могу найти местоположение BigLamp. | |
|
| |
ZZYZX - UAC Commissar -
| | 6284 |
Doom Rate: 1.65 Posts quality: +1630 |
Отправлено: 27.11.16 04:31:16 | | | aivar242 Не въехал в суть вопроса. | |
|
2 |
2 |
1 |
|
|
| |
DeXiaZ - 1st Lieutenant -
| 1702 |
Doom Rate: 2.29 Posts quality: +493 |
Отправлено: 27.11.16 08:53:30 | | | ZZYZX, он имеет в виду, на каких картах какие предметы установлены разработчиками.
aivar242. Открываешь Doom Builder, жмешь F3 (поиск). Там выбираешь поиск Light Sources и выбираешь BigLamp. И тыкаешь на каждой карте поиском, пока не найдешь. И да, чтобы процесс шёл быстрее - можно нажимать в File -> Reopen another map in this WAD, дабы не тыкать настройки открытия карты по 30 раз. | |
|
1 |
3 |
3 |
|
|
| |
ZZYZX - UAC Commissar -
| | 6284 |
Doom Rate: 1.65 Posts quality: +1630 |
Отправлено: 27.11.16 18:04:37 | | | Я не понимаю просто, не проще сделать свою карту, на которой всё стоит на спавне? | |
|
2 |
2 |
1 |
|
|
| |
MyNameIs = 1st Lieutenant =
| 2054 |
Doom Rate: 2.04 Posts quality: +893 |
Отправлено: 27.11.16 23:57:13 | | | такой вопрос. плутония, тнт и дум2 для использования в качестве ивадов чем-то отличаются кроме текстур и музыки? в плутонию и тнт я особо не играл, всего не знаю. если нет отличий, то, получается, если в вад запихать всё своё, можно использовать любой из этих трёх? | |
|
| |