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

Doom Rate: 2.63

Posts quality: +36
Ссылка на пост №21 Отправлено: 24.07.18 23:18:27
Можно ли как-то визуализировать LineTrace?
1
JSO x
= Warrant Officer =
Next rank: - 2nd Lieutenant - after 10 points
1280

Doom Rate: 2.29

Posts quality: +669
Ссылка на пост №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
2 7 1
N00b
Chief Petty Officer
Next rank: Chief Petty Officer after 18 points
922

Doom Rate: 2.15

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

Doom Rate: 1.82

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

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

Doom Rate: 1.82

Posts quality: +807
Ссылка на пост №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 9 1
JSO x
= Warrant Officer =
Next rank: - 2nd Lieutenant - after 10 points
1280

Doom Rate: 2.29

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

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

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

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

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

Doom Rate: 1.65

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

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

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

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

Doom Rate: 1.82

Posts quality: +807
Ссылка на пост №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 9 1
ZZYZX
- UAC Commissar -
Next rank: = UAC Commissar = after 16 pointsМодератор форума
6284

Doom Rate: 1.65

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

Doom Rate: 1.82

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

GZDoom 3.7.0 (x64), compat options - default

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

Doom Rate: 1.65

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

Doom Rate: 1.82

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

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

Doom Rate: 1.82

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

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

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

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

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

Рейтинг сообщения: +2, отметил(и): Nil, theleo_ua
1 9 1
N00b
Chief Petty Officer
Next rank: Chief Petty Officer after 18 points
922

Doom Rate: 2.15

Posts quality: +384
Ссылка на пост №34 Отправлено: 30.09.19 21:29:34
Как проще всего и с наименьшей длиной костылей можно из метода класса A, не являющегося актором, заспаунить на уровне актора?
Развёрнуто: есть класс A, он наследуется не от Actor, а от EventHandler:
class A: EventHandler {
    //...
    void Method() {
        //...
    }
}

На месте второго комментария должен быть код, спаунящий нужного мне актора по известным координатам.
Вообще говоря, сейчас у нас нет никакого другого актора, чтобы за него "зацепиться" (вызвать a.Spawn(...) с вектором-разностью). Неплохая кандидатура --- один из игроков, однако игрок-то на уровне бывает не всегда (запущенный из консоли сервер, к примеру)...

Ещё интересует структура level, глобально видимая в zscript'е (?). Какие у неё поля, методы, где в коде gzdoom она определена?

ZZYZX: работает, благодарю!
1 2
ZZYZX
- UAC Commissar -
Next rank: = UAC Commissar = after 16 pointsМодератор форума
6284

Doom Rate: 1.65

Posts quality: +1630
Ссылка на пост №35 Отправлено: 30.09.19 22:14:25
Spawn это статический метод

Actor.Spawn(...)

Рейтинг сообщения: +2, отметил(и): N00b, Void Weaver
2 2 1
N00b
Chief Petty Officer
Next rank: Chief Petty Officer after 18 points
922

Doom Rate: 2.15

Posts quality: +384
Ссылка на пост №36 Отправлено: 05.10.19 12:43:20
Можно ли из ZScript модифицировать UDMF-поля линий, например?
1 2
Страница 2 из 2Перейти наверх Пред.  1, 2
   Список разделов - Местечко мапперов и моддеров - Ультимативная тема по ZScript!