DOOMer
1600 постов
Карма: 103
#1 08 января 2007 в 01:31
Сегодня работая над одной картой для Q3 обнаружил странную вещь. Итак:<br /><br />1. Ставим на карту где-нить trigger_multiple (вызывает какое либо событие при пересечениии его игроком).<br />2. Привязываем сей триггер к обекту target_give (возможность дать игроку любой итем, веапон или пауэр-ап).<br />3. Привязываем этот target-give к пачке патронов, лежащей где-нить в недоступном игроку месте.<br />4. В свойствах данной упаковки патронов (в моём случае было ammo_bfg) ставим количество патронов ОТРИЦАТЕЛЬНЫМ - например -50.<br />5. Компилируем карту и...<br /><br />Игрок проходит триггер, ему дают патроны счётчик которых убирается с экрана. И скольуо не стреляй - они не кончатся... по крайней мере я так и не смог достичь этого, хотя мож на 999 оно бы и остановилось.<br /><br />Вот мне интересно стало - баг это или фича? (можете попробовать на спецаиально собранной тест-мапе)<br /><br />А карту ту, которую делал скорее всего придётся не релизить в итоге... накрылась нужныая мне фича.<br /><br />
Вертексы должны образовывать конвексный браш
My Quake Maps

Core i7 8700 3.3 Ghz, 32 Gb RAM, GeForce RTX2060s
Gentoo Linux [amd64] | Windows 10 Home



сохранись перед дверью...два раза =)
Orel
131 постов
Карма: 6
#2 08 января 2007 в 12:50
Фича.<br />Дело в том, что имхо в коде игры отрицательное число патронов означает бесконечность (ведь у Gauntlet патроны не заканчиваются!). Опять-таки имхо по умолчанию у Gauntlet -1 патрон. Если дать игроку (через target_give или просто выложить на карту) еще Gauntlet, то по правилам игры он получит +1 патрон, соответственно патронов станет 0 - Gauntlet недоступен! Дадим еще - получим Gauntlet с ограниченным числом ударов (хотя жужжать этой штукой вхолостую можно сколько угодно).<br />Я давно подумывал об использовании отрицательного числа патронов для лишения игрока доступа к конкретному оружию. Но чтобы оно становилось бесконечным - такого не ожидал.<br />Отсюда вытекает такая система: при респавне тебе выдается одно оружие с бесконечным боезапасом, на карте оружия нет. Если убъешь врага - получишь его пушку, но боезапас будет ограничен (сколько дается по умолчанию).<br /><br />Эту фичу имхо можно заюзать так:<br />а) создать классы. <br />б) создать one-weapon арену. Респаунишься в комнате без всего, вокруг лежат пушки. Берешь одну - телепортишься на арену с этой пушкой и бесконечным боеприпасом.<br /><br />PS: А какая нужная тебе фича накрылась?
Винчестер - это инструмент для выполнения деструктивных действий с любыми типами органических вычислительных систем.
DOOMer
1600 постов
Карма: 103
#3 08 января 2007 в 14:53
Да, прочитав твой ответ вспомнил что видел в коде игры при респавне количество патронов для Gauntlet именно -1. И сам ставил в своём моде, который делал года 3 назад, те же -1 для шафта, чтобы его сделать бесконечным. Правда сие не прокатило, боты сразу переключались на тот же gauntlet и кромсали друг друга.&nbsp; Пришлось поставить 9999 и всё. А потом разработка заглохла, ия так и не разобрался с этим.<br /><br />Сейчас у меня не мод а карта. Фича планировалась такая:<br /><br />1. Игрок бегает по карте с выданным ему ружьём при респавне (БФГ).<br />2. На карте есть несколько телепортов, которые телепортят игрока в некую закрытую область карты, в которой игрок тут же проходит сквозь target_multiple, который должен был ОТБИРАТЬ у игрока патроны (скидывать их количество на 0), через target_give с отрицательными патронами.<br />3. Чуть дальше ещё один trigger_multiple, который через target_give выдаёт игроку уже другое оружие (шафт к примеру).<br />4. И после этолго игрока телепорят в другую область карты, где уже надо беать с шафтами (патронов для БФГ там нет).<br /><br />Попробую конечно щас сделать енмного иначе, после п.2 (в котором count у пачки патронов будет -1) давать ОДИН патрон на следующем target_multiple, а уже потом всё остальное. Но не факт что оно сработает.
Вертексы должны образовывать конвексный браш
My Quake Maps

Core i7 8700 3.3 Ghz, 32 Gb RAM, GeForce RTX2060s
Gentoo Linux [amd64] | Windows 10 Home



сохранись перед дверью...два раза =)
Orel
131 постов
Карма: 6
#4 08 января 2007 в 17:53
Можно сделать так.<br />При телепорте давать много патронов (например 300), ведь больше 200 игрок не получит. Потом давать -200, соответственно останется 0. Но тут есть риск - если игрок успеет выстрелить между первой и второй выдачей, у него останется отрицательное число=бесконечность.<br />Твой вариант тоже должен сработать, так как при отрицательном числе патронов оно не должно уменьшаться, а значит, если дал -1 патрон, то он и останется -1, имхо.<br /><br />PS:Так это ты накатал Lightning Arena? А я-то ругался - через 5 минут игры патроны кончаются, а новые взять негде. Приходится дохнуть. &gt;:(
Винчестер - это инструмент для выполнения деструктивных действий с любыми типами органических вычислительных систем.
UAC
833 постов
Карма: 27
#5 08 января 2007 в 19:00
А небо на скрине такое родное, строгосское ]:&gt;
DOOMer
1600 постов
Карма: 103
#6 08 января 2007 в 19:36
[quote author=UAC link=topic=63.msg750#msg750 date=1168282837]<br />А небо на скрине такое родное, строгосское ]:&gt;<br />[/quote]<br />Самый симпатичный скайбокс из всех имеющихся в Q3 (ИМХО).. красиво смотрится, вот и ющаю его даж на тестовых картах.<br /><br />
Вертексы должны образовывать конвексный браш
My Quake Maps

Core i7 8700 3.3 Ghz, 32 Gb RAM, GeForce RTX2060s
Gentoo Linux [amd64] | Windows 10 Home



сохранись перед дверью...два раза =)
DOOMer
1600 постов
Карма: 103
#7 08 января 2007 в 21:39
-1 патрон увы не всегда именно ывдаёт игроку -1 патрон. Но в целом решение я нашёл, и карта скорее всего будете недели через полторы.
Вертексы должны образовывать конвексный браш
My Quake Maps

Core i7 8700 3.3 Ghz, 32 Gb RAM, GeForce RTX2060s
Gentoo Linux [amd64] | Windows 10 Home



сохранись перед дверью...два раза =)
Orel
131 постов
Карма: 6
#8 08 января 2007 в 22:18
[quote author=DOOMer link=topic=63.msg754#msg754 date=1168292384]<br />карта скорее всего будете недели через полторы.<br />[/quote]<br />Ну-ну. Может и я чего накатаю, на тему one-weapon arena...
Винчестер - это инструмент для выполнения деструктивных действий с любыми типами органических вычислительных систем.