Автор | Сообщение |
SLON = Sergeant =
 | 340 |
 Doom Rate: 0.59 Posts quality: +430 |
Отправлено: 18.02.20 23:45:43 | | | Каким образом в вад можно добавить новый статичный объект декорации (то же дерево), что бы тот же гздумбёлдер/слэйд его видел (в случае со слйэдом можно через файл конфигурации, но сам гздум актора почему-то "цеплять" отказывается, и вылазит <i>). На тех же здумфорумах как ни странно ничего внятного на эту тему не нашёл. |
|
|
| |
Герр Смертоносец - Warrant Officer -
 | 1059 |
 Doom Rate: 1.36 Posts quality: +924 |
Отправлено: 19.02.20 11:50:34 | | | SLON
Editor number-то прописан? Ни с чем не конфликтует? | |
|
5 |
 |
|
| |
ZZYZX - UAC Commissar -
 |  | 6284 |
 Doom Rate: 1.65 Posts quality: +1633 |
Отправлено: 19.02.20 12:40:02 | | | SLON
Кидай вад и тебе сразу дадут список статей на здумвики которые ты не прочитал  |
|
|
2 |
2 |
1 |
 |
|
| |
MAN_WITH_GUN Chief Petty Officer
 | 874 |
 Doom Rate: 2.5 Posts quality: +568 |
Отправлено: 20.02.20 19:58:29 | | | У меня есть весьма странный вопрос, на который в 90% случаев не получу ответ: У меня есть карта под бум с множеством детайла, есть одно место, из-за которого у меня в последнее время начались появляться HOM'ы в тех местах, где их никогда не было и не могло быть, а также ломались другие куски карты, превращая их в неразборчивое месиво, как и мой вопрос. И причём это происходит не только в самом буме, а и в остальных портах. Я всю карту пронюхал и до сих пор не понял каким раком она резко искривилась? Есть предположения, что всё из-за большого кол-ва мидл-текстур, разбросанных в небе, но блин, всё равно не понимаю в чём проблема.
Может и выглядит как обычная болтовня нежели на чётко поставленный вопрос, но мне нужны советы на этот счёт. Сталкиваюсь с этим впервые. | |
|
| |
YURA_111 UAC Sergeant Major
 | 768 |
 Doom Rate: 1.98 Posts quality: +136 |
Отправлено: 20.02.20 20:35:06 | | | MAN_WITH_GUN
А размер карты часом не превышает допустимый максимум? | |
|
| |
MAN_WITH_GUN Chief Petty Officer
 | 874 |
 Doom Rate: 2.5 Posts quality: +568 |
Отправлено: 20.02.20 23:56:21 | | | YURA_111 пишет: | А размер карты часом не превышает допустимый максимум? |
Есть определённый лимит? У меня локация примерно 10000 маппикселей в длину и в ширину. | |
|
| |
YURA_111 UAC Sergeant Major
 | 768 |
 Doom Rate: 1.98 Posts quality: +136 |
Отправлено: 21.02.20 11:11:10 | | | Насчет BOOM не могу сказать - но вот конкретно в GZDOOM это -16384 и 16383 по обеим осям (хотя пишут что якобы -32767 и 32767 ). В этих пределах работает корректно. Если вылезать за эти пределы - начинаются фокусы, причем некоторые увидешь не сразу... | |
|
| |
MAN_WITH_GUN Chief Petty Officer
 | 874 |
 Doom Rate: 2.5 Posts quality: +568 |
Отправлено: 21.02.20 12:52:23 | | | YURA_111
Постарался убрать пару деталей и урезать саму локацию ,блин, помогло действительно. Но лишился множества красивых мест. . .
Возможно из-за самих размеров карта выдавала глюки, т.к не может сразу много деталей прогружать. Очень странно, т.к я уже подобное делал и Boom не выдавал никаких багов. | |
|
| |
Never Recruit
 | 2 |
