Welcome to U.A.C. [O.S.A.]
login / register 
Status: Guest
Архивы форума | iddqd.ru
Wolf 3D
ПравилаПравила ПоискПоиск
18+
Тема для новичков. Вопросы по маппингу/моддингу - любые! Пред.  1, 2, 3 ... 130, 131, 132 ... 198, 199, 200  След.
   Список разделов - Флуд и устаревшие темы - Тема для новичков. Вопросы по маппингу/моддингу - любые!Ответить
АвторСообщение
alekv
- Colonel -
Next rank: = Colonel = after 272 pointsМодератор форума
4168

Doom Rate: 1.87

Posts quality: +949
Ссылка на пост №2601 Отправлено: 14.09.17 22:53:55
SSV_Victoryan
Вот видео:



А вот код:
Скрытый текст:

Actor Nightmare_Raise : inventory
{Inventory.MaxAmount 1}

Actor Simple_Raise : inventory
{Inventory.MaxAmount 1}

Actor NightMare_Closer : inventory
{Inventory.MaxAmount 1}

Actor Simple_Closer : inventory
{Inventory.MaxAmount 1}


Actor Simple_Archvile : Archvile replaces Archvile
{
  Health 700
  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 "$OB_VILE"
  States
  {
  Spawn:
    VILE AB 10 A_Look
    Loop
  See:
    VILE AABBCCDDEEFF 2 { A_Chase;	return A_JumpIf(CountInv("Simple_Closer") > 0, "Heal"); }//если труп близко, воскрешаем.
    Loop
  Missile:
    VILE G 0 Bright A_VileStart
    VILE G 10 Bright A_FaceTarget
    VILE H 8 Bright A_VileTarget
    VILE IJKLMN 8 Bright A_FaceTarget
    VILE O 8 Bright A_VileAttack
    VILE P 20 Bright
    Goto See
  Heal:
	TNT1 A 0 A_RadiusGive("Simple_Raise", 130, RGF_CORPSES, 1)
    VILE "[\]" 10 Bright A_TakeInventory("Simple_Closer")
    Goto See
  Pain:
    VILE Q 5   
    VILE Q 5 A_Pain
    Goto See
  Death:
    VILE Q 7
    VILE R 7 A_Scream
    VILE S 7 A_NoBlocking
    VILE TUVWXY 7
    VILE Z -1
    Stop
  }
}


Actor Nightmare_Archvile : Archvile 7417
{//$Category NightMare
RenderStyle Subtract
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 F 0 A_JumpIf(CountInv("NightMare_Closer") > 0, "Heal.nightmare")
		VIL2 AABBCCDDEEFF 2
			{
			A_Chase;
			return A_JumpIf(CountInv("NightMare_Closer") > 0, "Heal");
			}
		Loop
	Missile:
		VIL2 G 0 BRIGHT A_VileStart //("NmArchvileFire")
		VIL2 G 10 BRIGHT A_FaceTarget
		VIL2 H 8 BRIGHT A_VileTarget //("NmArchvileFire")
		VIL2 IJKLMN 8 BRIGHT A_FaceTarget
		VIL2 O 8 BRIGHT A_VileAttack ("NmArchvileFire")
		VIL2 P 20 BRIGHT
		Goto See
	Heal://.nightmare:
		TNT1 A 0 A_RadiusGive("Nightmare_Raise", 130, RGF_CORPSES, 1)
		VIL2 "[\]" 10 BRIGHT A_TakeInventory("NightMare_Closer")
		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
   RenderStyle Subtract
   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
   }
}



ACTOR Simple_ZombieMan : ZombieMan replaces ZombieMan
{
  Health 20
  Radius 20
  Height 56
  Speed 8
  PainChance 200
  Monster
  +FLOORCLIP
  SeeSound "grunt/sight"
  AttackSound "grunt/attack"
  PainSound "grunt/pain"
  DeathSound "grunt/death"
  ActiveSound "grunt/active"
  Obituary "$OB_ZOMBIE" // "%o was killed by a zombieman."
  DropItem "Clip"
  States
  {
  Spawn:
    POSS AB 10 A_Look
    Loop
  See:
    POSS AABBCCDD 4 A_Chase
    Loop
  Missile:
    POSS E 10 A_FaceTarget
    POSS F 8 A_PosAttack
    POSS E 8
    Goto See
  Pain:
    POSS G 3
    POSS G 3 A_Pain
    Goto See
//==============================================================================
	Death:
		POSS H 5
		POSS I 5 A_Scream
		POSS J 5 A_NoBlocking
		POSS K 5
	Death.Wait:
		POSS L 1 A_RadiusGive("Simple_Closer", 64, RGF_MONSTERS, 1, "Simple_Archvile")//Раздает вещь что бы кошмарный арч нашел труп
		POSS L 0 A_JumpIf(CountInv("Simple_Raise") > 0, "Raise.Loop")//Проверяем, если арч воскресил моба, прыгаем в стейт воскрешения
		POSS L 3
		Loop
	XDeath:
		POSS M 5
		POSS N 5 A_XScream
		POSS O 5 A_NoBlocking
		POSS PQRST 5
	XDeath.Wait:
		POSS U 1 A_RadiusGive("Simple_Closer", 64, RGF_MONSTERS, 1, "Simple_Archvile")//Раздает вещь что бы кошмарный арч нашел труп
		POSS U 0 A_JumpIf(CountInv("Simple_Raise") > 0, "Raise.Loop")//Проверяем, если арч воскресил моба, прыгаем в стейт воскрешения
		POSS U 3
		Loop
	Raise.Loop:
		POSS H -1 {A_TakeInventory("Simple_Raise", 999); A_TakeInventory("Simple_Closer", 999); Thing_Raise(0, 1);}//Отсюда прыгнет в Raise стейт
		Stop
	Raise:
		POSS K 5
		POSS JIH 5 {A_TakeInventory("Simple_Raise", 999); A_TakeInventory("Simple_Closer", 999);}
		Goto See
  }
}


