Welcome to U.A.C. [O.S.A.]
login / register 
Status: Guest
Архивы форума | iddqd.ru
Wolf 3D
ПравилаПравила ПоискПоиск
18+
Тема для новичков. Вопросы по маппингу/моддингу - любые! Пред.  1, 2, 3 ... 60, 61, 62 ... 198, 199, 200  След.
   Список разделов - Флуд и устаревшие темы - Тема для новичков. Вопросы по маппингу/моддингу - любые!Ответить
АвторСообщение
theleo_ua
= Colonel =
Next rank: - Commissar - after 88 points
4802

Doom Rate: 1.8

Posts quality: +1033
Ссылка на пост №1201 Отправлено: 27.08.16 01:47:53
Вопрос реально нубский, но чет не получается реализовать без костылей: как сделать, чтобы в хаб-маппаке ACS скрипт выполнялся в начале спавна игрока (по аналогии с enter), но только один раз за всю игру? Т.е. скрипт грубо говоря должен сработать только в начале игры, и дальше на какие б карты игрок не пошел, скрипт уже не должен срабатывать.

Вопрос актуален как для хексена, где хабов несколько (скрипт должен сработать только в начале первого хаба), так и для страйфа, где хаб один.

Если я создаю переменную X вне скриптов, а в скрипте enter ставлю проверку "if x==0 then blablabla and X=1", то код blablabla все равно будет выполняться на каждом уровне (даже если на первую карту вернуться из другой)

пока нашел решение if (timer() == 0), но попахивает костылем - уверен что есть способы поадекватнее, просто пролетели мимо глаз
3 1
ZZYZX
- UAC Commissar -
Next rank: = UAC Commissar = after 16 pointsМодератор форума
6284

Doom Rate: 1.65

Posts quality: +1631
Ссылка на пост №1202 Отправлено: 27.08.16 02:07:20
theleo_ua:
Если я создаю переменную X вне скриптов, а в скрипте enter ставлю проверку "if x==0 then blablabla and X=1", то код blablabla все равно будет выполняться на каждом уровне (даже если на первую карту вернуться из другой)

Странно. Не должно быть так.
2 2 1
theleo_ua
= Colonel =
Next rank: - Commissar - after 88 points
4802

Doom Rate: 1.8

Posts quality: +1033
Ссылка на пост №1203 Отправлено: 27.08.16 03:14:24
ZZYZX:
Странно. Не должно быть так.


уменьшил длину имени переменной, теперь скрипт в рамках одной карты срабатывает только 1 раз (т.е. если например на 5-й карте сработал, то при повторном посещении 5-й карты уже не будет срабатывать), но тем не менее он сработает на каждой карте, а требуется, чтобы только на первой

вот код:

Скрытый текст:

#library "TEST" // Name of the library
#include "zcommon.acs"

int X = 0;

script "Test_Enter" enter
{

if (X == 0)
{

printbold(s:"X = ", d:X);

X = 1;

}//if (X == 0)

}//script "Test_Enter" enter

//------------------------------------------------------------------------------------------------



здесь только средствами ACS чекать имя карты, или есть получше способ? Чеканье имени карты плохо тем, что если игрок запустит игру например в стиле "-warp 5" (или в консоли напишет map map05), то надо, чтобы на 5-й карте сработал скрипт, а на других картах уже нет

GZDoom 2.1.1 x64, iwad=strife1.wad
3 1
ZZYZX
- UAC Commissar -
Next rank: = UAC Commissar = after 16 pointsМодератор форума
6284

Doom Rate: 1.65

Posts quality: +1631
Ссылка на пост №1204 Отправлено: 27.08.16 03:54:05
Тьфу, у тебя либрари. Тогда выкинь то что я говорил, и Timer()=0 и по названию/номеру карты. GetLevelInfo(LEVELINFO_LEVELNUM).
2 2 1
theleo_ua
= Colonel =
Next rank: - Commissar - after 88 points
4802

Doom Rate: 1.8

Posts quality: +1033
Ссылка на пост №1205 Отправлено: 27.08.16 04:04:17
ZZYZX:
Тьфу, у тебя либрари


здесь подробней: если удалить строку
#library "TEST" // Name of the library
то должно работать как ты писал в предыдущих комментариях?

или ты имеешь в виду, что объявление переменной X должно быть в том файле, который не library, а остальной код может быть в library?
3 1
ZZYZX
- UAC Commissar -
Next rank: = UAC Commissar = after 16 pointsМодератор форума
6284

Doom Rate: 1.65