Doom Rate: 2
|
Отправлено: 22.02.20 19:14:19 | | | играя на старом ноуте, заметил такую проблему, при выходе из gzdoom выдает ошибку, также не сохраняются настройки
*** Fatal Error ***
Address not mapped to object (signal 11)
Address: 0x60
система: linux mint 19.2
gzdoom version g3.8.1_legacy | |
|
| |
SAM - Master Corporal -
 | 201 |
 Doom Rate: 1.86 Posts quality: +17 |
Отправлено: 02.03.20 01:16:58 | | | ребята всем привет! всех с первым днем весны) в общем у меня редкая и странная проблема, назвал я ее "вирус в вадах" короче говоря добрался я до своего очень старого мода "smod.wad" сделан он мной по мотивам мода для халфы но очень прост и банален... Проблема с этим вадом такова, внутри имеются разноименные текст-файлы для каждой модели (монстра) по отдельности так вот двое из этих файлов перестали быть текстовыми (исправление и копирование текста в новый "тхт" не помогают) соответственно randomspawner их не видит, в dcorate листе они прописаны ....что это может и как лечить???
 | |
|
| |
qwe8013 - Lance Corporal -
 | 154 |
Doom Rate: 1.9 Posts quality: +50 |
Отправлено: 08.03.20 19:48:47 | | | Приветствую всех. Некоторое время назад выкладывал wad с одним уровнем на данном форуме, собирался продолжить, но по некоторым причинам, к сожалению, не мог. Сейчас работаю над вторым уровнем, и тут появилась проблема: в одной из комнат второго уровня в игре начинаются тормоза, как лучше всего это побороть?
Вад: https://dropmefiles.com/Dbxmo (тормоза в комнате с деревянным ящиком, окружённым свечами).
Если что, то работаю под Arch Linux, память 12 GB, процессор Intel® Pentium(R) CPU G620 @ 2.60GHz × 2, порт -- gzdoom | |
|
| |
nailzx128 - Lance Corporal -
 | 136 |
Doom Rate: 1.43 Posts quality: +98 |
Отправлено: 09.03.20 20:08:59 | | | Йоу, народ. Хелпуйте, пжлст, молодому быдлокодеру) Очень хочу замутить фичу с динамическим звуком шагов. Типа, зависящий от скорости ГГ.
Написал код, но при запуске уровня, меня кидает в консоль и пишет, что мол VM execution aborted: tried to read from address zero. Где у меня ошибки, где я уже усрал код?
class step : eventhandler
{
override void worldtick()
{
int spd;
playerpawn pl;
spd = clamp(sqrt(pl.vel.x * pl.vel.x + pl.vel.y * pl.vel.y),
0.0,16.666667);
if(spd = 0.8)
{
for (int i = 0; i = 50; i++)
pl.a_playsound("game/playerstep",56,128);
}
if(spd = 0.4)
{
for (int i = 0; i = 80; i++)
pl.a_playsound("game/playerstep",56,128);
}
super.worldtick();
}
} | |
|
| |
ZZYZX - UAC Commissar -
 |  | 6284 |
 Doom Rate: 1.65 Posts quality: +1633 |
Отправлено: 09.03.20 20:43:20 | | | Ты не назначаешь pl. Ты же не думаешь, что он сам появится?
Как-то так:
playerpawn pl = playerpawn(players[consoleplayer].mobj)
Ещё я бы на твоём месте не сравнивал напрямую через ==, а сравнивал через < (т.е. меньше) |
|
|
2 |
2 |
1 |
 |
|
| |
nailzx128 - Lance Corporal -
 | 136 |
