Автор | Сообщение |
dukenator UAC Sergeant Major
 | 726 |
 Doom Rate: 2.68
|
Отправлено: 15.03.08 05:20:31 | | | cybermind
MagewandMissile - это актер из игры Хексен, который уже содержится в коде (Г)Здума, и который обладает очень интересными свойствами. Если его грамотно наследовать, то получается очень прикольно!
А что касается кода, то...
Actor LaserShot : MageWandMissile //LaserShot является копией актора MageWandMissile
{
Damage 3 //дамаг побольше
+EXTREMEDEATH //актер рвет всех в мясо
}
//наследуем и заменяем хвост лазера на свой собственный
Actor LaserTail : MageWandSmoke Replaces MageWandSmoke
{
Translation "192=207:176:191" //У нас будет лазер красного цвета
Scale 0.5 //И тонкий
States
{
Spawn:
PLSS A 0 A_Jump(128,3) //Прыжок к другой части кода, где стейты стоят в другом порядке
PLSS AB 2 Bright
Stop
PLSS BA 2 Bright //А вот и другая часть кода, ее делать не обязательно - главное в этом случае - //убрать "прыжок"
Stop
}
}
ВНИМАНИЕ : таким образом можно делать только один типа лазера!
ЗЫ Вообще актеры их Хексена - это кульная тема!Главное - грамотно их наследовать, и тогда можно такого наваять! | |
|
| |
Shadowman = UAC Commissar =
 | 6603 |
Doom Rate: 2.46
|
Отправлено: 15.03.08 13:40:32 | | | dukenator : | Вообще актеры их Хексена - это кульная тема |
У меня вопрос - как ты догадываешься, что надо наследовать, а что заменять и откуда прознал про след от лазера? В вике по хексену нет декорэйта, увы. В gzdoom.pk3 его акторы тоже не все прописаны насколько я знаю. | |
|
1 |
6 |
2 |
 |
|
| |
dukenator UAC Sergeant Major
 | 726 |
 Doom Rate: 2.68
|
Отправлено: 15.03.08 14:05:44 | | | Shadowman
Про то, что лазер и его след это две большие разницы, я узнал из вики - там написаны все классы, но, к сожалению, не все раздекорейчены
А что касается наследования и замены - то тут все достаточно просто - актор лазера еще не импортирован в формат декорейта, верно?
А оставлять след он может только в стате спавна.Следовательно, если попытаться заменить стат спавна лазера, то эффект быстрого полета изчезнет...
Поэтому надо заменить актор следа, который лазер оставляет, чтобы луч лазера(который состоит из акторов следа) был виден в темноте(стат спавна следа можно менять как хочешь - тут даже спрайты необязательно импортировать)
А вообще все обнаруживается методом тыка - пока не удастся сохранить совместимость эффекта изначального актера и внесенных изменений...
У меня вопрос - а что с Думскриптом?Он еще в планах или на него забили? | |
|
| |
nprotect = Captain =
 | 2413 |
 Doom Rate: 2.45
|
Отправлено: 17.03.08 20:32:57 | | | вопрос
у кого нибудь есть краткое описание функций ACS? чтоб все вместе и в текстовом формате  | |
|
1 |
2 |
1 |
 |
|
| |
3EPHOEd - 1st Lieutenant -
 | 1769 |
 Doom Rate: 2.33
|
Отправлено: 17.03.08 22:00:40 | | | nprotect
Оно есть даже у тебя
Зайди в папку Дум Билдера и открой блакнотом ACS.cfg
Лично мне в 90% случаев хватает его. | |
|
1 |
2 |
2 |
 |
|
| |
nprotect = Captain =
 | 2413 |
 Doom Rate: 2.45
|
Отправлено: 17.03.08 22:26:21 | | | 3EPHOEd
да нет, это-то понятно я имел ввиду с параметрами хотя бы и малюсеньким описанием а то тут просто поступило заявление, что мол маппить в оффлайне нереально, и хотелось бы заиметь такой документик. чтоб тем кто без инета сидит | |
|
1 |
2 |
1 |
 |
|
| |
3EPHOEd - 1st Lieutenant -
 | 1769 |
 Doom Rate: 2.33
