Ну это и в декоре (особенно ацс) можно. Спавнишь 64 актора в каждом направлении, отслеживаешь в какой стороне ближе попало в стенку Ещё можно через SetActorPosition.
Можно, но я думаю придётся руками экшны проверять (202 и т.д.). Но может и не придётся, я не пробовал этим заниматься.
Есть BlockLinesIterator (или как-то так), позволяющий получить список объектов Line (лайндефы) в определённом блоке (координатах).
Таким образом можно искать двери и сектора рядом с актором.
Понял. Ну если в будущем будет желание обновить мой ACS длиннокод на зскрипт, я попробую
aivar242:
Значит так: - Первые значения - 168:191 - это диаппазон красной палитры, от самого светлого, до самого тёмного тона - это заменяемый цвет. Второе - это диаппазон зелёной палитры, от самого светолого, до самого тёмного тона - на это цвет заменяем. Эти значения, как я понял, расчитаны для зелёного торча
Да, именно так. Соответственно, строка транслейшна может содержать в себе сразу несколько диапазонов, например так:
Translation "112:127=208:223", "192:207=16:31"
(это значит что цвета с 122 по 127 мы равномерно заменяем цветами с 208 по 223, а цвета с 192 по 207 мы равномерно заменяем цветами с 16 по 31)
Соответственно, тебе надо посмотреть палитры дума и еретика здесь, чтобы понять какие числа на какие заменять
Только есть небольшая загвоздка: спрайты огня ты брал из файла heretic.wad, тогда как игра, для которой ты делаешь мод, это дум. Поэтому у тебя такие варианты:
Вариант 1: через слейд поменять спрайтам огня палитру с еретиковской на думскую, и кинуть эти измененные спрайты огня себе в мод. Соответственно, когда ты будешь подбирать себе числа для строки Translation , ты будешь руководствоваться палитрой дума
Вариант 2: через слейд включить режим еретика (сверху справа выбрать палитру еретика), в нем изменить translation (его можно менять в слейде, да) таким образом, чтобы огонь поменял цвет, причем качественно (с градиентами и ореолами), после чего конвертировать в труколор и сохранить эти труколорные спрайты себе в мод (после чего в твоем декорейте уже не будет строк translation но для каждого цвета огня будет свой актор со своим набором спрайтов)
Достоинства варианта 1: он проще, там минимум использования слейда, и меньше декорейт кода
Недостатки варианта 1: качество огня может оказаться неудовлетворительным (градиенты, ореолы и прочее могут пострадать по причине конвертации из палитры еретика в палитру дума)
Достоинства варианта 2: качество огня наилучшее (градиенты, ореолы и прочее не пострадают, так как результат мы сохраняем в труколор, где палитр нет совсем, и глючить нечему)
Недостатки варианта 2: он сложнее, там максимум использования слейда (примерно как в пунктах 3 и 4 вот этого комментария, даже чуть больше), и больше декорейт кода
Какой вариант будем использовать?
aivar242:
Знак равенства, тоже пока не понятен для чего.
Это такой синтаксис команды: прошлый цвет = новый цвет
1) Пускаешь слейд и справа сверху выбираешь "Palette: Heretic"
2) Открываешь heretic.wad
3) Теперь выбери мышкой спрайт FX09A0, и нажми в слейде справа сверху кнопку "Colour Remap"
4) Снизу там есть "Translation String", сейчас там значение "0:0=0:0"
Дальше, то что нужно сделать, разделится на несколько этапов. В текущем комментарии я расскажу как делается первый этап. Поехали:
5) Сначала нам надо определиться, какие диапазоны цветов задействованы в текущем спрайте FX09A0. Для этого выполни следующие действия:
Скрытый текст:
5.1) Там где "Origin range" - зажми ЛКМ и выдели всю палитру. Если ты все сделал правильно, то спрайт на картинке снизу справа (там где preview) должен стать полностью черным, "Resulting Palette" снизу слева должна стать полностью черной, а "Translation String" снизу должна стать "0:255=0:0"
5.2) Теперь давай повторим пункт 5.1, но выделим мышкой только верхнюю половину палитры "Origin range". Если ты все сделал правильно, то на спрайте на картинке снизу справа (там где preview) должны появиться 4 черные точки в центре, верхняя половина "Resulting Palette" снизу слева должна стать полностью черной (а нижняя половина остаться без изменений), а "Translation String" снизу должна стать "0:127=0:0"
5.3) Теперь давай повторим пункт 5.2, но выделим мышкой только нижнюю половину палитры "Origin range". Если ты все сделал правильно, то на спрайте на картинке снизу справа (там где preview) должны появиться 4 белые точки в центре (а остальная часть спрайта должна стать полностью черной), нижняя половина "Resulting Palette" снизу слева должна стать полностью черной (а верхняя половина остаться без изменений), а "Translation String" снизу должна стать "128:255=0:0"
Таким образом, ты понимаешь, что выделяя мышкой цвета как расписано в пунктах 5.1, 5.2 и 5.3, можно экспериментальным путем определить, какие цвета (и какие диапазоны цветов) задействованы в спрайте. Но для корректного отсеивания цветов, нам придется выделять мышкой не "пол палитры", как в пунктах выше, а конкретные диапазоны цветов (а иногда даже конкретные единичные цвета).
Покажу на примере, как это делается:
Скрытый текст:
5.4) Повторим пункт 5.3, но выделим мышкой только 4 белых цвета (вторая сверху строка, 4 цвета слева) в палитре "Origin range". Если ты все сделал правильно, то на спрайте на картинке снизу справа (там где preview) должны появиться 4 черные точки в центре, а "Translation String" снизу должна стать "32:35=0:0"
Вот таким нехитрым образом мы узнали, что пиксели спрайта огня, которые расположены в том месте, где сейчас 4 черные точки, используют цвета палитры белого диапазона (с 32 по 35)
5.5) Повторим пункт 5.4, но выделим мышкой только красный диапазон в палитре "Origin range". Если ты все сделал правильно, то на спрайте на картинке снизу справа (там где preview) по краям снизу и снизу-слева/снизу-справа должны появиться черные точки (или полосы), а "Translation String" снизу должна стать "145:168=0:0"
Вот таким нехитрым образом мы узнали, что пиксели спрайта огня, которые расположены в том месте, где сейчас черные точки/полосы, используют цвета палитры красного диапазона (с 145 по 168)
5.6) Повторим пункт 5.5, но выделим мышкой только "диапазон огня" в палитре "Origin range" (это цвета с желтого по красный в самой нижней строке палитры "Origin range"). Если ты все сделал правильно, то на спрайте на картинке снизу справа (там где preview) бОльшая его часть станет черной, а "Translation String" снизу должна стать "241:247=0:0"
Вот таким нехитрым образом мы узнали, что пиксели спрайта огня, которые расположены в том месте, где сейчас черные точки/полосы, используют цвета палитры "огненного" диапазона (с 241 по 247)
Для текущего комментария это все, попробуй это понять, и где непонятно, спрашивай. Как поймешь все это полностью, пойдем дальше
Отлично. Теперь попробуй в origin range выбрать красный диапазон, а в target range зеленый диапазон ("Translation String" снизу должна стать "145:168=209:223"). Слева сверху, там где translation ranges, нажми плюс.
После этого в origin range выбери желтый диапазон, а в target range зеленый диапазон ("Translation String" снизу должна стать "145:168=209:223", "137:144=209:223"). Слева сверху, там где translation ranges, нажми плюс.
Вот таким методом ты должен перекрасить весь спрайт в зеленые оттенки (ну или не зеленые, в общем ты понял идею). Попробуй это сделать и отпиши о результате
На всякий случай уточню, что сейчас речь не идет о твоем моде и гздуме - сейчас идет речь строго о preview картинке спрайта в слейде (а твой мод и гздум будут на последующих этапах)
З.Ы. Еще кстати можешь поводить мышкой по preview - на палитре слева снизу оно покажет, какой цвет в палитре используется для пикселя, на который указывает курсор мышки
theleo_ua Да, там не так просто как кажется. Если бы просто выделить родной диаппазон цвета и поменять на такой же полный зелёный, - так нет, там надо прикидывать в уме, какой примерно тональности был красный, чтобы примерно в такой же тональности создать зелёный. Только так что-то правильное получится. Если выбитать полные диаппазоны и там и там, то градация пикселей зёлоного спрайта будет не правильной. Ну я понял как надо делать, чтобы получить то что мне нужно.
Кстати удалось сделать пламя для свеч, с помощью генератора TeleGlitter. Выглядят не плохо, но 2D конечно. Только вот столкнулся с проблемой, если пламя под 3D каким-то объектом (Evileye), то оно глючит - начинает мерцать, не правильно работать. Решил отказаться от этой идеи. Конечно, то что пламя само по себе генерировалось - уже радует, хоть и 2D. Cкиновая анимация, в Гоззе, реализована - никак. То есть надо повторять целые простыни акторов, ради простенькой 3-ёх скиновой анимации. Граф не чешется почему-то в этом направлении. Если уж нет 3D генераторов, то хоть бы скиновую анимацию нормально бы сделал, как у моделей.
Да, там не так просто как кажется. Если бы просто выделить родной диаппазон цвета и поменять на такой же полный зелёный, - так нет, там надо прикидывать в уме, какой примерно тональности был красный, чтобы примерно в такой же тональности создать зелёный. Только так что-то правильное получится. Если выбитать полные диаппазоны и там и там, то градация пикселей зёлоного спрайта будет не правильной. Ну я понял как надо делать, чтобы получить то что мне нужно.
Да, в этом и заключается основная проблема. Бывает так, что тебе повезло (например ты захотел перекрасить какодемона в синий цвет, в таком случае просто красный диапазон меняешь на аналогичный синий и всё), а бывает так что не повезло (как в твоем текущем случае), и придется работать чуть ли не с каждым пикселем
В общем оставшиеся шаги будут следующие:
Скрытый текст:
6) Разбираешься с текущей проблемой подбора зеленой палитры для спрайта (можешь например сделать скриншоты экрана, и повставлять в пеинте или фотошопе палитру для желтого огня (имею в виду только те цвета, которые используются в спрайте, их там вроде штук 15), и таким же макаром в этом же фотошопе снизу подобрать адекватную зеленую, красную и синюю палитры, мне кажется так проще будет)
7) После этого жмешь ОК
8) Дальше конвертируешь спрайт в труколор и сохраняешь его себе в мод, причем под другим именем (например FG09 вместо FX09), т.е. для каждого цвета у тебя в моде будет свой набор спрайтов со своими именами (соответственно в декорейтовых акторах ты должен будешь прописать эти имена). Как это все делать, я тебе уже рассказывал здесь (пункт 3, только без кнопки Colourise, она в нашем случае не нужна).
И помни, что у тебя 2 варианта:
Скрытый текст:
Вариант 1: все эти шаги проделать для каждого спрайта отдельно (т.е. сначала перекрашиваешь FX09A0, потом FX09B0 и так до FX09K0)
Вариант 2: все эти шаги проделать 1 раз сразу для всех спрайтов (т.е. метишь через шифт все спрайты с FX09A0 по FX09K0 и нажимаешь "ПКМ / Graphics / Colour Remap"). Но после того, как подберешь цвета и нажмешь ОК, тебе придется нажать ЛКМ на спрайте FX09B0 и потом ЛКМ на спрайте FX09A0, иначе оно не покажет превью перекрашенного спрайта FX09A0 который у тебя был выделен до этого
Вариант 2 лучше тем, что меньше нажатий, а вариант 1 лучше тем, что в варианте 2 часть спрайтов могут перекраситься некорректно. В таком случае (если часть спрайтов некорректно перекрасились), для "некорректных" спрайтов имеет смысл использовать вариант 1, а для всех остальных вариант 2
Если всё свелось к тому, что оригинаьные спрайты всё равно надо перекрашивать, то почему я не могу это сделать в Фотошопе? Нафига мне Slade и столько телодвижений? В Фотошопе есть функция - заменить цвет. Или это плохой вариант? Всё таки я попробую сделать без перекрашивания спрайтов. Мне только нужно как-то палитру Думовскую использовать, вместо Еритиковской.
Если всё свелось к тому, что оригинаьные спрайты всё равно надо перекрашивать, то почему я не могу это сделать в Фотошопе? Нафига мне Slade и столько телодвижений? В Фотошопе есть функция - заменить цвет. Или это плохой вариант?
theleo_ua Там возможно даже легче будет. Взял пипеткой образец с оригинального спрайта огня, и заменил соотвествующие пикселя в жёлтых спрайтах. Но я хочу всё же добиться установки огня самой Гоззой, из Декорейта, с помощью параметров. Я там крутил их, вертел, и что-то сдобное получилось, но не до конца.
Какой политрой мне пользоваться в Слейде - Херетиковской, или Думовской, для получения параметров цветности для Дума, в Translation?
theleo_ua 1. Почему при наведении указателя на спрайт, в Slade, спрайт становится ярче? Зачем это нужно?
2. При выборе Думовской палеты, спрайт не корректно отображает цвета. Как это исправить?
Точно. У меня два ответа на эту непонятку. 1. Это показывает этот спрайт, в режиме Bright, то есть яркий, освещённый. 2. Это просто подсветка, когда наводишь указателем, для удобства определения. Только вот сомнительное удобство тут. Некоторым это будет выпаривать моск, когда они будут возиться с цветовым тоном пикселей, при перекрашивании. Не очень продуманная идея с наведением указателя.
theleo_ua:
скриншоты в студию: первый до выбора палитры, второй как ты выбираешь палитру, третий когда спрайт некорректно отображает цвета
Первый - Heretic палетта, цвета в порядке, потому что это родной спрайт из родного WADa. Второй - Doom палетта, видны не правильные цвета, потому что спрайт не Думовский где цвета в палетте по другому расположены. Третий - Quake, для примера.
Мне нужно, чтобы спрайт, при палетте Doom, выглядел так же, как при палетте Heretic. Мне нужны именно красно-жёлтые цвета для перевода в зелёный. Я конечно могу и Думовскую версию спрайта перевести в зелёный, но Гозза не понимает такой расклад, ей нужен перевод строго с красно-жёлтого на зелёный. Только так.
Я понял почему Гозза не видит перекрашенный спрайт, из Думовской (не правильные цвета) палетты. Всё потому, что спрайт который я хочу сделать зелёным, - (барабанная дробь!) - это не спрайт Heretic'a. Мы ведь его вытащили из ВАДа, конвертнули в png и закинули в мой мод. Гозза отуда ведь его читает. Я его конечно попытался открыть в Slade, но с палитрами он никак не взаимодейтствует и пикселя выбрать и поменять цвет не получается. Отсюда, я не могу получить параметры, чтобы вбить их в Декорейт, в Translation.
Вообще мне всегда было пофиг(да и сейчас пофиг, просто пофлудить захотелось), зачем нужно подсвечивать спрайт при наведении курсора, но возможно этому есть разумное объяснение. Чесно говоря мне попросту лень проверять, но точно можно сказать то, спрайты/текстуры до наведения курсора отображаются именно так, как мы видим их в среде виндоус в программах для просмотра\редактирования.
Пользуясь тем же нехитрым методом можно сделать скрин к примеру в гоззе(при дефолтных настройках гаммы и пр.) и сравнить с тем, что мы видим в слейде.
Только вот сомнительное удобство тут. Некоторым это будет выпаривать моск, когда они будут возиться с цветовым тоном пикселей, при перекрашивании. Не очень продуманная идея с наведением указателя.
Первый - Heretic палетта, цвета в порядке, потому что это родной спрайт из родного WADa. Второй - Doom палетта, видны не правильные цвета, потому что спрайт не Думовский где цвета в палетте по другому расположены. Третий - Quake, для примера.
Мне нужно, чтобы спрайт, при палетте Doom, выглядел так же, как при палетте Heretic. Мне нужны именно красно-жёлтые цвета для перевода в зелёный. Я конечно могу и Думовскую версию спрайта перевести в зелёный, но Гозза не понимает такой расклад, ей нужен перевод строго с красно-жёлтого на зелёный. Только так.
Я понял почему Гозза не видит перекрашенный спрайт, из Думовской (не правильные цвета) палетты. Всё потому, что спрайт который я хочу сделать зелёным, - (барабанная дробь!) - это не спрайт Heretic'a. Мы ведь его вытащили из ВАДа, конвертнули в png и закинули в мой мод. Гозза отуда ведь его читает. Я его конечно попытался открыть в Slade, но с палитрами он никак не взаимодейтствует и пикселя выбрать и поменять цвет не получается. Отсюда, я не могу получить параметры, чтобы вбить их в Декорейт, в Translation.
theleo_ua Появилась идея - а нельзя ли, сделать генерацию огня на 2 пустых спрайта - крест на крест? Тогда это уже будет выглядеть как 3D, (за не имением лучшего). Возможно, это всё можно прописать в Декорейт, в акторе модели торча например, только вот как повернуть пустой спрайт на 90гр, вокруг своей оси?
Скрытый текст:
Что не нравится в Slade, это то, как сделан перечень в выпадающем меню Show. Там и текстуры и спрайты и вся графика, смешана в одну кучу. Это крайне не удобно. Сравните, как это реализовано в XWE. Там сказка просто.
Возможно, это всё можно прописать в Декорейт, в акторе модели торча например, только вот как повернуть пустой спрайт на 90гр, вокруг своей оси?
Строка, где спавнятся куски огня, в ней самые последние 3 числа - это скорость полета по осям X, Y и Z. Ставишь Z в ноль, а X и Y больше нуля, и будут лететь по горизонтали. Если при Z=0 все равно полетят вверх, тогда убери все A_AccTeleGlitter из актора огня который спавнится