Автор | Сообщение |
dukenator UAC Sergeant Major
 | 726 |
 Doom Rate: 2.06 Posts quality: +102 |
Отправлено: 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 General
 | 8590 |
Doom Rate: 2.07 Posts quality: +2141 |
Отправлено: 15.03.08 13:40:32 | | | dukenator: | Вообще актеры их Хексена - это кульная тема |
У меня вопрос - как ты догадываешься, что надо наследовать, а что заменять и откуда прознал про след от лазера? В вике по хексену нет декорэйта, увы. В gzdoom.pk3 его акторы тоже не все прописаны насколько я знаю. | |
|
1 |
7 |
2 |
 |
|
| |
dukenator UAC Sergeant Major
 | 726 |
 Doom Rate: 2.06 Posts quality: +102 |
Отправлено: 15.03.08 14:05:44 | | | Shadowman Про то, что лазер и его след это две большие разницы, я узнал из вики - там написаны все классы, но, к сожалению, не все раздекорейчены А что касается наследования и замены - то тут все достаточно просто - актор лазера еще не импортирован в формат декорейта, верно? А оставлять след он может только в стате спавна.Следовательно, если попытаться заменить стат спавна лазера, то эффект быстрого полета изчезнет... Поэтому надо заменить актор следа, который лазер оставляет, чтобы луч лазера(который состоит из акторов следа) был виден в темноте(стат спавна следа можно менять как хочешь - тут даже спрайты необязательно импортировать)
А вообще все обнаруживается методом тыка - пока не удастся сохранить совместимость эффекта изначального актера и внесенных изменений...
У меня вопрос - а что с Думскриптом?Он еще в планах или на него забили? | |
|
| |
nprotect - 2nd Lieutenant -
 | 1343 |
 Doom Rate: 2.45
|
Отправлено: 17.03.08 20:32:57 | | | вопрос у кого нибудь есть краткое описание функций ACS? чтоб все вместе и в текстовом формате  | |
|
1 |
2 |
1 |
 |
|
| |
3EPHOEd - Warrant Officer -
 | 1111 |
 Doom Rate: 2.34 Posts quality: +7 |
Отправлено: 17.03.08 22:00:40 | | | nprotect Оно есть даже у тебя Зайди в папку Дум Билдера и открой блакнотом ACS.cfg Лично мне в 90% случаев хватает его. | |
|
1 |
2 |
2 |
 |
|
| |
nprotect - 2nd Lieutenant -
 | 1343 |
 Doom Rate: 2.45
|
Отправлено: 17.03.08 22:26:21 | | | 3EPHOEd да нет, это-то понятно я имел ввиду с параметрами хотя бы и малюсеньким описанием а то тут просто поступило заявление, что мол маппить в оффлайне нереально, и хотелось бы заиметь такой документик. чтоб тем кто без инета сидит | |
|
1 |
2 |
1 |
 |
|
| |
3EPHOEd - Warrant Officer -
 | 1111 |
 Doom Rate: 2.34 Posts quality: +7 |
Отправлено: 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
 | 22 |
Doom Rate: 1
|
Отправлено: 20.03.08 13:43:10 | | | А каким способом можно изменить кол-во здоровья игрока, к-рое даётся аптечками и бутылочками? И нужно ли для этого создавать новый предмет, либо только прописать в ДЕКОРЕЙТЕ нек-рые параметры? | |
|
| |
dukenator UAC Sergeant Major
 | 726 |
 Doom Rate: 2.06 Posts quality: +102 |
Отправлено: 20.03.08 13:45:42 | | | Sashok Открываешь ламп Dehacked и пишешь там: Misc 0 Max Armor = 666 Max Health = 666 | |
|
| |
Sashok Marine
 | 22 |
Doom Rate: 1
|
Отправлено: 21.03.08 10:36:32 | | | Почему 666 ? Это самый предел ?
Я немного неточно выразился: когда берётся, напр., мал. аптечка, то прибавляется 10%. А можно ли сделать, чтобы прибавлялось больше или меньше ? | |
|
| |
Eternal - Captain -
 | 2306 |
Doom Rate: 3.7 Posts quality: +13 |
Отправлено: 21.03.08 11:01:08 | | | Sashok: | А можно ли сделать, чтобы прибавлялось больше или меньше ? |
Да положи ты аптеку одну в другую и будет тебе больше. А меньше бутылочками разруливай. Токо вот зачем меньше? | |
|
2 |
2 |
2 |
 |
|
| |
dukenator UAC Sergeant Major
 | 726 |
 Doom Rate: 2.06 Posts quality: +102 |
Отправлено: 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 - Captain -
 | 2306 |
Doom Rate: 3.7 Posts quality: +13 |
Отправлено: 21.03.08 21:37:07 | | | Android128: | Сколько я ничитал , но всё равно ничего не понял.Где вопще все эти конфиги монстров и оружия? |
ну так низя. ну возьми уже вад какой-то под здум с декорейтом, ну открой его в редакторе xwe или DeepSea, ну и почитай декорейт. ужели тяжело?  | |
|
2 |
2 |
2 |
 |
|
| |
Sashok Marine
 | 22 |
Doom Rate: 1
|
Отправлено: 23.03.08 15:57:34 | | | Слушайте, а как можно замедлить скорость Игрока ? | |
|
| |
nprotect - 2nd Lieutenant -
 | 1343 |
 Doom Rate: 2.45
|
|
1 |
2 |
1 |
 |
|
| |
Shadowman UAC General
 | 8590 |
Doom Rate: 2.07 Posts quality: +2141 |
Отправлено: 23.03.08 19:23:32 | | | Eternal Все, разобрался уже проще добавлять в инвентори шмотку и далее Checkinventory проверять: если она есть, то скрипт не выполнять, если нету - выполнять (или наоборот). А при касании "настоящего пола" эту штуку убирать из инвентори.
Твой вариант тоже годится, только надо спавнить вещь всякий раз если скрипт повторяемый. Проще добавлять вещь через скрипт в инвентарь. | |
|
1 |
7 |
2 |
 |
|
| |
Картос Marine 1st class
 | 34 |
 Doom Rate: 1.89
|
Отправлено: 24.03.08 20:43:41 | | | Саня(нпротект), спасибо за ссылки. очень помогли. У меня есть вопрос. Начал мапить под здум ин дум. Можно ли эту мапу переделать под здум ин хексен? Хотелось бы красивее эту мапу сделать. Хочу мегавад сделать. Как раз его и делаю. Ну думаю со скриптами будет красивее:) | |
|
| |
Android128[SDC] - Lance Corporal -
 | 132 |
 Doom Rate: 1.43
|
Отправлено: 24.03.08 21:27:52 | | | Ладно , тогда начну с тупых вопросов.Как назначить количество патронов в обойме , а потом заставить перезарежать его? | |
|
| |
cybermind - Warrant Officer -
 | 1045 |
Doom Rate: 1.99 Posts quality: +163 |
Отправлено: 26.03.08 11:49:33 | | | Как сделать так чтобы снаряд,который у меня будет спавниться после смерти другого снаряда,не летел на игрока? А то даже если ты спрячешься за стеной,он будет лететь в твою сторону,но естественно врезаться об стенку. А вот как сделать,чтоб если ты выше или ниже места смерти снаряда, спавнящийся снаряд летел параллельно полу? | |
|
1 |
2 |
1 |
 |
|
| |
Guest = 2nd Lieutenant =
 | 1473 |
 Doom Rate: 2.5 Posts quality: +182 |
Отправлено: 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 |
 |
|
| |