|
Отправлено: 18.03.08 02:04:42 | | | nprotect
У меня на сайте зазеркаленный есть Zdoom - WiKi староват но не сильно много то и добавилось.
Built-in_ACS_functions.rar от (14/06/07) там CHM кой с поиском.
http://bhammer.narod.ru/gzdoom.htm
Чес говоря я как раз в офлайне по той поре и сидел, толко изучать начал с копания в уже готовых картах. Вики больше "на всякий случай" скачал.
DECORATE до сих пор так и не расковырял, так, совсем по простому в нём хулиганю. | |
|
1 |
2 |
2 |
 |
|
| |
Sashok Marine 1st class
 | 31 |
Doom Rate: 1
|
Отправлено: 20.03.08 13:43:10 | | | А каким способом можно изменить кол-во здоровья игрока, к-рое даётся
аптечками и бутылочками? И нужно ли для этого создавать новый
предмет, либо только прописать в ДЕКОРЕЙТЕ нек-рые параметры? | |
|
| |
dukenator UAC Sergeant Major
 | 726 |
 Doom Rate: 2.68
|
Отправлено: 20.03.08 13:45:42 | | | Sashok
Открываешь ламп Dehacked и пишешь там:
Misc 0
Max Armor = 666
Max Health = 666 | |
|
| |
Sashok Marine 1st class
 | 31 |
Doom Rate: 1
|
Отправлено: 21.03.08 10:36:32 | | | Почему 666 ? Это самый предел ?
Я немного неточно выразился: когда берётся, напр., мал. аптечка, то прибавляется 10%.
А можно ли сделать, чтобы прибавлялось больше или меньше ? | |
|
| |
Eternal = Major =
 | 3159 |
Doom Rate: 3.78
|
Отправлено: 21.03.08 11:01:08 | | | Sashok : | А можно ли сделать, чтобы прибавлялось больше или меньше ? |
Да положи ты аптеку одну в другую и будет тебе больше.
А меньше бутылочками разруливай. Токо вот зачем меньше? | |
|
2 |
2 |
2 |
 |
|
| |
dukenator UAC Sergeant Major
 | 726 |
 Doom Rate: 2.68
|
Отправлено: 21.03.08 12:51:23 | | | Sashok
Нет, 666 не предел, просто число такое...
А за кол-во здоровья отвечает строка Inventory.Amount
Вот, например, код хелсбонуса, который заменяет собой обычный - он добавляет 5 хелсов да к тому же он красного цвета:
Actor HealthBonus2 : HealthBonus Replaces HealthBonus
{
Inventory.Amount 5
Translation "192:207=176:191", "240:247=184:191"
} | |
|
| |
Eternal = Major =
 | 3159 |
Doom Rate: 3.78
|
Отправлено: 21.03.08 21:37:07 | | | Android128 : | Сколько я ничитал , но всё равно ничего не понял.Где вопще все эти конфиги монстров и оружия? |
ну так низя. ну возьми уже вад какой-то под здум с декорейтом, ну открой его в редакторе xwe или DeepSea, ну и почитай декорейт. ужели тяжело?  | |
|
2 |
2 |
2 |
 |
|
| |
Sashok Marine 1st class
 | 31 |
Doom Rate: 1
|
Отправлено: 23.03.08 15:57:34 | | | Слушайте, а как можно замедлить скорость Игрока ? | |
|
| |
nprotect = Captain =
 | 2413 |
 Doom Rate: 2.45
|
|
1 |
2 |
1 |
 |
|
| |
Shadowman = UAC Commissar =
 | 6603 |
Doom Rate: 2.46
|
Отправлено: 23.03.08 19:23:32 | | | Eternal
Все, разобрался уже
проще добавлять в инвентори шмотку и далее Checkinventory проверять: если она есть, то скрипт не выполнять, если нету - выполнять (или наоборот). А при касании "настоящего пола" эту штуку убирать из инвентори.
Твой вариант тоже годится, только надо спавнить вещь всякий раз если скрипт повторяемый. Проще добавлять вещь через скрипт в инвентарь. | |
|
1 |
6 |
2 |
 |