ACTOR Nightmare_ZombieMan 12000 //: ZombieMan replaces ZombieMan 12000
{
//$Category NightMare
Health 20
Radius 20
Height 56
Speed 10
PainChance 200
Monster
+FLOORCLIP
SeeSound "grunt/sight"
AttackSound "grunt/attack"
PainSound "grunt/pain"
DeathSound "grunt/death"
ActiveSound "grunt/active"
Obituary "$OB_ZOMBIE" // "%o was killed by a zombieman."
DropItem "Clip"
States
	{
	Spawn:
		POSS AB 10 A_Look
		Loop
	See:
		POSS AABBCCDD 4 A_Chase
		Loop
	Missile:
		POSS E 10 A_FaceTarget
		POSS F 8 A_PosAttack
		POSS E 8
		Goto See
	Pain:
		POSS G 3
		POSS G 3 A_Pain
		Goto See
//==============================================================================
	Death:
		POSS H 5
		POSS I 5 A_Scream
		POSS J 5 A_NoBlocking
		POSS K 5
	Death.Wait:
		POSS L 1 A_RadiusGive("NightMare_Closer", 64, RGF_MONSTERS, 1, "Nightmare_Archvile")//Раздает вещь в радиусе 64 что бы кошмарный арч нашел труп
		POSS L 0 A_JumpIf(CountInv("Nightmare_Raise") > 0, "Raise.Loop")//Проверяем, если арч воскресил моба, прыгаем в стейт воскрешения
		POSS L 3
		Loop
	XDeath:
		POSS M 5
		POSS N 5 A_XScream
		POSS O 5 A_NoBlocking
		POSS PQRST 5
	XDeath.Wait:
		POSS U 1 A_RadiusGive("NightMare_Closer", 64, RGF_MONSTERS, 1, "Nightmare_Archvile")//Раздает вещь что бы кошмарный арч нашел труп
		POSS U 0 A_JumpIf(CountInv("Nightmare_Raise") > 0, "Raise.Loop")//Проверяем, если арч воскресил моба, прыгаем в стейт воскрешения
		POSS U 3
		Loop
	Raise.Loop:
		POSS H -1 {A_TakeInventory("Nightmare_Raise", 999); A_TakeInventory("NightMare_Closer", 999); Thing_Raise(0, 1);}//Отсюда прыгнет в Raise стейт
		Stop
	Raise:
		POSS K 5
		POSS JIH 5 {A_TakeInventory("Nightmare_Raise", 999); A_TakeInventory("NightMare_Closer", 999);}
		Goto See
	}
}



Я надеюсь понятно что да как дальше делать?
Ну в смысле как делать других кошмарных монстров?
т.е. по сути надо простым и кошмарным монстрам менять стейты смерти и воскрешения, можно копипастой и править имена спрайтов..

А вот вад пример тот что на видео:
Ссылка

Рейтинг сообщения: +1, отметил(и): SSV_Victoryan
1 3 1
MyNameIs
= 1st Lieutenant =
Next rank: - Captain - after 36 points
2054

Doom Rate: 2.04

Posts quality: +893
Ссылка на пост №2602 Отправлено: 14.09.17 23:11:32
alekv
чёт арч какой-то лютый получается.
Скрытый текст:



он ресает всех одним махом. пусть это и клевая идея для адового хардкора, сюда не очень подходит.

Добавлено спустя:
а, погоди, в твоем видео это тоже видно

хотя, наверное поправить не так уж проблемно будет

Добавлено спустя:
хотя не особо беспроблемно. корпсу только RadiusGive умеет давать?
1 1 1
SSV_Victoryan
UAC Sergeant Major
Next rank: Chief Petty Officer after 39 points
811

Doom Rate: 2.17

Posts quality: +278
Ссылка на пост №2603 Отправлено: 14.09.17 23:34:20
alekv
Ну и винегрет получился в коде. Буду думать стоило ли оно того, но спасибо. На сколько я знаю Арч не должен воскрешать тек, кого на куски порвало, только если труп целый остался Арч может его воскресить, у тебя на видео он всех подряд оживляет.

И гляжу не получилось у тебя задействовать эту новую атаку у кошмарного арча:
Скрытый текст:

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
}
}

я то прилепил её, но она не работает, кошмарный арч продолжает жарить огнём простого арча.

и кстати RenderStyle Subtract тут не в кассу, только транслюсент, заменять спрайты нужно в ручную каждый, ну это уже мои тараканы.
Много поменял ты зачемто значений номера акторов и названия в некоторых местах, они не заработают у меня))) пока не переправлю назад
2
IvanFeeD
= Corporal =
Next rank: - Lance Corporal - after 15 points
115

Doom Rate: 0.92

Posts quality: +3
Ссылка на пост №2604 Отправлено: 15.09.17 14:32:36
Как сделать так, чтобы при пересечении какой-либо линии/при нажатии какой-либо кнопки у игрока пересекшего/нажавшего забирались все собранные ключи? Порт Zandronum, ну и ZDoom тоже собственно.
EDIT: Решено.
VladGuardian
= Commissar =
Next rank: - UAC Commissar - after 263 points
5537

Doom Rate: 1.28

Posts quality: +1934
Ссылка на пост №2605 Отправлено: 15.09.17 15:36:13
IvanFeeD
Кол-во определенного предмета инвентаря у игрока:
int CheckInventory(str inventory_item)

Отбор предмета инвентаря:
TakeInventory(str inventory_item, int amount)
TakeActorInventory(int tid, str inventory_item, int amount)

inventory_item – тип отбираемого предмета инвентаря,
amount – количество.
tid – тэг актора.

Пример:
TakeInventory("SuperShotgun", 1); // отбираем двустволку
TakeInventory("ShellBox", 5); // отбираем 5 патронов для дробовика

Рейтинг сообщения: +1, отметил(и): IvanFeeD
4 10 23
IvanFeeD
= Corporal =
Next rank: - Lance Corporal - after 15 points
115

Doom Rate: 0.92

