Форум Pawn.Wiki - Воплоти мечту в реальность!: Внутриигровой редактор текстдравов вашей мечты - Форум Pawn.Wiki - Воплоти мечту в реальность!

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

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

Внутриигровой редактор текстдравов вашей мечты Каких функций в редакторе текстдравов вам не хватает? Оценка: -----

#1
Пользователь офлайн   DeimoS 

  • Evil Scripter
  • Вставить ник
  • Раскрыть информацию
Переписываю тут с нуля iPLEOMAX textdraw editor, так как на те версии, исходники которых я видел, смотреть страшно + есть всякие неприятные баги/недоработки, которые кочуют из версии в версию и которые приходится всякий раз руками править, когда код от текстдравщиков приходит.

Собственно, какие функции в редакторах текстдравов вам кажутся важными и чего вам обычно не хватает?
Из планируемого (что вспомнил):
  • Упростить локализацию (пока смотрю в сторону zlang, но если есть варианты удобнее -можете предложить)
  • Вшить поддержку rustext
  • Добавить режим const-корректности при конвертации в pawn-код. Ну и сделаю, видимо, "крайне сложную" в реализации вещь, которую большинство версий редакторов почему-то не реализовали - конвертацию цвета из десятичного в шестнадцатеричный формат.
  • Добавить всякие удобные штуки, которые видел в других версиях редактора, по типу возможности точной настройки координат/цвета и т.п. при нажатии на ПКМ или, например, возможности копирования текстдрава через Ctrl+C
  • Поддержка всех типов "исходников" для текстдравов (если скинете ссылку на редакторы, которые используют специфические форматы исходных файлов - буду благодарен)
  • Добавлю возможность настройки области кликабельности для соответствующих диалогов (есть пара идей как это визуализоровать. Нужно будет только всё на практике проверить)
  • Всякие прочие мелкие улучшения жизни
  • В идеале, сделаю "буферизацию" действий с возможностью отката (но это не обещаю в релизной версии. Только если мотивации хватит)
  • Ну и сделаю редактор по максимуму настраиваемым, дабы всё можно было подогнать под себя


С 99.9% шансом редактор вместе с исходникми солью в открытый доступ.
0.1% - солью только скомпилированную версию (а там уже через нейронки соберёте исходнику :blush:)

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

UPD: Ну и сразу скажу, что принцип работы редактора останется прежним - только для локального использования одним человеком.

Сообщение отредактировал DeimoS: 07 июля 2025 - 18:15

1

#2
Пользователь офлайн   M I S T E V 

  • Вставить ник
  • Раскрыть информацию
Постараюсь сегодня прислать все те идеи, которые я хотел реализовать, но так и не доделал. Думаю, у тебя точно получится :wink:
1

#3
Пользователь офлайн   M I S T E V 

  • Вставить ник
  • Раскрыть информацию
Сначала скину макет того, как я себе представлял редактор, далее распишу, что хотел реализовать.

Скрины (много) [Показать]


