Welcome to U.A.C. [O.S.A.]
login / register
Status: Guest
Архивы форума | iddqd.ru
Wolf 3D
ПравилаПравила ПоискПоиск
Интересная проблема с ForceLightning и освещение секторов.
   Список разделов - Местечко мапперов и моддеров - Интересная проблема с ForceLightning и освещение секторов.Ответить
АвторСообщение
Maddzi [B0S]
- Lance Corporal -
Next rank: = Lance Corporal = after 38 points
212

Doom Rate: 1.98
Ссылка на пост №1 Отправлено: 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
Next rank: Chief Petty Officer after 56 points
934

Doom Rate: 2.13
Ссылка на пост №2 Отправлено: 05.07.12 14:38:51

Можно попробовать в третьем скрипте восстанавливать состояние секторного света сразу после того, как молния сработает. Тут проблема только в том, когда точно запускается этот скрипт - когда молния начинает освещать окрестности или когда заканчивает?
1
Maddzi [B0S]
- Lance Corporal -
Next rank: = Lance Corporal = after 38 points
212

Doom Rate: 1.98
Ссылка на пост №3 Отправлено: 05.07.12 14:48:11

Эти скрипты, кроме молний и озвучки, работают от рубильников, вот в чем сложность. Ты просто попадаешь иногда в молнию, и сектора, на которых висит Lightning_Indoors тухнут вместе с ней.

Добавлено спустя 2 минуты 15 секунд:

ах да, второй скрипт срабатывает на рандоме, 3-й одновременно с вторым. Восстанавливать освещение сразу после молнии не имеет смысла - визуальные эффекты коту под хвост. Нужно как-то оставить и молнию, и пофиксить свет в секторах.
c4tnt
Chief Petty Officer
Next rank: Chief Petty Officer after 56 points
934

Doom Rate: 2.13
Ссылка на пост №4 Отправлено: 05.07.12 14:57:03

Ещё вариант под кодовым названием "закат солнца вручную". Если я правильно понял, то Light_ForceLightning (1); даёт однократную вспышку молнии, причём немедленно. И автоматический рандом не работает. В общем можно молнию запускать вручную из специального скрипта и не давать ей мигать когда работает хоть один выключатель. В общем взаимоблокировку им сделать с молнией.
1
Maddzi [B0S]
- Lance Corporal -
Next rank: = Lance Corporal = after 38 points
212

Doom Rate: 1.98
Ссылка на пост №5 Отправлено: 05.07.12 15:07:28

Тут уж лучше использовать Light_ForceLightning (2), он сразу мочит скрипт с молниями, однако не убивает последнюю вспышку, то есть если молния успела вспыхнуть на тик раньше этой команды, то она все равно потухнет в обычном режиме. Боюсь, кроме задержки, равной времени потухания молнии, или Light_ForceLightning (1) сделать ничего нельзя. И это хреново, так как выключатель с задержкой - это хреново и нереалистично. Вырубать молнию при входе в здание перечеркнет часов 6 работы с секторами и светом. Есть еще идеи?
c4tnt
Chief Petty Officer
Next rank: Chief Petty Officer after 56 points
934

Doom Rate: 2.13
Ссылка на пост №6 Отправлено: 05.07.12 15:12:12

Сделать молнии полностью скриптами, но проблемы с тэгами опять же. Ещё можно сделать скриптами только те сектора, которые управляются от выключателя и снять с них экшн молний вообще. Информацию о молниии можно брать через одинокий сектор с одиноким эктором внутри, применяя к эктору GetActorLightLevel
1
Maddzi [B0S]
- Lance Corporal -
Next rank: = Lance Corporal = after 38 points
212

Doom Rate: 1.98
Ссылка на пост №7 Отправлено: 05.07.12 15:30:33

Я нашел выход, через Transfer Brightness Levels, он будет навязывать секторам свое освещение вне зависимости от молний снаружи и освещения внутри секторов. По мне так это чуть проще. Но в любом случае спасибо. Если не прокатит - отпишусь :oops:

Добавлено спустя 19 минут 19 секунд:

