Форум Pawn-Wiki.Ru - Воплоти мечту в реальность!: Ultimate Creator - Форум Pawn-Wiki.Ru - Воплоти мечту в реальность!

Перейти к содержимому

  • (4 Страниц) +
  • « Первая
  • 2
  • 3
  • 4
  • Вы не можете создать новую тему
  • Вы не можете ответить в тему

Ultimate Creator Продвинутый редактор карт Оценка: ***** 1 Голосов

#31
Пользователь офлайн   Nexius 

  • Знаток
  • Вставить ник
  • Раскрыть информацию

Просмотр сообщенияDANGER_Hidden (30 июля 2020 - 19:34) писал:

Замечание после теста:
1. не понятно куда ложить файл для импорта, а также ни где не сказано что надо чтобы у файла было расширение txt.
Рекомендации: сделать отдельную папку для редактора, в ней сделать папку import, добавить плагин filemanager и сделать чтобы открывался диалог в котором видны все файлы которые лежат в папке импорт
И лучше чтобы файлы мапинга могли иметь любое расширение, т.к. у меня они .inc, у когото *.pwn

Файлы, которые нужно загрузить, и так могут иметь любое расширение, его просто нужно указать. То есть если тебе, к примеру, нужно было загрузить test.pwn, в поле с именем карты нужно было прописать именно "test.pwn" с его расширением.
.txt при загрузке и сохранении карт дописывается по умолчанию только тогда, когда никакого расширения самим пользователем не указано.

И насчёт папки импорта, опять же, этой концепции хранения промежуточных файлов в редакторе просто нет, он сразу сохраняет карту в готовый для использования код и открывает готовый для использования код. Сделано специально для удобства и не имения исходников, которые большинству людей непонятно как редактировать вручную или загружать в другой редактор, если это не texture studio (а если ещё и другой редактор будет иметь свой собственный формат, то тем более был бы гемор).

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

Просмотр сообщенияDANGER_Hidden (30 июля 2020 - 19:34) писал:

2. при входе на сервере, или при перезагрузке скрипта нету команды для получения справки
Рекомандации: добавить команду /help и там в диалоге прописать весь доступный функционал

Сама справка по сочетаниям клавиш и всем доступным командам есть в главном меню редактора (по нажатию кнопки F или Enter в режиме редактирования). Изначально интерфейс был на диалогах и потому некоторые мелкие вещи вроде справки, когда добавлял команды, всё ещё остались лишь по вызову из диалога.

Просмотр сообщенияDANGER_Hidden (30 июля 2020 - 19:34) писал:

3. не понятен порядок действий: загрузил я карту /loadmap, а дальше что?
ввожу /selobj 0 нет такого объекта
ввожу /gotoobj 0 тоже самое

Рекомандации: после того как я загрузил карту, в чате должно быть указано сколько объектов загружено с какого по какойц ИД.
дальше я выделяю /selobj 1 и делаю тп к /gotoobj, но при этом должен включаться режим /flymode и выход из flymode должен быть по координатам там где я летал.

Я долго мучался чтобы попасть внутрь мапинга, т.к. когда я тп по коор. объекта я сразу двигаю там объект, а сам не могу двигаться.

Сначала хотел подробно расписать, что можно просто вызывать диалог на Enter, открывать "Редактирование" и выбирать из списка объектов нужный, а в его менюшке уже телепортироваться к нему и дальше делать всё что нужно, но потом понял логику - из texture studio ты просто привык к командам, в то время как я, например, на протяжении использования только своего редактора всегда по умолчанию юзал диалоги и мне их хватало. Работая лишь на командах в этой цепочке действительно недоступна как минимум одна ступень - открытие списка всех созданных объектов (то что в диалоге пункт "Редактирование"). Тем не менее мне всё же кажется, что если потратить немного времени на освоение работы из диалогов как основного инструмента взаимодействия, а командами пользоваться как вспомогательным инструментом, то никаких проблем в этом плане не будет. Так изначально всё затачивалось под них и до сих пор их наличие это некая своя фишка, а команды пока скорее второстепенны.

Просмотр сообщенияDANGER_Hidden (30 июля 2020 - 19:34) писал:

4. самый часто используемые команды сделать простыми /do - удалить объект, /co - создать объект, /goto - переместиться к выделенному, /selo - выделить объект

Так получится далеко не со всем по разным причинам. К примеру "/co" может быть легко спутано с сокращением от "copyobject", а "/goto" в принципе сложно реализуемо из-за того, что редактор работает ещё с огромным количеством вещей помимо объектов, и что именно бы подразумевал пользователь под обычным "goto" (тачку, чекпоинт, мап иконку, пикап или ещё что-то) редактору совсем будет неясно.

Просмотр сообщенияDANGER_Hidden (30 июля 2020 - 19:34) писал:

5. дублировать в чате выделенный объект чтобы через файл chatlog.txt получить точные координаты объекты, чтобы в 1000 объектов найтим именно этот. Т.к. моделей 19445 куча в мапинге.

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

Просмотр сообщенияDANGER_Hidden (30 июля 2020 - 19:34) писал:

Только нечаянно узнал что есть окно на клавише F
Почему в чате не проинформировать? или сделать автопоявление при загрузке карты

Ну это было написано в инструкции и я обычно рассчитываю на то, что её полностью читают перед использованием. В любом случае текст в чат с подсказкой могу добавить в тот чистый мод, что идёт в сборке в редактором.

Просмотр сообщенияDANGER_Hidden (30 июля 2020 - 19:34) писал:

6. Как зыкрыть карту и перезагрузить мапинг? пришлось /rcon reloadfs creator, славо богу что разработчик предусмотрел удаление всего что загружено через фс.

Создать новую карту (тогда всё уже созданное очищается, заранее об этом предупреждая) либо открыть другую. Не очищается прошлый маппинг только в том случае, если использовать недавно добавленную опцию "Открыть карту поверх текущей"

Просмотр сообщенияDANGER_Hidden (30 июля 2020 - 19:34) писал:

7. Как снять выделение с объекта?

