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

Doom Rate: 2.05

Posts quality: +1435
Ссылка на пост №961 Отправлено: 06.07.23 02:48:33
У кого-нибудь возникала проблема с str массивами в ACS, когда подтягиваются данные вообще откуда-то левые? Ситуация довольно интересная, но нифига не понятная: есть 2д массив с строчными данными, который прекрасно работает при "голом" запуске Zandronum (pre 3.2) и GZDoom (4.10.0) и все скриптовые свитчи реагируют как положено. Однако, стоит запихнуть моды, как массив начинает тянуть в себя кучу непонятных данных в виде строк, хотя все свитчи работают правильно. Поскольку основная функция перестаёт работать, осмелюсь предположить, что проблема именно в массиве, а не выводе данных на экран. Пока я не могу понять как вообще такое возможно. Мне кстати встречалось что-то подобное, когда моды просто отваливались при попытке запустить их с дополнительными паками.

Кстати, в заднепроходиуме интересная вещь наблюдалась. Использовался для отображения графики на экране HudMessage и SetFont, но из-за большого разрешения было решено выкинуть эту идею. Так вот, в момент бага массива у меня всплывало название используемого для графики файла даже после того, как все данные и упоминания о нём были удалены
2 1 7
JSO x
- 2nd Lieutenant -
Next rank: = 2nd Lieutenant = after 140 points
1300

Doom Rate: 2.28

Posts quality: +701
Ссылка на пост №962 Отправлено: 06.07.23 15:13:18
Что за моды, вообще любые? Если "нет" -- то у меня будет очевидное предположение, что где-то в другой модификации используется такой же идентификатор -- такое же имя переменной. Насколько помню, ACS массив строк хранит как массив "указателей" (на деле чистые int) на таблицу строк.

+Ku6EPyXOBEPTKA+ пишет:
ак вот, в момент бага массива у меня всплывало название используемого для графики файла даже после того, как все данные и упоминания о нём были удалены

Всё тот же вопрос -- какие сторонние модификации были задействованы.
2 7 1
MyNameIs
= 1st Lieutenant =
Next rank: - Captain - after 60 points
2030

Doom Rate: 2.05

Posts quality: +876
Ссылка на пост №963 Отправлено: 06.07.23 18:14:14
у меня вроде бы что-то похожее было, когда я писал код для визуальных новелл, и весь текст запихнул в массив
он вышел огромным, и иногда выводилась какая-то чушь вместо строк
и даже некоторые, никак не связанные с этим кодом, скрипты ломались с ошибкой P-code. иногда. а иногда ломались другие никак не связанные.
1 1 1
+Ku6EPyXOBEPTKA+
- Major -
Next rank: = Major = after 43 pointsМодератор форума
2897

Doom Rate: 2.05

