-
Notifications
You must be signed in to change notification settings - Fork 15
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Partial entpatches support #78
Comments
@Qwertyus3D А что такое энптачи эти |
Энтпатч - это вообще .ent-файл, со списком энтить, естественно. Вот я и предполагаю, что можно создать для себя "частичный энтпатч", в котором будут не все энтити карты, а только заранее настроенные точечные энтити. Допустим, какая-то логическая связка из энтить, активирующих друг друга и т. д. Типа префаба, получается, только из одних точечных энтить. Для воспроизведения каких-то типичных скриптовых последовательностей. Ну и как BSP-модель вставляется на карту, по тому же принципу указываешь такой вот энтпатч, и вставляешь все энтити из него группой на карту, а потом редактируешь что-то, по необходимости (ну типа там имена энтить изменяешь или ещё что-то). |
Собственно, напрашивается и функция создания такого энтпатча путём импорта выделенных точечных энтить в отдельный .ent-файл. Но это уже второстепенно. Создать нужный энтпатч можно и вручную, Блокнотом отредактировав. Главное, чтоб была возможность загружать такие патчи поверх действующего списка энтить. |
Вот, допустим, для примера. Комбинация спавна монстра монстрмейкером с эффектами телепортации (как это сделано в Enriched на одной из карт:
Энтити и мультименеджер, который их активирует. Такой фрагмент сохраняется отдельным патчем в виде ent-файла и вставляется на карту, с соблюдением расположения энтить относительно друг друга. И можно использовать, как универсальную заготовку для спавна любого моба телепортацией. А в ХЛ подобный эффект сложнее сделан, там ещё лучи раскиданы вокруг монстрмейкера, а не в одной точке. |
Я по нику догадался про второй акк :) . Локализация - это круто. Буду ждать фиксов и обнов. Кстати, по ходу дела ещё одна проблемка застарелая всплыла - программа виснет с чёрным окном без интерфейса при попытке запустить её просто кликом в Проводнике, без открытия карты. Тоже уже когда-то исправлялось, и вот опять не работает.
|
@UnrealKaraulov Исправился незапуск без карты. |
Ну, наподобие префаба, только это тупо текстовый файл с данными точечных энтить. Грубо говоря, просто обрезок полного ent-патча карты. Тот же формат абсолютно, даже расширение можно оставить .ent. Ну, если хочешь, можно назвать .entp или .enp (entity prefab file!), чтобы не путалось с полноценными энт-патчами. Насчёт target и targetname - ну это же 2 разные функции, targetname - имя самой энтити, а target - другая целевая энтить, которая будет активизирована при помощи первой. |
Не пойму, в чём вопрос-то? Кому надо "давать разные имена"? Если энтитям, то не нужно никаких дополнительных имён. Как пользователь всё настроил, так и будет. Это же точечные энтити. Выше ведь пример: #78 (comment) Если файлам, то разные имена у файлов могут быть, какое пользователю при экспорте захочется присвоить, наверное. Ну или если не предусматривается пользователя спрашивать об имени файла, то пусть с рандомным именем сохраняет, по шаблону. |
Или ты имеешь в виду, что при импорте нужно менять имена энтить, которые прописаны в патче? С тем, чтобы после вставки на карту они не смешивались из-за одинаковых имён, если один и тот же патч импортировать несколько раз? Ну тут хз, но если бы ты смог сделать так, то наверное было бы удобно.
И переделываем её при вставке на карту, допустим, так:
И, соответственно, всем именам энтить из патча (т. е. в поля target и targetname, а также в ключевые значения мультименеджера, как здесь) добавляем вот это -01 И у нас получается группа энтить, которая завязана сама на себя и не смешивается с остальными. Так? |
Но вообще всё может оказаться не так просто, т. к. у разных энтить бывают и дополнительные ключи, которые могут содержать отсылки на имена других энтить. Это тогда придётся пропарсить все значения target и targetname в патче, и по "упомянутым" именам провести правку всех других совпадающих значений. Либо составить полный список ключей, в которых может быть прописано имя какой-либо энтити, а этот список может быть не таким уж маленьким, если покопаться. Допустим: У path_track вон сколько ссылок (у path_corner первые две): У info_bigmomma уникальные: env_beam У func_trackchange и func_trackautochange (но это солиды, так что не должны быть в обычном энтпатче): До фига потенциальных ссылок, плюс произвольные поля в мультименеджерах со знаками повторной активации энтить. И это я пробежался по FGD Опфора. А ведь в теории, есть кастомные FGD разные, где могут быть какие-то другие поля, куда тоже может прописываться имя других сущностей, так что готовый список - не полное решение... |
Есть тупая идея, как это можно сделать проще, но потребует информированности пользователя. Пользователь сам должен вручную указать те значения, которые должны быть заменены при вставке на произвольный порядковый номер. Т. е. должен использовать некий символ, указывающий программе, где именно производить подстановку номера. Допустим, как со случаем выше:
Ну и вот эти @@@ заменяются порядковым числом. Символ можно и другой какой-то обозначить, но так, чтобы мала была вероятность случайного использования такой комбинации символов. Допустим, сколько символов вписано, столько и цифр подставляется, минимум две: @@ -> 01, @@@ -> 001 и т. д. Зато тут уже программа не своевольничает, что-то делая сама (чего, может, и не надо), а делает подмену потому, что есть указание. И сложный код не потребуется. |
Проще всего в окне импорта дать ссылку на инструкцию, что изменить в ключах энтить перед импортом. Потому что в процессе импорта ХЗ как это организовать. Лучше пусть пользователь знает, как это в принципе работает и имеет возможность ручной правки. |
Идея такая, сейчас можно грузить целиковые энтпатчи для карты, так вот хотелось бы иметь возможность с "фрагментированными" энтпатчами работать. Т. е. допустим, сохраняешь энтпатч с какими-то предварительно настроенными энтитями, допустим, это будут энтити для воспроизведения спавна монстра с эффектами телепортации - спрайты, звуки, лучи и т. п. И подобно тому, как мы вставляем на карту BSP-объект, точно так же иметь возможность вставлять такой частичный энтпатч. Желательно с возможностью как вставить его с сохранёнными в энтпатче оригинами энтить, так и со вставкой их в произвольном месте, но чтобы они при этом сохранили своё расположение относительно друг друга. Думаю, востребованная функция будет.
The text was updated successfully, but these errors were encountered: