Welcome to U.A.C. [O.S.A.]
login / register
Status: Guest
Архивы форума | iddqd.ru
Wolf 3D
ПравилаПравила ПоискПоиск
18+
Ультимативная тема по ZScript! Пред.  1, 2
   Список разделов - Местечко мапперов и моддеров - Ультимативная тема по ZScript!Ответить
АвторСообщение
Dasperal
= Corporal =
Next rank: - Lance Corporal - after 26 points
104

Doom Rate: 2

Posts quality: +11
Ссылка на пост №21 Отправлено: 24.07.18 23:18:27
Можно ли как-то визуализировать LineTrace?
JSO x
- Sergeant Major -
Next rank: = Sergeant Major = after 36 points
564

Doom Rate: 2.4

Posts quality: +210
Ссылка на пост №22 Отправлено: 27.07.18 14:38:15
JSO x:
непонятно, что за "invoker.*"

Нашёл. Там три типа: "Self", "Invoker" и "Owner". Про первые два уже было сказано, последний -- ссылка на владельца инвентаря (не на саму вещь!).


Dasperal, нет. По крайней мере, я не вижу такого в теории. Можно вместе с LineTraсe использовать что-нибудь из Railgun'а или запускать быстрый невидимый снаряд со шлейфом. А прочертить в пространстве линию -- это к ZZYZX'у, скорее всего. Правда, думаю, и он не знает.


* * *

Где-то на ZDoom-форуме видел функцию "TestMObj" (?) или "TestForMObj" (?). Она проверяла пересечение коллизий, насколько я понял.
Во-первых, как она правильно пишется, во-вторых, что конкретно делает? Я не уверен, что правильно понял её принцип действия.

EDIT: "bool TestMobjLocation()" не оно? Нужно, чтобы действие происходило, когда игрок НА акторе (прыжком, например). Если есть другой способ -- подскажите, пожалуйста.

EDIT2: как одновременно двинуть все объекты одного типа на карте? Через TID (то есть основной способ ACS) нежелательно: они изначально спаунятся через ZScript (EventHandler), который сразу же TID'ы не устанавливает. Установить их сразу после появления объекта у меня не получилось -- QZDoom вылетал.



EDIT3: всё, с зачёркнутыми вопросами разобрался сам. Первый через CanCollideWith решил, второй -- через ThinkerIterator. Но первый всё равно остаётся открытым.

Рейтинг сообщения: +1, отметил(и): Void Weaver
1 5
N00b2015
- Master Sergeant -
Next rank: = Master Sergeant = after 38 points
422

Doom Rate: 2.23

Posts quality: +136
Ссылка на пост №23 Отправлено: 17.08.18 22:35:42
Каким образом, например, по нажатию забинженной клавиши можно вызвать аналогичный strife'овскому диалог (субкласс от ConversationMenu)? Не хочется использовать defaultconversationmenuclass в mapinfo.gameinfo, так как он заменит все диалоги.
Ещё интересует, переведены ли в zscript strife'овские списки предметов/ключей/заданий. zscript/statusbar/strife_sbar.txt
1 1
Void Weaver
- Captain -
Next rank: = Captain = after 82 points
2258

Doom Rate: 1.8

Posts quality: +701
Ссылка на пост №24 Отправлено: 27.08.18 05:02:38
Anto96WS:
Void Weaver:
Anto96WS, кстати было бы интересно узнать чем закончились твои эксперименты с A_Overlay.

Выбивает "Invalid state parameter a_overlay".
Я так хз как юзать кастоминвентори оверлэй в декоре, но на скрипте выглядит отпадно.
1 8 1
Void Weaver
- Captain -
Next rank: = Captain = after 82 points
2258

Doom Rate: 1.8

Posts quality: +701
Ссылка на пост №25 Отправлено: 14.06.19 15:44:00
JSO x пишет:
ZScript подойдёт?

class MultiplayerMonstersHandler: EventHandler {

	override void WorldThingSpawned( WorldEvent e ) {
		if ( multiplayer && e.Thing != NULL && e.Thing.bIsMonster && !( e.Thing.SpawnFlags & MTF_Single ) ) {
			e.Thing.ClearCounters();
			e.Thing.Destroy();
		}
	}
}
А зачем тут проверка на НУЛЛ? Разве соспуаненный моб может быть НУЛЛ?

Бтв, а откуда вообще скриптеры берут инфу по таким флагам типа "MTF_Single"? о_о Гугл всего-то 7 результатов выдаёт.
1 8 1
JSO x
- Sergeant Major -
Next rank: = Sergeant Major = after 36 points
564

Doom Rate: 2.4

Posts quality: +210
Ссылка на пост №26 Отправлено: 14.06.19 21:28:24
Void Weaver пишет:
А зачем тут проверка на НУЛЛ? Разве соспуаненный моб может быть НУЛЛ?

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

[EDIT: Кстати, да, ZZYZX тоже пример хороший привёл, насчёт душ потерянных. Гораздо более вероятное событие.]

Void Weaver пишет:
Бтв, а откуда вообще скриптеры берут инфу по таким флагам типа "MTF_Single"? о_о Гугл всего-то 7 результатов выдаёт.

Я -- из своего qzdoom.pk3:\zscript\constants.txt (собственно, вся директория "\zscript\"). А вообще можно здесь, на GitHub, у Графа.
1 5
ZZYZX
- Commissar -
Next rank: = Commissar = after 204 pointsМодератор форума
5136

Doom Rate: 1.74

Posts quality: +1440
Ссылка на пост №27 Отправлено: 14.06.19 22:22:19
Void Weaver пишет:
Разве соспуаненный моб может быть НУЛЛ?

Может. Если спавн не удался или если произошло мгновенное уничтожение (как ракета или лостсоул, появившийся в стене/другом акторе).

Void Weaver пишет:
Бтв, а откуда вообще скриптеры берут инфу по таким флагам типа "MTF_Single"?

В исходниках дума и/или gzdoom.pk3
2 2 1
Void Weaver
- Captain -
Next rank: = Captain = after 82 points
2258

Doom Rate: 1.8

Posts quality: +701
Ссылка на пост №28 Отправлено: 15.06.19 01:53:52
JSO x пишет:
На всякий случай. Например, если другой, сторонний обработчик событий с приоритетом выше моего тоже убирает только что появившегося монстра. Маловероятно, но в этом отчасти и заключается смысл правильного программирования -- предусматривание всех событий, даже тех, что кажутся невероятными.
Не, ну я тоже всегда стараюсь страховаться от потенциально вероятных конфликтов, но разве тут вообще может быть какой-то конфликт? Т. е. разве скрипт может поперхнуться пытаясь удалить актор о котором он (скрипт) НЕ ЗНАЕТ по причине того что инициатива удаления актора была перехвачена более приоритетным скриптом?

JSO x пишет:
Я -- из своего qzdoom.pk3:\zscript\constants.txt (собственно, вся директория "\zscript\"). А вообще можно здесь, на GitHub, у Графа.
ZZYZX пишет:
В исходниках дума и/или gzdoom.pk3
Так я и думал. Ну что ж, буду ждать наполнения вики.

ZZYZX пишет:
Может. Если спавн не удался или если произошло мгновенное уничтожение (как ракета или лостсоул, появившийся в стене/другом акторе).
JSO x, ZZYZX, я наверное туплю или чего-то не догоняю, но моментально уничтоженный актор проходя стэйт своей смерти (если длительность не 0-вая) вроде ещё не является НУЛЛ, а неудачный спаун через ф-цию типа _СпаунИтем просто возвращает false. о_0
Т. е. НУЛЛ от актора можно получить только сравнивая что-то переставшее существовать с чем-то что существовало ранее, или не?
1 8 1
ZZYZX
- Commissar -
Next rank: = Commissar = after 204 pointsМодератор форума
5136

Doom Rate: 1.74

Posts quality: +1440
Ссылка на пост №29 Отправлено: 15.06.19 18:04:19
Void Weaver
Попробуй выстрелить из ракетницы вплотную к мобу. С годмодом конечно же. Ты увидишь что ракета не взрывается, а тупо не появляется.
То же самое с плазмой и бфг. Вот тогда они будут нулл сразу.
2 2 1
Void Weaver
- Captain -
Next rank: = Captain = after 82 points
2258

Doom Rate: 1.8

Posts quality: +701
Ссылка на пост №30 Отправлено: 15.06.19 22:05:59
Попробовал... всё дохнет как и положено, а не мистически исчезает без появления:

GZDoom 3.7.0 (x64), compat options - default

Ну и Соулы именно что дохнут а не не появляются, причём в ваниле всё ведёт себя точно так же. :/
1 8 1
ZZYZX
- Commissar -
Next rank: = Commissar = after 204 pointsМодератор форума
5136

Doom Rate: 1.74

Posts quality: +1440
Ссылка на пост №31 Отправлено: 16.06.19 04:02:09
Странно, в зандронуме в дуэли именно так как я описал. Возможно пофиксили либо это компатфлаг.
2 2 1
Void Weaver
- Captain -
Next rank: = Captain = after 82 points
2258

Doom Rate: 1.8

Posts quality: +701
Ссылка на пост №32 Отправлено: 16.06.19 13:43:23
Мультик Зандро, - отличная тестовая площадка.

В общем праздный вопрос про НУЛЛ-спаунящиеся акторы остаётся открытым.
1 8 1
Void Weaver
- Captain -
Next rank: = Captain = after 82 points
2258

Doom Rate: 1.8

Posts quality: +701
Ссылка на пост №33 Отправлено: 27.08.19 22:56:39
И снова здравствуйте.

В принципе нижеизложенное оффтоп, но полагаю что тут наиболее уместно.

Итак, время идёт, моддинг развивается и, как уже было неоднократно подмечено тут, на иддкуд, изучение и популяризация ZScript на иностранных ресурсах только набирает обороты, тогда как практика ZScript моддинга в ру-коммьюнити продвигается куда более скромными темпами.

Посему предлагаю (а скорее даже реквестирую) запилить какой-нибудь туториал "для чайников" в текстовом или видео-формате по основам ZScript, аналогично знаменитому "DECORATE для чайников" от автора Beautiful Doom или не менее эпичному туториалу по ACS за авторством достопочтенного VladGuardian.

Вероятно за основу можно взять добротный туториал Matt'а. Разумеется это задача не на 5 минут и скорее всего потребует коллективной работы, но уверен что сие руководство окажется незаменимым подспорьем для новичков зскриптинга.
Пополнение zwiki страницами с примерами по зскрипту со стороны ру-коммьюнити также приветствуется. На той же вики всё ещё полно функций без описания, не говоря уже о просто не задокументированных.

Рейтинг сообщения: +1, отметил(и): Nil
1 8 1
Страница 2 из 2Перейти наверх Пред.  1, 2
   Список разделов - Местечко мапперов и моддеров - Ультимативная тема по ZScript!