Posts quality: +1631
Ссылка на пост №1206 Отправлено: 27.08.16 07:25:09
Я имею в виду, что порядок, момент и разделение подгрузки библиотек известно одному ранди хайту.
То есть хрен знает, у тебя между несколькими картами/хабами один экземпляр библиотеки (а также набора переменных, т.е. int X) используется, или разные. Зависит от направления и силы ветра на Марсе.
В данном случае лучше полагаться на глобальную информацию, то есть Timer()==0, либо global переменную (не world!), а ещё лучше запросить скрипт с карты. То есть например в библиотеке
script "IsMyLibraryRequired" (void) { SetResultValue(0); }
, а в карте
script "IsMyLibraryRequired" (void) { SetResultValue(1); }
.
2 2 1
YURA_111
UAC Sergeant Major
Next rank: Chief Petty Officer after 82 points
768

Doom Rate: 1.98

Posts quality: +136
Ссылка на пост №1207 Отправлено: 27.08.16 20:24:00
Доброго времени суток!

Народ никто часом не знает почему в оружейном стейте "USER1" не работают функции - например A_Refire? В Юзерах 2 или 3 все работает. Если это баг - большая просьба сообщить об этом на их форуме...
theleo_ua
= Colonel =
Next rank: - Commissar - after 88 points
4802

Doom Rate: 1.8

Posts quality: +1033
Ссылка на пост №1208 Отправлено: 29.08.16 05:57:06
Каким образом можно скриптами (например декорейтом или acs) поставить игру на паузу? Имею в виду, что происходит например какое-то ключевое событие, после чего "весь уровень, включая и игрока", ставится на паузу, у игрока на экране начинают появляться сообщения (пускай это будут hudmessag-и с delay-ями), и когда все сообщения показаны, пауза отжимается и игра продолжается

В идеале, чтобы в процессе паузы никакие другие скрипты, в том числе и те, которые встроены в саму карту, не выполнялись (либо не срабатывали, либо тоже были "на паузе")

И естественно, у игрока не должно быть возможности эту паузу "отключить", она отключается сама когда заканчивается сам скрипт паузы
3 1
ZZYZX
- UAC Commissar -
Next rank: = UAC Commissar = after 16 pointsМодератор форума
6284

Doom Rate: 1.65

Posts quality: +1631
Ссылка на пост №1209 Отправлено: 29.08.16 08:10:21
Нельзя.
2 2 1
alekv
- Colonel -
Next rank: = Colonel = after 272 pointsМодератор форума
4168

Doom Rate: 1.87

Posts quality: +949
Ссылка на пост №1210 Отправлено: 29.08.16 09:06:10
theleo_ua
Так есть же вещь поверап какой-то который замораживает все..? Его же можно давать когда надо и забирать, а скрипты все писать с учетом этой вещи, если она есть то скрипт suspend.
1 3 1
theleo_ua
= Colonel =
Next rank: - Commissar - after 88 points
4802

Doom Rate: 1.8

Posts quality: +1033
Ссылка на пост №1211 Отправлено: 29.08.16 12:32:55
alekv:
а скрипты все писать с учетом этой вещи


В этом и проблема, скрипты не мои, я делаю мод сверху. Если бы скрипты писал я, то не было бы необходимости ставить игру на паузу

ZZYZX:
Нельзя.


жаль
3 1
ZZYZX
- UAC Commissar -
Next rank: = UAC Commissar = after 16 pointsМодератор форума
6284

Doom Rate: 1.65

Posts quality: +1631
Ссылка на пост №1212 Отправлено: 29.08.16 12:48:55
alekv:
Так есть же вещь поверап какой-то который замораживает все..?

Кроме скриптов и движения секторов. Причём движение секторов это самая большая проблема.
2 2 1
theleo_ua
= Colonel =
Next rank: - Commissar - after 88 points
4802

Doom Rate: 1.8

Posts quality: +1033
Ссылка на пост №1213 Отправлено: 29.08.16 13:04:53
alekv:
Так есть же вещь поверап какой-то который замораживает все..? Его же можно давать когда надо и забирать, а скрипты все писать с учетом этой вещи, если она есть то скрипт suspend.


ZZYZX:
Кроме скриптов и движения секторов. Причём движение секторов это самая большая проблема.


Собственно есть карта, у которой есть deathsequence: когда игрок дохнет, уровень завершается и запускается слайдшоу "плохого конца игры". Мне надо, чтобы "игрока заморозило" как раз в момент его смерти, но до завершения уровня и начала слайдшоу (и потом когда я покажу все мессаги которые хочу, я разморожу игрока, уровень завершится и начнется слайдшоу)
3 1
alekv
- Colonel -
Next rank: = Colonel = after 272 pointsМодератор форума
4168

Doom Rate: 1.87

