Welcome to U.A.C. [O.S.A.]
login / register
Status: Guest
Архивы форума | iddqd.ru
Wolf 3D
ПравилаПравила ПоискПоиск
18+
Тема для новичков. Вопросы по маппингу/моддингу - любые!-2 Пред.  1, 2, 3 ... 10, 11, 12 ... 16, 17, 18  След.
   Список разделов - Местечко мапперов и моддеров - Тема для новичков. Вопросы по маппингу/моддингу - любые!-2Ответить
АвторСообщение
Void Weaver
= Captain =
Next rank: - Major - after 144 points
2496

Doom Rate: 1.82

Posts quality: +774
Ссылка на пост №201 Отправлено: 02.08.19 15:45:57
В bounce-снаряд можно прописать одноимённый стэйт в котором (стэйте) может выполняться последовательность действий, если таковые прописаны.
Так же любому актору можно выставить REFLECTIVE флаг который заставит отскакивать снаряды от этого актора.

Вопрос: есть ли какой-нибудь декор (или хотя бы АЦС) способ вклинить выполнение неких действий после отражения снаряда флагом REFLECTIVE, по аналогии с баунс-стэйтом снаряда; иными словами: как выполнить чек на то что сработал флаг REFLECTIVE? Или это можно только через зскрипт?
-----------
И всё таки я был бы признателен если кто подскажет как написать такой скрипт:
Void Weaver пишет:
Нужен скрипт который активируется игроком и при этом раздаёт некий итем ВСЕМ монстрам и итемам (оружию, патронам, ключам, аптечкам, бронькам, пауэрапам) на карте.
1 9 1
SSV_Victoryan
UAC Sergeant Major
Next rank: UAC Sergeant Major after 17 points
743

Doom Rate: 2.2

Posts quality: +215
Ссылка на пост №202 Отправлено: 03.08.19 15:08:41
Привет всем! Вопрос: можно ли выводить на экран во время прохождения карты составные тексты?
Я имею ввиду небольшой текст за которым следует другой небольшой текст показывающий значение переменной.

Пример такого текста:
pressed switches 6

Где слова "pressed switches" это обычный текст, а цифра "6" это своего рода счётчик, показывающий сколько рубильников нажато, то есть шестёрка это переменная которая показывается прямо в тексте (pressed switches 1, pressed switches 2, 3, 4 и т.п...)
Формат ACS скрипт. Кто шарит помогите пожалуйста :bitsa:
2
Void Weaver
= Captain =
Next rank: - Major - after 144 points
2496

Doom Rate: 1.82

Posts quality: +774
Ссылка на пост №203 Отправлено: 03.08.19 15:21:30
Да это просто Print без всяких заморочек.
Print(s:"Pressed switches ", d:n); //где int n = ко-во активированных ключей

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

Попробуй так:

int doorvar1 = 0;
script 2 (void){ doorvar1++; print(s:"pressed switches ",d:doorvar1); Door1(); } //Полагаю это скрипты срабатывающие при нежатии свитча?
script 3 (void){ doorvar1++; print(s:"pressed switches ",d:doorvar1); Door1(); }
function void Door1 (void)
{ if (doorvar1 == 2)
{ print(s: "central door is open");
ambientsound("Sound/gong", 100);
}
Else{}
}

Рейтинг сообщения: +1, отметил(и): SSV_Victoryan
1 9 1
SSV_Victoryan
UAC Sergeant Major
Next rank: UAC Sergeant Major after 17 points
743

Doom Rate: 2.2

Posts quality: +215
Ссылка на пост №204 Отправлено: 03.08.19 15:51:04
Void Weaver
Сделал тестовую версию, по началу не работала. Из-за спешки не там символы понаставил и ещё при первом нажатии ноль показывал, не мог понять почему, оказалось нужно принт ставить после начисления переменной Оо сам допёр, как не знаю))) Благодарилую!!!
Скрытый текст:

int mapvar1;

script 2 (void) { mapvar1++; print(s: "pressed switches 2/", d:mapvar1); Door1(); }
script 3 (void) { mapvar1++; print(s: "pressed switches 2/", d:mapvar1); Door1(); }
function void Door1 (void)
{  if (mapvar1 == 2)
   {  //print(s: "central door is open");
      ambientsound("Sound/gong", 100);
   }
  if (mapvar1 == 6)
   {  //print(s: "central door is open");
      ambientsound("Sound/Gurgles", 100);
   }
}

2
Void Weaver
= Captain =
Next rank: - Major - after 144 points
2496

Doom Rate: 1.82

Posts quality: +774
Ссылка на пост №205 Отправлено: 03.08.19 16:11:46
SSV_Victoryan пишет:
print(s: "pressed switches 2/", d:mapvar1)
Вообще-то принято записывать "столько-то"/"из стольких-то", на мой взгляд тогда уж правильнее записывать:
print(s:"pressed switches ",d:mapvar1,s:"/2") // будет печатать "pressed switches х/2".

Рейтинг сообщения: +1, отметил(и): SSV_Victoryan
1 9 1
SSV_Victoryan
UAC Sergeant Major
Next rank: UAC Sergeant Major after 17 points
743

Doom Rate: 2.2

Posts quality: +215
Ссылка на пост №206 Отправлено: 03.08.19 16:23:59
Void Weaver пишет:
Вообще-то принято записывать "столько-то"/"из стольких-то", на мой взгляд тогда уж правильнее записывать:
print(s:"pressed switches ",d:mapvar1,s:"/2") // будет печатать "pressed switches х/2".


Ну всё, теперь хоть в музей, только нужно не забыть убрать "повторитель" с кнопки :shock: :D
2
Doomgay1999
= UAC Gunner =
Next rank: - Corporal - after 10 points
70

Doom Rate: 2

Posts quality: -1
Ссылка на пост №207 Отправлено: 08.08.19 04:08:08
Как сделать так чтобы на уровне играли случайные треки?
Void Weaver
= Captain =
Next rank: - Major - after 144 points
2496

Doom Rate: 1.82

Posts quality: +774
Ссылка на пост №208 Отправлено: 08.08.19 11:26:59
Doomgay1999 пишет:
Как сделать так чтобы на уровне играли случайные треки?
Случайно вызывать (Local)SetMusic.
1 9 1
FoxPlays
= Master Sergeant =
Next rank: - Sergeant Major - after 42 points
488

Doom Rate: 2.31

Posts quality: +210
Ссылка на пост №209 Отправлено: 08.08.19 14:26:12
Есть-ли рабочий способ добавить в GZDoom Builder тест на DOSBox ?
1 1 1
Doomgay1999
= UAC Gunner =
Next rank: - Corporal - after 10 points
70

Doom Rate: 2

Posts quality: -1
Ссылка на пост №210 Отправлено: 10.08.19 06:09:29
Где мне можно скачать вырезаную миди музыку в думе?
Void Weaver
= Captain =
Next rank: - Major - after 144 points
2496

Doom Rate: 1.82

Posts quality: +774
Ссылка на пост №211 Отправлено: 10.08.19 06:29:55
Выбирай. Не за что.
1 9 1
FoxPlays
= Master Sergeant =
Next rank: - Sergeant Major - after 42 points
488

Doom Rate: 2.31

Posts quality: +210
Ссылка на пост №212 Отправлено: 10.08.19 12:28:20
Doomgay1999

Вот сайт, там есть кнопка которая скачивает архив со всеми миди с дум 1/2 - * сайт *
1 1 1
Chaingunner
- 2nd Lieutenant -
Next rank: = 2nd Lieutenant = after 67 points
1373

Doom Rate: 2.16

Posts quality: +339
Ссылка на пост №213 Отправлено: 10.08.19 12:40:07
Doomgay1999 пишет:
Где мне можно скачать вырезаную миди музыку в думе?

Если ты про треки, не вошедшие в игру, то тут:
https://web.archive.org/web/20140310123519/http://rome.ro/2007/06/doom-archaeology.html
1 1 2
Void Weaver
= Captain =
Next rank: - Major - after 144 points
2496

Doom Rate: 1.82

Posts quality: +774
Ссылка на пост №214 Отправлено: 17.08.19 00:21:04
1. Схожая задача уже поднималась в этом треде но дискуссия вокруг решения оной особого развития не получила.

Чуток обрисую нынешнюю проблему. Игрок ставит стационарную турель которая выдаёт игроку бобло как только цель турели (монстр) скопытится. Проблема в том что если один монстр является целью сразу нескольких турелей, то по смерти монстра ревард игроку выдадут ВСЕ турели для которых усопший был последней целью.
Отсюда вопрос следующий: каким образом можно отследить и зафиксировать авторство убийства одного актора другим БЕЗ модификации кода жертв? Годится любой метод, но лично мне предпочтительней решение на декоре.
----
2. Есть ли какой-нибудь способ визуализировать field of view+sight range актора в перекрестии прицела? Т. е. например наводишь прицел на актор и под ним тут же отрисовывается сектор (в визуальном смысле а не в смысле маппинга) отражающий текущие параметры A_LookEx? Ну типа если у цели field of view = 45 градусам а sight range = 500, то и сектор на полу будет подсвечен ровно на 500 мапюнитов и строго в диапазоне 45 градусов от "лица" цели.