Posts quality: +3
Ссылка на пост №2606 Отправлено: 15.09.17 16:02:34
Спасибо, хотя я уже сам это нашел, но все же :beer:
У меня сейчас уже возникает вопрос по маппингу, не скриптингу: мне надо объединить две карты в одну, и возникает вот такая вот проблема: на одной карте таги начинаются с 1, и на других тоже. А надо, чтобы таги шли по порядку и на разных картах чтобы были разные, а то сразу вместо чего-то одного используешь что-то на каждой карте. Возможно ли как-нибудь их разъединить?
Что-то у меня такое чувство, что только вручную.

Рейтинг сообщения: +1, отметил(и): VladGuardian
JSO x
- 2nd Lieutenant -
Next rank: = 2nd Lieutenant = after 106 points
1334

Doom Rate: 2.26

Posts quality: +726
Ссылка на пост №2607 Отправлено: 15.09.17 16:07:08
IvanFeeD, если через Doom Builder, то в настройках по F5, во вкладке "Pasting", есть функция "Renumber all tags to resolve conflicts with existing tags" ("Перенумеровать все теги для упреждения конфликтов с уже существующими тегами"). То есть ты выставляешь эту настройку и просто копируешь всё в одну карту.


Рейтинг сообщения: +3, отметил(и): VladGuardian, Mud, IvanFeeD
2 7 1
IvanFeeD
= Corporal =
Next rank: - Lance Corporal - after 15 points
115

Doom Rate: 0.92

Posts quality: +3
Ссылка на пост №2608 Отправлено: 15.09.17 16:10:19
Вот это да, не ожидал! Большое спасибо :vgavno:
theleo_ua
= Colonel =
Next rank: - Commissar - after 96 points
4794

Doom Rate: 1.8

Posts quality: +1032
Ссылка на пост №2609 Отправлено: 15.09.17 19:09:58
SSV_Victoryan:
Не атака такая же, просто спрайты другие и свечение другое, но для этого нужно кошмарному арчу как то прописать новую огненную атаку, которая по функционалу ни чем не отличается от обычной арч-атаки, только визуально. Надеюсь получится.


VILE H 8 Bright A_VileTarget(ИМЯ_НОВОГО_АКТОРА_АТАКИ)

Пример кода старой атаки смотри здесь: https://zdoom.org/wiki/Classes:ArchvileFire (сделай себе такой же, но с другими спрайтами, ну или как ты там хотел)

SSV_Victoryan:
"А вот как сделать так что бы арч искал трупы, тут уж хз" а он их разве ищет? не замечал


насколько я знаю, не ищет
3 1
SSV_Victoryan
UAC Sergeant Major
Next rank: Chief Petty Officer after 39 points
811

Doom Rate: 2.17

Posts quality: +278
Ссылка на пост №2610 Отправлено: 15.09.17 20:42:32
theleo_ua:
VILE H 8 Bright A_VileTarget(ИМЯ_НОВОГО_АКТОРА_АТАКИ)


Ё маё, так вот в чём дело -_- я забываю всё время про офсеты (кажется так называюся) у спрайтов.
Поставил игру в заморозку и отошёл от атаки...


Осталось сделать чтобы по одному воскрешал монстров а не пачкой =D

alekv
А можно как то запретить обоим Арчам воскрешать трупы монстров, если они разорваны? (если труп перешёл в стейт XDeath)
2
theleo_ua
= Colonel =
Next rank: - Commissar - after 96 points
4794

Doom Rate: 1.8

Posts quality: +1032
Ссылка на пост №2611 Отправлено: 15.09.17 23:09:26
SSV_Victoryan:
А можно как то запретить обоим Арчам воскрешать трупы монстров, если они разорваны? (если труп перешёл в стейт XDeath)


Я так понял в XDeath надо убрать -1 так как здесь пишут что By default, only states with a -1 (infinite) duration are eligible.

Кстати, вопрос в зрительный зал: если вышеописанный метод с CanRaise пашет, может имеет смысл сделать так:

1) Каждому монстру делаем Death стейт без -1 (тобишь через loop)
2) Каждый тип Арча раздает свой айтем через radiusgive
3) Монстр в Death стейте чекает айтем, и если видим совпадение (например и монстр некошмарный и предмет некошмарный), то jump на те строки где CanRaise

Будет ли такое работать и какие подводные камни?

Рейтинг сообщения: +1, отметил(и): alekv
3 1
alekv
- Colonel -
Next rank: = Colonel = after 272 pointsМодератор форума
4168

Doom Rate: 1.87

Posts quality: +949
Ссылка на пост №2612 Отправлено: 15.09.17 23:31:35
SSV_Victoryan:
А можно как то запретить обоим Арчам воскрешать трупы монстров, если они разорваны? (если труп перешёл в стейт XDeath)

Да, сотри у монстров в стейт XDeath.Wait полностью
и допиши вот эти 2 строки
POSS U -1
Stop

Вот так:
	XDeath:
		POSS M 5
		POSS N 5 A_XScream
		POSS O 5 A_NoBlocking
		POSS PQRST 5
		POSS U -1
		Stop



SSV_Victoryan:
Осталось сделать чтобы по одному воскрешал монстров а не пачкой =D

Я думал над этим, но ничего толкового не придумал.
SSV_Victoryan:
и кстати RenderStyle Subtract тут не в кассу, только транслюсент, заменять спрайты нужно в ручную каждый, ну это уже мои тараканы.
Много поменял ты зачемто значений номера акторов и названия в некоторых местах, они не заработают у меня))) пока не переправлю назад

Это все для тестов было.
MyNameIs:
хотя не особо беспроблемно. корпсу только RadiusGive умеет давать?

Тут дело не в том как дать что-то корпсу, а в том как сделать так что бы воскрес только 1 монстр из 10 лежащих рядом

т.е. по факту я не могу сказать арчу что бы тот попробовал найти корпсы в радиусе 128 и если есть корпсы, надо выбрать 1ого и реснуть его.

Хотя наверное можно еще накостылить ацсом, арч как бы знает сколько трупов рядом т.к. каждый труп дает арчу вещь.. получил арч 10 вещей и во время воскрешения запускается ацс скрипт который... а чего он делает ХЗ.