Кратко про то, что я делал и было уже реализовано:
1. Редактор называется Text Draw Engine. Сокращённо получается TDE, как самая популярная программа для редактирования.
2. При входе в редактор выбор Создать / Загрузить проект. Далее внизу отображается меню, которое можно передвинуть нажав на троеточие слева. В этом меню отображаются только те кнопки, которые доступны на данный момент. То есть если никакой TD не выбран, доступно только управление нынешними (кнопка с тремя полосками) и создать TD.
3. В создании TD доступно всего 3 типа Текст, Бокс (спрайт), Модель. Именно боксы я не включал в список, так как никогда ими не пользовался, а лимита спрайтов в 100 шт никогда не достигал (даже при создании своего инвентаря, где я упёрся в лимит локальных TD). При выборе определённого типа, доступны только те элементы управления, которые влияют на сам TD, если это текст, нет ничего, что будет связано с моделью и т.п. (именно в скринах недоделан этот тип по кнопкам, остальные типы более менее готовы были).
4. Я всё делал исключительно на Pawn, то есть весь интерфейс - это PlayerText, а создаваемые TD - Text. Перемещение элементов, изменение размера или вращение делал на стрелочки, это в разы удобнее, чем использовать мышку. Также я сделал в правой части параметры для стрелок - шаг изменения (1, 5, 0.5) и возможность удерживать клавишу для изменения или единое нажатие. Казалось бы, где это может быть нужно? Но при использовании TDE я всегда сталкивался с тем, что мне необходимо двинуть элемент чуть в сторону и делать это с помощью мыши - ужас как не удобно.
5. Главное, что необходимо реализовать, это отображение нынешней позиции, размера, углов и т.д. в этом меню. Невозможно работать в TDE, когда необходимо узнать позицию/размер, для этого необходимо выбирать и двигать элемент. Так же хотел сделать с цветом, но это ещё не реализовал.
6. Также я сделал защиту от выхода за пределы рабочей области. То есть при движении стрелками или прямое указание размера не могло выйти за 0.0/640.0 / 0.0/448.0

Теперь о той концепции, которую я хотел реализовать.

1. Каждый TD - этой отдельный слой, как в Photoshop. То есть работа с ним происходит подобным образом.
2. Возможность выгрузить проект в фоновый режим. Что это? Я создал какой-то фон из TD, например бэкграунд инвентаря, где расположены основные элементы управления, далее выгружаю его, как отдельный проект, который будет отображаться на экране, но с ним никак нельзя взаимодействовать. Все последующие TD создаются в новом проекте. Сейчас, чтобы подобное сделать в TDE, нужно создавать копию файла (в projects), удалять лишние строки, загружать эту версию и работать с ней. При этом возможность как-то задеть тот самый бэк остаётся, что критично для больших систем.
3. Ключевой момент, это возможность создавать Группу и Компонент. Как это реализовано, можно посмотреть в Google SketchUp. Попробую в кратце объяснить.
- Группа, создаётся несколько TD, через меню выбираем какие необходимы, выбираем "Объединить в группу", это единый элемент, переместив один TD, за ним будут тянуться все остальные сохраняя смещения относительно друг друга. Копируя группу, она сохраняет все параметры, становясь отдельным элементом.
- Компонент, подобен Группе, только при копировании это не является отдельным элементом, а является "ссылкой" на основной элемент (они все связаны между собой, нет отдельно основного, редактировать можно любой). Компонент можно перемещать отдельно друг от друга, но если какой-то TD изменить в компоненте, это изменение коснётся всех связанных компонентов (копий). То есть, если я делаю инвентарь, мне достаточно сделать 1 слот, расставив текст, модель, и т.д. далее, я объединяю это в компонент и копирую. Теперь, если мне необходимо поправить что-то, достаточно это изменить в одном слоте, а не менять в каждом. Вопрос не в том, что в коде всё создаётся через цикл, а в том, что многое необходимо сделать визуально, чтобы было от чего отталкиваться, а не подгонять потом кодом.
4. Ещё что хотелось реализовать, это динамические функции внутри редактора, берём пример выше (инвентарь - слоты). В самом редакторе сделать возможность создать сетку из элементов, указав расстояние по X и Y между элементами. Если это группа/элемент, указать расстояние между ними, далее редактор сам создаёт копию элементов. В любой момент можно изменить количество строк/столбцов. Ещё одна из функций, это подобно ProgressBar, чтобы я мог из редактора задать min и max размеры для TD, которые могут быть.
5. SMART экспорт. Всё что выше описано, экспортировать сразу в код таким образом, чтобы это имело свои макросы, константы, переменные и функции. Грубо говоря, готовый код.

Возможно, что-то упустил из того, что сам хотел сделать, нигде не записывал, всё держу в голове :blush: Если что, допишу.