Doom Rate: 1.43 Posts quality: +98 |
Отправлено: 09.03.20 21:03:42 | | | ZZYZX пишет: | Ты не назначаешь pl. Ты же не думаешь, что он сам появится?
Как-то так:
playerpawn pl = playerpawn(players[consoleplayer].mobj) |
Благодарствую за опертаивный ответ. Однако, теперь Гоззо ругается на .mobj и отказывается стартовать. Я всё правильно делаю, или я опять что-то недопонимаю?
class step : eventhandler
{
override void worldtick()
{
int spd;
playerpawn pl;
spd = clamp(sqrt(pl.vel.x * pl.vel.x + pl.vel.y * pl.vel.y),
0.0,16.666667);
if(spd = 0.8)
{
for (int i = 0; i = 50; i++)
playerpawn pl = playerpawn(players[consoleplayer].mobj);
pl.a_playsound("game/playerstep",56,128);
}
if(spd = 0.4)
{
for (int i = 0; i = 80; i++)
playerpawn pl = playerpawn(players[consoleplayer].mobj);
pl.a_playsound("game/playerstep",56,128);
}
super.worldtick();
}
} | |
|
| |
N00b Chief Petty Officer
 | 922 |
Doom Rate: 2.15 Posts quality: +384 |
Отправлено: 09.03.20 21:16:37 | | | nailzx128
Раз вылезает ошибка, значит, по крайней мере, этот код находится в правильном месте (lump ZSCRIPT). Это уже неплохо
Когда ты пишешь "playerpawn pl", виртуальная машина zscript понятия не имеет, какого playerpawn-а ты имеешь в виду. Их вообще может быть несколько на уровне (если это мультиплеер, например). Нужно уточнять, какой именно объект тебе нужен (инициализировать переменную). Кстати, почему spd целого типа, а не double? Это пережиток ACS, где вещественные числа с фиксированной точкой представлены в памяти как int?
Почему использован EventHandler? Он предназначен для других вещей, более того, замена WorldTick() может быть весьма ресурсоёмкой даже в таком простом случае. Я бы реализовывал такое либо переопределением класса игрока, либо инвентарной вещью, отслеживающей перемещение.
Далее, в ZScript есть методы Length() и LengthSquared() для классов Vector2 и Vector3. Вместо sqrt(pl.vel.x * pl.vel.x + pl.vel.y * pl.vel.y) можно написать pl.vel.xy.Length().
Ещё ты путаешь присваивание (i = 14 --- присвоить i значение 14) и сравнение (j == 32 --- равно ли j 32?). Это два разных оператора. Все сравнения в коде написаны неправильно, а некоторые дважды неправильно: ну не бывает такого, чтобы скорость игрока была точно равна 0.8 или 0.4. Нужно как-то использовать операторы "меньше/больше"; это и лучше согласуется с интуицией.
Что ты хотел сказать циклами, я вообще не понимаю. Проиграть одновременно 50 или 80 одинаковых звуков --- это уже терривад какой-то (хотя, на самом деле, больше семи и не получится).
Поднимаю вопросы SAM и qwe8013. |
|
|
| |
ZZYZX - UAC Commissar -
 |  | 6284 |
 Doom Rate: 1.65 Posts quality: +1633 |
Отправлено: 09.03.20 21:44:46 | | | nailzx128
Простите, mo, а не mobj |
|
|
2 |
2 |
1 |
 |
|
| |
VladGuardian - UAC Commissar -
 | 5875 |
 Doom Rate: 1.31 Posts quality: +2134 |
Отправлено: 10.03.20 15:12:32 | | | N00b2015 пишет: | ну не бывает такого, чтобы скорость игрока была точно равна 0.8 или 0.4. Нужно как-то использовать операторы "меньше/больше"; это и лучше согласуется с интуицией. |
| Нужно как-то использовать операторы "меньше/больше"; |
Обычно для веществ. чисел делают некий "зазор толерантности":
(написано в псевдокоде, ну типа язык C)
const float TOLERANCE = 1e-5; //регулируем это значение по усмотрению, в зависимости от выполняемых задач
bool ApproxEqual( float x, float y )
{
return (Abs(x - y) <= TOLERANCE);
}
Таким образом, вместо крайне ненадёжногоif(spd == 0.8)
пишем "помехоустойчивый" аналог, мягкого сравненияif ApproxEqual( spd, 0.8 )
Я в первый раз столкнулся с этой хренью лоб-в-лоб (то есть, нельзя уже было обойти),
когда программировал свою 3D-графику, кажется в функции проекции вектора на плоскость, или чем-то подобным,
где никогда не получалось ровных значений 8.0, 5.0, а только 7.99996, 5.000001 и всё в этом духе. | |
|
4 |
15 |
23 |
 |
