Welcome to U.A.C. [O.S.A.]
login / register
Status: Guest
Архивы форума | iddqd.ru
Wolf 3D
ПравилаПравила ПоискПоиск
18+
Тема для новичков. Вопросы по маппингу/моддингу - любые!-2 Пред.  1, 2, 3 ... 7, 8, 9 ... 61, 62, 63  След.
   Список разделов - Местечко мапперов и моддеров - Тема для новичков. Вопросы по маппингу/моддингу - любые!-2Ответить
АвторСообщение
JSO x
- 2nd Lieutenant -
Next rank: = 2nd Lieutenant = after 140 points
1300

Doom Rate: 2.28

Posts quality: +701
Ссылка на пост №141 Отправлено: 22.07.19 18:29:06
В Decorate -- исключительно тем же "A_Jump()", так как работы с типом строки там нет вовсе (если не добавили функции из ACS, и "StrParam()" в том числе):
TNT1 A 0 A_Jump( 256, 1, 2, 3, 4, 5, 6, 7 )
TNT1 A 0 A_Log( "$kl_bat1" )
Goto See
TNT1 A 0 A_Log( "$kl_bat2" )
Goto See
TNT1 A 0 A_Log( "$kl_bat3" )
Goto See
TNT1 A 0 A_Log( "$kl_bat4" )
Goto See
TNT1 A 0 A_Log( "$kl_bat5" )
Goto See
TNT1 A 0 A_Log( "$kl_bat6" )
Goto See
TNT1 A 0 A_Log( "$kl_bat7" )
Goto See


В ZScript можно сильно проще:
TNT1 A 0 A_Log( StringTable.Localize( "$kl_bat" .. Random( 1, 7 ) ) );
// Или:
TNT1 A 0 A_Log( StringTable.Localize( String.format( "$kl_bat%i", Random( 1, 7 ) ) ) );

// Кстати, не уверен, нужно ли в логировании вручную локализовать текст. Возможно, и без него всё прекрасно будет выводиться.


FoxPlays пишет:
2. Как сделать чтобы звук боли у игрока воспроизводился с процентным шансом? (например: 50%)

Вариант -- у актора/класса игрока поменять "PainChance" на 127.

Рейтинг сообщения: +3, отметил(и): VladGuardian, Void Weaver, FoxPlays
2 7 1
Landsberg
= Lance Corporal =
Next rank: - Master Corporal - after 4 points
196

Doom Rate: 1.96

Posts quality: +22
Ссылка на пост №142 Отправлено: 22.07.19 22:47:56
Какая функция в графе Fire отвечает за урон, наносимый оружием?
Void Weaver
= Captain =
Next rank: - Major - after 144 points
2496

Doom Rate: 1.82

Posts quality: +807
Ссылка на пост №143 Отправлено: 22.07.19 22:57:11
Ну это крайне ситуативно. Как правило это одна из Category:Decorate Weapon attack functions, хотя тот же популярный A_Explode к таковым не относится но при этом ооочень часто используется в разном оружии, включая рукопашное.
В более специфических случаях могут использоваться даже функции монстро-атак типа A_DamageTracer.

И кстати функция атаки может находиться в оружии и ВНЕ стэйта '(Alt)Fire'. ;) Вот если поставить атакующую ф-цию в любой другой стэйт (включая кастомный, т. е. придуманный моддером), например в 'Reload' то атака может быть выполнена во время выполнения перезарядки.

Рейтинг сообщения: +1, отметил(и): VladGuardian
1 9 1
FoxPlays
= Sergeant Major =
Next rank: UAC Sergeant Major after 36 points
644

Doom Rate: 2.14

Posts quality: +367
Ссылка на пост №144 Отправлено: 23.07.19 10:09:12
Как сделать чтобы при выстреле в стену появлялся BulletPuff1, а при выстреле во врага появлялся BulletPuff2 ?
1 1 1
Void Weaver
= Captain =
Next rank: - Major - after 144 points
2496

Doom Rate: 1.82

Posts quality: +807
Ссылка на пост №145 Отправлено: 23.07.19 14:07:59
Если речь идёт только о разнице визуализации и отчасти разницы в функциях то для этого можно использовать:
а) соответствующие стэйты пуффа с разной анимацией:
Spawn - используется по умолчанию при попадании в любой объект (не отображается на живых акторах) если не указаны иные стэйты.
Melee - используется по умолчанию из мили-функций (только для оружия), не отображается на живых акторах.
Crash - используется по умолчанию при попадании в любой НЕ кровоточащий объект.
XDeath - используется по умолчанию при попадании в любой кровоточащий объект, НЕ отображается на живых акторах.
Наличие PUFFONACTORS или ALWAYSPUFF также влияет на отображение пуффов.