|
| |
Картос = UAC Gunner =
 | 68 |
 Doom Rate: 1.89
|
Отправлено: 24.03.08 20:43:41 | | | Саня(нпротект), спасибо за ссылки. очень помогли. У меня есть вопрос. Начал мапить под здум ин дум. Можно ли эту мапу переделать под здум ин хексен? Хотелось бы красивее эту мапу сделать.
Хочу мегавад сделать. Как раз его и делаю. Ну думаю со скриптами будет красивее:) | |
|
| |
Android128[SDC] - Sergeant -
 | 315 |
 Doom Rate: 1.43
|
Отправлено: 24.03.08 21:27:52 | | | Ладно , тогда начну с тупых вопросов.Как назначить количество патронов в обойме , а потом заставить перезарежать его? | |
|
| |
cybermind - Warrant Officer -
 | 1077 |
 Doom Rate: 1.87
|
Отправлено: 26.03.08 11:49:33 | | | Как сделать так чтобы снаряд,который у меня будет спавниться после смерти другого снаряда,не летел на игрока? А то даже если ты спрячешься за стеной,он будет лететь в твою сторону,но естественно врезаться об стенку. А вот как сделать,чтоб если ты выше или ниже места смерти снаряда, спавнящийся снаряд летел параллельно полу? | |
|
| |
Guest - 2nd Lieutenant -
 | 1356 |
 Doom Rate: 2.77