Но еще есть вариант через глобальные переменные+массив попробовать, но это совсем уж..
Т.е. каждый корпс при смерти запоминает в переменную координаты, т.е. получится допустим 5 разных координат (5 корпсов лежащих рядом)
т.к. я знаб координаты всех 5ти, можно в одних из спавнить актера который даст корпсу вещь из-за которой он реснится.. НУ ЭТЖ ппц =)

:shock:
Да и там мб понадобился бы динамический массив который умеет только зскрипт.. короче хз +)



Ну, вот еще 1 вариант, арч когда хилит, спавнит 1ого актера, который летитползетварпается к любому корпсу в радиусе хила арча т.е. 64 мап пикселя и когда позиция актера и корпса будет ==, актер радиусгивом даст корпсу вещь и корпс реснится..

Проблема в том, как натравить такого актера на корпса!! А так вариант вполне себе норм.

Добавлено спустя 20 минут 4 секунды:

theleo_ua:
Будет ли такое работать и какие подводные камни?

Ну так и работает.. Только поднимает всех монстров в радиусе. т.е. если 3-4 корпса кошмарных, поднимет всех т.к. радиусгив дает всем корпсам.

Рейтинг сообщения: +1, отметил(и): SSV_Victoryan
1 3 1
Kragoth762
= Master Sergeant =
Next rank: - Sergeant Major - after 56 points
474

Doom Rate: 1.93

Posts quality: +47
Ссылка на пост №2613 Отправлено: 16.09.17 02:58:38
Есть ли hudmessage,sethudsize,setfont в zscript? как в ACS.
2 1
theleo_ua
= Colonel =
Next rank: - Commissar - after 96 points
4794

Doom Rate: 1.8

Posts quality: +1032
Ссылка на пост №2614 Отправлено: 16.09.17 07:15:27
Вопрос в зрительный зал: есть вот такая конструкция:

Скрытый текст:

XDeath:
POSS M 5
POSS N 5 A_XScream
POSS O 5 A_NoBlocking
POSS PQRST 5
POSS U -1
Stop



и есть такая:

Скрытый текст:

XDeath:
POSS M 5
POSS N 5 A_XScream
POSS O 5 A_NoBlocking
POSS PQRST 5
Goto XDeath2
XDeath2:
POSS U 1
Loop



Будет ли второй вариант негативно влиять на производительность?

SSV_Victoryan:
И я так и не понял почему арчи не сможет оживить монстра, если сделать такую заглушку в икссмерти.


Потому что арч (как я понял из вики) пытается воскресить только те трупы, которые находятся на фреймах длительность которых -1 (и игнорит те трупы, которые находятся на фреймах длительность которых 0 или больше)

alekv:
Ну так и работает.. Только поднимает всех монстров в радиусе. т.е. если 3-4 корпса кошмарных, поднимет всех т.к. радиусгив дает всем корпсам.


Значит ты неправильно понял мою идею. Распишу подробнее:

1) Радиус гив делают арчи в состоянии See. Монстры/трупы ничего никому не радиусгивают
2) Когда труп в состоянии Death детектит, что ему арч дал предмет, то в зависимости от типа предмета этот труп джампает на такие фреймы, у которых есть приписка CanRaise (после чего убирает предмет, который ему дал арч), причем на этом фрейме он будет только 1 тик (количество тиков подобрать исходя из того, как часто арч радиусгивает)

Т.е. предмет не заставляет труп воскреситься, он всего лишь разрешает арчу его затриггерить.

Соответственно, если у нас несколько трупов рядом, мы как бы разрешаем арчу триггерить каждый труп обычным для арча способом, но так как арч своим обычным способом не умеет триггерить сразу несколько трупов, то он должен затриггерить только один (т.е. арчам мы ни в коем случае не переопределяем их vilechase и ни в коем случае не заставляем их принудительно джампать на heal, и единственное, что мы изменим в состоянии SEE для арча, это добавим туда радиусгив предмета с именем "это некошмарный арч" (или "это кошмарный арч"))

И еще важный момент: чтобы ликвидировать ситуацию, когда 2 разных арча рядом, и "правильный" арч дал предмет, а "неправильный арч" воскресил, сделать проверку на трупе, что если есть предмет каждого типа, то не джампать на фреймы с CanRaise, пока предмет не станет только одного типа. И исходя из текущего абзаца я так понял что радиусгивать надо таки на каждом тике
3 1
alekv
- Colonel -
Next rank: = Colonel = after 272 pointsМодератор форума
4168

Doom Rate: 1.87

Posts quality: +949
Ссылка на пост №2615 Отправлено: 16.09.17 09:01:08
theleo_ua
Короче вот
SSV_Victoryan:
Вот желательно что бы простой арч да же не пытался воскрешать кошмарных(игнорировал)


1 - если сделать твоим способом, думаю арч будет пытаться ресать любой труп
2 - vileChase это и есть лекалка! т.е. стейт heal арчу просто для красоты дан.. Лечит трупы именно VileChase, а только потом прыгает в стейт хилл показать как он красиво поднял трупы =(
1 3 1
SSV_Victoryan
UAC Sergeant Major
Next rank: Chief Petty Officer after 39 points
811

Doom Rate: 2.17

Posts quality: +278
Ссылка на пост №2616 Отправлено: 16.09.17 09:57:32
Опять что-то пошло не так чёрт.
Обычный арч(с права) вообще перестал оживлять обычных монстров. кАрч (с лева) вроде правильно оживляет только кМонстров (подсунул ему простого импа для проверки) но жарит огнём новым через любое препятствие, попробовал ноклипом спрятаться за картой так он и туда дотянулся.

Вот вырезал из декора ключевые части кода, который перекопировал в него из этой темы(вроде правильно приклеил но мог что-то не доглядеть):
Скрытый текст:

Actor Nightmare_Raise : inventory
{Inventory.MaxAmount 1}

Actor Simple_Raise : inventory
{Inventory.MaxAmount 1}

Actor NightMare_Closer : inventory
{Inventory.MaxAmount 1}

Actor Simple_Closer : inventory
{Inventory.MaxAmount 1}

/===============================

Actor HOTDImp : 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
Death.Wait:
TROO M 1 A_RadiusGive("Simple_Closer", 64, RGF_MONSTERS, 1, "HOTDArchvile")
//^Раздает вещь что бы кошмарный арч нашел труп
TROO M 0 A_JumpIf(CountInv("Simple_Raise") > 0, "Raise.Loop")
//^Проверяем, если арч воскресил моба, прыгаем в стейт воскрешения
TROO M 3
Loop
Raise.Loop:
TROO I -1 {A_TakeInventory("Simple_Raise", 999); A_TakeInventory("Simple_Closer", 999); Thing_Raise(0, 1);}
//^Отсюда прыгнет в Raise стейт
Stop
Raise:
TROO MLKJI 8 {A_TakeInventory("Simple_Raise", 999); A_TakeInventory("Simple_Closer", 999);}
Goto See
Crush:
POL5 A -1 A_PlaySound ("Misc/Gibbed")
stop
}
}