Поэтому если и делать новый TDE, то делать сразу крутой и полезный. Лично я не сделал такое, только потому что нет понимая - нужно это людям или нет, а также не разбирал подробно моменты экспорта, что ставило в тупик, сделав всю работу, смогу ли я это перенести в txt файл, чтобы это потом работало в pwn/inc файле :biggrin: :unsure:

Если действительно захочешь что-то подобное реализовать и нужна будет помощь - пиши, обязательно помогу :wink:

Сообщение отредактировал M I S T E V: 07 июля 2025 - 21:22

1

#4
Пользователь офлайн   M I S T E V 

  • Вставить ник
  • Раскрыть информацию
6. Отображение количества используемых элементов: локал/глобал тд, группы, элементы, вид (текст, спрайт, модель). Всё это в меню тд (три полоски).

Вот ещё по теме TDE: https://pawn.wiki/in...post__p__292836

Сообщение отредактировал M I S T E V: 07 июля 2025 - 21:51

0

#5
Пользователь офлайн   DeimoS 

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

Просмотр сообщенияM I S T E V (07 июля 2025 - 21:20) писал:

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


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

Просмотр сообщенияM I S T E V (07 июля 2025 - 21:44) писал:

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


Да, такое точно будет.
В целом, будет диалог со списком всех текстдравов, который можно будет по всякому сортировать + в 3 столбца которого можно будет желаемую инфу выводить (например, кликабельные или не кликабельные ли текстдравы. И т.п.). Плюс, при выборе текстдрава в этом меню, будет подменю с действиями, среди которых будет действие редактирования. Оно откроет DIALOG_STYLE_TABLIST, в котором будет перечислена вообще вся информация о текстдраве текстом с возможностью эту информацию изменить прямо из него же (хоть текстом, хоть мышкой/кнопками - в зависимости от типа выбранной информации). Это уже то, чего лично мне не хватало периодически.

Плюс так же, вероятнее всего, добавлю возможность делать "шаблоны" как текстдравов, так и например, пользовательских цветов, которые будут показываться в диалоге или текста.
В общем, у меня тоже довольно много идей того, как базовый TDE улучшить) Поэтому, наверное, сначала добью базовый функционал и, возможно, эту версию опубликую. После уже сделаю то, что я планировал. И уже после можно будет накручивать остальной функционал, который, в том числе, из этой темы браться будет.

P.S. Тот пост да, видел)

Сообщение отредактировал DeimoS: 07 июля 2025 - 22:03

1

#6
Пользователь офлайн   M I S T E V 

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

Просмотр сообщенияDeimoS (07 июля 2025 - 22:02) писал:

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

Желаю удачи, если что-то нужно, пиши, можем вести разработку вдвоем. Можешь что-то перекидывать на меня, рад помочь
1

#7
Пользователь офлайн   ddrgtagfon 

  • Местный
  • Вставить ник
  • Раскрыть информацию
обнуление кординат до .0000 в экспорте по дефолту
0

#8
Пользователь офлайн   M I S T E V 

  • Вставить ник
  • Раскрыть информацию
Ещё забыл добавить, (7) что хотел сделать возможность отцентровать текст относительно бокса. Вот тема, где нашел формулу (100% рабочая)

https://pawn.wiki/in...post__p__299719
0

#9
Пользователь офлайн   FARADAY 

  • Знаток
  • Вставить ник
  • Раскрыть информацию
Круто конечно что энтузиазм еще жив.
Но при таком плане работ, круче наверно было бы рисовать не в игре, а в браузере, да с публикацией на pawnokit

А так удачи в разработке, но нужно помнить что от TD все бегут в сторону СEF
0

#10
Пользователь офлайн   M I S T E V 

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

Просмотр сообщенияFARADAY (07 июля 2025 - 23:03) писал:

но нужно помнить что от TD все бегут в сторону СEF

Видал я этот CEF, мало людей, которые умеют что-то делать на нем стояще.. И еще найди кто тебе сделает хорошую обратную связь :blush:
0

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


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

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


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