На пробел (KEY_SPRINT). Механика взаимодействия с объектами/транспортом/актёрами и прочим по клавишам во многом схожа с той, что в MTA Map Editor'е.

Просмотр сообщенияDANGER_Hidden (30 июля 2020 - 19:34) писал:

8. Объекты выделяются не правильно, допустим на прилавке лежит куча предметов, я сзади прилавка и не вижу их, но вместо того чтобы выделиться прилавку, выделяются разные коробки и ящики.

На мелких объектах видимо иногда нативная функция GetPlayerCameraTargetObject немного ошибается. Возможно, при условии подключенного ColAndreas'а как-нибудь полностью переведу детект объектов на него.

Просмотр сообщенияDANGER_Hidden (30 июля 2020 - 19:34) писал:

9. Если я отключаю режим редактирования то меня спаунит на стартовую точку, а хотелось бы чтобы просто отспаунило там где я висел ввоздухе.

Нет, спавн идёт именно в ту точку, где была камера в режиме редактирования. Просто сначала идёт спавн на изначальные координаты спавна (как и в texture studio) а потом по таймеру в 800 мс уже телепортирует на нужное место. Странная жалоба при том, что задержка и так довольно мала и это должно быть быстро и почти незаметно. Возможно просто сразу ты ушёл обратно в режим редактирования, не дождавшись телепорта?


[Цитирование уже не влазит в пост]
>> Минусы: многое можно сделать через диалоговое окно управления

Ну вот а я изначально специально делал всё на диалогах, считая это плюсом :rolleyes:
Мне кажется дело привычки скорее. Просто учитывая, что многие до этого работали в TS, а я на него не оглядывался (т.к. управление там по-моему убогое и мне он никогда не нравился), то получилось нечто непривычное с первого использования для большинства юзеров texture studio.

Сообщение отредактировал Nexius: 30 июля 2020 - 23:30

0

#32
Пользователь офлайн   Nexius 

  • Знаток
  • Вставить ник
  • Раскрыть информацию
Насчёт того, что было отредактировано и дополнено в предыдущем посте DANGER_Hidden:

Цитата

1. создать список с одноименным названием и попольнять при удалении объектов
строка удалённого объекта должна быть такого типа
DeleteDynamicObject(18880, 1412.8963, -25.5505, 1003.6229, -0.0000, -89.9999, -44.9999);

Не очень понял, где именно и какой список добавлять, по-подробнее. Удаление объектов, которые созданы через Create(Dynamic)Object это просто удаление строк с их созданием. А если речь про стандартные объекты карты, то для них создаются RemoveBuildingForPlayer в сохранённом файле с картой.

Цитата

2. правой клавишей мышки не переход в другой режим редактирования, а просто отмена выбранного объекта

Тогда останется доступным только один режим редактирования, а всё удобство сейчас как раз в том, что для дальнего перемещения объектов их просто можно привязывать к мышке через ПКМ и они будут следовать за камерой с той же скоростью; а для более точного перемещения на стрелочки клавиатуры есть режим на ЛКМ. Пробел это вполне удобный сброс захвата, хотя после замечания появилась идея продублировать это действие по нажатию колёсика мыши (только насколько помню, по его нажатию самп телепортирует вид от камеры на 180 градусов и будут уже с этим проблемы).

Сообщение отредактировал Nexius: 30 июля 2020 - 23:26

0

#33
Пользователь офлайн   DANGER_Hidden 

  • Прохожий
  • Вставить ник
  • Раскрыть информацию
Основная проблема - это невозможно выбрать объект тот который хочешь.


В итоге что получается:
  • Стоит задача удалить объект мешающий, ненужный, косячный или просто превышающий предел 1000.
  • Перед тобой стоит большой объект и ты его пытаешься выбрать кликая мышкой, но за ним ещё 1000 разных объектов.
  • После того как точка курсора поменялась, хотя к этому надо сильно присматриваться, ты его можешь удалить
  • Где уверенность что ты из 1000 выбрал именно тот объект по которому ты типа кликал?
  • Для того, чтобы убедиться, я начинаю двигать объект на себя, чтобы понять тот ли это объект
  • И с 30-ой попытки мне удается путём бегатни вокруг объекта и кликая по всем пикселям этого объекта зацепить именно тот, что мне нужен.
  • Но я нарушаю положения других объектов, т.к. каждый выделенный объект мне приходится двигать, чтобы понять что выделен именно тот, что мне надо.
  • В итоге я на поиск объекта, который стоит перед мной на весь экран, трачу полчаса, а таких объект несколько сотен. Мне жизни не хватит так перетыкать все объекты.
  • И после удаления нужного мне объекта, я имею полностью разрушенный мапинг. Где надо заново подгонять координаты объектов которые попадали под моё выделение.


Заметь, когда мне нужно удалить объект, я не знаю модель объекта и его координаты.

Если я не правильно что то делаю или есть способ проще выделить нужный объект за которым стоит ещё 1000 объектов, то пожалуйста поведай. Мне интересно как делаешь ты или как это делают другие в той же textur studio.

Я считаю, не совсем правильно объединять все редакторы в один, т.к. если надо редактировать маппинг или создавать, то ничего кроме редактора объектов не нужно (так и в случаи текстдровов). Если бы редактор твой был ввиде фильтр-скриптов, то было бы лучше, т.к. я мог выбирать что мне подключать для редактирования.

