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

Doom Rate: 2.2

Posts quality: +150
Ссылка на пост №301 Отправлено: 02.10.19 22:33:37
Я делал недавно для тов. Liaslia костыльный бинокль, там можно посмотреть.
Вот последняя версия.
Суть: в начале уровня выдаю игроку вещь, которая контролирует нажатия кнопки по GetPlayerInput и вызывает оверлей. Из него можно менять fov (но только для оружия, находящегося на экране в данный момент; fov для оружия независим). Если не хочется менять существующий код оружия, то это сойдёт. Если имелось в виду, что оружие может быть вообще не выбрано, то работать, скорее всего, не будет (поскольку psprite-ов не будет).
Конечно же, это сделано на zscript.
Edit: Void Weaver успел отредактировать пост раньше.

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

Doom Rate: 1.82

Posts quality: +762
Ссылка на пост №302 Отправлено: 02.10.19 23:01:05
:)
N00b2015 пишет:
Если имелось в виду, что оружие может быть вообще не выбрано, то работать, скорее всего, не будет (поскольку psprite-ов не будет).
Кстати эту проблему давно хотел решить Apeirogon (на здум-форуме) ака Толик (на нашем форуме).
---
Рабочая версия моего предыдущего поста (по команде zoom):
Скрытый текст:

Actor FOVPistol : Pistol replaces Pistol
{
Weapon.SlotNumber 2
Weapon.SlotPriority 0
States
{
Select:
TNT1 A 0 A_Overlay(2,"FOVHandler")
SelectL:
SPRT A 1 A_Raise
Loop

FOVHandler:
TNT1 A 1
TNT1 A 1
{
If(GetPlayerInput(MODINPUT_BUTTONS)&BT_ZOOM)
    {
		If(CountInv("FoVCounter")==2)
			{
				A_TakeInventory("FoVCounter");
				A_ZoomFactor(1.0);
				Return state("");
			}
		Else If(CountInv("FoVCounter")==0)
			{
				A_GiveInventory("FoVCounter");
				A_ZoomFactor(2.5);
				Return state("");
			}
		Else If(CountInv("FoVCounter")==1)
			{
				A_GiveInventory("FoVCounter");
				A_ZoomFactor(0.75);
				Return state("");
			}
		Else{Return state("");}
    }
Else{Return state("");}
Loop
}
}

ACTOR FoVCounter : Inventory{Inventory.MaxAmount 2}


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

Doom Rate: 1.89

Posts quality: +98
Ссылка на пост №303 Отправлено: 02.10.19 23:09:11
Void Weaver и N00b2015

Спасибо за традиционно развернутые ответы, думаю я поступлю примерно так:



Actor YesChangeFOV: custom inventory



<...>


States
{
Select:
TNT1 A 0 A_Overlay(2,"FOVHandler")
SelectL:
SPRT A 1 A_Raise
Loop

FOVHandler:
TNT1 A 1
TNT1 A 1
{
If(CheckInventory("YesChangeFOV")
    {
        A_ZoomFactor(0.5);  //правда, вот время транзишина видимо менять нельзя
        Return state("");
    }

else if(!CheckInventory("YesChangeFOV")
    {
        A_ZoomFactor(1.0);
        Return state("");
    }
}
Loop

<...>
}

Void Weaver Скажи, selectL - опечатка? Асмысле нельзя ли A_Raise в один стейт с Оверлэй ставить, и в таком случае как ты переходишь в SelectL?

И Return state(""); зачем он здесь?

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

Doom Rate: 1.82

Posts quality: +762
Ссылка на пост №304 Отправлено: 02.10.19 23:18:06
1. Время транзишина можно настроить и на деко\ацс, но код будет массивнее в виду того что "зум" надо будет делать плавным с переменной в A_ZoomFactor.
2. SelectL c Loop - это НЕ опечатка, а замена Select с Goto Select+1. Просто я предпочитаю обосабливать подциклы добавлением буквы "L(oop)" к названию "основного" стэйта. В принципе можно вызывать A_Overlay и прямо в цикле, но лучше перестраховаться.
3. О каком бы Return state(""); не шла речь но это как правило необходимый парсер завершения анон-функции на деко, буквально означает "продолжи выполнение текущего стэйта". Более детально это объяснял алекв в архиве этой темы. Без неё код выдаст ошибку.
4. В твоём варианте отсутствует проверка на конкретную клавишу и механизм выдачи\изъятия зум-токена.
5. CheckInventory НЕ для декора. Именно поэтому надо использовать CountInv.
6. Ещё раз. A_ZoomFactor работает ТОЛЬКО для оружия но никак НЕ для CustomInventory! Иначе всё было бы гораздо проще и не понадобилось бы привинчивать зум-оверлэй к каждому оружию. Тупанул-с. )

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

Doom Rate: 1.89

Posts quality: +98
Ссылка на пост №305 Отправлено: 02.10.19 23:43:56
Void Weaver
не не, я понял, что для оружия, это просто дамми айтем для FOVhandlera, этакая замена проверки по клавише. Я просто хочу, чтобы вся эта котовасия срабатывала, когда Игрок получает дамми айтем, и ..десрабатывает, когда он его, следовательно, лишается. Спасибо про CountInv, я был не в курсе.
1
FoxPlays
= Master Sergeant =
Next rank: - Sergeant Major - after 52 points
478

Doom Rate: 2.34

Posts quality: +197
Ссылка на пост №306 Отправлено: 14.10.19 17:46:04
Вопрос: Есть ли какая нибудь возможность выровнять по сторонам текст в ACS? В HudMessage они выравниваются по центру, но как сделать чтобы их точка шла не с центра, а например - слева?
Знаю, что такая функция есть в SBARINFO, но есть ли в ACS?

1 1 1
ZZYZX
- Commissar -
Next rank: = Commissar = after 62 pointsМодератор форума
5278

Doom Rate: 1.73

Posts quality: +1509
Ссылка на пост №307 Отправлено: 14.10.19 18:36:27
Вроде бы только с SetHudSize
Но это неточно

Рейтинг сообщения: +2, отметил(и): Void Weaver, FoxPlays
2 2 1
VladGuardian
- Colonel -
Next rank: = Colonel = after 143 points
4297

Doom Rate: 1.28

Posts quality: +1215
Ссылка на пост №308 Отправлено: 14.10.19 19:01:12
FoxPlays
С помощью HudMessage точно нельзя, я просмотрел параметры, там и намёка нет на "justification" (выравнивание)
Так что прислушайся к совету ZZYZX. (SetHudSize / Coordinate Behavior)

Рейтинг сообщения: 0, отметил(и): Void Weaver, FoxPlays
3 10 21
FoxPlays
= Master Sergeant =
Next rank: - Sergeant Major - after 52 points
478

Doom Rate: 2.34

Posts quality: +197
Ссылка на пост №309 Отправлено: 15.10.19 12:25:16
Спасибо, ZZYZX и VladGuardian. Так работает :D
1 1 1
Hutt
- Master Sergeant -
Next rank: = Master Sergeant = after 24 points
436

Doom Rate: 1.37

Posts quality: +63
Ссылка на пост №310 Отправлено: 16.10.19 16:43:37
Как сделать цветной динамик лайт?
alekv
Lieutenant Colonel
Next rank: - Colonel - after 90 pointsМодератор форума
3950

Doom Rate: 1.92

Posts quality: +780
Ссылка на пост №311 Отправлено: 16.10.19 18:10:16
FoxPlays пишет:
Вопрос: Есть ли какая нибудь возможность выровнять по сторонам текст в ACS? В HudMessage они выравниваются по центру, но как сделать чтобы их точка шла не с центра, а например - слева?
Знаю, что такая функция есть в SBARINFO, но есть ли в ACS?

VladGuardian пишет:
С помощью HudMessage точно нельзя, я просмотрел параметры, там и намёка нет на "justification" (выравнивание)
Так что прислушайся к совету ZZYZX. (SetHudSize / Coordinate Behavior)


Ну у меня в hudmessage(.... 300.1, 200.1); работало выравнивание по левую сторону.
1 3 1
JSO x
- Sergeant Major -
Next rank: = Sergeant Major = after 26 points
574

Doom Rate: 2.39

Posts quality: +217
Ссылка на пост №312 Отправлено: 16.10.19 20:25:18
Hutt пишет:
Как сделать цветной динамик лайт?

Типы динамического освещения на GZDoom-engine. Если нужно, чтобы они были на карте -- то создаёшь, например, PointLight, и указываешь ему в аргументы Args[ 0 ] == Red intensity, Args[ 1 ] == Green intensity, Args[ 2 ] == Blue intensity, Args[ 3 ] == Global intensity. Первые три аргумента одинаковы у всех типов, четвёртый и возможный пятый разнятся.

Для создания своих, "быстродоступных" из-под Decorate/ZScript точек динамического света, нужно в lump'е "GLDEFS" создать шаблон твоего динамического света. Затем -- связать свой шаблон с объектом.

Примеры есть по ссылкам.

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

Doom Rate: 1.82

Posts quality: +762
Ссылка на пост №313 Отправлено: 17.10.19 18:57:43
И кстати начиная с 4.2 ввели офигенную функцию A_AttachLight, которая позволяет оперировать параметрами динлайта непосредственно из вызывающего объекта.
1 9 1
Zeberpal_98
UAC Sergeant Major
Next rank: UAC Sergeant Major after 67 points
693

Doom Rate: 1.89

Posts quality: +98
Ссылка на пост №314 Отправлено: 20.10.19 17:39:49
Возможно ли в Zdoom вызывать terrain splash, только когда Игрок прыгает с определенной высоты, а не когда заходит в сектор? Например, хочу, чтобы брызги/звуки воды не издавались, когда игрок входит в террайн-текстуру (h суши = h воды), а при прыжке бомбочкой - да. Посмотрел вики, такой опции кажется нет, но мало ли я чего-то не знаю.
1
Void Weaver
= Captain =
Next rank: - Major - after 208 points
2432

Doom Rate: 1.82

Posts quality: +762
Ссылка на пост №315 Отправлено: 20.10.19 18:04:35
По удачному стечению обстоятельств буквально сегодня делал кое-что близкое твоему вопросу. :)

Для начала ставим игроку флаг DONTSPLASH, а затем создаём ему оверлэй чекающий высоту игрока относительно поверхности через проверку его VelZ. Т. е. пишем в оверлэе условие If(VelZ<0){} Что означает "если VelZ отрицательная значит игрок падает" и далее оверлэй ЛИБО отключает флаг DONTSPLASH, либо спаунит под игроком снаряды которые и вызовут сплэш по приземлениюводнению.
ACTOR CrusherGuy : DoomPlayer
{
+DONTSPLASH
States
{
Spawn:
PLAY A 1 NoDelay A_Overlay(3,"SplasherOverlay",1)
Loop

SplasherOverlay:
TNT1 A 1
{
If(VelZ<0){A_SpawnItemEx("SplasherBall",0,0,-5,0,0,-5);Return state("");}
Else{Return state("");}
}
Loop
}
}

ACTOR SplasherBall
{
Height 4
Radius 4
Projectile
Damage (0)
States
{
Spawn:
BAL1 AA 1
Death:
TNT1 A 0
Stop
}
}

Рейтинг сообщения: +2, отметил(и): Zeberpal_98, VladGuardian
1 9 1
Zeberpal_98
UAC Sergeant Major
Next rank: UAC Sergeant Major after 67 points
693

Doom Rate: 1.89

Posts quality: +98
Ссылка на пост №316 Отправлено: 20.10.19 19:07:49
Void Weaver
Ухухух, как хитро ты придумал, спасибо за солюшн :haha:
к этому методу и думгая надо подготовить)
1
Zeberpal_98
UAC Sergeant Major
Next rank: UAC Sergeant Major after 67 points
693

Doom Rate: 1.89

Posts quality: +98
Ссылка на пост №317 Отправлено: 31.10.19 16:30:43
Можно ли в здуме каким-то образом вот такую "личную" информацию перегнать в стринг?

str STR_IsInStage = GetChar((GetAmmoCapacity("StageStatus")), 0);  //перегнать инфу, касающуюся боеприпасов
str StageIMG = StrParam( s:"ICONST", s: STR_IsInStage );


Я так понял в стринг можно пихать только переменные не так ли?
Например, в STR_IsInStage мне возвращается ни с того ни с сего CVARная информация всякая.

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

Doom Rate: 1.82

Posts quality: +762
Ссылка на пост №318 Отправлено: 31.10.19 17:04:16
Если ты хочешь вывести значение максимума боеприпаса то разве не проще выводить значение не стрингом а тупо интом?
1 9 1
Zeberpal_98
UAC Sergeant Major
Next rank: UAC Sergeant Major after 67 points
693

Doom Rate: 1.89

Posts quality: +98
Ссылка на пост №319 Отправлено: 31.10.19 17:28:45
Void Weaver
В данном случае не могу - онлайн мод. Много параметров, которые у каждого игрока разные. Безусловно у меня есть много способов решить проблему, но желание обойтись 3 строчками кода меня не покидает.

str StageIMG = StrParam( s:"ICONST", c:(GetChar(GetAmmoCapacity("StageStatus"), 0)));
 {
 HudMessageOnActor((GetAmmoCapacity("AreaStatus") + GetAmmoCapacity("StageStatus") + GetAmmoCapacity ("PersonaLuck")), stagerange, StageIMG,"",644);

недавно подумал, что моя ошибка в неправильной букве: но и decimal number и character возвращают дичь.
1
Void Weaver
= Captain =
Next rank: - Major - after 208 points
2432

Doom Rate: 1.82

Posts quality: +762
Ссылка на пост №320 Отправлено: 31.10.19 20:27:58
Zeberpal_98 пишет:
В данном случае не могу - онлайн мод.
И как это ограничивает тип вывода данных?

Т. е. ты собираешься выводить ряд статов в виде разновидностей аммо? Если так то делаешь вообще неправильно ибо в таком случае нужно юзать CheckInventory, а не GetAmmoCapacity.

Что такое HudMessageOnActor?
1 9 1
Страница 16 из 17Перейти наверх Пред.  1, 2, 3 ... , 15, 16, 17  След.
   Список разделов - Местечко мапперов и моддеров - Тема для новичков. Вопросы по маппингу/моддингу - любые!-2