|
Отправлено: 26.03.08 14:07:45 | | | Android128 : | Как назначить количество патронов в обойме , а потом заставить перезарежать его? |
Ну пусть у тебя есть пистолет, и ты хочешь, чтоб у него была обойма на 8 патронов.
1. создаешь новый "инвентарь", который будет считать число патронов в данный момент в обойме:
ACTOR PistolClip : Ammo Ammo - указание движку, что новый тип инвентаря является боеприпасами
{
Inventory.MaxAmount 8 собственно сколько вмещает в себя обойма
Ammo.BackpackAmount 0 поскольку при взятии рюкзака непосредственно в обойме патронов не прибавляется, пишем 0
Ammo.BackpackMaxAmount 8 емкость обоймы после взятия рюкзака не меняется, поэтому тут тоже 8
Inventory.Icon PISTA0 название спрайта, который во всяких альтхудах будет рисоваться как соответствующий данному типу боеприпасов
}
2. теперь прописываем оружию патроны (указываю только те флажки и свойства, которые имеют отношение к вопросу, а не полное описание оружия)
Пускай перезаряжаться пистолет будет альтернативной атакой
ACTOR NewPistol : Weapon
{
Weapon.AmmoType1 "PistolClip" указание на тип боеприпасов, расходумых при стрельбе
Weapon.AmmoType2 "Clip" указание на тип боеприпасов, расходуемых при альтернативной атаке; в данном случае заряжать будем обычными пульками
Weapon.AmmoGive 0 число патронов "первого типа", которые получаем, когда находим пистолет. Естественно, если мы нашли еще один пистолет, то число патронов в обойме того, что в руках, не меняется, пишем нуль
Weapon.AmmoGive2 8 а вот того, чем будем заряжать, наверняка подвезли; если подбираемый пистолет выпал из монстра, то дается лишь половина
Weapon.AmmoUse 1 при выстреле из обоймы расходуется одна пулька, но при желании можно вписать, скажем, две , типа двуствольный пистолет
Weapon.AmmoUse2 0 а вот тут тонкий момент - можно доверить движку вычитать пульки из общего пула, заряжаемые в обойму, но в большинстве случаев проще это сделать самому, поэтому пишем, что при перезарядке якобы ничего не расходуется
+AMMO_OPTIONAL указание движку не сменять пистолет, если нет патронов в обойме в момент выстрела; в принципе флаг необязательный, но может быть полезен, например, если хочешь, чтоб при пустой обойме при попытке выстрела перезарядка запускалась автоматически
+NOALERT флажок указывает, что данное оружие для монстров является бесшумным; в нашем случае флаг может пригодится, если хотим, чтоб перезарядка не привлекала внимания монстров
States
{
Fire:
PISG A 0 A_JumpIfInventory("PistolClip",1,1) если флаг +AMMO_OPTIONAL был использован, то проверку наличия патронов в обойме нужно прописывать самим. Данная строчка означает, что при наличии хотя бы одного патрона совершается прыжок на один фрейм вперед. Далее по тексту идет команда безусловного перехода GOTO, которая в фреймах имеет нулевую длину, следовательно мы через нее перескакиваем без выполнения.
GOTO Ready Если патронов не оказалось, то выполнение стейта Fire на этом прерывается; если же хотим, чтоб при отсутствии патронов автоматически включалась перезарядка, вместо GOTO Ready пишем GOTO AltFire
PISG A 0 сюда мы попадаем после команды перехода (патроны в обойме были). Этому фрейму указываем нулевую длительность и не пишем никаких команд; дело в том, что в Декорейте есть баг, заключающийся в том, что если в некий фрейм мы попадаем не в порядке очереди, а посредством команды перехода, некоторые команды в данном фрейме не срабатывают, бывают и кое-какие другие проблемы, поэтому в "точку приземления" после команды перехода вставляют пустой фрейм нулевой длительности. Просто от греха подальше
PISG B 4 переход выполнен, теперь можно спокойно заняться делом
PISG A 0 A_FireBullets(5,5,1,6,1) бабах! последний параметр указывает, что при стрельбе использутся боеприпасы, что заявлено в начале. Если поставить ноль, то движок вычитать патроны из инвентаря не будет и их расход нужно прописывать самому. Иногда такая возможнось бывает полезна.
PISG A 0 A_AlertMonsters если использовали +NOALERT для бесшумности перезарядки, то теперь, как честные люди, должны сообщить монстрам, что только что в них стреляли
PSTG A 6
PISG A 0 A_Refire если пистолет автоматический, можно добавить такую строчку, хотя к делу это не относится
Goto Ready
далее перезарядка. Схемы опять же могут быть различны; в данном случае рассмотрим вариант, когда обойма дозаряжается по одному патрону до тех пор, пока не заполнится полностью.
AltFire:
PISG A 0 A_JumpIfInventory("PistolClip",8,"Ready") а надо ли нам вообще перезаряжаться? Если нет, то на этом перезарядка обрывается
PISG A 0 A_JumpIfInventory("Clip",1,1) а есть ли нам чем дозаряжать?
Goto Ready
PISR A 0 есть! (иначе бы тута не оказались)
PTTR A 4
PTTR B 5
PTTR C 5 A_PlaySound("misc/slidebk")
три строчки выше типа анимация процесса вынимания обоймы из пушки со звуками, если есть желание данный процесс отобразить в деталях
PISG A 0 еще один пустой фрейм, еще понадобится; точка начала цикла
PISG A 0 A_JumpIfInventory("PistolClip",8,2) в начале каждого цикла проверяем, не зарядась ли обойма до конца
PISG A 0 A_JumpIfInventory("Clip",1,3) и если нет, то есть ли чем дозаряжать дальше?
TNT1 A 0
PISG A 0 A_Jump(256,4) распространенная ошибка - вместо 256 пишут 255, полагая, что это соответствует максимальной вероятности, что приводит к нередким "недозарядам". Данная строчка отвечает за выход из цикла
TNT1 A 0
PISG A 0 A_TakeInventory("Clip",1) ну, коль есть, возьмем пульку из общего пула патронов
PISG A 0 A_GiveInventory("PistolClip",1) и вставим в обойму
GOTO AltFire+7 идем в начало цикла, чтоб вставить в обойму следующую пульку. Стоит отметить, что весь цикл имеет нулевую длину по времени, так что вся перезарядка проходит мгновенно, но если это по каким-то причинам не устраивает, исправить легко.
TNT1 A 0 и еще пустой фрейм; сюда попадаем, когда цикл перезарядки по тем или иным причинам заканчивается; далее идет анимация завершения перезарядки
PTTR D 5 A_PlaySound("misc/slidebk")
PTTR E 4
PTTF A 0 A_PlaySound("misc/CLIPINN")
goto Ready
}
}
Есть еще куча нюансов, но в общих чертах все так. | |
|
3 |
1 |
 |
|
| |