/=====================================

Actor HOTDArchvile : Archvile Replaces Archvile
{ States
{ See:
VILE AABBCCDDEEFF 2 { A_Chase; return A_JumpIf(CountInv("Simple_Closer") > 0, "Heal"); }
//^если труп близко, воскрешаем.
Loop
Heal:
TNT1 A 0 A_RadiusGive("Simple_Raise", 130, RGF_CORPSES, 1)
VILE "[\]" 10 BRIGHT A_TakeInventory("Simple_Closer")
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 "NmMonsters/active"
MeleeSound "imp/melee"
Obituary "%o was cursed by a Nightmare Imp."
HitObituary "%o was touched by a Nightmare Imp."
MissileType NmImpBall
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_CustomComboAttack("NmImpBall", 32, 3 * random(1, 8), "imp/melee")
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
Death.Wait:
TRO2 M 1 A_RadiusGive("NightMare_Closer", 64, RGF_MONSTERS, 1, "NmArchvile")
TRO2 M 0 A_JumpIf(CountInv("Nightmare_Raise") > 0, "Raise.Loop")
TRO2 M 3
Loop
Raise.Loop:
TRO2 I -1 {A_TakeInventory("Nightmare_Raise", 999); A_TakeInventory("NightMare_Closer", 999); Thing_Raise(0, 1);}
Stop
Raise:
TRO2 MLKJI 8 {A_TakeInventory("Nightmare_Raise", 999); A_TakeInventory("NightMare_Closer", 999);}
Goto See
XDeath:
TRO2 N 5
TRO2 O 5 A_XScream
TRO2 P 5
TRO2 Q 5 A_NoBlocking
TRO2 RST 5
TRO2 U -1
Stop
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 -COUNTKILL
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 F 0 A_JumpIf(CountInv("NightMare_Closer") > 0, "Heal.nightmare")
VIL2 AABBCCDDEEFF 2 {A_Chase; return A_JumpIf(CountInv("NightMare_Closer") > 0, "Heal");}
Missile:
VIL2 G 0 BRIGHT A_VileStart
VIL2 G 10 BRIGHT A_FaceTarget
VIL2 H 8 BRIGHT A_VileTarget ("NmArchvileFire")
VIL2 IJKLMN 8 BRIGHT A_FaceTarget
VIL2 O 8 BRIGHT A_VileAttack
VIL2 P 20 BRIGHT
Goto See
Heal:
TNT1 A 0 A_RadiusGive("Nightmare_Raise", 130, RGF_CORPSES, 1)
VIL2 "[\]" 10 BRIGHT A_TakeInventory("NightMare_Closer")
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 //translucent
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
}
}


Уж простите что такой тугой на код =D
2
theleo_ua
= Colonel =
Next rank: - Commissar - after 96 points
4794

Doom Rate: 1.8

Posts quality: +1032
Ссылка на пост №2617 Отправлено: 16.09.17 10:40:08
alekv:
2 - vileChase это и есть лекалка! т.е. стейт heal арчу просто для красоты дан.. Лечит трупы именно VileChase, а только потом прыгает в стейт хилл показать как он красиво поднял трупы =(


Я в курсе

alekv:
1 - если сделать твоим способом, думаю арч будет пытаться ресать любой труп


1) внимательно читаешь вот это https://zdoom.org/wiki/Actor_states#CanRaise
2) ответь мне на следующий вопрос: есть оригинальный арч (его не переопределяли в декорейте) и три трупа в одном и том же месте:

Вася:

Скрытый текст:


XDeath:
POSS M 5
POSS N 5 A_XScream
POSS O 5 A_NoBlocking
POSS PQRST 5
POSS U -1
Stop



Петя:

Скрытый текст:


XDeath:
POSS M 5
POSS N 5 A_XScream
POSS O 5 A_NoBlocking
POSS PQRST 5
Goto XDeath2
XDeath2:
POSS U 1
Loop



И Сергей:

Скрытый текст:


XDeath:
POSS M 5
POSS N 5 A_XScream
POSS O 5 A_NoBlocking
POSS PQRST 5
Goto XDeath2
XDeath2:
POSS U 1 CanRaise
Loop



Исходя из этого, кого из них захочет воскрешать арч (напомню, что арч оригинальный, его не изменяли в декорейте) - Васю, Петю или Сергея?

Я вот начал пытаться этот метод реализовать, и проблема появилась в том, что когда я убиваю зомбимена в первый раз, арч его воскрешает, а когда второй раз, арч уже игнорит, и как потом выяснилось, проблема в том, что воскрешенный (и убитый заново) зомбимен почему-то не хочет принимать инвентори от арча. Вот реально не пойму, какого черта у радиусгива нет флага RGF_ALL который тупо даст предмет всем объектам в радиусе, чтобы не париться, к какому классу относится воскресший от CanRaise и умерший заново зомбимен
3 1
alekv
- Colonel -
Next rank: = Colonel = after 272 pointsМодератор форума
4168

Doom Rate: 1.87

Posts quality: +949
Ссылка на пост №2618 Отправлено: 16.09.17 11:03:37
theleo_ua:
1) внимательно читаешь вот это https://zdoom.org/wiki/Actor_states#CanRaise

я про это не знал вообще, так-то меняет дело конечно.
путал с https://zdoom.org/wiki/CanRaiseActor

