Welcome to U.A.C. [O.S.A.]
login / register 
Status: Guest
Архивы форума | iddqd.ru
Wolf 3D
ПравилаПравила ПоискПоиск
18+
(G)ZDoom - ACS - DECORATE З-вопросы Пред.  1, 2, 3 ... 9, 10, 11 ... 29, 30, 31  След.
   Список разделов - Флуд и устаревшие темы - (G)ZDoom - ACS - DECORATE З-вопросыОтветить
АвторСообщение
Reiko
- Master Corporal -
Next rank: = Master Corporal = after 3 points
237

Doom Rate: 1.73

Ссылка на пост №181 Отправлено: 11.01.07 14:34:57

какие-то превращения в цыплят и.т.п.
А можно ли такую фичу сделать в doom'e?[/code]
2
3EPHOEd
- Warrant Officer -
Next rank: = Warrant Officer = after 29 points
1111

Doom Rate: 2.34

Posts quality: +7
Ссылка на пост №182 Отправлено: 11.01.07 14:43:54
Каком Doom-е?
В портах, да типа (G)ZDOOM и прочих тянущих за собой код Еретика.

В обычном ДОС Думе только если сразу цыпленок на всю игру, можно высоту Игрока DEHACKED-ом изменить с 56 к примеру до 32 он будет низенький и видеть и пролезать в дыры такой высоты. Только пульки неестественно высоко вылетать будут из него, но при сильном желании можно думаю доломать.
1 2 2
3EPHOEd
- Warrant Officer -
Next rank: = Warrant Officer = after 29 points
1111

Doom Rate: 2.34

Posts quality: +7
Ссылка на пост №183 Отправлено: 11.01.07 16:54:57
Shinnok

Так коды можно откуда-то достать?

www.gzdoom.org/wiki/

Это не "коды" это скрипты, или скриптовая система, ACS-DECORATE, а "Коды Еретика" это если исходный код игры Еретик вкомпилен в порт Дума значит, вслучаи (G)ZDOOM он там есть, тогда тебе надо копать ACS-DECORATE скриптовую систему чтоб разобраться.
Хотя рановато тебе наверное туда лесть, классику ака "Нормал Маппинг" рекомендую для начала освоить в стандарте DOOM 1.9.
От простого к сложному так сказать.
1 2 2
3EPHOEd
- Warrant Officer -
Next rank: = Warrant Officer = after 29 points
1111

Doom Rate: 2.34

Posts quality: +7
Ссылка на пост №184 Отправлено: 11.01.07 18:04:14
Shinnok
Перво-наперво, открой редактором MAP01 из Дуи2 и погляди как там чего устроено, добавь от себя, побегай.
Далее.
Сделай свою первую карту в обычном Дум2, разберись что к чему, как двери делать, как выключатели с Тагами как в старом добром чтоб, секреты, таг 666, никому не показывай.

Затем попробуй сделать тоже самое в формате "Doom in Xexen", отметь разницу, затем, глядя в Wiki ZDOOM-а и в прилагающиеся WADники образцы попробуй скриптом ACS сделать кнопку открывающую дверь, затем еще лифт какой, затем, копаясь в готовых картах, гляди как там сделано и пробуй присобачивать к своей (получается уже второй) карте и тоже никому ее не показывай, если только чтоб поправили чего.

По ходу заметишь различные моменты, руку набьешь на всем этом деле и процесс пойдет, Читая Wiki и рассматривая различные поделки увидишь что и как народ делал, узнаешь про спец файлы Lump-ы, про Lump скриптовый файл DECRATE, а там уже и до Кур из Еретика недалеко.

-=END=-

Вот таким макаром лично я и начал делать всякое в GZDOOM в мае того года, само собой с обычным DOOM-ом 2 я к тому времени набаловался по самое не могу.
1 2 2
nprotect
- 2nd Lieutenant -
Next rank: = 2nd Lieutenant = after 97 points
1343

Doom Rate: 2.45

Ссылка на пост №185 Отправлено: 11.01.07 18:38:27

