SSV_Victoryan Там смотри, у монстров что бы они респавнились есть спец стейт Raise:
Что можно сделать..
Допустим кошмарный арч когда поднимает монстров раздает всем в округе предмет, "NIGHTMARE" =0
Монстр проверяет если есть такой предмет, значит поднимается..
Вот в коде примерно так
Actor NoNightmare : inventory
{}
Actor Nightmare : inventory
{}
//Это в кошмарных монстрах прописываем
Raise:
TNT1 A 0 A_JumpIf(CountInv("nightmare") > 0, "Raise.Continue") //Т.е. если кошмарный арч поднимает, он даст эту вещь и этот монстр респавнится
POSS K 1
Raise.Continue:
POSS K 5
POSS JIH 5
Goto See
//Это для не кошмарных монстров
Raise:
TNT1 A 0 A_JumpIf(CountInv("NoNightmare") > 0, "Raise.Continue") //Т.е. если кошмарный арч поднимает, он даст эту вещь и этот монстр респавнится
POSS K 1
Raise.Continue:
POSS K 5
POSS JIH 5
Goto See
а в арче когда он хилит сделать так :
Heal:
TNT1 A 0 A_RadiusGive("nightmare", 4096, RGF_MONSTERS, 1)//А в не кошмарном арч раздает предмет "NoNightmare"
VILE "[\]" 10
Goto See
А еще лучше скинь мне код арча кошмарного и обычного!
Ты же под гоззу делаешь? Я могу написать так что ты будешь в GZDB в настройках актера ставить арч кошмарный или обычный.
alekv, твой код подразумевает, что кошмарный арч подойдет к некошмарному трупу, протянет к нему руки, проиграет звук воскрешения, но труп не поднимется? Если да, то это ли задумывал викториан? Или ему нужно было чтобы кошмарный арч вообще игнорил некошмарные трупы?
ZZYZX, зскрипт позволяет проверять, кого собрался хилить арч, чтобы адекватно (незаметно для игрока) проигнорить некорректный труп?
alekv, твой код подразумевает, что кошмарный арч подойдет к некошмарному трупу, протянет к нему руки, проиграет звук воскрешения, но труп не поднимется?
Этот код написался за 1 минуту на коленке без тестов и прочего (это я к тому что там не код, а скорее так я донес мысль )
Но думаю можно по всякому написать.. если бы он мне код скинул своих арчей.
alekv Возможно ты меня не так понял или я скорее всего тебя не понял, обычный_арч воскрешает только обычных_монстров, кошмарный_арч только кошманых_монстров.
Кода кошмарного арча у меня нет пока, потому что я не знал возможно ли такое вообще провернуть и не делал за ранее. Придётся подогнать и спрайты новые новому арчу и код дописать, думаю тогда есть смысл код давать.
Скрытый текст:
Actor NoNightmare : inventory
{}
Actor Nightmare : inventory
{}
Это в декоре или где прописывать?
но этот арч будет пытаться воскрешать монстров не своего типа.
но думаю, это вроде можно обойти через какой-нибудь A_GiveToTarget и ацс, проверяющий наличие штуки в инвентаре воскрешаемого и дающий сигнал арчу, который идет в стейт с анимацией поднятия
Скрытый текст:
если GiveToTarget работает так, как выглядит
хотя фигня способ хотя не, если можно заставить играть анимацию определенного арча.
обычный_арч воскрешает только обычных_монстров, кошмарный_арч только кошманых_монстров.
Именно так и задумано.. Но там обычный арч может пытаться безуспешно воскрешать кошмарных монстров.
Я бы помог лучше если бы знал как арч работает, я уже давно не возился с монстрами дума..
Арч выбирает цель и тогда его воскрешает? Если да, то можно арчу можно прописать в стейте хила проверку есть ли у цели вещь, если есть, переключить на другого таргета..
т.е. почти то что написал MyNameIs
SSV_Victoryan:
потому что я не знал возможно ли такое вообще провернуть и не делал за ранее.
Ну ты даешь.. Там платформер возможно сделать, стратегию.. т.е. целый жанр реализовать!!! А тут какой-то арч.. +)
, если можно заставить играть анимацию определенного арча.
а когда чувак воскрешается арчом, его целью является арч? или он просто бесцельный? можно было бы через A_GiveToTarget дать конкретному арчу итем, который бы и играл его анимацию
тогда и ацс не нужен
Скрытый текст:
хотя хз, может ли ацс узнать арча, который щас ресает монстра, чтобы дать ему анимацию
Именно так и задумано.. Но там обычный арч может пытаться безуспешно воскрешать кошмарных монстров.
Я бы помог лучше если бы знал как арч работает, я уже давно не возился с монстрами дума..
Арч выбирает цель и тогда его воскрешает? Если да, то можно арчу можно прописать в стейте хила проверку есть ли у цели вещь, если есть, переключить на другого таргета..
Вот желательно что бы простой арч да же не пытался воскрешать кошмарных(игнорировал) иначе он будет баговать и игрок его легко застрелит и то же самое у кошмарного арча но с простыми монстрами.
alekv:
Ну ты даешь.. Там платформер возможно сделать, стратегию.. т.е. целый жанр реализовать!!! А тут какой-то арч.. +)
Сравнил блин солнце и луну, я к тому что кроме дума на движке больше и понятия не имею что можно сделать, я не программист.
https://yadi.sk/d/13i4f46P3Mr9SB вот урезанный кусок проекта с добавленным кошмарным арчем(спрайты не все покрасил) и ДЕКОРЕЙТ я вынул отдельно где он прописан. Правда если захочешь тестонуть что ты там накодируешь, то придётся декор пихать назад в DOOM_HOTD_RES.WAD я даже подготовил полигон на выборе 4й главы в игре с арчами и монстрами.
Или я сам протестирую. И ещё, я испортил дальнюю атаку nАрчу =( хотел сделать огонь другого цвета и в итоге кошмарный арч сам себя поджигает...
Пробовал сделать твой способ и гоза меня не допустила к "экзаменам")
Ну ты даешь.. Там платформер возможно сделать, стратегию.. т.е. целый жанр реализовать!!! А тут какой-то арч.. +)
Вот тут ты не прав. На GZDooM можно забабахать все что угодно, но некоторые казалось бы простые вещи невозможно, ибо они зашиты глубоко-глубоко в код гоззы. По большей части это касается недумовских игр типа Hexen, Heretic и Strife - ты покопай коды этих игр в гоззе, 95% экшенов актеров зверски приварены только к этой игре, и чтобы их использовать в модификации, тем более к другой игре, то нужно быть жестким извращенцем.
MyNameIs:
а когда чувак воскрешается арчом, его целью является арч? или он просто бесцельный?
Арч работает по жестоко неизменяемой схеме:
A_VileChase - позволяет монстру входить в стейт Heal при наличии у трупа стейта Raise. И все. Никаких аргументов, проверок, ничего. Только на наличие стейта Raise у трупа идет проверка. В стейте Heal тоже ничего не прописывается.
Тут либо идите и спрашивайте Зюзика про ZScript, либо напрямую стучите Графу чтобы тот что-то сделал. Вообще на мой взгляд довольно крупное упущение - невозможность как-то разнообразить воскрешение трупов монстром. Скорее всего сделали эту функцию чисто для Дума, так же как и с другими поддерживаемыми играми, и не стали развивать. Есть и отвалите от нас, больше не надо
Или писать огромные костыли через ACS для этих арчей. Но я даже не могу себе представить, что через ACS можно сделать в данном случае
MasterMind Но можно же запихнуть в heal проверку инвентаря: при наличии просто будет скипаться анимация и сразу идти в see
Триггериться она будет, да. Поэтому надо че-то делать с воскрешаемым, но тут сложнее.
Чувак считается воскресшим и с полным хп, как только заходит в raise? Ну, я о том, что если после этого в dead направиться, ничего не сломается? Там же есть наверняка вшитые условия, о которых ты упоминал
Чувак считается воскресшим и с полным хп, как только заходит в raise?
Да.
MyNameIs:
Ну, я о том, что если после этого в dead направиться, ничего не сломается?
Ну во-первых не Dead, а Death. А во-вторых если прямо направится, то сломается. Нужны манипуляции с A_Die, приписыванием нового DamageFactor к нему, чтобы при этом не проигрывалась стандартная анимация смерти монстра. Да и к тому же вряд ли воскрешаемый актер является целью монстра. Тут блин куча подводных камней из-за жестокого вшития некоторых функций в код без возможности их изменения. Если раздавать итемы с RadiusGive, то есть шанс что предмет будет получен каким-то живым монстром и сломать его. А еще неясно, могут ли быть выданы предметы уже мертвым врагам. Короче тут нужно эксперементировать и ковырятся методом проб и ошибок, только не факт что что-то получится. Сиди вот и придумывай. Сам занимался когда-то моддингом, может быть вернусь, если появится свободное время. Немного не в тему, но иногда, когда я играю в зашибенный мод или карту, я думаю: "сколько времени ушло на создание этого творения? Сколько свободного времени и терпения должно быть у автора?". Некоторые ведь пилят офигенные проекты в одиночку. И ведь они ничего за это не получат, а кто-то вообще может получить кучу негативных отзывов. Я бы не смог целый год пилить один мод или карту, поскольку я неусидчивый и не могу корпеть над одним проектом.
Короче говоря, человек наступил на те же грабли что и я - захотел сделать необычную модификацию, а напоролся на ситуацию, требующую танцев с бубном. Я бы попробовал сам поковырятся и посмотреть, что можно сделать тут, потому что моддинг меня всегда завораживал, но у меня просто нет на это времени, извините. Но предупреждаю: парень играется с крепко зашитой в код функцией. Высока вероятность, что может вообще ничего не выйти. Но все равно - желаю удачи
Пытаюсь понять ворох информации которую тут хаотично вывалили и пока не соберу до кучи всё ни как от разных людей это первая проблема.
Вторая заключается в вопросе, а нельзя ли изначально сразу прописать обычным монстрам в декоре "NoNightmare" а кошмарным "Nightmare" ?
(игроку же изначально можно выдать патроны для пистолета) и тогда арчам раздавать ничего не нужно а проверять у трупов этот "инвентарь" и видеть кого можно оживить, а кого другому оживлять или я чего-то навыдумывал? (я маппер а не мододел)
Вторая заключается в вопросе, а нельзя ли изначально сразу прописать обычным монстрам в декоре "NoNightmare" а кошмарным "Nightmare" ?
Можно, либо в стейте spawn давать им этот предмет, либо делать им переменную uservar, которую в стейте spawn ставить в определенное значение (а арч будет чекать эту переменную через ACS (ну если удастся арча сконтачить с воскрешаемым объектом посредством target или других способов) )
Точно так же сделать и с самим арчем
Добавлено спустя 10 минут 56 секунд:
Кстати, в моем моде, чтобы дружественный арч воскрешал монстров так, чтобы они становились дружественными, а вражеский воскрешал всегда чтобы становились врагами, я сделал так:
Spawn:
TNT1 A 0
TNT1 A 0 A_JumpIf(CallACS("IsFriendly") == true , 2)
TNT1 A 0 A_CopyFriendliness(AAPTR_MASTER)
Т.е. я к тому, что арч является мастером по отношению к воскрешаемому монстру, и это может тебе помочь
Пытаюсь понять ворох информации которую тут хаотично вывалили и пока не соберу до кучи всё ни как от разных людей это первая проблема.
Действительно хаотично все описали, но на самом деле должно быть просто:
Сначала даешь некий инвентори Кошмарному монстру. Когда его кильнули он начинает раздавать через A_RadiusGive этот инвентори
В свою очередь твой кошмарный Арчи имеет обычный A_Chase, но как только получает этот инвентори от трупа у него становиться A_VileChase. (все равно есть шанс что может воскресить обычного, но наверное только если трупы будут очень рядом)
(все равно есть шанс что может воскресить обычного, но наверное только если трупы будут очень рядом)
Тогда задумка не удалась, в топку идею. Всё равно у кошмарного арча не получилось сделать огненную атаку с другими спрайтами, а раз есть шанс что он может воскресить простого монстра то вообще труба.
DECORATE: (вырезал куски кода чтобы нагромождений было как можно меньше)
Скрытый текст:
Actor NoNightmare : inventory
{}
Actor Nightmare : inventory
{}
Actor HOTDDoomImp : DoomImp Replaces DoomImp
{ States
{ Death:
TROO I 8 A_SetScale(ScaleX * RandomPick(-1.0, 1.0), ScaleY)
TROO J 8 A_Scream
TROO K 6
TROO L 6 A_NoBlocking
TROO M -1
Stop
Raise:
TROO M 0 A_JumpIf(CountInv("NoNightmare") > 0, "Raise.Continue")
TROO M 1
Raise.Continue:
TROO MLKJI 8
Goto See
Crush:
POL5 A -1 A_PlaySound ("Misc/Gibbed")
stop
}
}
Actor HOTDArchvile : Archvile Replaces Archvile
{ States
{ Heal:
VILE "[" 0 A_RadiusGive( "Nightmare", 64.0, RGF_CORPSES )
VILE "[\]" 10 BRIGHT
Goto See
Death:
VILE Q 7 A_SetScale(ScaleX * RandomPick(-1.0, 1.0), ScaleY)
VILE R 7 A_Scream
VILE S 7 A_NoBlocking
VILE TUVWXY 7
VILE Z -1
Stop
Crush:
POL5 A -1 A_PlaySound ("Misc/Gibbed")
stop
}
}
Actor NmImp 7404
{ SpawnID 1005
Health 120
Bloodcolor 0 72 48
Renderstyle Translucent
Alpha 0.7
Radius 20
Height 56
Mass 100
Speed 8
PainChance 200
Monster
+FLOORCLIP -COUNTKILL
SeeSound "Imp/sight"
PainSound "imp/pain"
DeathSound "imp/death"
ActiveSound "NmImp/active"
MeleeSound "NmImp/melee"
Obituary "%o was cursed by a Nightmare Imp."
HitObituary "%o was touched by a Nightmare Imp."
MissileType NmImpBall
MeleeDamage 3
States
{ Spawn:
TRO2 AB 10 A_Look
Loop
See:
TRO2 AABBCCDD 3 A_Chase
Loop
Melee:
Missile:
TRO2 EF 8 A_FaceTarget
TRO2 G 8 A_ComboAttack // See NmImpBall
Goto See
Pain:
TRO2 H 2
TRO2 H 2 A_Pain
Goto See
Death:
TRO2 I 8 A_SetScale(ScaleX * RandomPick(-1.0, 1.0), ScaleY)
TRO2 J 8 A_Scream
TRO2 K 6
TRO2 L 6 A_NoBlocking
TRO2 M -1
Stop
XDeath:
TRO2 N 5
TRO2 O 5 A_XScream
TRO2 P 5
TRO2 Q 5 A_NoBlocking
TRO2 RST 5
TRO2 U -1
Stop
Raise:
TRO2 M 0 A_JumpIf(CountInv("nightmare") > 0, "Raise.Continue")
TRO2 M 1
Raise.Continue:
TRO2 MLKJI 8
Goto See
Crush:
PON3 A -1 A_PlaySound ("Misc/Gibbed")
stop
}
}
Actor NmArchvile 7417
{ SpawnID 1114
Health 1400
Bloodcolor 0 72 48
renderstyle translucent
Alpha 0.7
Radius 20
Height 56
Mass 500
Speed 15
PainChance 10
Monster
MaxTargetRange 896
+QUICKTORETALIATE +FLOORCLIP +NOTARGET
SeeSound "vile/sight"
PainSound "vile/pain"
DeathSound "vile/death"
ActiveSound "vile/active"
MeleeSound "vile/stop"
Obituary "%o was splattered by a Nightmare Archvile."
States
{ Spawn:
VIL2 AB 10 A_Look
Loop
See:
VIL2 AABBCCDDEEFF 2 A_VileChase
Loop
Missile:
VIL2 G 0 BRIGHT A_VileStart
VIL2 G 10 BRIGHT A_FaceTarget
VIL2 H 8 BRIGHT A_VileTarget
VIL2 IJKLMN 8 BRIGHT A_FaceTarget
VIL2 O 8 BRIGHT A_VileAttack ("NmArchvileFire")
VIL2 P 20 BRIGHT
Goto See
Heal:
VILE "[" 0 A_RadiusGive( "NoNightmare", 64.0, RGF_CORPSES )
VILE "[\]" 10 BRIGHT
Goto See
Pain:
VIL2 Q 5
VIL2 Q 5 A_Pain
Goto See
Death:
VIL2 Q 7
VIL2 R 7 A_Scream
VIL2 S 7 A_NoBlocking
VIL2 TUVWXY 7
VIL2 Z -1
Stop
Crush:
PON3 A -1 A_PlaySound ("Misc/Gibbed")
stop
}
}
Actor NmArchvileFire
{ +NOBLOCKMAP +NOGRAVITY
RenderStyle Add
Alpha 1
States
{ Spawn:
FIR2 A 2 BRIGHT A_StartFire
FIR2 BAB 2 BRIGHT A_Fire
FIR2 C 2 BRIGHT A_FireCrackle
FIR2 BCBCDCDCDEDED 2 BRIGHT A_Fire
FIR2 E 2 BRIGHT A_FireCrackle
FIR2 FEFEFGHGHGH 2 BRIGHT A_Fire
Stop
}
}
Оба арча могут воскрешать обе масти монстров, делал всё как тут писали. И огонь новый у арча нового не пашет. Ещё раз повторюсь, я не программист я не понимаю заумные фразы и не договорённости по поводу кода, если можно пишите на максимально простом бытовом языке понятном простым смертным. Всё что видно в коде это так или иначе копипаста из других проектов или из этой темы...
в какую топку, я тебе код начал писать пару часов назад
SSV_Victoryan:
Вот желательно что бы простой арч да же не пытался воскрешать кошмарных(игнорировал) иначе он будет баговать и игрок его легко застрелит и то же самое у кошмарного арча но с простыми монстрами.
На данный момент кошмарный воскрешает только кошмарных, простой только простых.
MasterMind:
Вот тут ты не прав. На GZDooM можно забабахать все что угодно, но некоторые казалось бы простые вещи невозможно, ибо они зашиты глубоко-глубоко в код гоззы. По большей части это касается недумовских игр типа Hexen, Heretic и Strife - ты покопай коды этих игр в гоззе, 95% экшенов актеров зверски приварены только к этой игре, и чтобы их использовать в модификации, тем более к другой игре, то нужно быть жестким извращенцем.
Нет, я прав. Можно все, а что нельзя то тоже можно.
Потому что чего нельзя ацсом\декорейтом, можно зскриптом, если и им нельзя, можно с++..
Просто надо быть программистом или развиваться в этом направлении..
А по поводу стандартных действий которые не "меняются" типа A_VileChase итд., 100% воспроизводятся decorate+acs или zscript для совсем уж из рядавон.
MasterMind:
Высока вероятность, что может вообще ничего не выйти.
Да так везде.. Даже в реальной жизни
Но в коде зачастую все зависит от знаний и смекалки кодера ну и хотелок.
SSV_Victoryan На данный момент кошмарный арч умеет воскрешать кошмарных монстров, но пока что есть другая проблема.. он воскрешает всех кошмарных монстров в заданном радиусе, тоже и с обычным
На данный момент кошмарный арч умеет воскрешать кошмарных монстров, но пока что есть другая проблема.. он воскрешает всех кошмарных монстров в заданном радиусе, тоже и с обычным
не по одному а разом все трупы?
Какой радиус воскрешения у арча, 64? И как-то можно новую огненную атаку прописать кошмарному арчу? атака такая же как у обычного арча, но мне нужна новая из-за новых спрайтов(код атаки в предыдущем сообщении тут от мненя), которым новое освещение прописать хочу.
Тут, скорее вот так.. Труп раздает арчуарчам радиусгивом вещь в радиусе 128, если арч проходит рядом, труп ему как бы говорит что его можно воскресить, арч начинает воскрешать, но если в радиус воскрешения (128 мап пикселей) будет 2 и более трупа, они тоже воскресятся! В целом выглядит прикольно
я как допишу код, на видео запишу покажу.. Думаю уже не много осталось..
SSV_Victoryan:
И как-то можно новую огненную атаку прописать кошмарному арчу?
Хоть 10шт
Добавлено спустя 6 минут 32 секунды:
SSV_Victoryan:
Какой радиус воскрешения у арча, 64?
Тут фигня в том что я не знаю как ведет себя арч стандартный..
специально ищет трупы и воскрешает их
или воскрешает трупы только если он оказался рядом!
т.к. у меня щас арч не ищет трупы.. он воскрешает только если труп будет рядом.. Ну там идет за игроком и на пути где-то труп, он его воскресит.
От этого и радиус 129 сделал.
А вот как сделать так что бы арч искал трупы, тут уж хз
Тут, скорее вот так.. Труп раздает арчу\арчам радиусгивом вещь в радиусе 128, если арч проходит рядом, труп ему как бы говорит что его можно воскресить, арч начинает воскрешать, но если в радиус воскрешения (128 мап пикселей) будет 2 и более трупа, они тоже воскресятся! В целом выглядит прикольно
я как допишу код, на видео запишу покажу.. Думаю уже не много осталось..
Я думал у арча 64 маппикселя радиус воскрешения, в общем радиус воскрешения желательно чтобы был одинаковый у обоих арчей, равен радиусу обычного арча.
alekv:
Хоть 10шт
Не атака такая же, просто спрайты другие и свечение другое, но для этого нужно кошмарному арчу как то прописать новую огненную атаку, которая по функционалу ни чем не отличается от обычной арч-атаки, только визуально. Надеюсь получится.
"А вот как сделать так что бы арч искал трупы, тут уж хз" а он их разве ищет? не замечал