Не прокатило - Трансфер перекрывает все, в результате чего оно, конечно, работает гладко, но желаемого эффетка вспышек молнии из окон нету. Ваапсче. Если присвоить молнии тому сектору - тот же косяк, что и с индор лайтнинг. Можно скриптом ставить/убирать спешлы на сектора? Если да, то я нашел решение: снимается спешл, проводится Лайт_Стоп, происводим оверрайд уровня света по нужному значению - profit. При выключении тогда было бы просто присвоение спешла Lightning_Indoors на вышеупомянутые сектора. Так можно ли ставить спешлы скриптом?
c4tnt
Chief Petty Officer
Next rank: Chief Petty Officer after 56 points
934

Doom Rate: 2.13
Ссылка на пост №8 Отправлено: 05.07.12 16:40:05

Так вот в том и дело, что вроде как нельзя спешл менять у сектора. По крайней мере в здум_вики не встречал такое.
1
Maddzi [B0S]
- Lance Corporal -
Next rank: = Lance Corporal = after 38 points
212

Doom Rate: 1.98
Ссылка на пост №9 Отправлено: 05.07.12 21:53:39

Шайтан, у меня просто нет идей. Я не знаю, что делать. Делэй неприемлем. Спасайте. Свет - это будет одно из достоинств этой поделки.
VladGuardian
= Warrant Officer =
Next rank: - 2nd Lieutenant - after 60 points
1190

Doom Rate: 1.37
Ссылка на пост №10 Отправлено: 06.07.12 16:02:09

c4tnt :
В общем можно молнию запускать вручную из специального скрипта и не давать ей мигать когда работает хоть один выключатель. В общем взаимоблокировку им сделать с молнией.

+1. трезво
А то, что какая-то там молния не мигнула в момент, когда игрок как раз нажимал кнопку, я думаю большинство игроков даже не заметят.

Maddzi [B0S]
Экхм... а тебе непременно нужны вспышки из окон?
Почему бы не навесить полупрозрачную middle-текстуру с сиянием из окна (linedef должен иметь спешл: 208-Translucent Line), и включать ее в нужный момент на краткое время?
Кроме того, есть такая штучка FadeTo, которая подсвечивает сам экран (к секторам отношения не имеет).
Несмотря на обманчивое слово "fade" в названии, функция может сделать экран хоть белым, как при ядерной вспышке.
Может быть, этого будет достаточно?
1 4 3
c4tnt
Chief Petty Officer
Next rank: Chief Petty Officer after 56 points
934

Doom Rate: 2.13
Ссылка на пост №11 Отправлено: 06.07.12 16:52:05

Попробую сделать демку по последнему предложенному мною варианту, должно получиться вполне терпимо, думаю.
1
Maddzi [B0S]
- Lance Corporal -
Next rank: = Lance Corporal = after 38 points
212

Doom Rate: 1.98
Ссылка на пост №12 Отправлено: 07.07.12 09:32:54

VladGuardian :
В общем взаимоблокировку


Да запросто. Проблема в том, что свет молнии гаснет на протяжении какого-то кол-ва тиков, и баг случается именно тогда, когда выключатель срабатывает именно в этом промежутке. А вот как сделать так, чтобы молния не срабатывала перед потенциальным включением света, и при этом не свести на нет все световые эффекты, которые должен увидеть игрок изнутри дома - это и есть сложность.

VladGuardian :
Экхм... а тебе непременно


Непременно. Translucent там и так везде стоит. Смысл в том, что я хочу не вспышку на экране, а вспышку только в спец. секторах для придания большей реалистичности. Там у меня много секторов, которые отвечают непосредственно за освещение. А что до секторов, в которых должна вспыхивать молния - так там вообще стоит транслейт света потолка, чтобы он ни в коем случае не подсвечивался. Реалистичность - мое все. FadeTo тупо не прокатывает, а так конечно я эту команду знаю, и практически в каждом ваде использую.
Страница 1 из 1Перейти наверх
   Список разделов - Местечко мапперов и моддеров - Интересная проблема с ForceLightning и освещение секторов.

Игнор-лист
© iddqd.ru