|
| |
N00b Chief Petty Officer
 | 922 |
Doom Rate: 2.15 Posts quality: +384 |
Отправлено: 10.03.20 20:05:15 | | | VladGuardian
Да, если нужно равенство, то делают обычно так. Но в данном случае по смыслу более подходит неравенство. | |
|
| |
Xtor = Lance Corporal =
 | 162 |
 Doom Rate: 1.95 Posts quality: +18 |
Отправлено: 01.04.20 21:01:38 | | | Доброго вечера, уважаемые думеры!
Была идея - реализовать возможность рандомайзера музыки прямо во время игры подобию DOOM (2016) - во время боёв музыка становится напряжённой, а во время исследования уровней (без боёв) - спокойной.
Однажды наткнулся на один файл, суть которого сводилась к следующему:
ввести параметр, по которому задаётся количество монстров, которые обращают внимание на игрока, после чего музыка уровня меняется на "напряжённую". После того, как монстры, следующие за игроком ликвидированы, возвращается музыка уровня, которая прописана в MAPINFO.
Я решил немного модифицировать данный "рандомайзер" и сделал два скрипта:
1-ый возвращает стандартную музыку уровня;
2-ой переключает музыку на напряжённую и при помощи рандома выбирает одну из семи имеющихся треков в архиве. В этом же скрипте указываются названия музыки.
Первая проблема возникает в том, что когда явно задано количество монстров (что через CVAR, что через меню), который обратили внимание на игрока, в этот момент на экране высвечивается P_Startscript Unknown Script. Не знаю, как её побороть.
Вторая кроется в том, что я желаю, чтобы эта вещь работала на любых уровнях в принципе, а не только на первом, который явно задаётся в ZSCRIPT-файле в виде следующей строки:
Я попробовал этот момент изменить на следующую строку:
, но это так и не решило первую проблему.
Подскажите, как это можно побороть?
Проблемный файл находится здесь.
Сами скрипты представлены ниже.
1 (смена музыки на боевую):
2 (возвращение стандартной музыки):
Благодарю за внимание. | |
|
| |
N00b Chief Petty Officer
 | 922 |
Doom Rate: 2.15 Posts quality: +384 |
Отправлено: 01.04.20 21:39:25 | | | Xtor
Нельзя ли было перед отправкой хотя бы заменить музыку на думовские midi? Хоть и 2020 год, не у всех соединение быстрое, а тут 40 Мб минут десять пришлось качать с mediafire.
Если что, вот сразу ссылка на всякий случай, может, пригодится (там тоже mediafire, но уже 70 Мб )
Что нужно поменять:
дописать в начало обоих ACS-исходников (а лучше собрать их в один) #library "SetCombatMapMus" и #library "RestoreDefMapMus" соответственно;
в loadacs убрать .o;
поменять массив songs_name на такой (ты же переименовывал музыку): str songs_name[7] = { "music/CombatSequence_01_long", "music/CombatSequence_02_long", "music/CombatSequence_03_short", "music/CombatSequence_04_short", "music/CombatSequence_05_short", "music/CombatSequence_06_long", "music/CombatSequence_07_long"};
в zscript вернуть все ACS_Execute и удалить все вызовы CallACS (это то же самое, но почему-то в CallACS ты пытаешься вызывать не скрипт, а целый объектный файл, что не имеет смысла).
По второй проблеме --- у меня вроде нормально работает при переходе с уровня на уровень, но, если что, советую ознакомиться со следующей страничкой и поменять PlayerEntered на какой-нибудь другой handler (по ситуации). |
Рейтинг сообщения: +1, отметил(и): JSO x |
|
| |