Автор |
Сообщение |
Guest = Warrant Officer =
| 1028 |
|
Отправлено: 13.09.07 19:40:16 |
|
|
zer0 : | но ноль тиков - это копия того, что написано про стандартный думовский плазмаган, там то же самое 0_о |
http://208.78.96.242/wiki/Classes:PlasmaRifle
Гды ты там ноль тиков увидел?
zer0 : | врезается в стену и остается лежать на полу, сияя |
Такое тоже встречалось; это когда актор, исполняющий по мысли роль прожектайла не определен как прожектайл. Глянь, например сюда:
http://208.78.96.242/wiki/Classes:Rocket
Ключевое слово - PROJECTILE |
|
|
| |
zer0 - Lance Corporal -
| 189 |
|
Отправлено: 13.09.07 19:41:32 |
|
|
Опа! У меня почти получилось! Почти настоящий свет, осталось только парочку вещей подкрутить
ADDED:
Есть! Я это сделал! Мой первый сложный декорейт объект Это фонарь и он действительно довольно натурально светит на ограниченной дистанции. Остался лишь последий вопрос. Как сделать, чтобы последовательность Fire включалась при нажатии кнопки огня и выключалась при втором нажатии? А то держать кнопку зажатой немного напрягает...
Да, и еще одно. Скажем так... количество снарядов на один определнный отрезок линии в определенный момент времени зависит только от скорости снарядов?
ADDED:
Нет, не совсем получилось... Все-таки, видно, что это отдельные шары, а не цельная линия света. Если бы их было больше, и они стояли бы плотнее друг к другу... Но как? Если я увеличиваю скорость больше сотни, то получается, что вспышек остается всего две - одна на месте самого плейера, а другая - в конце "луча".
ADDED:
Да, если наоборот уменьшить скорость, то "луч" получается более плотным. Вот так:
| actor Flshball replaces PlasmaBall
{
spawnid 51
radius 13
height 8
speed 32
renderstyle Add
alpha 0.75
PROJECTILE
states
{
Spawn:
FLBL A 5 bright
goto Death
Death:
FLBL A 1 bright
stop
}
} |
Но единственный косяк, что в таком случае с ним как раз и можно "как со струей" играться... Впрочем, не то, чтобы это было бы сильно плохо. Однако жаль, что нет эффекта рассеивания света. |
|
|
| |
Guest = Warrant Officer =
| 1028 |
|
Отправлено: 13.09.07 19:59:23 |
|
|
zer0 : | Все-таки, видно, что это отдельные шары |
Шары динамик лайта, или спрайты?
zer0 : | Как сделать, чтобы последовательность Fire включалась при нажатии кнопки огня и выключалась при втором нажатии? А то держать кнопку зажатой немного напрягает... |
Тебе уже сказали, как это можно ПОПРОБОВАТЬ. |
|
|
| |
zer0 - Lance Corporal -
| 189 |
|
Отправлено: 13.09.07 20:09:48 |
|
|
| Сделать проверку специтема в [Ready], а на [Fire] сделать выдачу\изъятие этого итема (в зависимости от того, есть ли он у игрока). |
Вот что мне сказали. Если честно, я не понял. КАКОГО итема? И ЧТО должно быть связано с этой проверкой? |
|
|
| |
Guest = Warrant Officer =
| 1028 |
|
Отправлено: 13.09.07 20:28:43 |
|
|
zer0 : | Вот что мне сказали. Если честно, я не понял. КАКОГО итема? И ЧТО должно быть связано с этой проверкой? |
Ох...
Actor LightSwitch
{
inventory.maxamount 1
-INVBAR // Это, впрочем, необязательно.
}
ACTOR Doom3Flashlight : Weapon 30030
{
...
Ready:
D3FG A 1 A_WeaponReady
TNT1 A 0 A_JumpIfInventory("LightSwitch", 1, 1)
LOOP
TNT1 A 0
D3FG A 1 A_FireCustomMissile ("FlshBall")
LOOP
Fire:
D3FG A 0
D3FG A 0 A_JumpIfInventory("LightSwitch", 1, 3)
D3FG A 1 A_GiveInventory("LightSwitch", 1)
D3FG A 1 A_PlaySound(string soundname) //если захочешь озвучить щелчок выключателя
GOTO Ready
D3FG A 0
D3FG A 1 A_TakeInventory("LightSwitch", 1)
D3FG A 1 A_PlaySound(string soundname)
GOTO Ready
Что-то в этом духе. Писал на коленке, поэтому могут быть ошибки. Время, необходимое на данные действия прикинешь сам, единички там стоят условно.
zer0 : | Но единственный косяк, что в таком случае с ним как раз и можно "как со струей" играться... Впрочем, не то, чтобы это было бы сильно плохо. Однако жаль, что нет эффекта рассеивания света. |
Здесь тоже есть возможность поиграться с параметрами и попытаться достичь приемлемого результата без снижения скорости. Рассеяние тоже можно попробовать (думаю знаю как, хотя заранее не обещаю, что будет выглядеть как надо, ибо раньше не делал) |
|
|
| |
zer0 - Lance Corporal -
| 189 |
|
Отправлено: 13.09.07 20:59:45 |
|
|
Guest
спасибо, это уже лучше Я ж полный ламер в декорейте, прошу учитывать...
Я не все понял, но сейчас попробую разобраться... |
|
|
| |
Falcor - Sergeant Major -
| 577 |
|
Отправлено: 13.09.07 21:01:45 |
|
|
zer0 : | разве в Ready вообще нужно что-то про этот итем писать? |
Еще как нужно.
По сути, фонарь стреляет светом на стейте [Ready], а стейт [Fire] используется лишь для переключения режима ВКЛ/ВЫКЛ. |
|
|
| |
zer0 - Lance Corporal -
| 189 |
|
Отправлено: 13.09.07 21:02:59 |
|
|
Да, я снова кое-что напутал... сейчас попробую вписать все так. |
|
|
| |
Guest = Warrant Officer =
| 1028 |
|
Отправлено: 13.09.07 21:12:49 |
|
|
zer0 : | разве в Ready вообще нужно что-то про этот итем писать? |
Декорейт в известный границах довольно гибкая штука; тебе не все равно, из-под какого стейта работает актор? Тут вопрос удобства, а в нашем случае даже и необходимость. Все эти "реди", "селекты" и пр. - ярлыки для движка, а не тебя. Кстати, последняя версия Здума позволяет создавать свои стейты, если на то есть необходимость. Например, какое-то действия актора засунуть в стейт VinnyPooh, и адресовать по необходимости туда GOTO VinnyPooh. Я абсолютно серъезно. |
|
|
| |
Falcor - Sergeant Major -
| 577 |
|
Отправлено: 13.09.07 21:14:21 |
|
|
Guest : | Кстати, последняя версия Здума позволяет создавать свои стейты, если на то есть необходимость. |
Так-так-так-так...
Постой. Не пнешь ссылкой?
Это мне будет очень полезно. |
|
|
| |
zer0 - Lance Corporal -
| 189 |
|
Отправлено: 13.09.07 21:14:42 |
|
|
Гм... в общем, как бы получилось. Но кое-какие неприятственные вещи есть... Например, "включенный" свет дергается - это, я думаю, естественно, раз поток проджектайлов идет не беспрерывно, а постоянно появляясь и исчезая. Во-вторых, на нажатие фонарь реагирует как-то дерганно... надо очень быстро и аккуратно стукнуть по кнопке, иначе он может не включиться, а если зажать - включится, и выключиться, когда кнопка отожмется. Поэтому, я не знаю, может обойтись более простым вариантом... |
|
|
| |
Falcor - Sergeant Major -
| 577 |
|
Отправлено: 13.09.07 21:16:58 |
|
|
zer0 : | Во-вторых, на нажатие фонарь реагирует как-то дерганно... надо очень быстро и аккуратно стукнуть по кнопке, иначе он может не включиться, а если зажать - включится, и выключиться, когда кнопка отожмется. |
Кажется, что-то было для таких случаев...
К сожалению, точно не помню, но Гест должен знать
(ЗЫ: Гест, сорри, что стрелки перевожу... ) |
|
|
| |
Guest = Warrant Officer =
| 1028 |
|
Отправлено: 13.09.07 21:33:09 |
|
|
Falcor : | Постой. Не пнешь ссылкой? |
Кину ссылку на мод WW, где это применялось, когда найду.
zer0 : | Поэтому, я не знаю, может обойтись более простым вариантом... |
А это и есть простой вариант Тюнить нужно, а не руки опускать.
zer0 : | Во-вторых, на нажатие фонарь реагирует как-то дерганно... надо очень быстро и аккуратно стукнуть по кнопке, иначе он может не включиться, а если зажать - включится, и выключиться, когда кнопка отожмется. |
Это происходит из-за того, что переключение занимает слишком мало времени. Чтобы лучше реагировал на переключения, стоит удлинить промежуток WeaponReady, а поскольку это увиличивает паузы между пусками прожектайлов, то лечить надо так - прожектайл в полете периодически выпускает такие же прожектайлы, как и он сам (есс-но в том же направлении), но скорость которых чуть меньше. Отставая, они будут заполнять промежутки и освещать их. Если надо, они в свою очередь так же могут выпускать еще более медленные фонарики. Скорости нужно подбирать самому, пока не начнет нравится, заочно не насоветуешь.
Кстати, рассеяние тоже можно изобразить. Динамик лайт приписывается определенному фрейму данного актора, если в полете фреймы называть по-разному, то им соответственно можно приписывать динамиклайты большего радиуса, что и эмулирует некоторое рассеяние.
Короче, все проблемы лечатся терпеливой настройкой, это точно говорю. |
|
|
| |
zer0 - Lance Corporal -
| 189 |
|
Отправлено: 13.09.07 21:36:54 |
|
|
Guest
насчет рассеяния по кадрам - до этого я уже догадался и сделал. А вот насчет выпуска проджектайлами других... Это типа надо в спауне самого актора-проджектайла писать запуск другого через A_FireCustomMissile? |
|
|
| |
Shadowman Lieutenant Colonel
| 1985 |
|
Отправлено: 13.09.07 21:41:38 |
|
|
zer0
Вот простой пример таких проджектайлов:
ACTOR CannonFireBall
{
obituary "%o rode %k's fireball."
radius 11
height 8
speed 25
damage 20
seesound "weapons/rocklf"
deathsound "weapons/rocklx"
PROJECTILE
+RANDOMIZE
states
{
Spawn:
FIRB AAAA 1 bright A_CustomMissile("FireBallTrail",0,0,0)
loop
Death:
FIRB B 4 bright A_Explode
FIRB C 4 bright
FIRB DEFGHIJ 4 bright
stop
}
}
ACTOR FireBallTrail
{
RENDERSTYLE Translucent
Alpha 0.35
+NOBLOCKMAP
+NOGRAVITY
States
{
Spawn:
FIRT AABBCCDDEE 2
Stop
}
}
По необходимости скорость у "следа" может быть не нулевая, также "следы" могут выпускать вторичные следы и т.д. до нужной густоты. |
|
|
| |
Guest = Warrant Officer =
| 1028 |
|
Отправлено: 13.09.07 21:41:46 |
|
|
zer0 : | Это типа надо в спауне самого актора-проджектайла писать запуск другого через A_FireCustomMissile? |
Не обязательно в спауне, где удобно. Только не A_FireCustomMissile, поскольку вроде это только функция оружия, а "автором" яаляется уже сторонний актор, а не фонарик, а A_CustomMissile. |
|
|
| |
zer0 - Lance Corporal -
| 189 |
|
Отправлено: 13.09.07 22:31:32 |
|
|
что означает текст ошибки: ?
В принципе, что это значит ,я понимаю, но не понимаю, почему. Он спотыкается на строчке
| FLBL A 1 A_CustomMissile("Flshball1,0,0,0") |
Это текст в акторе Flshball. Flshball1 должен быть его "следом"... |
|
|
| |
Falcor - Sergeant Major -
| 577 |
|
Отправлено: 13.09.07 22:34:14 |
|
|
FLBL A 1 A_CustomMissile("Flshball1",0,0,0) |
Так будет правильнее. |
|
|
| |
Guest = Warrant Officer =
| 1028 |
|
|
| |
Falcor - Sergeant Major -
| 577 |
|
Отправлено: 13.09.07 22:36:30 |
|
|
Спс
Будем учиться дальше |
|
|
| |
zer0 - Lance Corporal -
| 189 |
|
Отправлено: 14.09.07 06:36:42 |
|
|
Не-а, не вижу эффекта, не получается...
Вот как оно выглядит:
| actor Flshball
{
radius 8
height 8
speed 128
renderstyle Add
alpha 0.75
PROJECTILE
+NOBLOCKMAP
+NOGRAVITY
states
{
Spawn:
FLBL A 1 A_CustomMissile("Flshball1",0,0,0)
FLBL BCDEF 1 bright
goto Death
Death:
FLBL F 1 bright
stop
}
}
actor Flshball1
{
radius 8
height 8
renderstyle Add
alpha 0.75
+NOBLOCKMAP
+NOGRAVITY
states
{
Spawn:
FLBL A 1 A_CustomMissile("Flshball2",0,0,0)
FLBL BCDEF 1 bright
goto Death
Death:
FLBL F 1 bright
stop
}
}
actor Flshball2
{
radius 8
height 8
renderstyle Add
alpha 0.75
+NOBLOCKMAP
+NOGRAVITY
states
{
Spawn:
FLBL A 1 A_CustomMissile("Flshball3",0,0,0)
FLBL BCDEF 1 bright
goto Death
Death:
FLBL F 1 bright
stop
}
}
actor Flshball3
{
radius 8
height 8
renderstyle Add
alpha 0.75
+NOBLOCKMAP
+NOGRAVITY
states
{
Spawn:
FLBL ABCDEF 1 bright
goto Death
Death:
FLBL F 1 bright
stop
}
} |
Вначале я еще ставил им скорость. Первому 128, второму 64, потом 32... но все было точно так же. |
|
|
| |
Falcor - Sergeant Major -
| 577 |
|
Отправлено: 14.09.07 06:47:44 |
|
|
Полагаю, здесь уже можно помочь лишь тонкой настройкой. |
|
|
| |
dukenator UAC Sergeant Major
| 704 |
|
Отправлено: 14.09.07 10:13:44 |
|
|
А вот как сделать оружие, выстрел которого притягивает к себе врагов? |
|
|
| |
Falcor - Sergeant Major -
| 577 |
|
Отправлено: 14.09.07 10:35:24 |
|
|
dukenator
Кажется, в wrw.wad был гарпун, если тебе интересно. |
|
|
| |
zer0 - Lance Corporal -
| 189 |
|
Отправлено: 14.09.07 12:04:04 |
|
|
Falcor
Но вот Shadowman привел пример рокеттрейла (там даже скорости у трейла не было, кстати, почему?), и я в основном скопировал - но эффекта не видно вообще. Я думаю, если бы просто были криво подобраны параметры, хоть что-то было бы заметно...
Вообще, это не самое важное. Я хотел попросить другое.
Вернемся к описанию "кнопки ВКЛ/ВЫКЛ" от Guest'а:
| Actor LightSwitch
{
inventory.maxamount 1
-INVBAR // Это, впрочем, необязательно.
}
ACTOR Doom3Flashlight : Weapon 30030
{
...
Ready:
D3FG A 1 A_WeaponReady
TNT1 A 0 A_JumpIfInventory("LightSwitch", 1, 1)
LOOP
TNT1 A 0
D3FG A 1 A_FireCustomMissile ("FlshBall")
LOOP
Fire:
D3FG A 0
D3FG A 0 A_JumpIfInventory("LightSwitch", 1, 3)
D3FG A 1 A_GiveInventory("LightSwitch", 1)
D3FG A 1 A_PlaySound(string soundname) //если захочешь озвучить щелчок выключателя
GOTO Ready
D3FG A 0
D3FG A 1 A_TakeInventory("LightSwitch", 1)
D3FG A 1 A_PlaySound(string soundname)
GOTO Ready |
Я был бы ПРЕМНОГО благодарен, если понимающий человек даст мне комментарии к... ну, наверное, к каждой строчке - описание, как действует JumpIfInventory и проч., т.к. я хоть и читал ВИКИ, кое-что мне не совсем понятно. А то Guest услужливо откомментировал единственную строчку, которая как раз и была абсолютно понятна... В общем, помогите мне продолжить обучение декорейту, пожалуйста
ADDED:
И еще одна важная штука. Я в KEYCONF как положено создал новый раздел под кнопки, где есть функция Reload. Она у меня упорно отказывается работать. Выглядит это так (выдрано из Zdoom advanced):
| addmenukey "Reload" +z_reload
alias +z_reload "use ReloadActive"
alias -z_reload "use ReloadCancel"
defaultbind r +z_reload |
Я не совсем понимаю - на что ссылается "use ReloadActive" и "use ReloadCancel"? |
|
|
| |
Shadowman Lieutenant Colonel
| 1985 |
|
Отправлено: 14.09.07 13:04:28 |
|
|
zer0 : | (там даже скорости у трейла не было, кстати, почему?), |
Cкорость не ставил, так как она нулевая (и по умолчанию оно и задает 0).
Насчет команд: A_JumpIfInventory("LightSwitch", x, y) - перебрасывает на стейт +y к текущему, если в инвентаре находится предмет LightSwitch, в количестве хотя бы x.
Имхо в вики про это достаточно понятно написано.
zer0
Ты лучше сперва сооруди какую-нибудь пушку попроще, а то сразу за фонарь взялся. Вот на ее примере и обкатаешь базовые вещи оружейного декорэйта, а потом уже и фонарь сделаешь
Про релоад - это к Guest'у. |
|
|
| |
zer0 - Lance Corporal -
| 189 |
|
Отправлено: 14.09.07 13:29:13 |
|
|
Shadowman
ну так если я решил делать такой вад, какой я решил, то и объекты к нему соответствующие... и фонарь - важнее всего. Кроме того, если не считать возможности "вкл/выкл", я уже добился практически того, что хотел. Я вообще уже успел воткнуть туда шотган и револьвер, правда с револьвером какие-то непонятки... все с тем же релоадом.
Про JumpIfInventory - смысл-то я понял. Только некоторые мелочи не совсем понятны. Например, что будет меняться, если я буду увеличивать число тиков в той строке, где стоит JumpIfInventory? |
|
|
| |
dukenator UAC Sergeant Major
| 704 |
|
Отправлено: 14.09.07 13:39:03 |
|
|
Falcor
Выложи, пожалуйста!
ЗЫ Там сделано через LoreShot? интерестно...
ЗЗЫ Да не, мне нужно чтобы монстры притягивались не к игроку, а к шарику - выстрелу... |
|
|
| |
Falcor - Sergeant Major -
| 577 |
|
|
| |
dukenator UAC Sergeant Major
| 704 |
|
Отправлено: 14.09.07 14:01:48 |
|
|
zer0 : | Например, что будет меняться, если я буду увеличивать число тиков в той строке, где стоит JumpIfInventory? |
Ничего особо выдающегося не будет...
В той строке, где у тебя стоит jumpifinventory всегда ставь ноль тиков - так будет надежнее. |
|
|
| |