theleo_ua:
Вот реально не пойму, какого черта у радиусгива нет флага RGF_ALL

RGF_CORPSES | RGF_MONSTERS | итд
1 3 1
theleo_ua
= Colonel =
Next rank: - Commissar - after 96 points
4794

Doom Rate: 1.8

Posts quality: +1032
Ссылка на пост №2619 Отправлено: 16.09.17 11:27:51
theleo_ua:
Я вот начал пытаться этот метод реализовать, и проблема появилась в том, что когда я убиваю зомбимена в первый раз, арч его воскрешает, а когда второй раз, арч уже игнорит, и как потом выяснилось, проблема в том, что воскрешенный (и убитый заново) зомбимен почему-то не хочет принимать инвентори от арча. Вот реально не пойму, какого черта у радиусгива нет флага RGF_ALL который тупо даст предмет всем объектам в радиусе, чтобы не париться, к какому классу относится воскресший от CanRaise и умерший заново зомбимен


alekv:
RGF_CORPSES | RGF_MONSTERS | итд


Адская жесть, проблема оказалась в том, что для того, чтобы твой переопределенный стейт SEE работал корректно (например если в Raise было написано Goto See чтобы оно прыгало именно на твой переопределенный See), то надо весь декорейт арча/зомбимена копипастить в твоего переопределенного (знающие люди - подскажите, как это лечить без копипасты тех стейтов, которые не переопределялись)

Короче, я сделал и все пашет:

Видео демонстрация:



Декорейт:

Скрытый текст:


ACTOR NORMAL_Vile : Inventory
{
Inventory.MaxAmount 1

States
{
Spawn:
TNT1 A -1
Stop
}
}

ACTOR BLACK_Vile : Inventory
{
Inventory.MaxAmount 1

States
{
Spawn:
TNT1 A -1
Stop
}
}

//---------------------------------------------------------------------------------------------
//ARCH VILE NORMAL

ACTOR Archvile_NORMAL : Archvile replaces Archvile
{

States
{

Spawn:
VILE AB 10 A_Look
Loop

See:

VILE A 1 A_VileChase
TNT1 A 0 A_RadiusGive("NORMAL_Vile", 130, RGF_CORPSES | RGF_KILLED | RGF_NOSIGHT, 1)
VILE A 1
TNT1 A 0 A_RadiusGive("NORMAL_Vile", 130, RGF_CORPSES | RGF_KILLED | RGF_NOSIGHT, 1)
VILE A 1 A_VileChase
TNT1 A 0 A_RadiusGive("NORMAL_Vile", 130, RGF_CORPSES | RGF_KILLED | RGF_NOSIGHT, 1)
VILE A 1
TNT1 A 0 A_RadiusGive("NORMAL_Vile", 130, RGF_CORPSES | RGF_KILLED | RGF_NOSIGHT, 1)

VILE B 1 A_VileChase
TNT1 A 0 A_RadiusGive("NORMAL_Vile", 130, RGF_CORPSES | RGF_KILLED | RGF_NOSIGHT, 1)
VILE B 1
TNT1 A 0 A_RadiusGive("NORMAL_Vile", 130, RGF_CORPSES | RGF_KILLED | RGF_NOSIGHT, 1)
VILE B 1 A_VileChase
TNT1 A 0 A_RadiusGive("NORMAL_Vile", 130, RGF_CORPSES | RGF_KILLED | RGF_NOSIGHT, 1)
VILE B 1
TNT1 A 0 A_RadiusGive("NORMAL_Vile", 130, RGF_CORPSES | RGF_KILLED | RGF_NOSIGHT, 1)

VILE C 1 A_VileChase
TNT1 A 0 A_RadiusGive("NORMAL_Vile", 130, RGF_CORPSES | RGF_KILLED | RGF_NOSIGHT, 1)
VILE C 1
TNT1 A 0 A_RadiusGive("NORMAL_Vile", 130, RGF_CORPSES | RGF_KILLED | RGF_NOSIGHT, 1)
VILE C 1 A_VileChase
TNT1 A 0 A_RadiusGive("NORMAL_Vile", 130, RGF_CORPSES | RGF_KILLED | RGF_NOSIGHT, 1)
VILE C 1
TNT1 A 0 A_RadiusGive("NORMAL_Vile", 130, RGF_CORPSES | RGF_KILLED | RGF_NOSIGHT, 1)

VILE D 1 A_VileChase
TNT1 A 0 A_RadiusGive("NORMAL_Vile", 130, RGF_CORPSES | RGF_KILLED | RGF_NOSIGHT, 1)
VILE D 1
TNT1 A 0 A_RadiusGive("NORMAL_Vile", 130, RGF_CORPSES | RGF_KILLED | RGF_NOSIGHT, 1)
VILE D 1 A_VileChase
TNT1 A 0 A_RadiusGive("NORMAL_Vile", 130, RGF_CORPSES | RGF_KILLED | RGF_NOSIGHT, 1)
VILE D 1
TNT1 A 0 A_RadiusGive("NORMAL_Vile", 130, RGF_CORPSES | RGF_KILLED | RGF_NOSIGHT, 1)

VILE E 1 A_VileChase
TNT1 A 0 A_RadiusGive("NORMAL_Vile", 130, RGF_CORPSES | RGF_KILLED | RGF_NOSIGHT, 1)
VILE E 1
TNT1 A 0 A_RadiusGive("NORMAL_Vile", 130, RGF_CORPSES | RGF_KILLED | RGF_NOSIGHT, 1)
VILE E 1 A_VileChase
TNT1 A 0 A_RadiusGive("NORMAL_Vile", 130, RGF_CORPSES | RGF_KILLED | RGF_NOSIGHT, 1)
VILE E 1
TNT1 A 0 A_RadiusGive("NORMAL_Vile", 130, RGF_CORPSES | RGF_KILLED | RGF_NOSIGHT, 1)

VILE F 1 A_VileChase
TNT1 A 0 A_RadiusGive("NORMAL_Vile", 130, RGF_CORPSES | RGF_KILLED | RGF_NOSIGHT, 1)
VILE F 1
TNT1 A 0 A_RadiusGive("NORMAL_Vile", 130, RGF_CORPSES | RGF_KILLED | RGF_NOSIGHT, 1)
VILE F 1 A_VileChase
TNT1 A 0 A_RadiusGive("NORMAL_Vile", 130, RGF_CORPSES | RGF_KILLED | RGF_NOSIGHT, 1)
VILE F 1
TNT1 A 0 A_RadiusGive("NORMAL_Vile", 130, RGF_CORPSES | RGF_KILLED | RGF_NOSIGHT, 1)

Loop

Missile:
VILE G 0 Bright A_VileStart
VILE G 10 Bright A_FaceTarget
VILE H 8 Bright A_VileTarget
VILE IJKLMN 8 Bright A_FaceTarget
VILE O 8 Bright A_VileAttack
VILE P 20 Bright
Goto See
Heal:
VILE "[]" 10 Bright
Goto See
Pain:
VILE Q 5
VILE Q 5 A_Pain
Goto See
Death:
VILE Q 7
VILE R 7 A_Scream
VILE S 7 A_NoBlocking
VILE TUVWXY 7
VILE Z -1
Stop

}//States

}//ACTOR Archvile_NORMAL : Archvile replaces Archvile