Решение (т.к. выложен исходник, то возможно пишу для самого себя что нужно исправить):
1. самая важная задача, чтобы скрипт стал удобен в использовании и не вызывал раздражение - это сделать нормальное информирование о выделенном объекте.
1.1. добавить предпросмотр объектов на текстдровах. Т.к. даже изменение цвета курсора или цвета текста модели или координат не говорит нам о том, что выбран именно тот объект что нам нужен.
1.2. если первый вариант не получится, то сделать появление системы осей самповского редактора, чтобы знать где центр данного объекта и видеть что выделен тот, что надо. Или это добавить как настройку редактора, если кому то это мешает в какой то момент.
1.3. если и второй вариант не прокатит, то на выделенный объект добавлять в центре объекта 3д тест с инфой о модели и координатах, и желательно с инфой прикрепленного материала. И возможно этот вариант самый простой для реализации.
2. доработать диалоговые окна: СПИСОК ИМПОРТИРУЕМЫХ ФАЙЛОВ, чтобы руками не писать название файла, т.к. на дворе уже 2020 год.
3. Добавить в папку scriptfiles папку UltimateCreator с вложениями Exports, Import. Т.к. папка scriptfiles может иметь кучу файлов и папок, чтобы уменьшить бардак.
4. Добавить информирование при загрузке скрипта или help, многие как и я первый раз видят этот скрипт и не знают его особенностей. А также стандартный порядок редактирования мапинга, не путать с редактированием просто одного или нескольких объектов.
Человек не должен искать на ютубе видео как пользоваться данным скриптом или утомительно читать форум. Человек хочет чтобы у него всё было под рукой, т.е. инструкция и инструменты.
5. добавить информирование какой файл и сколько объектов загружено (может там больше 1000 объектов уже).
6. после выделения объекта можно сделать появление окна с действиями: отменить выбор, редактировать, удалить.
7. дублировать в чате координаты и модель выделенного объекта, чтобы через файл chatlog.txt получить точные координаты объекта, (это нужно если мы не собираемся экспортировать мапинг, а просто ищем объект в файле мапинга с помощью редактора)
и этот флуд абсолютно не раздражает. А раздражает тот факт, что надо вручную прописывать вот такую длинную строку в поиск tmpobjid = CreateDynamicObject(1557, -3.868148, 1971.781616, 16.648718, -0.000007, -0.000029, 90.000000
8. Создать список с одноименным названием (типа hospital.del) и попольнять при удалении объектов
строка удалённого объекта должна быть такого типа DeleteDynamicObject(18880, 1412.8963, -25.5505, 1003.6229, -0.0000, -89.9999, -44.9999);
Это нужно для того, когда надо один большой мапинг в 1000 объектов разделить на 2 части, чтобы потом раскидать это по разным виртуальным мирам.
9. разделить редактор на 2 части (особой необходимости в этом нет):
Редактирование: Объектов, т.е. всё что устанавливается на карту через CreateObject. Т.к. это принципиально отдельная тема.
Редактирование: Актёров с применением для них анимаций.
Остальное: Пикапов, Транспорта, Checkpoint'ов, Map-иконок, Gang зон, 3D текстов. Это всё обычно не имеет статических координат и в процессе игры постоянно меняется. Не вижу смысла создавать вообще для этого редактор.
Это все делается и редактируется одной командой в чате при синтаксисе как в коде pwn.

Пишу это всё не для того, чтобы упрекнуть, а для того, чтобы сделать его лучше и возможно самому, т.к. редактор действительно мне понравился в отличии от textur studio. Но когда маперы на ютубе заявляют что TS лучше, то я их могу понять. Я лично вижу большой потенциал в данном редакторе, но удобство по редактированию мапинга в нём страдает.

Цитата

(потому что одна из особенностей редактора в том, что одну карту могут редактировать сразу несколько человек на сервере, и каждый постоянно что-то может выделять).

первый раз про такое слышу, что одновременно два человека делали мапинг, тем более на хосте.

Цитата

На мелких объектах видимо иногда нативная функция GetPlayerCameraTargetObject немного ошибается. Возможно, при условии подключенного ColAndreas'а как-нибудь полностью переведу детект объектов на него.

объект которые я не мог выбрать зачастую наоборот очень большие: пол, стена, прилавок. Они у меня на весь экран, но почему то, выбирается объект за ним.

Сообщение отредактировал DANGER_Hidden: 04 августа 2020 - 11:17

1

#34
Пользователь офлайн   Nexius 

  • Знаток
  • Вставить ник
  • Раскрыть информацию
Насчёт выделения, понял. Сейчас как раз пытаюсь переделать логику детекта объектов (на которые смотрит камера) через ColAndreas при условии его подключения. В нынешних версиях работает такая штука: если подключен плагин, то используется он лишь при перетаскивании объектов на ПКМ (чтобы они ставились на поверхность, а не за неё), а когда игрок не выделял никаких объектов и просто смотрит на них, то детект того, на что он смотрит, идёт уже от стандартных GetPlayerCameraTarget* функций. Собственно от GetPlayerCameraTargetObject и хочу избавиться в пользу ColAndreas'а даже при обычном наведении камеры на объекты и прочее. Надеюсь, что это повысит точность.

Просмотр сообщенияDANGER_Hidden (04 августа 2020 - 11:10) писал:

Я считаю, не совсем правильно объединять все редакторы в один, т.к. если надо редактировать маппинг или создавать, то ничего кроме редактора объектов не нужно (так и в случаи текстдровов). Если бы редактор твой был ввиде фильтр-скриптов, то было бы лучше, т.к. я мог выбирать что мне подключать для редактирования.

[...]

9. разделить редактор на 2 части (особой необходимости в этом нет)

Текстдравы это просто отдельный GUI, а не составляющая какого-либо маппинга, потому их редакторы действительно нет особо смысла объединять с редакторами карт. А вот расстановку тех же объектов и машин, объектов и пикапов и прочего вместе - это уже полноценные составляющие одной цельной карты, которую так или иначе строят в один момент. А бегать в поисках координат в игре и писать /save, куда скриптер или маппер хотел бы поставить 3d текст, в это же время имея под рукой абсолютно иной уровень взаимодействия с объектами в лице редактора объектов, это просто глупо. Всегда задавался вопросом в таких ситуациях: что же мешало перенести механику редактора объектов на подобные элементы и так же удобно их расставлять? Вот, собственно, мой редактор и стал решением этой странной тенденции абсолютно игнорировать работу со всем, кроме объектов. Ну а насчёт модульности, в каком-то смысле было бы и удобнее, но в реализации такое заняло бы гораздо больше времени (учитывая то, что каждый модуль должен был быть максимально независимым от других).

Просмотр сообщенияDANGER_Hidden (04 августа 2020 - 11:10) писал:

1.2. если первый вариант не получится, то сделать появление системы осей самповского редактора, чтобы знать где центр данного объекта и видеть что выделен тот, что надо. Или это добавить как настройку редактора, если кому то это мешает в какой то момент.

Встроенный редактор из 0.3e очень неудобен. как по мне. Тонкие еле заметные оси совершенно неюзабельны, если редактируешь какой-то более-менее крупный объект, а по его размеру они не вытягиваются, так что его вводить я точно не хочу. Реализую какой-то другой способ, возможно даже с 3d текстами. Была изначально идея делать текстуру объекта красной при его выделении, как это есть в Map Construction, но это было бы актуально только для объектов, а есть ещё много чего помимо них, где цвет текстуры не поменяешь.

Просмотр сообщенияDANGER_Hidden (04 августа 2020 - 11:10) писал:

2. доработать диалоговые окна: СПИСОК ИМПОРТИРУЕМЫХ ФАЙЛОВ, чтобы руками не писать название файла, т.к. на дворе уже 2020 год.

Доработаю. Самому казалось это не столь значительным, но видимо всё таки важно.

Просмотр сообщенияDANGER_Hidden (04 августа 2020 - 11:10) писал:

3. Добавить в папку scriptfiles папку UltimateCreator с вложениями Exports, Import. Т.к. папка scriptfiles может иметь кучу файлов и папок, чтобы уменьшить бардак.

Общую папку внутри scriptfiles возможно и есть смысл завести, но зачем там Imports и Exports я так и не понимаю. Импортирование и экспортирование это костыли в первую очередь для тех редакторов, которые не умеют/не хотят в парсинг готовых файлов, а мой умеет и соответственно такой концепции в принципе в нём нет и заводить не стоит.

Просмотр сообщенияDANGER_Hidden (04 августа 2020 - 11:10) писал:

5. добавить информирование какой файл и сколько объектов загружено (может там больше 1000 объектов уже).

Вообще есть кстати в самом скрипте режим CREATOR_DEBUG, при котором все данные о загрузке карт летят в логи сервера и там в том числе отображается по итогу количество загруженных объектов, машин, актёров и т.д. Просто сделано это скорее для тестов и дебагов парсера, а не для повседневных нужд обычного маппера. Можно пока включить это.

Просмотр сообщенияDANGER_Hidden (04 августа 2020 - 11:10) писал:

Человек не должен искать на ютубе видео как пользоваться данным скриптом или утомительно читать форум. Человек хочет чтобы у него всё было под рукой, т.е. инструкция и инструменты.

Да понятно, просто я изначально написал в самой теме с релизом краткую инструкцию "как начать", где описано, что после входа и ввода команды "/edit" нужно нажать enter, откуда через меню сразу открылись бы все возможности включая встроенную справку. Пока просто хочу продублировать совет по "нажатию Enter'а" при входе в режим редактирования (т.к. совет про ввод команды /edit уже есть в чистом моде при спавне, а про клавишу не учел), и этого, думаю, хватит. Диалоги все связаны между собой и тем они удобнее команд, так что разбираться через них никаких проблем вообще возникать не должно, если знать как открыть хотя бы главное меню.

Просмотр сообщенияDANGER_Hidden (04 августа 2020 - 11:10) писал:

6. после выделения объекта можно сделать появление окна с действиями: отменить выбор, редактировать, удалить.

Оно и так есть, нужно просто кликнуть по объекту или любому другому элементу дважды (и это довольно интуитивно и тоже похоже на то, как это сделано в MTA Map Editor'е).

Просмотр сообщенияDANGER_Hidden (04 августа 2020 - 11:10) писал:

7. дублировать в чате координаты и модель выделенного объекта, чтобы через файл chatlog.txt получить точные координаты объекта, (это нужно если мы не собираемся экспортировать мапинг, а просто ищем объект в файле мапинга с помощью редактора)

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

Просмотр сообщенияDANGER_Hidden (04 августа 2020 - 11:10) писал:

8. Создать список с одноименным названием (типа hospital.del) и попольнять при удалении объектов
строка удалённого объекта должна быть такого типа DeleteDynamicObject(18880, 1412.8963, -25.5505, 1003.6229, -0.0000, -89.9999, -44.9999);
Это нужно для того, когда надо один большой мапинг в 1000 объектов разделить на 2 части, чтобы потом раскидать это по разным виртуальным мирам.

И я всё ещё не понимаю, зачем созданным объектам делать новые строки с удалением (причём ещё и функцией DeleteDynamicObject, которой нет), если эти созданные объекты можно просто убрать путём удаления строчки с его созданием? (как и делает сейчас редактор)
Если речь всё ещё про RemoveBuildingForPlayer, т.е. про стандартные объекты карты, которые никто на сервере не создавал, то, пожалуйста, уточни это.

Просмотр сообщенияDANGER_Hidden (04 августа 2020 - 11:10) писал:

Пишу это всё не для того, чтобы упрекнуть, а для того, чтобы сделать его лучше и возможно самому, т.к. редактор действительно мне понравился в отличии от textur studio. Но когда маперы на ютубе заявляют что TS лучше, то я их могу понять. Я лично вижу большой потенциал в данном редакторе, но удобство по редактированию мапинга в нём страдает.

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

Сообщение отредактировал Nexius: 04 августа 2020 - 16:00

0

#35
Пользователь офлайн   DANGER_Hidden 

  • Прохожий
  • Вставить ник
  • Раскрыть информацию

Цитата

И я всё ещё не понимаю, зачем созданным объектам делать новые строки с удалением (причём ещё и функцией DeleteDynamicObject, которой нет), если эти созданные объекты можно просто убрать путём удаления строчки с его созданием? (как и делает сейчас редактор)
Если речь всё ещё про RemoveBuildingForPlayer, т.е. про стандартные объекты карты, которые никто на сервере не создавал, то, пожалуйста, уточни это.

да нет, RemoveBuildingForPlayer тут вообще не при чем.
DeleteDynamicObject(18880, 1412.8963, -25.5505, 1003.6229, -0.0000, -89.9999, -44.9999);
такой ф-ии действительно нет, по сути если файл будет иметь расширение del, то можно оставить CreateObject(18880, 1412.8963, -25.5505, 1003.6229, -0.0000, -89.9999, -44.9999);
главное то, что ты не прочитал суть:
Задача: разделить большой мапинг c текстурами и надписями HOSPITAL.inc, на несколько маленьких HOSPITAL_1 и HOSPITAL_2, которые будут в разных виртуальных мирах, но при этом не потерять текстуры и не нарушить координаты
А теперь сам предложи способ решения с помощью твоего редактора в существуюшем функционале.
Возьми любой мапинг интерьера из паблика, где объектов под 1000, а может и больше. Допустим в нём несколько этажей, и ты хочешь, чтобы уменьшить нагрузку на прорисовку, сделать все этажи в других виртуальных мирах.
Объекты в мапинге естестественно не упорядочены и естественно нету коментарий, что это за объект. В мапинге интерьера куча одинаковых моделей разбросаных по разным координатам.

Т.е. по сути надо как то разделить объекты на 2 группы, какие то объекты относятся к первому этажу, а какие то ко второму. Переход между этажами идёт путём телепорта через пикап.
Как я вижу способ решение: копируем файл в HOSPITAL.inc в папку Import и переименовываем в HOSPITAL_1.inc. Затем удаляю от туда все объекты этажа 2, которые автоматически записываются в файл HOSPITAL_1.del.
Затем переименовываем HOSPITAL_1.del в HOSPITAL_2.inc

Т.о. мы убиваем сразу двух зайцев: мы получили мапинг чисто первого этажа в HOSPITAL_1.inc. и мапинг второго этажа HOSPITAL_2.inc, но без материалов(текстур). Теперь нам надо в файле HOSPITAL.inc найти все тестуры этих объектов, чтобы добавить их в файл HOSPITAL_2.inc. Будет очень хорошо если удаление объектов будет происходить с дублированием не только
tmpobjid = CreateDynamicObject(18880, 1412.8963, -25.5505, 1003.6229, -0.0000, -89.9999, -44.9999);
но и с SetDynamicObjectMaterial(tmpobjid, 0, 18646, "matcolours", "grey-10-percent", 0xFFFFFFFF);
SetDynamicObjectMaterialText(tmpobjid, 0, "IKEA", 130, "Monotype Corsiva", 120, 1, 0xAAFFFFFF, 0, 1);
Т.к. иначе придётся для кучи объектов выискивать их материалы, или HOSPITAL.inc переименовывать в HOSPITAL_2.inc и там удалять объекты которые не принадлежат этажу 2.

Уже незнаю как более доходчиво объяснить. Проблема в том, что если кто то два мапинга в разных вирт мирах, закинет в один файл, потом откроет его допустим в текстур-студии и сделает экспорт, или каким то другим способом объекты там разсортирует, то назад отредактировать очень сложно становиться.

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

Сообщение отредактировал DANGER_Hidden: Вчера, 00:07

0

#36
Пользователь офлайн   Nexius 

  • Знаток
  • Вставить ник
  • Раскрыть информацию

Просмотр сообщенияDANGER_Hidden (04 августа 2020 - 23:52) писал:

Нажмите сюда, чтобы прочитать это сообщение. [Показать]

Хм, в данный момент я бы делал так: разделил бы физически весь этот маппинг на два файла для двух этажей, а именно: не создавая никаких папок "Export" просто бы скопировал текущую карту (назовём её к примеру hospital.inc) в hospital2.inc. В оригинале (hospital.inc) удалил бы второй этаж, а в копии (hospital2.inc) удалил бы первый этаж. Далее при редактировании этажей, раз они всё равно связаны лишь через пикапы, а не бесшовны между собой, бы просто работал отдельно с файлом первого этажа и отдельно с файлом второго, а когда надо просмотреть финальный результат всего вместе - предварительно сохранял бы оба отдельных файла и уже грузил их чисто для просмотра вместе через "открыть карту" -> "hospital.inc", "открыть карту поверх текущей" -> "hospital2.inc". Изменения вносить уже было бы в этот момент нельзя без перемешивания файлов, но для просмотра и оценки как раз.

А вообще, можно было бы сделать что-то вроде режима открытия нескольких карт параллельно. И не одна поверх другой, чтобы они сохранялись в одну карту, а именно параллельно две карты сосуществовали бы вместе, однако изменения объектов первой сохранялись бы в первую (не затрагивая вторую), а изменения второй соответственно без изменения файла первой. Правда, работать это нормально будет только при редактировании и удалении уже существующих объектов, которые уже есть в карте 1 и карте 2, а если например нужно создать новый(е) объекты, то непонятно, как редактору объяснять, в какую карту он должен их добавлять из этих двух...

Сообщение отредактировал Nexius: Вчера, 05:47

0

#37
Пользователь офлайн   DANGER_Hidden 

  • Прохожий
  • Вставить ник
  • Раскрыть информацию

Цитата

В оригинале (hospital.inc) удалил бы второй этаж, а в копии (hospital2.inc) удалил бы первый этаж
вы тут просто забыли описать механизм как вы это сделаете, о чем вас я и просил.
Как? у вас перед глазами просто куча цифр, куча координат? Ещё раз повторяю, что нельзя файл разделить до какой то строки первый этаж, а после - второй этаж. Я же не раз писал что объекты там разбросаны и второй этаж находится по координате Z на том же уровне. Но это всё пример для объяснения, т.к. вместо этажей могут комнаты или залы, которые также надо вынести в отдельный файл.

Цитата

Далее при редактировании этажей, раз они всё равно связаны лишь через пикапы, а не бесшовны между собой, бы просто работал отдельно с файлом первого этажа и отдельно с файлом второго, а когда надо просмотреть финальный результат всего вместе - предварительно сохранял бы оба отдельных файла и уже грузил их чисто для просмотра вместе через "открыть карту" -> "hospital.inc", "открыть карту поверх текущей" -> "hospital2.inc". Изменения вносить уже было бы в этот момент нельзя без перемешивания файлов, но для просмотра и оценки как раз.
нам не нужно смотреть финальный результат вместе, т.к. это есть начальный результат. Финальным результатом должно стать два файла двух этажей, которые просматриваются и редактируются отдельно каждый сам по себе.

Неужели я так плохо объясняю, или вы так не хотите понять. Складывается впечатление, что вы сами разработав данный скрипт, в полном объёме не пытались работать в нём с большим мапингом, т.е. не создавать интерьер пошагово добавляя объекты, а наоборот редактирую большие мапинги, не важно свои или чужие, т.к. даже сам автор в коде без просмотра объектов ни когда не найдёт ту стену, которую надо отредактировать.

Цитата

А вообще, можно было бы сделать что-то вроде режима открытия нескольких карт параллельно. И не одна поверх другой, чтобы они сохранялись в одну карту, а именно параллельно две карты сосуществовали бы вместе, однако изменения объектов первой сохранялись бы в первую (не затрагивая вторую), а изменения второй соответственно без изменения файла первой. Правда, работать это нормально будет только при редактировании и удалении уже существующих объектов, которые уже есть в карте 1 и карте 2, а если например нужно создать новый(е) объекты, то непонятно, как редактору объяснять, в какую карту он должен их добавлять из этих двух...
боже упаси когда у тебя итак 1000 объектов на экране, добавить или открыть поверх ещё один мапинг, который находится по тем же координатам. Мы наоборот пытаемся избавиться от больших сборок и перейти на подсборки.

PS. Все мы знаем что зеркальные полы делаются в одном и том же месте. Отсюда вывод, что все интерьеры с зеркальными полами, если их загрузить в одном виртуальном мире, буду накладываться.
0

#38
Пользователь офлайн   Nexius 

  • Знаток
  • Вставить ник
  • Раскрыть информацию

Просмотр сообщенияDANGER_Hidden (05 августа 2020 - 08:52) писал:

вы тут просто забыли описать механизм как вы это сделаете, о чем вас я и просил.
Как? у вас перед глазами просто куча цифр, куча координат? Ещё раз повторяю, что нельзя файл разделить до какой то строки первый этаж, а после - второй этаж. Я же не раз писал что объекты там разбросаны и второй этаж находится по координате Z на том же уровне. Но это всё пример для объяснения, т.к. вместо этажей могут комнаты или залы, которые также надо вынести в отдельный файл.

Просто взять и удалить этот другой этаж в редакторе из файла "hospital.inc", а уже во втором файле действовать по ситуации (если объекты максимально были бы там раскиданы и смешаны с объектами из первого файла, то также удалить лишние объекты из второго файла в редакторе, а если ещё более-менее были бы скучкованы - легко убрать их хоть в блокноте, предварительно сравнив файлы в каком-нибудь WinMerge, который бы подсветил те строки, что есть и в первом и во втором файлах). Я уже понял, что имеется в виду разделение карты на несколько частей как самоцель, но цель эта настолько редко нужная для воспроизведения (по сути только если ты уже берёшь готовую карту из паблика, т.к. самому можно сразу начать проектировать по отдельным файлам), что и нынешние способы вполне всё оправдывают, хоть это, очевидно, и не быстро делается.

Просмотр сообщенияDANGER_Hidden (05 августа 2020 - 08:52) писал:

Неужели я так плохо объясняю, или вы так не хотите понять. Складывается впечатление, что вы сами разработав данный скрипт, в полном объёме не пытались работать в нём с большим мапингом, т.е. не создавать интерьер пошагово добавляя объекты, а наоборот редактирую большие мапинги, не важно свои или чужие, т.к. даже сам автор в коде без просмотра объектов ни когда не найдёт ту стену, которую надо отредактировать.

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

Сообщение отредактировал Nexius: Вчера, 15:52

0

#39
Пользователь офлайн   DANGER_Hidden 

  • Прохожий
  • Вставить ник
  • Раскрыть информацию
	tmpobjid = CreateDynamicObject(2707, 1414.613037, -27.423855, 1003.322815, 0.000000, 0.000000, 0.000000, object_world, object_int, -1, 200.0,200.0);
	SetDynamicObjectMaterial(tmpobjid, 1, 18646, "matcolours", "grey-80-percent", 0);
	SetDynamicObjectMaterial(tmpobjid, 0, 19480, "signsurf", "sign", 0);
	tmpobjid = CreateDynamicObject(2707, 1412.282471, -27.423855, 1003.322815, 0.000000, 0.000000, 0.000000, object_world, object_int, -1, 200.0,200.0);
	SetDynamicObjectMaterial(tmpobjid, 1, 18646, "matcolours", "grey-80-percent", 0);
	SetDynamicObjectMaterial(tmpobjid, 0, 19480, "signsurf", "sign", 0);
	tmpobjid = CreateDynamicObject(19426, 1410.708984, -27.461506, 1003.432556, 0.000000, 270.000000, 180.000000, object_world, object_int, -1, 200.0,200.0);
	SetDynamicObjectMaterial(tmpobjid, 0, 18646, "matcolours", "grey-20-percent", 0xFFFFFFFF);
	tmpobjid = CreateDynamicObject(1897, 1417.388672, -27.141598, 1003.407043, -89.999992, -89.999992, 89.999962, object_world, object_int, -1, 200.0,200.0);
	SetDynamicObjectMaterial(tmpobjid, 0, 11631, "mp_ranchcut", "mpCJ_WOOD_DARK", 0);
	tmpobjid = CreateDynamicObject(2707, 1416.613037, -27.423855, 1003.322815, 0.000000, 0.000000, 0.000000, object_world, object_int, -1, 200.0,200.0);
	SetDynamicObjectMaterial(tmpobjid, 1, 18646, "matcolours", "grey-80-percent", 0);
	SetDynamicObjectMaterial(tmpobjid, 0, 19480, "signsurf", "sign", 0);
	tmpobjid = CreateDynamicObject(2707, 1410.282471, -27.423855, 1003.322815, 0.000000, 0.000000, 0.000000, object_world, object_int, -1, 200.0,200.0);
	SetDynamicObjectMaterial(tmpobjid, 1, 18646, "matcolours", "grey-80-percent", 0);
	SetDynamicObjectMaterial(tmpobjid, 0, 19480, "signsurf", "sign", 0);
	CreateDynamicObject(1897, 1414.751343, -28.277597, 1003.403259, -89.999992, -179.999985, 90.000015, object_world, object_int, -1, 200.0,200.0);
	CreateDynamicObject(1897, 1412.301270, -28.277597, 1003.403259, -89.999992, -179.999985, 90.000015, object_world, object_int, -1, 200.0,200.0);
	CreateDynamicObject(1897, 1414.678711, -28.301596, 1003.403259, -89.999992, 179.999985, -90.000015, object_world, object_int, -1, 200.0,200.0);
	CreateDynamicObject(1897, 1412.159180, -28.301596, 1003.403259, -89.999992, 179.999985, -90.000015, object_world, object_int, -1, 200.0,200.0);
	CreateDynamicObject(1897, 1413.521851, -28.277597, 1003.262329, 0.000000, 0.000000, -89.999977, object_world, object_int, -1, 200.0,200.0);
	CreateDynamicObject(1897, 1413.392700, -28.277597, 1003.262390, 0.000000, 539.999939, 89.999954, object_world, object_int, -1, 200.0,200.0);
	CreateDynamicObject(1897, 1415.902466, -28.277597, 1003.262390, -0.000006, 539.999939, 89.999977, object_world, object_int, -1, 200.0,200.0);
	CreateDynamicObject(1897, 1411.010986, -28.277597, 1003.262329, 360.000000, 0.000000, 270.000000, object_world, object_int, -1, 200.0,200.0);
	tmpobjid = CreateDynamicObject(1897, 1417.389648, -28.086584, 1003.133240, 0.000020, 720.000000, -179.999924, object_world, object_int, -1, 200.0,200.0);
	SetDynamicObjectMaterial(tmpobjid, 0, 11631, "mp_ranchcut", "mpCJ_WOOD_DARK", 0);
	tmpobjid = CreateDynamicObject(18880, 1412.518921, -30.034563, 1003.622986, 0.000000, 270.000000, -135.000000, object_world, object_int, -1, 200.0,200.0);
	SetDynamicObjectMaterial(tmpobjid, 3, 19480, "signsurf", "sign", 0);
	SetDynamicObjectMaterial(tmpobjid, 2, 18646, "matcolours", "grey-30-percent", 0xFFFFFFFF);
	SetDynamicObjectMaterial(tmpobjid, 1, 19480, "signsurf", "sign", 0);
	SetDynamicObjectMaterial(tmpobjid, 0, 19480, "signsurf", "sign", 0);

вот вам кусок мапинга, не открывая его в редакторе через импорт, скажите какие строки относятся ко второму этажу, а какие к первому?

не подсматривая в https://dev.prinesid..._samp_model_id/ вы можете вообще сказать, что либо про этот код? я думаю ровным счётом ничего, поэтому сам код разделить вы в блокноте не сможете. Для этого и нужны редакторы с поддержкой текстур.

Цитата

предварительно сравнив файлы в каком-нибудь WinMerge

Я тоже думал путём сравнения изменений двух файлов можно сравнить средствами Total Comandera, но проблема в том, что почти все строки красные, то координаты меняются в последней цифре после запятой, то вообще всё красное после исчезновения строк.
Т.к. мы сравниваем уже файлы с разным кол-вом строк и возможно после экспорта, ещё и последовательность сбивается.

Цитата

Работаю, просто у меня никогда не возникало нужды постоянного разделения этого маппинга по разным файлам.
а у меня для добавления просто объектов вообще не возникало необходимость в редакторе. НО редакторы нужны для сложных задач.
Для простых задач есть типа текстур студии или самому можно накидать простой редактор, что я и когда то сделал. А можно просто сделать, чтобы можно было вводить код из pwn прямо в чате и он будет сразу отображаться.

Цитата

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

как раз таки эта цель очень счас востребована, когда свободно в паблике куча интерьеров с текстурами, и когда надо что-то объединить из разных интерьеров, а что то убрать. Проблемы для объединения мапингов нету, а вот в разделении проблемы дикие.

Я понимаю, что такие проблемы не возникают когда ты сам делаешь мапинг, и это делал недавно, и ты помнишь где и какой объект примерно находится в 1000 строках мапинга, и оставляешь комментарии.
0

#40
Пользователь офлайн   Nexius 

  • Знаток
  • Вставить ник
  • Раскрыть информацию

Просмотр сообщенияDANGER_Hidden (05 августа 2020 - 16:15) писал:

	tmpobjid = CreateDynamicObject(2707, 1414.613037, -27.423855, 1003.322815, 0.000000, 0.000000, 0.000000, object_world, object_int, -1, 200.0,200.0);
	SetDynamicObjectMaterial(tmpobjid, 1, 18646, "matcolours", "grey-80-percent", 0);
	SetDynamicObjectMaterial(tmpobjid, 0, 19480, "signsurf", "sign", 0);
	tmpobjid = CreateDynamicObject(2707, 1412.282471, -27.423855, 1003.322815, 0.000000, 0.000000, 0.000000, object_world, object_int, -1, 200.0,200.0);
	SetDynamicObjectMaterial(tmpobjid, 1, 18646, "matcolours", "grey-80-percent", 0);
	SetDynamicObjectMaterial(tmpobjid, 0, 19480, "signsurf", "sign", 0);
	tmpobjid = CreateDynamicObject(19426, 1410.708984, -27.461506, 1003.432556, 0.000000, 270.000000, 180.000000, object_world, object_int, -1, 200.0,200.0);
	SetDynamicObjectMaterial(tmpobjid, 0, 18646, "matcolours", "grey-20-percent", 0xFFFFFFFF);
	tmpobjid = CreateDynamicObject(1897, 1417.388672, -27.141598, 1003.407043, -89.999992, -89.999992, 89.999962, object_world, object_int, -1, 200.0,200.0);
	SetDynamicObjectMaterial(tmpobjid, 0, 11631, "mp_ranchcut", "mpCJ_WOOD_DARK", 0);
	tmpobjid = CreateDynamicObject(2707, 1416.613037, -27.423855, 1003.322815, 0.000000, 0.000000, 0.000000, object_world, object_int, -1, 200.0,200.0);
	SetDynamicObjectMaterial(tmpobjid, 1, 18646, "matcolours", "grey-80-percent", 0);
	SetDynamicObjectMaterial(tmpobjid, 0, 19480, "signsurf", "sign", 0);
	tmpobjid = CreateDynamicObject(2707, 1410.282471, -27.423855, 1003.322815, 0.000000, 0.000000, 0.000000, object_world, object_int, -1, 200.0,200.0);
	SetDynamicObjectMaterial(tmpobjid, 1, 18646, "matcolours", "grey-80-percent", 0);
	SetDynamicObjectMaterial(tmpobjid, 0, 19480, "signsurf", "sign", 0);
	CreateDynamicObject(1897, 1414.751343, -28.277597, 1003.403259, -89.999992, -179.999985, 90.000015, object_world, object_int, -1, 200.0,200.0);
	CreateDynamicObject(1897, 1412.301270, -28.277597, 1003.403259, -89.999992, -179.999985, 90.000015, object_world, object_int, -1, 200.0,200.0);
	CreateDynamicObject(1897, 1414.678711, -28.301596, 1003.403259, -89.999992, 179.999985, -90.000015, object_world, object_int, -1, 200.0,200.0);
	CreateDynamicObject(1897, 1412.159180, -28.301596, 1003.403259, -89.999992, 179.999985, -90.000015, object_world, object_int, -1, 200.0,200.0);
	CreateDynamicObject(1897, 1413.521851, -28.277597, 1003.262329, 0.000000, 0.000000, -89.999977, object_world, object_int, -1, 200.0,200.0);
	CreateDynamicObject(1897, 1413.392700, -28.277597, 1003.262390, 0.000000, 539.999939, 89.999954, object_world, object_int, -1, 200.0,200.0);
	CreateDynamicObject(1897, 1415.902466, -28.277597, 1003.262390, -0.000006, 539.999939, 89.999977, object_world, object_int, -1, 200.0,200.0);
	CreateDynamicObject(1897, 1411.010986, -28.277597, 1003.262329, 360.000000, 0.000000, 270.000000, object_world, object_int, -1, 200.0,200.0);
	tmpobjid = CreateDynamicObject(1897, 1417.389648, -28.086584, 1003.133240, 0.000020, 720.000000, -179.999924, object_world, object_int, -1, 200.0,200.0);
	SetDynamicObjectMaterial(tmpobjid, 0, 11631, "mp_ranchcut", "mpCJ_WOOD_DARK", 0);
	tmpobjid = CreateDynamicObject(18880, 1412.518921, -30.034563, 1003.622986, 0.000000, 270.000000, -135.000000, object_world, object_int, -1, 200.0,200.0);
	SetDynamicObjectMaterial(tmpobjid, 3, 19480, "signsurf", "sign", 0);
	SetDynamicObjectMaterial(tmpobjid, 2, 18646, "matcolours", "grey-30-percent", 0xFFFFFFFF);
	SetDynamicObjectMaterial(tmpobjid, 1, 19480, "signsurf", "sign", 0);
	SetDynamicObjectMaterial(tmpobjid, 0, 19480, "signsurf", "sign", 0);

вот вам кусок мапинга, не открывая его в редакторе через импорт, скажите какие строки относятся ко второму этажу, а какие к первому?

не подсматривая в https://dev.prinesid..._samp_model_id/ вы можете вообще сказать, что либо про этот код? я думаю ровным счётом ничего, поэтому сам код разделить вы в блокноте не сможете. Для этого и нужны редакторы с поддержкой текстур.

Вот в том и дело, что например я всегда открываю редактор и смотрю в нём, и это занимает не так много времени, учитывая, что процесс внесения правок в карту уже после её вставки в мод это зачастую дело геморное само по себе.

Просмотр сообщенияDANGER_Hidden (05 августа 2020 - 16:15) писал:

Я тоже думал путём сравнения изменений двух файлов можно сравнить средствами Total Comandera, но проблема в том, что почти все строки красные, то координаты меняются в последней цифре после запятой, то вообще всё красное после исчезновения строк.
Т.к. мы сравниваем уже файлы с разным кол-вом строк и возможно после экспорта, ещё и последовательность сбивается.

Порядок не собьётся точно, если и до этого карта хотя бы раз сохранялась через этот редактор. А тот же WinMerge в таком случае вполне неплохо показывает отсутствующие строки в одном файле и учитывает все дальнейшие смещения на основе этого.

Просмотр сообщенияDANGER_Hidden (05 августа 2020 - 16:15) писал:

а у меня для добавления просто объектов вообще не возникало необходимость в редакторе. НО редакторы нужны для сложных задач.
Для простых задач есть типа текстур студии или самому можно накидать простой редактор, что я и когда то сделал. А можно просто сделать, чтобы можно было вводить код из pwn прямо в чате и он будет сразу отображаться.

Ну и опять же, а лично я использую свой редактор даже для таких мелких задач, вроде "просто посмотреть координату какого-либо объекта" или ещё чего-то подобного, и никаких временных задержек и дискомфорта это не вызывает, чтобы думать о каких-то более лёгких (или ещё каких-то других) альтернативах.


Насчёт этой возможности конечно подумаю (а также о том, как её можно было бы наиболее элегантно реализовать), но мне всё же кажется она не первостепенной надобности. В данный момент реализую некоторые другие предложения.

Сообщение отредактировал Nexius: Вчера, 17:44

0

Поделиться темой:


  • (4 Страниц) +
  • « Первая
  • 2
  • 3
  • 4
  • Вы не можете создать новую тему
  • Вы не можете ответить в тему

1 человек читают эту тему
0 пользователей, 1 гостей, 0 скрытых пользователей


Яндекс.Метрика