Рейтинг сообщения: +1, отметил(и): FoxPlays
1 9 1
Герр Смертоносец
= Sergeant Major =
Next rank: UAC Sergeant Major after 43 points
637

Doom Rate: 1.52

Posts quality: +395
Ссылка на пост №215 Отправлено: 17.08.19 01:13:28
Void Weaver
1. Посмертно выдать цели итем, который может существовать в инвентаре в единственном экземпляре. А значит, и чекнуть+изъять для подтверждения реварда его можно один лишь раз.

2. Здесь проблема не в способе визуализации (можно какие-нибудь 3д-модели скейлить), а в выковыривании настроек A_LookEx. Это ведь вообще не Property, ни через CheckActorProperty, ни зскриптом это не вытащить. Если не трогать код монстра, единственный зыбкий путь, который я вижу - это мутить какие-то тестовые объекты, которые будут агрить монстра на себя, предварительно запомнив его стейт и возвращая ему его стейт. И багов здесь будет просто овердофига.

Хотя я, конечно, плохо знаю зскрипт. Возможно, где-то в недокументированных глубинах и есть какая-нибудь хрень, позволяющая спарсить текст исполняемой строчки декорейта, но скорее всего это из области фантастики.

Рейтинг сообщения: +1, отметил(и): FoxPlays
2
Void Weaver
= Captain =
Next rank: - Major - after 144 points
2496

Doom Rate: 1.82

Posts quality: +774
Ссылка на пост №216 Отправлено: 17.08.19 04:34:57
Герр Смертоносец пишет:
1. Посмертно выдать цели итем, который может существовать в инвентаре в единственном экземпляре.
А можно чуток подробнее кто кому должен выдавать итем (аутентификатор выдачи реварда, да?)? Если что, то по умолчанию игрок остаётся целью монстров, исходя из того что турели не нацеливаемые.
Олсо, до публикации вопроса я было попробовал замхать выдачу хабара игроку непосредственно из самого пуффа, и казалось бы что всё логично, правильно, красиво и косяков не содержит по определению. Но ВНЕЗАПНО хз по какой причине периодически таки продолжает проскакивать двойная награда:
Скрытый текст:

Actor TurretPuff : BulletPuff
{
+PUFFONACTORS
+HITTRACER
+PUFFGETSOWNER
var int user_lootClass;
States
{
Spawn:
TNT1 A 0 NoDelay A_CheckFlag("NOBLOOD","XDeath",AAPTR_TRACER)
Goto Super::Spawn

XDeath:
TNT1 A 1 A_ChangeFlag("ALLOWPARTICLES",0) //Тут ОБЯЗАТЕЛЬНО должен быть буфферный ТИК!
//TNT1 A 0 A_CheckFlag("CORPSE","GiveReward",AAPTR_TRACER)
//TNT1 A 0 A_JumpIfHealthLower(1,"GiveReward",AAPTR_TRACER) //У некоторых монстров может не быть трупа, так что универсальней чекать хп
TNT1 A 0 //На всякий пожарный 2 в одном
{
If(A_JumpIfHealthLower(1,"GiveReward",AAPTR_TRACER)&&A_CheckFlag("CORPSE","GiveReward",AAPTR_TRACER)){Return state("GiveReward");}
Else{Return state("");}
}
Stop

GiveReward:
TNT1 A 0 A_PlaySound("brain/pain",0)
//TNT1 A 0 A_GiveToTarget("RewardActivator")
//*
TNT1 A 0
{
If(CheckClass("ZombieMan",AAPTR_TRACER,1)){user_lootClass=1;Return state("");}
Else If(CheckClass("ShotgunGuy",AAPTR_TRACER,1)){user_lootClass=2;Return state("");}
Else If(CheckClass("ChaingunGuy",AAPTR_TRACER,1)){user_lootClass=4;Return state("");}
Else If(CheckClass("DoomImp",AAPTR_TRACER,1)){user_lootClass=3;Return state("");} //Иногда 1 импа таки "валят" сразу 1+ пушки и получаем 6 шеллсов, такое впечатление что это тот случай когда сбоит та самая "распределённая одновременность": http://i.iddqd.ru/viewtopic.php?p=104278#104278
Else If(CheckClass("Demon",AAPTR_TRACER,1)){user_lootClass=4;Return state("");}
Else If(CheckClass("LostSoul",AAPTR_TRACER,1)){user_lootClass=0;Return state("");}
Else If(CheckClass("Revenant",AAPTR_TRACER,1)){user_lootClass=7;Return state("");}
Else If(CheckClass("Cacodemon",AAPTR_TRACER,1)){user_lootClass=6;Return state("");}
Else If(CheckClass("HellKnight",AAPTR_TRACER,1)){user_lootClass=7;Return state("");}
Else If(CheckClass("BaronofHell",AAPTR_TRACER,1)){user_lootClass=8;Return state("");}
Else If(CheckClass("Arachnotron",AAPTR_TRACER,1)){user_lootClass=7;Return state("");}
Else If(CheckClass("Fatso",AAPTR_TRACER,1)){user_lootClass=8;Return state("");}
Else If(CheckClass("Archvile",AAPTR_TRACER,1)){user_lootClass=9;Return state("");}
Else If(CheckClass("SpiderMastermind",AAPTR_TRACER,1)){user_lootClass=10;Return state("");}
//Else If(CheckClass("Cyberdemon",AAPTR_TRACER,1)){user_lootClass=10;Return state("");}
Else{user_lootClass=10;Return state("");} //Значит остался только Кибер
}
//TNT1 A 0 A_GiveToTarget("Shell",user_lootClass) //Строка для использования из волыны
TNT1 A 0 A_RearrangePointers(AAPTR_DEFAULT,AAPTR_DEFAULT,AAPTR_NULL) //На всякий пожарный?...
TNT1 A 0 A_GiveToTarget("Shell",user_lootClass,AAPTR_MASTER)
//*/
Stop
}
}

----
2. Не-не, для этого пункта код монстра вполне открыт для любых модификаций. Вернуть параметры A_LookEx я полагаю ваще изи если использовать для оных юзерварки. Честно говоря меня как раз интересует гибкость визуализации. И если то, как отрисовывать на полу круг с динамичным радиусом это хотя бы относительно понятно, то вот как рисовать динамичную "дольку" (при FoV<360) я вообще хз.
Мб. как-нибудь через A_SetVisibleRotation?

Рейтинг сообщения: +1, отметил(и): FoxPlays
1 9 1
Герр Смертоносец
= Sergeant Major =
Next rank: UAC Sergeant Major after 43 points
637

Doom Rate: 1.52

Posts quality: +395
Ссылка на пост №217 Отправлено: 17.08.19 07:12:40
Void Weaver пишет:
А можно чуток подробнее кто кому должен выдавать итем (аутентификатор выдачи реварда, да?)?

Ну для начала рассмотрим простейший пулемётно-хитскановый случай.
1. Турель лупит по монстру, с каждым выстрелом делая A_JumpIfHealthLower(1, int offset , AAPTR_TARGET), и как только здоровье монстра падает до нуля - выдаёт ему итем.
2. Идёт небольшая задержка. (Для надёжности её можно рандомизировать, загнав фрейм в бесконечный самоповтор с джампом на выход с некоторым шансом).
3. Проверка A_JumpIfInventory("итем",1, int offset,AAPTR_TARGET) ведёт на действие: забрать у таргета итем, дать игроку награду.
4. Далее A_ClearTarget.
В теории, даже если несколько турелей попадут на этап 3 одновременно, то обрабатывать их движок будет по очереди. И как только одна из них изымет у таргета итем - все остальные уже не смогут пройти эту проверку.

С ракетными турелями всё чуть сложнее, ракета сразу после спауна должна узнавать у турели её текущий таргет и записывать в AAPTR_TRACER. При попадании в цель все вышеописанные действия совершает уже ракета (разумеется, вместо таргетфилда теперь трасерфилд).

Void Weaver пишет:
И если то, как отрисовывать на полу круг с динамичным радиусом это хотя бы относительно понятно, то вот как рисовать динамичную "дольку" (при FoV<360) я вообще хз.

A_SetVisibleRotation всего лишь делает объект невидимым с некоторых ракурсов, так что она тут малополезна.

Вообще, если решать задачу "в тупую", то можно установить шаг погрешности (допустим, 10 градусов) и спаунить под объектом модель вида "плоский треугольник" в количестве от 1 до 36 штук. Вершина треугольника должна быть координатным центром модели, а радиус мы задаём через Scale. (Здесь есть некоторая жопа в том, что параметр ограничен значением 4.0, так что изначально должен быть выставлен сильно меньше 1.)