Posts quality: +1435
Ссылка на пост №964 Отправлено: 06.07.23 18:35:23
JSO x
Любые, от слова совсем. Например мой же хонте (хотя он вообще массивов не использует из-за чего мне выдаёт пустые строки). Совпадение идентификаторов точно отпадает. Я такие имена использую, что не думаю, что кто-то такой же е"!"*;%(ый найдётся. Может где-то в синтаксисе накосячено, но для чистоты эксперимента выдрал пример из вики и переписал по нему, а потом ещё разок перекидал всякие пробелы и табуляции, и переносы строк.

И самое главное, структура массива у меня не поехавшая. То есть переключатели работают правильно и видят массив как он есть. Просто данные берутся откуда-то вообще непонятно (напрочь игнорируя объявление). Может попробовать воткнуть объявление массива внутрь скрипта?. Но в любом случае это тупость.

EDIT1: Нет, только хуже стало, он перестал быть объявленным для других скриптов, при этом баг сохраняется.

UPDATE: Баг возникает именно при запуске совместно с любым вадом, который содержит ACS скрипты. Причём подмена данных происходит не только в массиве. Помните, ранее упоминалось про HudMessage. Так, вот, после разконсервирования скрипта и переделки его под вывод нужной мне (ручной ввод) строки текста, НЕОЖИДАННО!, стало выводить на экран какую-то хрень. И тут мне вспомнилось. В моде O.G.R Doom (здеть тема на форуме есть) была аналогичная ситуация, только там фатальней всё (порт просто зависал при попытке запустить с вадами, которые содержали ACS скрипты). И вот тут уже фантазия на тему что может быть таким упоротым заканчиваются. Надо попробовать очень древние порты поднять и посмотреть, была ли там такая проблема.
2 1 7
JSO x
- 2nd Lieutenant -
Next rank: = 2nd Lieutenant = after 140 points
1300

Doom Rate: 2.28

Posts quality: +701
Ссылка на пост №965 Отправлено: 07.07.23 00:23:27
Для ACS существует консольная команда "globstr" (правда, только при компиляции движка в Debug-режиме. Если разбираешься в этом, советую попробовать). Также есть ещё "scriptstat", но она вряд ли что-то подходящее к твоей ситуации выдаст.

Ошибка есть сразу после входа на уровень или после каких-то действий? Как выглядит объявление массива строк (в т. ч. с модификаторами)? Какова длина массива и элементов в нём? Есть ли специальные и непечатаемые символы вроде 0x00?
2 7 1
+Ku6EPyXOBEPTKA+
- Major -
Next rank: = Major = after 43 pointsМодератор форума
2897

Doom Rate: 2.05

Posts quality: +1435
Ссылка на пост №966 Отправлено: 07.07.23 00:46:08
JSO x
Короче, проблема не в массиве. Проблема в конфликте ACS модулей. Я целиком вырезаю объявление массива, но HudMessage по-прежнему выдаёт несуществующую строку. Совпадение названий вряд ли, опять же. Такое ощущение, что я что-то упускаю из вида, какую-то мелочь.
2 1 7
JSO x
- 2nd Lieutenant -
Next rank: = 2nd Lieutenant = after 140 points
1300

Doom Rate: 2.28

Posts quality: +701
Ссылка на пост №967 Отправлено: 07.07.23 13:33:21
Проверь Autoexec на всякий случай (в *.ini-файле).

P. S.: маловероятно, конечно, но на что-то вроде ZScript/VavoomC не можешь составные части проекта перевести?
2 7 1
+Ku6EPyXOBEPTKA+
- Major -
Next rank: = Major = after 43 pointsМодератор форума
2897

Doom Rate: 2.05

Posts quality: +1435
Ссылка на пост №968 Отправлено: 07.07.23 15:45:27
JSO x пишет:
P. S.: маловероятно, конечно, но на что-то вроде ZScript/VavoomC не можешь составные части проекта перевести?

У меня поддержка зандры, поэтому зскрипт отпадает, а с вторым не работал, не думаю что есть возможности. Просто странность в том, что баг с подменой данных возникает, если одновременно запустить в любом виде скомпиленный скрипт (пк3, вад или просто каталогом) на карте с скриптами или с модом, где используются скрипты. Причём это происходит даже в 1.8 гозе и старых зандрах (причём чистых). АСС тоже пробовал разные.

Добавлено спустя 5 часов 43 минуты 9 секунд:

Я хочу приложиться башкой об стену. Я же говорил, что я пропустил что-то очень тупое и незначительное, но из-за чего всё по езде поехало. Короче, в тушке самого модуля ACS нужно прописывать #library "имя модуля" (ну точнее правильно говорить библиотека). Так давно не занимался этой фигнёй, что просто из головы выскочило это сделать. В любом случае, это не отменяет того факта, что все гозы начиная от 1.8 и заканчивая за 4.10 и вместе с ними заднепроходиумы вообще тупо игнорят, что библиотека не объявлена, но скрипты исполняются. Из-за этого происходит не терминация скрипта с ошибкой (точнее вообще фатал при запуске), как это должно быть, а вообще лютая дичь с подменой данных в массивах и любых манипуляциях с строчными данными.
Зато теперь есть проверка на недостающие спрайтики поворотов :bitsa: .

Рейтинг сообщения: +2, отметил(и): JSO x, N00b
2 1 7
Michael63
= Major =
Next rank: Lieutenant Colonel after 222 points
3068

Doom Rate: 1.95

Posts quality: +647
Ссылка на пост №969 Отправлено: 09.07.23 00:43:26
N00b пишет:
Присутствуют ли на карте порталы и полиобъекты?

Нет.
N00b пишет:
На карте, с которой скриншот, это часто появляется или редко и при каких действиях?

Довольно редко, а при каких действиях - я пока не заметил.
Рендерер - Hardware accelerated, если я правильно понимаю вопрос (могу ошибаться, т.к. я не глубокий знаток теории).
Про ошибки округления у меня мысль была (если так, то с этим, наверно, ничего не поделаешь).
В общем, я на этот мелкий баг пока забил (как и на ещё один, про который даже не писал). Надеюсь, за лето закончу свой мегавад и выложу его для финальных правок. Тогда можно будет всё посмотреть, поиграть, и, может быть, будет ясно, как исправить.

Рейтинг сообщения: +1, отметил(и): N00b
1 1 3
Michael63
= Major =
Next rank: Lieutenant Colonel after 222 points
3068

Doom Rate: 1.95

Posts quality: +647
Ссылка на пост №970 Отправлено: 20.07.23 22:22:10
Сделал очередные несколько секторов в своей карте, начал тестировать и вдруг обнаружил, что в двух новых секторах я внезапно прохожу сквозь стены. Обычные односторонние линии, которые по умолчанию impassable, и я этот флаг не снимал. Не пойму, что за фигня. Почему такое может быть? Пока единственная мысль, что где-то возникает переполнение оттого, что карта уже большая. Примерно: 2000+ секторов, 9000+ вершин, 12000+ линий (плюс означает, что чуть больше).
UPD: вот сколько их точно.


UPD2: сейчас мне удалось устранить баг, сделав карту более компактной. То есть, похоже, дело в размере карты. Конкретно, видимо, в максимальной разности координат далёких друг от друга вершин.

Рейтинг сообщения: +1, отметил(и): RastaManGames
1 1 3
Michael63
= Major =
Next rank: Lieutenant Colonel after 222 points
3068

Doom Rate: 1.95

Posts quality: +647
Ссылка на пост №971 Отправлено: 30.07.23 00:19:35
Как увеличить fallingdamage в одном отдельном взятом уровне мегавада, предназначенного для игры в GZDoom? Я просто прописал в mapinfo в описании соответствующего уровня команду fallingdamage. Урон при падении включился. Но оказывается, что при здоровье 100 и арморе 200 игрок падает с верхотуры и не разбивается (а надо, чтобы при падении он погибал даже с 200 здоровья и армора). Параметр урона при падении должен как-то настраиваться, но я не нашёл, как (если просто написать fallingdamage = 1000 - не работает). Остальную физику хочу оставить прежней, увеличить только урон.
1 1 3
N00b
Chief Petty Officer
Next rank: Chief Petty Officer after 18 points
922

Doom Rate: 2.15

Posts quality: +384
Ссылка на пост №972 Отправлено: 30.07.23 09:41:51
Проще будет повесить конкретно на эти сектора страйфовский special 115: Instant Death, чем возиться со стандартным уроном от падения, особенно если он по факту нужен только в этих секторах.
К сожалению, урон от падения тонко не настраивается, хотя через ZScript легко можно было бы определить свою функцию зависимости урона от скорости --- надо когда-нибудь попросить об этом Графа. На выбор даётся три типа урона, на странице zdoom.org/wiki/Falling_damage есть подробное описание. FallingDamage --- это хексеновский, то есть наиболее злой из трёх типов, и если и его не хватает, то этим методом больше ничего не сделать.
Но ещё можно попробовать написать свой урон от падения на ZScript вручную. Если это потребуется, можно обсудить в ЛС.

Рейтинг сообщения: +1, отметил(и): JSO x
1 2
Michael63
= Major =
Next rank: Lieutenant Colonel after 222 points
3068

Doom Rate: 1.95

Posts quality: +647
Ссылка на пост №973 Отправлено: 30.07.23 11:43:18
N00b, спасибо. Я забыл написать, что у меня формат Boom. Там, если я правильно понимаю, special 115 нет (если ввести вручную, показывает unknown effect). FallingDamage у меня работает не как хексеновский, а как ZDoom-овский. Если бы он работал как хексеновский, то, согласно тому графику, высоты падения должно было хватить, чтобы умереть с любым стартовым здоровьем. Нет, вру, может и как хексеновский. Пожалуй, обойдусь костлём - повешу на сектора special 16, чтобы он добивал. Кривовато, но я планирую вскоре закруглить работу с мегавадом, т.к. уже чутка перегорел, а надолго затягивать с ним не хочу.
1 1 3
BeeWen
Lieutenant Colonel
Next rank: Lieutenant Colonel after 238 pointsСупермодератор форума
3402

Doom Rate: 1.61

Posts quality: +821
Ссылка на пост №974 Отправлено: 30.07.23 12:58:10
Michael63 пишет:
а надо, чтобы при падении он погибал даже с 200 здоровья и армора

Michael63 пишет:
у меня формат Boom

В таком случае этот вопрос можно попытаться решить телепортируя куклу игрока на неё же.

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

Doom Rate: 2.15

Posts quality: +384
Ссылка на пост №975 Отправлено: 30.07.23 13:04:08
Точно, и я снова забыл про то, что это Boom. Всё равно предложу ньюскульный метод, который будет убивать игрока именно при столкновении с землёй. Если в мегаваде уже переопределён класс игрока и через ZScript, то можно добавить туда следующее:
	override void PlayerLandedMakeGruntSound(Actor onmobj)
	{
		if (level.info.flags & (LEVEL_FALLDMG_ZD | LEVEL_FALLDMG_HX))
		{
			int threshold = -20;
			// Console.Printf(vel.z..""); <- подгонка значения
			if (vel.z <= threshold) { DamageMobj(self, self, 1000000, "Falling", DMG_FORCED | DMG_NO_FACTOR | DMG_FOILINVUL); return; }
		}
		Super.PlayerLandedMakeGruntSound(onmobj);
	}

Это даст игроку падать без последствий только менее чем на 192 юнита (там скорость 20 получается), причём включается это только на картах с FallingDamage.

Если класс игрока есть, но в DECORATE, то могу помочь с переводом.
1 2
Michael63
= Major =
Next rank: Lieutenant Colonel after 222 points
3068

Doom Rate: 1.95

Posts quality: +647
Ссылка на пост №976 Отправлено: 31.07.23 19:53:59
Спасибо, но я пока никакой скриптинг в Думе не трогал. Соответственно, класс игрока не переопределён. А телепортировать куклу игрока на неё же можно, но для этого мне надо делать довольно много дополнительных линий, а выглядеть будет всё равно неестественно. Оставлю пока топорный вариант, когда при большом здоровье игрок не разбивается, но максимально сильная "радиация" его добивает. Мне сейчас лучше доделать уровни и нажать паузу (или даже резет), а то собственное здоровье начало прихрамывать. Надеюсь, скоро уже выложу, и тогда, как я уже говорил, мелкие детали типа вот этой можно будет коллективно допилить при желании.

Рейтинг сообщения: +1, отметил(и): RastaManGames
1 1 3
JSO x
- 2nd Lieutenant -
Next rank: = 2nd Lieutenant = after 140 points
1300

Doom Rate: 2.28

Posts quality: +701
Ссылка на пост №977 Отправлено: 31.07.23 22:19:59
N00b пишет:
<...> то можно добавить туда следующее:

Оно же на все поверхности будет действовать, а не только на тот сектор. Так что, по-моему, это немного не то, что нужно.

Я мог бы предложить то же самое делать через "LevelPostProcessor::SetSectorSpecial()". В особенности подойдёт, когда
Michael63 пишет:
<...> класс игрока не переопределён.

Впервые этот метод появился в GZDoom g4.3.0 (искать "added generic level post-processing script class"). Стоит учитывать, если проект создаётся и под старые версии движка.


Второй вариант -- напрямую присвоить урон сектору (через "EventHandler::WorldLoaded()", например):
Sector sec = level.sectors[ 0 ];

sec.damageType = 'Falling';
sec.damageAmount = 0x7FFF;
sec.damageInterval = 1;
sec.leakyDamage = 0xFF; // Шанс игнорирования надетого антирадиационного костюма.

Впрочем, только что обнаружил, что же самое можно сделать и через ACS.


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

Хорошо, ждём!

Рейтинг сообщения: +1, отметил(и): RastaManGames
2 7 1
camper
- Master Sergeant -
Next rank: = Master Sergeant = after 28 points
432

Doom Rate: 1.43

Posts quality: +253
Ссылка на пост №978 Отправлено: 17.08.23 22:39:49
N00b пишет:
После этого нужно дать декорации номер (DoomEdNum), не совпадающий с этими (без этого можно будет только спаунить в игре её командой summon, а не ставить на карту). Вписать номер нужно после названия:


Оказывается это работает для всего. Нашел готовые вещи (things) в репозитории realm667 https://www.realm667.com/en/repository-18489
Где-то вещи (things) помечены именно всеми теми номерами и ключами-комментариями, а где-то нет. Очень жаль, что нет еще общепризнанного дополнительного списка для дополняемых вещей. А то так поставишь номер, а оно оказывается уже занято кем-то.
Кроме того кажется удобным добавлять вещь целиком в сборе, вместе с ресурсами (скриптами, звуками, графикой), а не разбрасывать по папкам pk3. Голова идет кругом от этого. Так и хочется, чтобы в стандат pk3 добавили отделную папку things, с категориями monsers, mapobject (decorate карты, но не скрипты), pickup и т.д.

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

Doom Rate: 2.15

Posts quality: +384
Ссылка на пост №979 Отправлено: 18.08.23 11:09:18
Это может вызвать проблемы только с совместимостью (при создании сборника из нескольких карт, например), и в таком списке нет смысла.
WADы из репозитория Realm667 можно добавлять прямо в корневую папку pk3. Но если их версия актора устраивает не полностью (хочется, к примеру, привести всех акторов более-менее к одному стилю), то придётся редактировать декорейт и ресурсы, каждый раз залезая в wad, а это ещё муторнее, чем один раз его распатронить по своим папкам. Вместо pk3 можно все ресурсы хранить в директории, которую упаковывать в pk3 только при релизе (с папками умеют работать и SLADE, и GZDoom). Так можно, например, одновременно строить карту в билдере и подгонять параметры акторов. А decorate можно разбить на несколько файлов и подключать их, примерно как в C: #include "monsters.txt"

Рейтинг сообщения: +1, отметил(и): camper
1 2
Герр Смертоносец
Chief Petty Officer
Next rank: Chief Petty Officer after 63 points
877

Doom Rate: 1.29

Posts quality: +785
Ссылка на пост №980 Отправлено: 18.08.23 18:56:43
camper пишет:
Где-то вещи (things) помечены именно всеми теми номерами и ключами-комментариями, а где-то нет. Очень жаль, что нет еще общепризнанного дополнительного списка для дополняемых вещей. А то так поставишь номер, а оно оказывается уже занято кем-то.

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

Для Hexen format/UDMF можно сделать универсальный customThingSpawner, спавнящий монстра в зависимости от arguments, в котором все возможные монстры и их подвиды будут вбиты на уровне Decorate заранее. В принципе это замена шила на мыло, но кому-то так может показаться удобнее.


camper пишет:
Кроме того кажется удобным добавлять вещь целиком в сборе, вместе с ресурсами (скриптами, звуками, графикой), а не разбрасывать по папкам pk3. Голова идет кругом от этого. Так и хочется, чтобы в стандат pk3 добавили отделную папку things, с категориями monsers, mapobject (decorate карты, но не скрипты), pickup и т.д.

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

Рейтинг сообщения: +1, отметил(и): camper
2
Страница 49 из 63Перейти наверх Пред.  1, 2, 3 ... 48, 49, 50 ... 61, 62, 63  След.
   Список разделов - Местечко мапперов и моддеров - Тема для новичков. Вопросы по маппингу/моддингу - любые!-2