www.gzdoom.org/wiki/


3EPHOEd, а может zdoom.org? :)
1 2 1
Const]ASTS[
= Sergeant Major =
Next rank: UAC Sergeant Major after 79 points
601

Doom Rate: 6.91

Posts quality: +2
Ссылка на пост №186 Отправлено: 18.01.07 18:27:00
В исходнике довольно близко к синтаксису DECORATE, где-то на forum.zdoom.org даже конвертер валялся.

Для начала нам надо найти код монстра в исходнике. Можно воспользоваться поиском APig (в коде к имени класса в начале всегда добавляется A). Но можно попробовать и другой способ, монстр из Hexen, поэтому смотрим содержимое g_hexen. В данном случае повезло и есть файл a_pig.cpp, но бывает что несколько подобных по назначению классов записаны в файл с более общим названием (например, некоторые предметы инвентаря и оружие). Дальше все равно придется искать APig, но текстовым поиском внутри файла может воспользоваться каждый.
class APig : public AMorphedMonster
{
	DECLARE_ACTOR (APig, AMorphedMonster)
};

FState APig::States[] =
{
#define S_PIG_LOOK1 0
	S_NORMAL (PIGY, 'B',   10, A_Look				    , &States[S_PIG_LOOK1]),

#define S_PIG_WALK1 (S_PIG_LOOK1+1)
	S_NORMAL (PIGY, 'A',	3, A_Chase				    , &States[S_PIG_WALK1+1]),
	S_NORMAL (PIGY, 'B',	3, A_Chase				    , &States[S_PIG_WALK1+2]),
	S_NORMAL (PIGY, 'C',	3, A_Chase				    , &States[S_PIG_WALK1+3]),
	S_NORMAL (PIGY, 'D',	3, A_Chase				    , &States[S_PIG_WALK1]),

#define S_PIG_PAIN (S_PIG_WALK1+4)
	S_NORMAL (PIGY, 'D',	4, A_PigPain			    , &States[S_PIG_WALK1]),

#define S_PIG_ATK1 (S_PIG_PAIN+1)
	S_NORMAL (PIGY, 'A',	5, A_FaceTarget			    , &States[S_PIG_ATK1+1]),
	S_NORMAL (PIGY, 'A',   10, A_PigAttack			    , &States[S_PIG_WALK1]),

#define S_PIG_DIE1 (S_PIG_ATK1+2)
	S_NORMAL (PIGY, 'E',	4, A_Scream				    , &States[S_PIG_DIE1+1]),
	S_NORMAL (PIGY, 'F',	3, A_NoBlocking			    , &States[S_PIG_DIE1+2]),
	S_NORMAL (PIGY, 'G',	4, A_QueueCorpse		    , &States[S_PIG_DIE1+3]),
	S_NORMAL (PIGY, 'H',	3, NULL					    , &States[S_PIG_DIE1+4]),
	S_NORMAL (PIGY, 'I',	4, NULL					    , &States[S_PIG_DIE1+5]),
	S_NORMAL (PIGY, 'J',	4, NULL					    , &States[S_PIG_DIE1+6]),
	S_NORMAL (PIGY, 'K',	4, NULL					    , &States[S_PIG_DIE1+7]),
	S_NORMAL (PIGY, 'L',   -1, NULL					    , NULL),

#define S_PIG_ICE (S_PIG_DIE1+8)
	S_NORMAL (PIGY, 'M',	5, A_FreezeDeath		    , &States[S_PIG_ICE+1]),
	S_NORMAL (PIGY, 'M',	1, A_FreezeDeathChunks	    , &States[S_PIG_ICE+1]),

};

IMPLEMENT_ACTOR (APig, Hexen, -1, 0)
	PROP_SpawnHealth (25)
	PROP_PainChance (128)
	PROP_SpeedFixed (10)
	PROP_RadiusFixed (12)
	PROP_HeightFixed (22)
	PROP_Mass (60)
	PROP_Flags (MF_SOLID|MF_SHOOTABLE)
	PROP_Flags2 (MF2_WINDTHRUST|MF2_FLOORCLIP|MF2_PASSMOBJ|MF2_TELESTOMP|MF2_PUSHWALL)
	PROP_Flags3 (MF3_DONTMORPH|MF3_ISMONSTER)

	PROP_SpawnState (S_PIG_LOOK1)
	PROP_SeeState (S_PIG_WALK1)
	PROP_PainState (S_PIG_PAIN)
	PROP_MeleeState (S_PIG_ATK1)
	PROP_DeathState (S_PIG_DIE1)
	PROP_IDeathState (S_PIG_ICE)

	PROP_SeeSound ("PigActive1")
	PROP_PainSound ("PigPain")
	PROP_DeathSound ("PigDeath")
	PROP_ActiveSound ("PigActive1")
END_DEFAULTS

Собственно приступаем к переводу:
//APig наследуется от AMorphedMonster, что и пишем (префикс A у классов используется только внутри движка)
//DoomEdNum здесь не используется, если бы он был, он бы был записан в строке IMPLEMENT_ACTOR, кажется третий параметр.
actor Pig : MorphedMonster {
//здесь просто переписываем внутренности IMPLEMENT_ACTOR, убирая PROP_, ну и некоторые дополнительные небольшие правки. В крайнем случае можно сверяться с викой
	Health 25
	PainChance 128
	Speed 10
	Radius 12
	Height 22
	Mass 60
//Анимации (они же States) запишем позже. Я предпочитаю записывать их в самом конце. Точно так же пока пропущу флаги и допишу остальные свойства
	SeeSound "PigActive1"
	PainSound "PigPain"
	DeathSound "PigDeath"
	ActiveSound "PigActive1"
//Теперь флаги. Записываем содежимое PROP_Flags, убирая само PROP_Flags, MF#_ и вертикальные черты (на самом деле это побитовый ИЛИ). При сомнениях лучше свериться со справочником, некоторые флаги в исходнике названы по-другому
	+SOLID
	+SHOOTABLE
	+WINDTHRUST
	+FLOORCLIP
	+CANPASS	//в исходнике называется PASSMOBJ
	+TELESTOMP
	+CANPUSHWALLS	//было PUSHWALL
	+DONTMORPH
	+ISMONSTER
//Теперь самая "веселая" часть, анимации. Как видим из записанных свойств, названия последовательностей довольно удобные и с этой частью кода сверяться уже не понадобится. Переходим к части FState
States {
//#define здесь заменяют метки. S_NORMAL/S_BRIGHT соответственно определяют является ли кадр BRIGHT. Все остальное в принципе достаточно соответствует DECORATE с одним исключением, последний параметр кадра - следующий кадр.
Spawn:
	PIGY B 10 A_Look
	Loop	//следующий кадр - начало той же анимации, поэтому пишем просто цикл
See:
	PIGY ABCD 3 A_Chase	//здесь кадры отличаются только субспрайтом, поэтому используем короткую запись. К тому же вручную рассчитывать сдвиги Goto нам точно не понадобится (даже если бы пришлось использовать Goto со смещением)
	Loop	//та же причина
Pain:
	PIGY D 4 A_PigPain
	Goto See	//переход в другую анимацию, то есть Goto
Melee:	//все-таки пришлось возвращаться к IMPLEMENT_ACTOR, ATK могло означать как ближнюю, так и дальнюю атаку
	PIGY A 5 A_FaceTarget
	PIGY A 10 A_PigAttack
	Goto See	//то же
Death:
	PIGY E 4 A_Scream
	PIGY F 3 A_NoBlocking
	PIGY G 4 A_QueueCorpse
	PIGY H 3
	PIGY IJK 4
	PIGY L -1	//на самом деле это бесконечное ожидание, но все-таки добавим нормальное завершение анимации
	Stop	//если следующий кадр NULL, значит мы в конце анимации
Ice:
	PIGY M 5 A_FreezeDeath
	PIGY M 1 A_FreezeDeathChunks
	Wait	//не спешим использовать Goto ) . В DECORATE есть более наглядные команды. Wait = повторять последний кадр
}
}

Я не гарантирую правильность этого кода, я пытался именно продемонстрировать принцип перевода. К примеру Pig уже определен в ZDoom, поэтому перед использованием этого кода в ваде точно придется переименовывать класс. Кроме того, для практического применения возможно вообще хватит "actor DoomPig : Pig {}".
1 1
Shadowman
UAC General
Next rank: Unavailable after 0 points
8598

Doom Rate: 2.07

Posts quality: +2148
Ссылка на пост №187 Отправлено: 18.01.07 18:38:08
Costja
Здорово ты все рассписал!
А прочих еретиковско-гексеновских монстров случаем нет? Особо интересует вариант d'sparil-а: Как происходит переход от наездника к обычному магу (через Спаун нового объекта?), и главное - его хитрая телепортация на определенные точки уровня :)
Ересиархи и маулотавры были в AEOD вроде. Так, кто еще оригинальный есть? Зеленовая тварь из Гексена тоже интересно, как у нее устроены статы движения, когда видно частично хвост, но стрелять по нему все-равно нельзя. Это не похоже на A_SetInvulnerable, там немного другой визуальный эффект получается.
1 7 2
Const]ASTS[
= Sergeant Major =
Next rank: UAC Sergeant Major after 79 points
601

Doom Rate: 6.91

Posts quality: +2
Ссылка на пост №188 Отправлено: 18.01.07 18:49:38
Shadowman, вообще-то это все написано было прямо сейчас без использования каких-либо предварительных заготовок.
Уже переведнные монстры есть на ZDoomWiki:Classes
1 1
Reiko
- Master Corporal -
Next rank: = Master Corporal = after 3 points
237

Doom Rate: 1.73

Ссылка на пост №189 Отправлено: 18.01.07 18:56:33
Costja
А для того чтобы превращение было в doom'e нужужен код артифакта и спрайты?
2
Const]ASTS[
= Sergeant Major =
Next rank: UAC Sergeant Major after 79 points
601

Doom Rate: 6.91

Posts quality: +2
Ссылка на пост №190 Отправлено: 18.01.07 19:07:19
Ну естественно нужно реализовать что-то, что будет морфить. Но если ты собираешься морфить и игрока, то понадобится не только код свиньи-монстра, нужен и код класса игрока (то есть класс, наследующийся от PlayerPawn). Инфа о создании классов игроков - http://www.zdoom.org/wiki/index.php?title=Creating_new_player_classes
1 1
Reiko
- Master Corporal -
Next rank: = Master Corporal = after 3 points
237

Doom Rate: 1.73

Ссылка на пост №191 Отправлено: 18.01.07 19:22:09
Costja:
код класса игрока (то есть класс, наследующийся от PlayerPawn).

А как новый класс активировать? (как в hexen?)
2
Shadowman
UAC General
Next rank: Unavailable after 0 points
8598

Doom Rate: 2.07

Posts quality: +2148
Ссылка на пост №192 Отправлено: 18.01.07 20:03:23
Costja
В ВИКИ есть не все - единицы там, и самых интересных как-раз нету :(
Из Гексена только ересиарх - остальных самим приходится при случае писать наугад.
1 7 2
Const]ASTS[
= Sergeant Major =
Next rank: UAC Sergeant Major after 79 points
601

Doom Rate: 6.91

Posts quality: +2
Ссылка на пост №193 Отправлено: 18.01.07 20:26:55
Shinnok, http://www.zdoom.org/wiki/index.php?title=Classes:MorphProjectile
Хм, только у меня есть подозрение, что хватит добавления нужных спрайтов + скриптов чтобы дать игроку соответствующее оружие.

Shadowman, если принцип описанный выше понятен, то просто посмотреть внутренности монстров в исходнике не должно быть проблемой. Но, насколько помню, не все пойнтеры используемые в исходнике доступны из DECORATE.

А для использования монстров в большинстве случаев имхо подойдет просто наследование.
1 1
Reiko
- Master Corporal -
Next rank: = Master Corporal = after 3 points
237

Doom Rate: 1.73

Ссылка на пост №194 Отправлено: 18.01.07 20:34:58
CostjaКласс я активировал написав в keyconf:

clearplayerclasses
addplayerclass Durak

А в декорейте следующее

actor Durak : DoomPlayer
{
player.maxhealth 200
player.displayname "Kozel"
}

А как ему свои спрайты поставить?
2
Const]ASTS[
= Sergeant Major =
Next rank: UAC Sergeant Major after 79 points
601

Doom Rate: 6.91

Posts quality: +2
Ссылка на пост №195 Отправлено: 18.01.07 20:37:59
Shinnok, попробуй обычным способом через States
1 1
Reiko
- Master Corporal -
Next rank: = Master Corporal = after 3 points
237

Doom Rate: 1.73

Ссылка на пост №196 Отправлено: 18.01.07 20:54:18
Costja

states
{
Spawn:
WZRD A 10
see:
WZRD ABCD 5
melee:
WZRD A 4
goto see
missile:
WZRD EF 4
goto see
Pain:
WZRD G 3
goto see
Death:
WZRD HIJKLMN 6
stop
xDeath:
WZRD OPQRSTUVW 6
}
Сделал под мага, но после смерти выкидывает из игры
2
Const]ASTS[
= Sergeant Major =
Next rank: UAC Sergeant Major after 79 points
601

Doom Rate: 6.91

Posts quality: +2
Ссылка на пост №197 Отправлено: 18.01.07 21:11:13
Ну так пойнтеры DoomPlayerа то оставь
#define S_PLAY_PAIN (S_PLAY_ATK+2)
//...
	S_NORMAL (PLAY, 'G',	4, A_Pain						, &States[S_PLAY]),

#define S_PLAY_DIE (S_PLAY_PAIN+2)
	S_NORMAL (PLAY, 'H',   10, A_DoomSkinCheck1				, &States[S_PLAY_DIE+1]),
	S_NORMAL (PLAY, 'I',   10, A_PlayerScream				, &States[S_PLAY_DIE+2]),
	S_NORMAL (PLAY, 'J',   10, A_NoBlocking					, &States[S_PLAY_DIE+3]),
//...

#define S_PLAY_XDIE (S_PLAY_DIE+7)
	S_NORMAL (PLAY, 'O',	5, A_DoomSkinCheck2				, &States[S_PLAY_XDIE+1]),
	S_NORMAL (PLAY, 'P',	5, A_XScream					, &States[S_PLAY_XDIE+2]),
	S_NORMAL (PLAY, 'Q',	5, A_NoBlocking					, &States[S_PLAY_XDIE+3]),
//...

И не забывай вконце анимаций ставить goto/loop/stop/..
1 1
Reiko
- Master Corporal -
Next rank: = Master Corporal = after 3 points
237

Doom Rate: 1.73

Ссылка на пост №198 Отправлено: 18.01.07 21:21:13
Costjaсорри, а где можно скачать исходники?
2
Const]ASTS[
= Sergeant Major =
Next rank: UAC Sergeant Major after 79 points
601

Doom Rate: 6.91

Posts quality: +2
Ссылка на пост №199 Отправлено: 18.01.07 21:26:09
http://zdoom.org/files/zdoom-2.1.7-src.7z
http://grafzahl.drdteam.org/gzdoom/GZDoom-Source-1-0-22.zip
1 1
Reiko
- Master Corporal -
Next rank: = Master Corporal = after 3 points
237

Doom Rate: 1.73

Ссылка на пост №200 Отправлено: 20.01.07 16:34:56
Хелп! я сделал нового персонажа в doom - минотавра, но у стандартного и моего перса одиковые оружия. Как сделать чтобы у своего персонажа было свое оружие?
2
Страница 10 из 31Перейти наверх Пред.  1, 2, 3 ... 9, 10, 11 ... 29, 30, 31  След.
   Список разделов - Флуд и устаревшие темы - (G)ZDoom - ACS - DECORATE З-вопросы