Если решать умнее, то мы спауним всего 8 треугольников, чтобы было похоже на логотип Umbrella corporation. По дефолту треугольники имеют угол 45 градусов и разложены по полу с шагом в 45 градусов. Но если применить особую уличную магию тригонометрии, то можно определить коэффициент YScale для любого числа градусов. (Навскидку K = tg(α/2)/tg(45/2), если я ничего не путаю). В этом случае мы одновременно уменьшаем угловой шаг и угловой размер треугольника, и логотип Umbrella corporation превращается в китайский веер, который может быть разложен на какой угодно угол от 0 до 360, и давать точный результат при экономии полигонов.
Да, там вылезет небольшая проблема центровки, ибо линия, разделяющая треугольники №4 и №5 должна быть сориентирована чётко по морде монстра, т.е. их угол должен равняться "собственный угол монстра ± шаг/2", но это уже всё легко и понятно делается.

Рейтинг сообщения: +2, отметил(и): Void Weaver, FoxPlays
2
Void Weaver
= Captain =
Next rank: - Major - after 144 points
2496

Doom Rate: 1.82

Posts quality: +774
Ссылка на пост №218 Отправлено: 17.08.19 08:28:22
1. Так, я в общем подозревал что будет шило на мыло, ну в общем оно так и вышло: остальные турели выполняют всё те же действия над всё той же ОБЩЕЙ целью! Лут сыпется как из ведра. :(
Пока что лучший результат показывает вышеприведённый пуфф, но хоть убей не понимаю в какой момент проскакивает мультилут.
Со снарядами полагаю механика будет аналогичная, причём подозреваю что заглюков с мультилутом у маслин будет меньше чем у хитсканов, либо вообще не будет такой проблемы. Но хитскан, ссука, никак не лечится, хотя по логике он-то как раз должен был бы полностью исключён из подобных коллизий - на 1 труп 1 пуля.
Есть ещё какие соображения, няш?

2. A_SetVisibleRotation - я полагал типа спаунить слоёнку "круглых" спрайтов, глядящих в разные стороны, видимость которых задавать через установку (не)видимого угла, а диапазон как раз брать из ФоВ _ЛукЭкса. Т. е. использовать функцию как общую маску для всех разнонаправленных слоёв круглых спрайтов, что в теории будет означать что с какой стороны не взгляни то везде будет отрисовываться видимый сектор ("долька") одного из кругов. Аналогично устройству механизма лимбового (сейфового) замка.

В моделях не шарю но на бумаге твой вариант выглядит перспективно. Подождём результатов от FoxPlays, если что. ;)

Рейтинг сообщения: +1, отметил(и): FoxPlays
1 9 1
FoxPlays
= Master Sergeant =
Next rank: - Sergeant Major - after 42 points
488

Doom Rate: 2.31

Posts quality: +210
Ссылка на пост №219 Отправлено: 17.08.19 12:48:09
По-эксперементировал -- без серьёзных результатов.

1. Пытался что-то похожее сделать на ACS, но без должных результатов. Если у меня всё-таки не получиться сделать эту штуку с деньгами, то сделаю деньги физическими, то-есть они будут выпадать с монстров. Лучший результат получился у воида, также спасибо и герру с помощью.

2. Визуальный радиус турелей не думаю добавлять, обойдусь добавлением информации о радиусе для турелей по типу - Radius: Small, Medium, Large.
На том спасибо.

:o

Рейтинг сообщения: +1, отметил(и): Void Weaver
1 1 1
Void Weaver
= Captain =
Next rank: - Major - after 144 points
2496

Doom Rate: 1.82

Posts quality: +774
Ссылка на пост №220 Отправлено: 17.08.19 14:29:03
FoxPlays пишет:
Если у меня всё-таки не получиться сделать эту штуку с деньгами, то сделаю деньги физическими, то-есть они будут выпадать с монстров.
Ну да, наверное это логично.
А игроку можно запилить что-то типа "магнитного" скилла который при юзе будет собирать дроп в радиусе на некоторой дистанции. Ну или со всей мапы. :)
Правда меня всё ещё интересует решение этой задачи именно через получение награды из самой турели или из инфликтора её урона. Иначе придётся оставить механизм выдачи экспы не за киллы а за нанесённый урон.

FoxPlays
2. Если будешь когда-нибудь работать с моделями попробуй реализовать визуализацию по методу Смертоносца. Отпишусь если получится по A_SetVisibleRotation.
1 9 1
Страница 11 из 18Перейти наверх Пред.  1, 2, 3 ... 10, 11, 12 ... 16, 17, 18  След.
   Список разделов - Местечко мапперов и моддеров - Тема для новичков. Вопросы по маппингу/моддингу - любые!-2