Автор | Сообщение |
Maddzi [B0S] - Lance Corporal -
| 212 |
Doom Rate: 1.98
|
Отправлено: 05.07.12 14:25:45 | |
| В общем, при работе с освещением в новом ваде столкнулся с интересным моментом при использовании Light_ForceLightning, Lightning_Indoors и освещением секторов с этим спешлом.
При тесте скрипта
script 2 OPEN
{
Light_ForceLightning (0);
}
script 3 LIGHTNING
{
Delay (random(20,200));
AmbientSound("THNDR1", 127);
}
int light1;
int light2;
int on1;
int on2;
script 4 (void)
{
if (on1==0)
{
Light_ChangeToValue (9,192);
Light_ChangeToValue (11,192);
Light_ChangeToValue (14,192);
light1++;
on1++;
if (light2==0)
{
Light_ChangeToValue (10,128);
}
}
else if (on1==1)
{
light1--;
on1--;
if (light2==0)
{
Light_ChangeToValue (10,64);
Light_ChangeToValue (9,64);
Light_ChangeToValue (11,64);
Light_ChangeToValue (14,64);
}
else if (light2==1)
{
Light_ChangeToValue (9,64);
Light_ChangeToValue (11,128);
}
}
}
script 5 (void)
{
if (on2==0)
{
Light_Stop (12);
delay (1);
Light_ChangeToValue (12,192);
Light_ChangeToValue (13,192);
Light_ChangeToValue (10,192);
Light_ChangeToValue (14,192);
light2++;
on2++;
if (light1==0)
{
Light_ChangeToValue (11,128);
}
}
else if (on2==1)
{
Light_Flicker (12,144,128);
light2--;
on2--;
if (light1==0)
{
Light_ChangeToValue (11,64);
Light_ChangeToValue (13,64);
Light_ChangeToValue (10,64);
Light_ChangeToValue (14,64);
}
else if (light1==1)
{
Light_ChangeToValue (13,64);
Light_ChangeToValue (10,128);
}
}
}
я нашел один интересный баг: если скрипт на "включение света" срабатывает в секторах с Lightning_Indoors в момент вспышки молнии, свет в этих секторах тухнет как если бы это просто была вспышка молнии. В итоге в 25% случаев свет включается во всей комнате, кроме секторов, которые используют молнию снаружи внутри комнаты. Light_Stop, равно как ACS_Terminate и ACS_Suspend на коротких промежутках времени не помогает, а позволить себе более длинные промежутки я не могу - ну не должен выключатель работать с задержкой. Помогите.
Как вариант, конечно, можно сделать ACS_Terminate скрипта на молнию при входе в определенный сектор, например рядом с выключателем, с последующим запуском этого скрипта при выходе из сектора, однако выключатель у меня с Repeatable Action, а народу скорее всего захочется поиграться с выключателями там, так что выглядит это все как-то мутновато при скоросной беготне между рубильнаками. Скорее всего баг останется, хоть и с меньшей вероятностью.
Ожидаю ваших идей. | |
|
| |
c4tnt Chief Petty Officer
| 934 |
Doom Rate: 2.13
|
Отправлено: 05.07.12 14:38:51 | |
| Можно попробовать в третьем скрипте восстанавливать состояние секторного света сразу после того, как молния сработает. Тут проблема только в том, когда точно запускается этот скрипт - когда молния начинает освещать окрестности или когда заканчивает? | |
|
| |
Maddzi [B0S] - Lance Corporal -
| 212 |
Doom Rate: 1.98
|
Отправлено: 05.07.12 14:48:11 | |
| Эти скрипты, кроме молний и озвучки, работают от рубильников, вот в чем сложность. Ты просто попадаешь иногда в молнию, и сектора, на которых висит Lightning_Indoors тухнут вместе с ней.
Добавлено спустя 2 минуты 15 секунд:
ах да, второй скрипт срабатывает на рандоме, 3-й одновременно с вторым. Восстанавливать освещение сразу после молнии не имеет смысла - визуальные эффекты коту под хвост. Нужно как-то оставить и молнию, и пофиксить свет в секторах. | |
|
| |
c4tnt Chief Petty Officer
| 934 |
Doom Rate: 2.13
|
Отправлено: 05.07.12 14:57:03 | |
| Ещё вариант под кодовым названием "закат солнца вручную". Если я правильно понял, то Light_ForceLightning (1); даёт однократную вспышку молнии, причём немедленно. И автоматический рандом не работает. В общем можно молнию запускать вручную из специального скрипта и не давать ей мигать когда работает хоть один выключатель. В общем взаимоблокировку им сделать с молнией. | |
|
| |
Maddzi [B0S] - Lance Corporal -
| 212 |
Doom Rate: 1.98
|
Отправлено: 05.07.12 15:07:28 | |
| Тут уж лучше использовать Light_ForceLightning (2), он сразу мочит скрипт с молниями, однако не убивает последнюю вспышку, то есть если молния успела вспыхнуть на тик раньше этой команды, то она все равно потухнет в обычном режиме. Боюсь, кроме задержки, равной времени потухания молнии, или Light_ForceLightning (1) сделать ничего нельзя. И это хреново, так как выключатель с задержкой - это хреново и нереалистично. Вырубать молнию при входе в здание перечеркнет часов 6 работы с секторами и светом. Есть еще идеи? | |
|
| |
c4tnt Chief Petty Officer
| 934 |
Doom Rate: 2.13
|
Отправлено: 05.07.12 15:12:12 | |
| Сделать молнии полностью скриптами, но проблемы с тэгами опять же. Ещё можно сделать скриптами только те сектора, которые управляются от выключателя и снять с них экшн молний вообще. Информацию о молниии можно брать через одинокий сектор с одиноким эктором внутри, применяя к эктору GetActorLightLevel | |
|
| |
Maddzi [B0S] - Lance Corporal -
| 212 |
Doom Rate: 1.98
|
Отправлено: 05.07.12 15:30:33 | |
| Я нашел выход, через Transfer Brightness Levels, он будет навязывать секторам свое освещение вне зависимости от молний снаружи и освещения внутри секторов. По мне так это чуть проще. Но в любом случае спасибо. Если не прокатит - отпишусь
Добавлено спустя 19 минут 19 секунд:
Не прокатило - Трансфер перекрывает все, в результате чего оно, конечно, работает гладко, но желаемого эффетка вспышек молнии из окон нету. Ваапсче. Если присвоить молнии тому сектору - тот же косяк, что и с индор лайтнинг. Можно скриптом ставить/убирать спешлы на сектора? Если да, то я нашел решение: снимается спешл, проводится Лайт_Стоп, происводим оверрайд уровня света по нужному значению - profit. При выключении тогда было бы просто присвоение спешла Lightning_Indoors на вышеупомянутые сектора. Так можно ли ставить спешлы скриптом? | |
|
| |
c4tnt Chief Petty Officer
| 934 |
Doom Rate: 2.13
|
Отправлено: 05.07.12 16:40:05 | |
| Так вот в том и дело, что вроде как нельзя спешл менять у сектора. По крайней мере в здум_вики не встречал такое. | |
|
| |
Maddzi [B0S] - Lance Corporal -
| 212 |
Doom Rate: 1.98
|
Отправлено: 05.07.12 21:53:39 | |
| Шайтан, у меня просто нет идей. Я не знаю, что делать. Делэй неприемлем. Спасайте. Свет - это будет одно из достоинств этой поделки. | |
|
| |
VladGuardian = Warrant Officer =
| 1190 |
Doom Rate: 1.37
|
Отправлено: 06.07.12 16:02:09 | |
| c4tnt : | В общем можно молнию запускать вручную из специального скрипта и не давать ей мигать когда работает хоть один выключатель. В общем взаимоблокировку им сделать с молнией. |
+1. трезво
А то, что какая-то там молния не мигнула в момент, когда игрок как раз нажимал кнопку, я думаю большинство игроков даже не заметят.
Maddzi [B0S]
Экхм... а тебе непременно нужны вспышки из окон?
Почему бы не навесить полупрозрачную middle-текстуру с сиянием из окна (linedef должен иметь спешл: 208-Translucent Line), и включать ее в нужный момент на краткое время?
Кроме того, есть такая штучка FadeTo, которая подсвечивает сам экран (к секторам отношения не имеет).
Несмотря на обманчивое слово "fade" в названии, функция может сделать экран хоть белым, как при ядерной вспышке.
Может быть, этого будет достаточно? | |
|
1 |
4 |
3 |
|
|
| |
c4tnt Chief Petty Officer
| 934 |
Doom Rate: 2.13
|
Отправлено: 06.07.12 16:52:05 | |
| Попробую сделать демку по последнему предложенному мною варианту, должно получиться вполне терпимо, думаю. | |
|
| |
Maddzi [B0S] - Lance Corporal -
| 212 |
Doom Rate: 1.98
|
Отправлено: 07.07.12 09:32:54 | |
| VladGuardian : | В общем взаимоблокировку |
Да запросто. Проблема в том, что свет молнии гаснет на протяжении какого-то кол-ва тиков, и баг случается именно тогда, когда выключатель срабатывает именно в этом промежутке. А вот как сделать так, чтобы молния не срабатывала перед потенциальным включением света, и при этом не свести на нет все световые эффекты, которые должен увидеть игрок изнутри дома - это и есть сложность.
VladGuardian : | Экхм... а тебе непременно |
Непременно. Translucent там и так везде стоит. Смысл в том, что я хочу не вспышку на экране, а вспышку только в спец. секторах для придания большей реалистичности. Там у меня много секторов, которые отвечают непосредственно за освещение. А что до секторов, в которых должна вспыхивать молния - так там вообще стоит транслейт света потолка, чтобы он ни в коем случае не подсвечивался. Реалистичность - мое все. FadeTo тупо не прокатывает, а так конечно я эту команду знаю, и практически в каждом ваде использую. | |
|
| |