Вопрос реально нубский, но чет не получается реализовать без костылей: как сделать, чтобы в хаб-маппаке ACS скрипт выполнялся в начале спавна игрока (по аналогии с enter), но только один раз за всю игру? Т.е. скрипт грубо говоря должен сработать только в начале игры, и дальше на какие б карты игрок не пошел, скрипт уже не должен срабатывать.
Вопрос актуален как для хексена, где хабов несколько (скрипт должен сработать только в начале первого хаба), так и для страйфа, где хаб один.
Если я создаю переменную X вне скриптов, а в скрипте enter ставлю проверку "if x==0 then blablabla and X=1", то код blablabla все равно будет выполняться на каждом уровне (даже если на первую карту вернуться из другой)
пока нашел решение if (timer() == 0), но попахивает костылем - уверен что есть способы поадекватнее, просто пролетели мимо глаз
Если я создаю переменную X вне скриптов, а в скрипте enter ставлю проверку "if x==0 then blablabla and X=1", то код blablabla все равно будет выполняться на каждом уровне (даже если на первую карту вернуться из другой)
уменьшил длину имени переменной, теперь скрипт в рамках одной карты срабатывает только 1 раз (т.е. если например на 5-й карте сработал, то при повторном посещении 5-й карты уже не будет срабатывать), но тем не менее он сработает на каждой карте, а требуется, чтобы только на первой
вот код:
Скрытый текст:
#library "TEST" // Name of the library #include "zcommon.acs"
здесь только средствами ACS чекать имя карты, или есть получше способ? Чеканье имени карты плохо тем, что если игрок запустит игру например в стиле "-warp 5" (или в консоли напишет map map05), то надо, чтобы на 5-й карте сработал скрипт, а на других картах уже нет
Я имею в виду, что порядок, момент и разделение подгрузки библиотек известно одному ранди хайту. То есть хрен знает, у тебя между несколькими картами/хабами один экземпляр библиотеки (а также набора переменных, т.е. int X) используется, или разные. Зависит от направления и силы ветра на Марсе. В данном случае лучше полагаться на глобальную информацию, то есть Timer()==0, либо global переменную (не world!), а ещё лучше запросить скрипт с карты. То есть например в библиотеке
Народ никто часом не знает почему в оружейном стейте "USER1" не работают функции - например A_Refire? В Юзерах 2 или 3 все работает. Если это баг - большая просьба сообщить об этом на их форуме...
Каким образом можно скриптами (например декорейтом или acs) поставить игру на паузу? Имею в виду, что происходит например какое-то ключевое событие, после чего "весь уровень, включая и игрока", ставится на паузу, у игрока на экране начинают появляться сообщения (пускай это будут hudmessag-и с delay-ями), и когда все сообщения показаны, пауза отжимается и игра продолжается
В идеале, чтобы в процессе паузы никакие другие скрипты, в том числе и те, которые встроены в саму карту, не выполнялись (либо не срабатывали, либо тоже были "на паузе")
И естественно, у игрока не должно быть возможности эту паузу "отключить", она отключается сама когда заканчивается сам скрипт паузы
theleo_ua Так есть же вещь поверап какой-то который замораживает все..? Его же можно давать когда надо и забирать, а скрипты все писать с учетом этой вещи, если она есть то скрипт suspend.
Так есть же вещь поверап какой-то который замораживает все..? Его же можно давать когда надо и забирать, а скрипты все писать с учетом этой вещи, если она есть то скрипт suspend.
ZZYZX:
Кроме скриптов и движения секторов. Причём движение секторов это самая большая проблема.
Собственно есть карта, у которой есть deathsequence: когда игрок дохнет, уровень завершается и запускается слайдшоу "плохого конца игры". Мне надо, чтобы "игрока заморозило" как раз в момент его смерти, но до завершения уровня и начала слайдшоу (и потом когда я покажу все мессаги которые хочу, я разморожу игрока, уровень завершится и начнется слайдшоу)
theleo_ua Мод создается под конкретную игру или для другого мода? Мб можно просто сделать скрипт у себя по такому типу Script "test" (void) { if(pause==yes){ ACS_Suspend("скрипт который надо приостановить");//На сколько я понимаю, остановит этот скрипт где бы он ни был }} Ну и так вписать все скрипты которые надо остановить, как вариант. Да и есть же тип скрипта DEATH который сработает когда игрок умер
Помогите советом. Создаю очередной эпичный вад. Если кто не в курсе - делаю вады исключительно под классику. Проблема такова: одна из областей вада должна быть довольно тёмной, для пущей атмосферности. Однако совершенно не планировалось создать для игрока потёмки, в которые совершенно не хочется играть. Есть ли какой-то стандарт, настройки порта, по которому можно проверить свет? Да, освещение на этом участке карты стоит 112. Всё видно. Но стоит Gamma Correction чуть опустить, и становится темно аки в гробу
GZDoom, например. Там есть режим равномерного распределения яркостей. Ещё можно отредачить колормап, но это задача на любителя математики и скриптинга. В классической модели освещения в принципе нет состояния "уже не очень светло, но ещё не глаз выколи". Точнее есть, но что-то вроде 128-136, никак не 112. Ниже 80 это уже совсем жопа. Если хочется сделать темнее, то это 164-172 на светлой части карты, и 128-136 на тёмной.
ZZYZX, ну и ну. Я собирался индусничать и писать 6.5к строк, если понадобится. Не думал, что в АЦС можно разделить название файла. Иной раз поражаюсь, тому что ты делаешь. Почему кстати ты и музыку поделил, одним файлом же тоже получится?
theleo_ua ZZYZX А ведь можно Timefreeze пауэрапом исхитриться и сэмулировать паузу? Или это только зандронумовская фича?
Почему кстати ты и музыку поделил, одним файлом же тоже получится?
Чтобы при паузе паузилось и играло с нужного момента.
Zeberpal_98:
А ведь можно Timefreeze пауэрапом исхитриться и сэмулировать паузу? Или это только зандронумовская фича?
Потому что надо читать что я пишу. Скрипты НЕ ОСТАНОВЯТСЯ при таймфризе. Движущиеся сектора НЕ ОСТАНОВЯТСЯ при таймфризе. (акторы с +NOTIMEFREEZE тоже НЕ ОСТАНОВЯТСЯ при таймфризе). Таймфриз это аналог команды freeze.