Posts quality: +949
Ссылка на пост №1214 Отправлено: 29.08.16 19:29:00
theleo_ua
Мод создается под конкретную игру или для другого мода? Мб можно просто сделать скрипт у себя по такому типу
Script "test" (void)
{
if(pause==yes){
ACS_Suspend("скрипт который надо приостановить");//На сколько я понимаю, остановит этот скрипт где бы он ни был
}}
Ну и так вписать все скрипты которые надо остановить, как вариант.
Да и есть же тип скрипта DEATH который сработает когда игрок умер
1 3 1
theleo_ua
= Colonel =
Next rank: - Commissar - after 88 points
4802

Doom Rate: 1.8

Posts quality: +1033
Ссылка на пост №1215 Отправлено: 29.08.16 22:30:43
alekv:
Мод создается под конкретную игру


да, для игры strife, ванильная 29-я карта

alekv:
ACS_Suspend("скрипт который надо приостановить


а как мне этот скрипт найти, если он там не в ACS формате? В ванильном страйфе вообще не было такого понятия как ACS

alekv:
Да и есть же тип скрипта DEATH который сработает когда игрок умер


буду молиться, чтобы он сработал ДО deathsequence, и не дал сработать deathsequenc-у пока игрок не разморозится
3 1
Warrior
= Sergeant =
Next rank: - Master Sergeant - after 3 points
397

Doom Rate: 3.64

Posts quality: +88
Ссылка на пост №1216 Отправлено: 29.08.16 23:39:14
Помогите советом. Создаю очередной эпичный вад. Если кто не в курсе - делаю вады исключительно под классику. Проблема такова: одна из областей вада должна быть довольно тёмной, для пущей атмосферности. Однако совершенно не планировалось создать для игрока потёмки, в которые совершенно не хочется играть. Есть ли какой-то стандарт, настройки порта, по которому можно проверить свет? Да, освещение на этом участке карты стоит 112. Всё видно. Но стоит Gamma Correction чуть опустить, и становится темно аки в гробу :)
3 3
ZZYZX
- UAC Commissar -
Next rank: = UAC Commissar = after 16 pointsМодератор форума
6284

Doom Rate: 1.65

Posts quality: +1631
Ссылка на пост №1217 Отправлено: 30.08.16 06:35:51
GZDoom, например. Там есть режим равномерного распределения яркостей. Ещё можно отредачить колормап, но это задача на любителя математики и скриптинга.
В классической модели освещения в принципе нет состояния "уже не очень светло, но ещё не глаз выколи". Точнее есть, но что-то вроде 128-136, никак не 112. Ниже 80 это уже совсем жопа.
Если хочется сделать темнее, то это 164-172 на светлой части карты, и 128-136 на тёмной.
2 2 1
Zeberpal_98
Chief Petty Officer
Next rank: Chief Petty Officer after 3 points
937

Doom Rate: 2.15

Posts quality: +255
Ссылка на пост №1218 Отправлено: 30.08.16 09:58:25
ZZYZX, ну и ну. Я собирался индусничать и писать 6.5к строк, если понадобится. Не думал, что в АЦС можно разделить название файла. Иной раз поражаюсь, тому что ты делаешь.
Почему кстати ты и музыку поделил, одним файлом же тоже получится?

theleo_ua
ZZYZX
А ведь можно Timefreeze пауэрапом исхитриться и сэмулировать паузу? Или это только зандронумовская фича?
1 3
ZZYZX
- UAC Commissar -
Next rank: = UAC Commissar = after 16 pointsМодератор форума
6284

Doom Rate: 1.65

Posts quality: +1631
Ссылка на пост №1219 Отправлено: 30.08.16 10:02:21
Zeberpal_98:
Почему кстати ты и музыку поделил, одним файлом же тоже получится?

Чтобы при паузе паузилось и играло с нужного момента.

Zeberpal_98:
А ведь можно Timefreeze пауэрапом исхитриться и сэмулировать паузу? Или это только зандронумовская фича?

Потому что надо читать что я пишу. Скрипты НЕ ОСТАНОВЯТСЯ при таймфризе. Движущиеся сектора НЕ ОСТАНОВЯТСЯ при таймфризе. (акторы с +NOTIMEFREEZE тоже НЕ ОСТАНОВЯТСЯ при таймфризе). Таймфриз это аналог команды freeze.
2 2 1
Warrior
= Sergeant =
Next rank: - Master Sergeant - after 3 points
397

Doom Rate: 3.64

Posts quality: +88
Ссылка на пост №1220 Отправлено: 30.08.16 12:29:30
ZZYZX:
Точнее есть, но что-то вроде 128-136, никак не 112

ZZYZX
ясно. Тогда поменяю на 128.
3 3
Страница 61 из 200Перейти наверх Пред.  1, 2, 3 ... 60, 61, 62 ... 198, 199, 200  След.
   Список разделов - Флуд и устаревшие темы - Тема для новичков. Вопросы по маппингу/моддингу - любые!