Welcome to U.A.C. [O.S.A.]
login / register 
Status: Guest
Forum archive | iddqd.ru
Wolf 3D
RulesRules SearchSearch
18+
Ультимативная тема по ZScript!Goto page Previous  1, 2
   Forum Index - Местечко мапперов и моддеров - Ультимативная тема по ZScript!Post a reply
AuthorMessage
Dasperal
= Lance Corporal =
Next rank: - Master Corporal - after 30 points
170

Doom Rate: 2.62

Posts quality: +38
Link to post #21 Posted: 24.07.18 23:18:27
Можно ли как-то визуализировать LineTrace?
1
JSO x
- 2nd Lieutenant -
Next rank: = 2nd Lieutenant = after 48 points
1392

Doom Rate: 2.27

Posts quality: +764
Link to post #22 Posted: 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. Но первый всё равно остаётся открытым.

This post scores averagely at 1,00 point(s) with 0 commenters.
2 8 1
N00b
Chief Petty Officer
Next rank: Chief Petty Officer after 18 points
922

Doom Rate: 2.15

Posts quality: +384
Link to post #23 Posted: 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: +808
Link to post #24 Posted: 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: +808
Link to post #25 Posted: 14.06.19 15:44:00
JSO x wrote:
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
- 2nd Lieutenant -
Next rank: = 2nd Lieutenant = after 48 points
1392

Doom Rate: 2.27

Posts quality: +764
Link to post #26 Posted: 14.06.19 21:28:24
Void Weaver wrote:
А зачем тут проверка на НУЛЛ? Разве соспуаненный моб может быть НУЛЛ?

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

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

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

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

Doom Rate: 1.65

Posts quality: +1633
Link to post #27 Posted: 14.06.19 22:22:19
Void Weaver wrote:
Разве соспуаненный моб может быть НУЛЛ?

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

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

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

Doom Rate: 1.82

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

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

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

Doom Rate: 1.65

Posts quality: +1633
Link to post #29 Posted: 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: +808
Link to post #30 Posted: 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 pointsForum moderator
6284

Doom Rate: 1.65

Posts quality: +1633
Link to post #31 Posted: 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: +808
Link to post #32 Posted: 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: +808
Link to post #33 Posted: 27.08.19 22:56:39
И снова здравствуйте.

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

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

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

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

This post scores averagely at 2,00 point(s) with 0 commenters.
1 9 1
N00b
Chief Petty Officer
Next rank: Chief Petty Officer after 18 points
922

Doom Rate: 2.15

Posts quality: +384
Link to post #34 Posted: 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 pointsForum moderator
6284

Doom Rate: 1.65

Posts quality: +1633
Link to post #35 Posted: 30.09.19 22:14:25
Spawn это статический метод

Actor.Spawn(...)

This post scores averagely at 2,00 point(s) with 0 commenters.
2 2 1
N00b
Chief Petty Officer
Next rank: Chief Petty Officer after 18 points
922

Doom Rate: 2.15

Posts quality: +384
Link to post #36 Posted: 05.10.19 12:43:20
Можно ли из ZScript модифицировать UDMF-поля линий, например?
1 2
Page 2 of 2Go to topGoto page Previous  1, 2
   Forum Index - Местечко мапперов и моддеров - Ультимативная тема по ZScript!