//---------------------------------------------------------------------------------------------
//ARCH VILE BLACK

ACTOR Archvile_BLACK : Archvile
{

RenderStyle Stencil
StencilColor Black


States
{

Spawn:
VILE AB 10 A_Look
Loop

See:

VILE A 1 A_VileChase
TNT1 A 0 A_RadiusGive("BLACK_Vile", 130, RGF_CORPSES | RGF_KILLED | RGF_NOSIGHT, 1)
VILE A 1
TNT1 A 0 A_RadiusGive("BLACK_Vile", 130, RGF_CORPSES | RGF_KILLED | RGF_NOSIGHT, 1)
VILE A 1 A_VileChase
TNT1 A 0 A_RadiusGive("BLACK_Vile", 130, RGF_CORPSES | RGF_KILLED | RGF_NOSIGHT, 1)
VILE A 1
TNT1 A 0 A_RadiusGive("BLACK_Vile", 130, RGF_CORPSES | RGF_KILLED | RGF_NOSIGHT, 1)

VILE B 1 A_VileChase
TNT1 A 0 A_RadiusGive("BLACK_Vile", 130, RGF_CORPSES | RGF_KILLED | RGF_NOSIGHT, 1)
VILE B 1
TNT1 A 0 A_RadiusGive("BLACK_Vile", 130, RGF_CORPSES | RGF_KILLED | RGF_NOSIGHT, 1)
VILE B 1 A_VileChase
TNT1 A 0 A_RadiusGive("BLACK_Vile", 130, RGF_CORPSES | RGF_KILLED | RGF_NOSIGHT, 1)
VILE B 1
TNT1 A 0 A_RadiusGive("BLACK_Vile", 130, RGF_CORPSES | RGF_KILLED | RGF_NOSIGHT, 1)

VILE C 1 A_VileChase
TNT1 A 0 A_RadiusGive("BLACK_Vile", 130, RGF_CORPSES | RGF_KILLED | RGF_NOSIGHT, 1)
VILE C 1
TNT1 A 0 A_RadiusGive("BLACK_Vile", 130, RGF_CORPSES | RGF_KILLED | RGF_NOSIGHT, 1)
VILE C 1 A_VileChase
TNT1 A 0 A_RadiusGive("BLACK_Vile", 130, RGF_CORPSES | RGF_KILLED | RGF_NOSIGHT, 1)
VILE C 1
TNT1 A 0 A_RadiusGive("BLACK_Vile", 130, RGF_CORPSES | RGF_KILLED | RGF_NOSIGHT, 1)

VILE D 1 A_VileChase
TNT1 A 0 A_RadiusGive("BLACK_Vile", 130, RGF_CORPSES | RGF_KILLED | RGF_NOSIGHT, 1)
VILE D 1
TNT1 A 0 A_RadiusGive("BLACK_Vile", 130, RGF_CORPSES | RGF_KILLED | RGF_NOSIGHT, 1)
VILE D 1 A_VileChase
TNT1 A 0 A_RadiusGive("BLACK_Vile", 130, RGF_CORPSES | RGF_KILLED | RGF_NOSIGHT, 1)
VILE D 1
TNT1 A 0 A_RadiusGive("BLACK_Vile", 130, RGF_CORPSES | RGF_KILLED | RGF_NOSIGHT, 1)

VILE E 1 A_VileChase
TNT1 A 0 A_RadiusGive("BLACK_Vile", 130, RGF_CORPSES | RGF_KILLED | RGF_NOSIGHT, 1)
VILE E 1
TNT1 A 0 A_RadiusGive("BLACK_Vile", 130, RGF_CORPSES | RGF_KILLED | RGF_NOSIGHT, 1)
VILE E 1 A_VileChase
TNT1 A 0 A_RadiusGive("BLACK_Vile", 130, RGF_CORPSES | RGF_KILLED | RGF_NOSIGHT, 1)
VILE E 1
TNT1 A 0 A_RadiusGive("BLACK_Vile", 130, RGF_CORPSES | RGF_KILLED | RGF_NOSIGHT, 1)

VILE F 1 A_VileChase
TNT1 A 0 A_RadiusGive("BLACK_Vile", 130, RGF_CORPSES | RGF_KILLED | RGF_NOSIGHT, 1)
VILE F 1
TNT1 A 0 A_RadiusGive("BLACK_Vile", 130, RGF_CORPSES | RGF_KILLED | RGF_NOSIGHT, 1)
VILE F 1 A_VileChase
TNT1 A 0 A_RadiusGive("BLACK_Vile", 130, RGF_CORPSES | RGF_KILLED | RGF_NOSIGHT, 1)
VILE F 1
TNT1 A 0 A_RadiusGive("BLACK_Vile", 130, RGF_CORPSES | RGF_KILLED | RGF_NOSIGHT, 1)

Loop

Missile:
VILE G 0 Bright A_VileStart
VILE G 10 Bright A_FaceTarget
VILE H 8 Bright A_VileTarget
VILE IJKLMN 8 Bright A_FaceTarget
VILE O 8 Bright A_VileAttack
VILE P 20 Bright
Goto See
Heal:
VILE "[]" 10 Bright
Goto See
Pain:
VILE Q 5
VILE Q 5 A_Pain
Goto See
Death:
VILE Q 7
VILE R 7 A_Scream
VILE S 7 A_NoBlocking
VILE TUVWXY 7
VILE Z -1
Stop

}//States


}//ACTOR Archvile_BLACK : Archvile

