Автор | Сообщение |
Dasperal = Lance Corporal =
| 170 |
Doom Rate: 2.62 Posts quality: +38 |
Отправлено: 24.07.18 23:18:27 | | | Можно ли как-то визуализировать LineTrace? | |
|
| |
JSO x - 2nd Lieutenant -
| 1336 |
Doom Rate: 2.26 Posts quality: +726 |
Отправлено: 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. Но первый всё равно остаётся открытым. |
|
|
2 |
7 |
1 |
|
|
| |
N00b Chief Petty Officer
| 922 |
Doom Rate: 2.15 Posts quality: +384 |
Отправлено: 17.08.18 22:35:42 | | | Каким образом, например, по нажатию забинженной клавиши можно вызвать аналогичный strife'овскому диалог (субкласс от ConversationMenu)? Не хочется использовать defaultconversationmenuclass в mapinfo.gameinfo, так как он заменит все диалоги.
Ещё интересует, переведены ли в zscript strife'овские списки предметов/ключей/заданий. zscript/statusbar/strife_sbar.txt | |
|
| |
Void Weaver = Captain =
| 2496 |
Doom Rate: 1.82 Posts quality: +808 |
Отправлено: 27.08.18 05:02:38 | | | Anto96WS: | Void Weaver: | Anto96WS, кстати было бы интересно узнать чем закончились твои эксперименты с A_Overlay. |
Выбивает "Invalid state parameter a_overlay". | Я так хз как юзать кастоминвентори оверлэй в декоре, но на скрипте выглядит отпадно. | |
|
1 |
9 |
1 |
|
|
| |
Void Weaver = Captain =
| 2496 |
Doom Rate: 1.82 Posts quality: +808 |
Отправлено: 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 - 2nd Lieutenant -
| 1336 |
Doom Rate: 2.26 Posts quality: +726 |
Отправлено: 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 -
| | 6284 |
Doom Rate: 1.65 Posts quality: +1630 |
Отправлено: 14.06.19 22:22:19 | | | Void Weaver пишет: | Разве соспуаненный моб может быть НУЛЛ? |
Может. Если спавн не удался или если произошло мгновенное уничтожение (как ракета или лостсоул, появившийся в стене/другом акторе).
Void Weaver пишет: | Бтв, а откуда вообще скриптеры берут инфу по таким флагам типа "MTF_Single"? |
В исходниках дума и/или gzdoom.pk3 | |
|
2 |
2 |
1 |
|
|
| |
Void Weaver = Captain =
| 2496 |
Doom Rate: 1.82 Posts quality: +808 |
Отправлено: 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 -
| | 6284 |
Doom Rate: 1.65 Posts quality: +1630 |
Отправлено: 15.06.19 18:04:19 | | | Void Weaver
Попробуй выстрелить из ракетницы вплотную к мобу. С годмодом конечно же. Ты увидишь что ракета не взрывается, а тупо не появляется.
То же самое с плазмой и бфг. Вот тогда они будут нулл сразу. | |
|
2 |
2 |
1 |
|
|
| |
Void Weaver = Captain =
| 2496 |
Doom Rate: 1.82 Posts quality: +808 |
Отправлено: 15.06.19 22:05:59 | | | Попробовал... всё дохнет как и положено, а не мистически исчезает без появления:
GZDoom 3.7.0 (x64), compat options - default
Ну и Соулы именно что дохнут а не не появляются, причём в ваниле всё ведёт себя точно так же. :/ | |
|
1 |
9 |
1 |
|
|
| |
ZZYZX - UAC Commissar -
| | 6284 |
Doom Rate: 1.65 Posts quality: +1630 |
Отправлено: 16.06.19 04:02:09 | | | Странно, в зандронуме в дуэли именно так как я описал. Возможно пофиксили либо это компатфлаг. | |
|
2 |
2 |
1 |
|
|
| |
Void Weaver = Captain =
| 2496 |
Doom Rate: 1.82 Posts quality: +808 |
Отправлено: 16.06.19 13:43:23 | | | Мультик Зандро, - отличная тестовая площадка.
В общем праздный вопрос про НУЛЛ-спаунящиеся акторы остаётся открытым. | |
|
1 |
9 |
1 |
|
|
| |
Void Weaver = Captain =
| 2496 |
Doom Rate: 1.82 Posts quality: +808 |
Отправлено: 27.08.19 22:56:39 | | | И снова здравствуйте.
В принципе нижеизложенное оффтоп, но полагаю что тут наиболее уместно.
Итак, время идёт, моддинг развивается и, как уже было неоднократно подмечено тут, на иддкуд, изучение и популяризация ZScript на иностранных ресурсах только набирает обороты, тогда как практика ZScript моддинга в ру-коммьюнити продвигается куда более скромными темпами.
Посему предлагаю (а скорее даже реквестирую) запилить какой-нибудь туториал "для чайников" в текстовом или видео-формате по основам ZScript, аналогично знаменитому "DECORATE для чайников" от автора Beautiful Doom или не менее эпичному туториалу по ACS за авторством достопочтенного VladGuardian.
Вероятно за основу можно взять добротный туториал Matt'а. Разумеется это задача не на 5 минут и скорее всего потребует коллективной работы, но уверен что сие руководство окажется незаменимым подспорьем для новичков зскриптинга.
Пополнение zwiki страницами с примерами по зскрипту со стороны ру-коммьюнити также приветствуется. На той же вики всё ещё полно функций без описания, не говоря уже о просто не задокументированных. |
|
|
1 |
9 |
1 |
|
|
| |
N00b Chief Petty Officer
| 922 |
Doom Rate: 2.15 Posts quality: +384 |
Отправлено: 30.09.19 21:29:34 | | | Как проще всего и с наименьшей длиной костылей можно из метода класса A, не являющегося актором, заспаунить на уровне актора?
Развёрнуто: есть класс A, он наследуется не от Actor, а от EventHandler:
class A: EventHandler {
//...
void Method() {
//...
}
}
На месте второго комментария должен быть код, спаунящий нужного мне актора по известным координатам.
Вообще говоря, сейчас у нас нет никакого другого актора, чтобы за него "зацепиться" (вызвать a.Spawn(...) с вектором-разностью). Неплохая кандидатура --- один из игроков, однако игрок-то на уровне бывает не всегда (запущенный из консоли сервер, к примеру)...
Ещё интересует структура level, глобально видимая в zscript'е (?). Какие у неё поля, методы, где в коде gzdoom она определена?
ZZYZX: работает, благодарю! | |
|
| |
ZZYZX - UAC Commissar -
| | 6284 |
Doom Rate: 1.65 Posts quality: +1630 |
Отправлено: 30.09.19 22:14:25 | | | Spawn это статический метод
Actor.Spawn(...) |
|
|
2 |
2 |
1 |
|
|
| |
N00b Chief Petty Officer
| 922 |
Doom Rate: 2.15 Posts quality: +384 |
Отправлено: 05.10.19 12:43:20 | | | Можно ли из ZScript модифицировать UDMF-поля линий, например? | |
|
| |