б) чек на соответствие поинтеров HITTRACER + A_JumpIf(IsPointerEqual(AAPTR_TRACER,AAPTR_NULL),"джамп")

в) можно попробовать прописать в оружие (НЕ для монстров) чек A_JumpIf(GetDistance(1,AAPTR_PLAYER_GETTARGET)>0,"джамп_на_файрбуллетс_пуфф1"), иначе файрбуллетс_пуфф2. К сожалению этот способ работает ТОЛЬКО на дистанции не более 1054.54

Рейтинг сообщения: +3, отметил(и): VladGuardian, JSO x, FoxPlays
1 9 1
FoxPlays
= Sergeant Major =
Next rank: UAC Sergeant Major after 36 points
644

Doom Rate: 2.14

Posts quality: +367
Ссылка на пост №146 Отправлено: 23.07.19 17:02:39
Void Weaver, спасибо!

Решил проблему а) вариантом.

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


ACTOR DOKBat 20000
{
Health 60
Speed 6
Radius 20
Height 56
Scale 0.5
Monster
Painchance 256
SeeSound "enemy/bat/see"
AttackSound "enemy/bat/attack"
DeathSound "enemy/bat/death"
Obituary "$ob_bat"
Species "DOKMonster"
+NOBLOOD
States
{
Spawn:
DBAT ABCB 6 A_Look
Loop
See:
DBAT ABCB 3 A_Chase
Loop
Melee:
BBAT A 3 A_FaceTarget
BBAT BC 6
BBAT D 10 A_CustomMeleeAttack(5)
BBAT EA 8
Goto See
Death:
TNT1 A 0 A_Jump( 256, 1, 2, 3, 4, 5, 6, 7 )
TNT1 A 0 A_Log("$kl_bat1")
Goto RDeath
TNT1 A 0 A_Log("$kl_bat2")
Goto RDeath
TNT1 A 0 A_Log("$kl_bat3")
Goto RDeath
TNT1 A 0 A_Log("$kl_bat4")
Goto RDeath
TNT1 A 0 A_Log("$kl_bat5")
Goto RDeath
TNT1 A 0 A_Log("$kl_bat6")
Goto RDeath
TNT1 A 0 A_Log("$kl_bat7")
Goto RDeath
Pain:
TNT1 A 0 A_SpawnItem("DOKBlood", 0, 0)
Goto See
RDeath:
KBAT A 8 A_Scream
KBAT B 8
KBAT C 8 A_NoBlocking
KBAT D 8
Stop
Raise:
DBAT ABCB 3 A_Look
Goto See
}
}



Добавлено спустя 22 часа 13 минут 12 секунд:

Ещё вопросы ?

1. Как сделать чтобы после интермисии был переход на уровень?

2. Как сделать использование LANGUAGE в интермисии?
1 1 1
Void Weaver
= Captain =
Next rank: - Major - after 144 points
2496

Doom Rate: 1.82

Posts quality: +807
Ссылка на пост №147 Отправлено: 24.07.19 18:49:10
1. ??? А разве после интермиссии игра виснет или заканчивается? И так же происходит переход на новый уровень. о_0
Могу лишь предположить что если те нужны конкретные переходы на конкретные мапы после кастомных интермиссий то попробуй Intermission script.

2. MAPINFO/Intermission definition (Cast properties)
1 9 1
FoxPlays
= Sergeant Major =
Next rank: UAC Sergeant Major after 36 points
644

Doom Rate: 2.14

Posts quality: +367
Ссылка на пост №148 Отправлено: 25.07.19 10:39:58
Void Weaver пишет:
??? А разве после интермиссии игра виснет или заканчивается? И так же происходит переход на новый уровень. о_0


Вот так не переходит. :( Заодно отправил вопрос JSO X в дискорде.

Всё выглядит примерно так:


map DOK01 "$pk_lvl1"
{
levelnum = 1
Next = endsequence, "end01"

music = ""
Par = 180
}

Intermission end01
{
TextScreen {
Background = "FLOOR2", 1
Text = "test"
TextSpeed = 3
}
Link = start02
}

Intermission start02
{
TextScreen {
Background = "FLOOR2", 1
Text = "test 2"
TextSpeed = 3
}
}

map DOK02 "$pk_lvl2"
{
levelnum = 2
next = "DOK03"

music = ""
Par = 180
}
1 1 1
VladGuardian
= Commissar =
Next rank: - UAC Commissar - after 263 points
5537

Doom Rate: 1.28

Posts quality: +1899
Ссылка на пост №149 Отправлено: 25.07.19 16:17:38
Почему большие и скайленные внутри GZDoomBuilder текстуры на соседних полигонах - НЕ СТЫКУЮТСЯ между собой:
(визуально будто имеют разный масштаб, хотя и размер!, и скейлинг! у них один и тот же)
Скрытый текст:


Я имею 4 отдельных текстуры (размером 640x640 пикселей каждая), и соответственно 4 больших квадрата на которые они наложены (каждый размером 32000x32000 мап юнитов)
Чтобы текстура натянулась на ВЕСЬ полигон (без повторений), ее нужно повторить 32000/640 = 50 раз.
Что соответствует коэффициенту 0.02 (потому что 1/50 = 0.02)
Казалось бы, какие тут могут быть сложности?
Однако на практике на стыке заметно явное несоответствие масштабов прилегающих соседних текстур,
хотя все они имеют одинаковый коэффициент! (scale_x=0.02, scale_y=0.02)
Все четыре полигона имеют такие установки этих коэффициентов.
И дело не в оффсетах, я проверял.
Не стыкуется именно из-за разного масштаба. (разный размер текселей у соседствующих текстур)
Скрытый текст:


Чтобы окончательно убедить вас, что проблема НЕ в самих текстурах, выкладываю и их тоже:
(блок 2x2 из четырех соседствующих текстур)
Как видно, в Фотошопе всё идеально прилегает друг к другу.
Скрытый текст:

P.S. Вот уж где-где, а на таком ровном месте, не ожидал огрести проблем...
4 10 23
FoxPlays
= Sergeant Major =
Next rank: UAC Sergeant Major after 36 points
644

Doom Rate: 2.14

Posts quality: +367
Ссылка на пост №150 Отправлено: 25.07.19 19:27:56
Что-ж, решил вопрос по интермиссии (см. страница - 207) при помощи кластеров, но теперь не могу выяснить.

В чём отличие entertext от exittext ?
Пытаюсь сделать чтобы после окончания уровня была интермиссия и во время начала уровня ещё одна :o
Думал что - entertext, это вывод при начале уровня, а - exittext, это вывод в конце уровня, но это так не работает :(
1 1 1
Void Weaver
= Captain =
Next rank: - Major - after 144 points
2496

Doom Rate: 1.82

Posts quality: +807
Ссылка на пост №151 Отправлено: 25.07.19 21:10:34
ЕЯПП, то во-первых, (enter\exit)text - это исключительно фича для кластеров а не просто для уровней. Т. е. для блоков уровней начинающихся с собственно "cluster" кейворда.

Далее, если следовать определениям вики получается что:

entertext = "<message>"
Это текст который выводится когда игрок входит на уровень нового кластера, завершив уровень предыдущего.

exittext = "<message>"
Это текст который выводится когда игрок завершает уровень текущего кластера. Если кластер следующего (грядущего) уровня имеет прописанный entertext, то оный будет выведен вместо exittext.

Рейтинг сообщения: +2, отметил(и): JSO x, FoxPlays
1 9 1
YURA_111
UAC Sergeant Major
Next rank: Chief Petty Officer after 86 points
764

Doom Rate: 1.98

Posts quality: +136
Ссылка на пост №152 Отправлено: 26.07.19 12:48:45
FoxPlays пишет:
Пытаюсь сделать чтобы после окончания уровня была интермиссия и во время начала уровня ещё одна


Попробую дать идею:

Сделай интермиссию как уровень, т.е., например, заканчивается уровень скажем 12 - переходим в уровень скажем 112 (интермиссия) в котором рассказывается как и что (немного потребуется скриптинга), после чего переходим в уровень 13 (ну или снова в некую интрмиссию). Так сделано у меня...

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

Doom Rate: 1.82

Posts quality: +807
Ссылка на пост №153 Отправлено: 26.07.19 13:49:31
Как трик - занятно, по сути же - шило на мыло, поскольку кластер дефинишн как раз эту функцию и выполняет.
1 9 1
FoxPlays
= Sergeant Major =
Next rank: UAC Sergeant Major after 36 points
644

Doom Rate: 2.14

Posts quality: +367
Ссылка на пост №154 Отправлено: 26.07.19 15:24:05
YURA_111, не знаю - это уже получается какой-то гипер-костыль :x
Но спасибо за идею!

Void Weaver пишет:
Как трик - занятно, по сути же - шило на мыло


В итоге решил объединить две интермисии в одну, то-есть добавить текст из другой интермисии в другую. :o
1 1 1
YURA_111
UAC Sergeant Major
Next rank: Chief Petty Officer after 86 points
764

Doom Rate: 1.98

Posts quality: +136
Ссылка на пост №155 Отправлено: 26.07.19 18:52:56
FoxPlays пишет:
по сути же - шило на мыло


Осмелюсь не согласиться - учитывая насколько ты уже глубоко вник в процесс программинга в GZDOOM, странно что ты не учитываешь насколько больше возможностей дает то, что я предложил по сравнению с просто кластер дефинитион.

FoxPlays пишет:
какой-то гипер-костыль


Может и так - но работает отменно :beer:
Void Weaver
= Captain =
Next rank: - Major - after 144 points
2496

Doom Rate: 1.82

Posts quality: +807
Ссылка на пост №156 Отправлено: 26.07.19 20:55:48
Во-первых, ты явно заблуждаешься об уровне моих моддинг-скиллов. Я по-прежнему имею весьма поверхностные представления о блоках связанных с маппингом и мап-скриптингом, таких как MAPINFO, и поэтому не могу по достоинству оценить потенциал возможностей твоего метода относительно интермиссий.
Во-вторых, я и не оспаривал технической разницы между способами воспроизведения интермиссий, а лишь подчеркнул что по-сути это костыль к вполне доступному способу записи интермиссий из кластеров.

П. С.
Кстати ты ошибся авторством оригинальной цитаты, похоже у тебя механизм цитирования глюкнул.
1 9 1
FoxPlays
= Sergeant Major =
Next rank: UAC Sergeant Major after 36 points
644

Doom Rate: 2.14

Posts quality: +367
Ссылка на пост №157 Отправлено: 28.07.19 13:07:51
:pc:

1. Как сделать чтобы обычая дверь открывалась с разными звуками на карту?

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

Например:

MAP01 - SOUND1
MAP02 - SOUND2



2. Как сделать чтобы аптечки не брались когда у игрока 100 хп? (аптечки новые)
1 1 1
Void Weaver
= Captain =
Next rank: - Major - after 144 points
2496

Doom Rate: 1.82

Posts quality: +807
Ссылка на пост №158 Отправлено: 28.07.19 15:51:42
1. Согласно совету Графа использовать SNDSEQ или SNDINFO лумп с кастомными звуками для переопределения дефолтных
doors/dr1_open			dsdoropn
doors/dr1_clos			dsdorcls
doors/dr2_open			dsbdopn
doors/dr2_clos			dsbdcls


2. Можно пример или описание текущей аптечки под модификацию? Если аптечка допускается быть кастом инвентори, то самый простой способ поставить чек на хп игрока при подборе, типа:

{
Pickup:
TNT1 A 0 A_JumpIfHealthLower(GetSpawnHealth,1)
Stop
TNT1 A 0 //Экшн аптечки
Stop
}
}

Для обычной же аптечки максимум определяется свойством Inventory.MaxAmount и по умолчанию и так не берётся при хп > 100. Ну и офк удостовериться что у конкретной НЕ кастоминвентори аптечки отсутствует флаг +INVENTORY.ALWAYSPICKUP. //Ага. ;)

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

Doom Rate: 2.14

Posts quality: +367
Ссылка на пост №159 Отправлено: 28.07.19 15:54:26
Void Weaver

Первая и вторая аптечка:


ACTOR Item01 : Health 20006
{
Scale 0.3
Inventory.PickupMessage "$pk_porridge"
Inventory.PickupSound "misc/good"
Inventory.Amount 10
+COUNTITEM
+INVENTORY.ALWAYSPICKUP
States
{
Spawn:
ITM1 A -1
Stop
}
}

ACTOR Item02 : Health 20010
{
Scale 0.5
Inventory.PickupMessage "$pk_water"
Inventory.PickupSound "misc/good"
Inventory.Amount 15
+COUNTITEM
+INVENTORY.ALWAYSPICKUP
States
{
Spawn:
ITM2 A -1
Stop
}
}


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

Спасибо, решил проблему с аптечками!

Убрал INVENTORY.ALWAYSPICKUP и добавил Inventory.MaxAmount 100 всем аптечкам
1 1 1
Landsberg
= Lance Corporal =
Next rank: - Master Corporal - after 4 points
196

Doom Rate: 1.96

Posts quality: +22
Ссылка на пост №160 Отправлено: 29.07.19 08:01:14
Идея следующая: во время перезарядки игрок может отбиваться от монстров ногами.
Попытка реализовать следующая: в блоке файр есть проверка на релоадтокен, который выдаётся в инвентарь в начале перезарядки и забирается в конце, если он есть, перекидывается на релоадатак, где игрок бьёт ногой, в конце анимации перекидывается опять на релоад(т.е. перезарядка начинается с начала).
Проблема в том, что анимация перезарядки не прерываемая и атака ногой не происходит.
Вопроса 2:
1) Как сделать так, чтобы анимация релоад прерывалась и игрок бил ногой
2) Как сделать так, чтобы после атаки ногой перекидывало не в начало перезарядки а на место прерывания(т.е. использовать "что-то" вместо goto reload)
Если что, вот файл: https://yadi.sk/d/-utw7s0MQnsPxA
Страница 8 из 63Перейти наверх Пред.  1, 2, 3 ... 7, 8, 9 ... 61, 62, 63  След.
   Список разделов - Местечко мапперов и моддеров - Тема для новичков. Вопросы по маппингу/моддингу - любые!-2