//---------------------------------------------------------------------------------------------
//ZOMBIEMAN NORMAL

ACTOR ZombieMan_NORMAL : ZombieMan replaces ZombieMan
{

States
{

Spawn:
POSS AB 10 A_Look
Loop
See:
POSS AABBCCDD 4 A_Chase
Loop
Missile:
POSS E 10 A_FaceTarget
POSS F 8 A_PosAttack
POSS E 8
Goto See
Pain:
POSS G 3
POSS G 3 A_Pain
Goto See

Death:
POSS H 5
POSS I 5 A_Scream
POSS J 5 A_NoBlocking
POSS K 5
Goto DeathCheck
DeathCheck:
TNT1 A 0 A_JumpIfInventory("BLACK_Vile", 1, "DeathWithoutRaise")
TNT1 A 0 A_JumpIfInventory("NORMAL_Vile", 1, "DeathWithRaise")
POSS L 1
Loop
DeathWithRaise:
TNT1 A 0 A_TakeInventory("NORMAL_Vile", 1)
TNT1 A 0 A_TakeInventory("BLACK_Vile", 1)
POSS L 1 CanRaise
Goto DeathCheck
DeathWithoutRaise:
TNT1 A 0 A_TakeInventory("NORMAL_Vile", 1)
TNT1 A 0 A_TakeInventory("BLACK_Vile", 1)
POSS L 1
Goto DeathCheck

XDeath:
POSS M 5
POSS N 5 A_XScream
POSS O 5 A_NoBlocking
POSS PQRST 5
Goto XDeathLoop
XDeathLoop:
POSS U 1
Loop

Raise:
POSS K 5
POSS JIH 5
Goto See

}//States

}//ACTOR ZombieMan_NORMAL : ZombieMan replaces ZombieMan

//---------------------------------------------------------------------------------------------
//ZOMBIEMAN BLACK

ACTOR ZombieMan_BLACK : ZombieMan
{

RenderStyle Stencil
StencilColor Black

States
{

Spawn:
POSS AB 10 A_Look
Loop
See:
POSS AABBCCDD 4 A_Chase
Loop
Missile:
POSS E 10 A_FaceTarget
POSS F 8 A_PosAttack
POSS E 8
Goto See
Pain:
POSS G 3
POSS G 3 A_Pain
Goto See

Death:
POSS H 5
POSS I 5 A_Scream
POSS J 5 A_NoBlocking
POSS K 5
Goto DeathCheck
DeathCheck:
TNT1 A 0 A_JumpIfInventory("NORMAL_Vile", 1, "DeathWithoutRaise")
TNT1 A 0 A_JumpIfInventory("BLACK_Vile", 1, "DeathWithRaise")
POSS L 1
Loop
DeathWithRaise:
TNT1 A 0 A_TakeInventory("NORMAL_Vile", 1)
TNT1 A 0 A_TakeInventory("BLACK_Vile", 1)
POSS L 1 CanRaise
Goto DeathCheck
DeathWithoutRaise:
TNT1 A 0 A_TakeInventory("NORMAL_Vile", 1)
TNT1 A 0 A_TakeInventory("BLACK_Vile", 1)
POSS L 1
Goto DeathCheck

XDeath:
POSS M 5
POSS N 5 A_XScream
POSS O 5 A_NoBlocking
POSS PQRST 5
Goto XDeathLoop
XDeathLoop:
POSS U 1
Loop

Raise:
POSS K 5
POSS JIH 5
Goto See

}//States

}//ACTOR ZombieMan_BLACK : ZombieMan

//---------------------------------------------------------------------------------------------



Рабочий PK3 с декорейтом: https://drive.google.com/file/d/0BygbyP4_qEiTeEpiQllWbURQb3M/view?usp=sharing&pageId=108477585392740583247

Добавлено спустя 23 минуты 13 секунд:

SSV_Victoryan:
но жарит огнём новым через любое препятствие, попробовал ноклипом спрятаться за картой так он и туда дотянулся.


Попробуй вместо
Actor NmArchvile 7417
писать так:
Actor NmArchvile : Archvile 7417
И так для всех твоих арчвайлов (т.е. ты их будешь не с нуля создавать, а наследовать с существующих)

номера (которые 7417) естественно должны быть разными для каждого типа арчвайла

Рейтинг сообщения: +1, отметил(и): SSV_Victoryan
3 1
SSV_Victoryan
UAC Sergeant Major
Next rank: Chief Petty Officer after 39 points
811

Doom Rate: 2.17

Posts quality: +278
Ссылка на пост №2620 Отправлено: 16.09.17 12:29:46
theleo_ua:
Попробуй вместо
Actor NmArchvile 7417
писать так:
Actor NmArchvile : Archvile 7417
И так для всех твоих арчвайлов (т.е. ты их будешь не с нуля создавать, а наследовать с существующих)

номера (которые 7417) естественно должны быть разными для каждого типа арчвайла


Проблема в том, что монстры созданные через копирование : кода от других монстров не сражаются между собой и не могут друг друга убить если их натравить друг на друга(снарядами не могут, но огнестрелом могут убить). Сей час попробую твой вариант сделать, но без использования : копирования настроек существующих монстров. Мне нужно чтобы кошмарные дрались с простыми монстрами, если те заденут других и наоборот.

Напишу что выйдет в итоге, думаю проблема с новым огнём кошмарного арча останется не разрешённой.
2
Страница 131 из 200Перейти наверх Пред.  1, 2, 3 ... 130, 131, 132 ... 198, 199, 200  След.
   Список разделов - Флуд и устаревшие темы - Тема для новичков. Вопросы по маппингу/моддингу - любые!