Миничат

Alx_Yago 1 ч. Какое всё стало странненькое... Какие теперь дальше планы?
AnnTenna 2 ч. Да, обновление, свершилось таки
MarkerIl 3 ч. Фига себе. Это что, обновление сайта?!
AnnTenna 2 дн. даже не верится что завтра уже 1 мая
poca 3 дн. А вот и среда =)
AnnTenna 4 дн. Ничего скоро уже майские...
MarsKnight 24.04.2026 18:48 Пережили эту рабочую недельку, пора пепечилить)
poca 24.04.2026 03:26 o_O пасиб за ссыль, похождения зелёной какахи доставили :D Ёмаё, куда катится игропром? =_=
Kerotan 24.04.2026 00:43 https://www.youtube.com/watch?v=vdUo12Zb1FU&t=5194s
Kerotan 24.04.2026 00:43 Из наших видел на RPG Maker Showcase 2026 - Exellent Award - "Heroines of Swords & Spells 2" (Best Comment Award) 1:00:03
Jas6666 23.04.2026 20:14 В принципе сами разработчики мейкера каждый год проводят "Фестиваль RPG Maker" вбей в поиск, выдаст страницу в стиме, там игры. сам уж решай стоящие ли игры, просто по отзыва
tim103 23.04.2026 15:05 Слушайте, а есть за последнее время вообще какие-то прорывные игры, которые в какой-то степени выстрелили в стим, и написанные на Rpg Maker? Если не считать старые проекты, по типу to the moon?
AnnTenna 23.04.2026 14:56 у нас жесть а не погодка)
AnnTenna 23.04.2026 14:45 доброго дня) как у вас погодка?)
ajir 20.04.2026 11:44 Phavn: Отлично!
Phavn 20.04.2026 10:54 Спасибо помогло. Вышел - куки данного сайта стёр - зашёл - заработало.
ajir 20.04.2026 10:37 Phavn: Если и это не помогает, не видишь - значит увы сбой с залогиниванием на форуме, попробуй очисть все данные сайта в браузере, залогиниться на первой странице сайта, перейти на форум, перейти в нужный подфорум и создать тему.
ajir 20.04.2026 10:35 Phavn: "Форум Светлая Зона и Академия RPG Maker Свободный Новая тема Темы прочитаны Подписаться" т.е. ищи "Новая тема".
Phavn 20.04.2026 10:10 Привет всем, кажется я уже спрашивал когда-то об этом — но как мне создать тут новую тему на форуме? Я их уже создавал, но теперь кнопки "создать тему" не вижу.
Phavn 20.04.2026 10:10 Привет всем, кажется я уже спрашивал когда-то об этом — но как мне создать тут новую тему на форуме? Я их уже создавал, но теперь кнопки "создать тему" не вижу.

(XP)EKLib v1.5

Больше
17 года 7 мес. назад #23496 от Equilibrium Keeper
Equilibrium Keeper создал тему: (XP)EKLib v1.5
[size=18pt]EKLib v.1.5[/size]

Предисловие:
Вот, наконец, я и закончил вылавливать всех жуков в своем творении и с гордостью, а так же потаенным страхом в душе, могу представить на ваш суд свою библиотеку. Методов в ней уже довольно много . Но действительно стоящих всего два - выдергивание любых кусков из изображения и рисование текста с переносом слов. С последним я мучился особенно долго, но теперь он должен работать, как часы... Смотрите, тестите, оценивайте, пользуйтесь, критикуйте... Только ногами не бейте... или, хотя бы, не по голове... Пожелания и советы - пишите все. Вот...

Методы:
  • getImagePartByIndex - Метод возвращает фрагмент изображения.
  • intToString - Метод преобразует целое число в строку с заданным количеством знаков.
  • changeFont - Метод изменяет все параметры шрифта заданного изображения
  • hyphenDrawText - Метод построчно рисует заданный text на bitmap, перенося непомещающиеся слова
  • drawFigure - Метод рисует геометрические фигуры на заданном изображении
  • findFileExp - Метод возвращает первый найденный файл в директории path, именем filename и расширением взятым из массива exp
Примечание: Подробное описание методов, их параметров, а так же инструкции по применению вы можете найти в теле скрипта.

В следующих версиях планирую:
  • Добавить новые фигуры в метод drawFigure.

Скрипт:
Code:
#============================================================================== # EK Lib v.1.5 #------------------------------------------------------------------------------ # Created by: Equilibrium Keeper [equilibriumkeeper@inbox.com] # Created on: 10.09.2008 01:37:16 # Отдельное спасибо: insider, Рольф # А так же: rpgmaker.sk6.ru, rpg-maker.info, gdsa.rpgmaker.ru #============================================================================== # Описание: Библиотека содержит несколько наиболее часто используемых мной # функций. При желании вы можете воспользоваться ими, но делайте # это на свой страх и риск. #------------------------------------------------------------------------------ # Установка: В редакторе скриптов создайте чистую страницу над Main и # скопируйте туда данный скрипт. В Main создайте новый объект% # $EKLib = EKLib.new #============================================================================== class EKLib #------------------------------------------------------------------------------ # Метод возвращает фрагмент изображения # filename : string - имя файла, относительно папки проекта # index : integer - порядковый номер фрагмента # width : integer - ширина каждого фрагмента # height : integer - высота каждого фрагмента # Примечание: Счет ведется слева направо, сверху вниз; index - с единицы. def getImagePartByIndex (filename, index, width, height) bitmap = Bitmap.new (filename) bitmap_result = Bitmap.new (width, height) n = bitmap.width / width x = (index * width - width) - ((index - 1) / n) * width * n y = ((index - 1) / n) * height rect = Rect.new(x, y, width, height) bitmap_result.blt(0, 0, bitmap, rect) return bitmap_result end #------------------------------------------------------------------------------ # Метод преобразует целое число в строку с заданным количеством знаков # number : integer - число, которое требуется преобразовать # digits : integer - количество знаков в возвращаемой строке # filling_symbol : string - символ, заполняющий не достающие знаки def intToString (number, digits = 3, filling_symbol = 0 ) i = number counter = number.to_s for i in number.to_s.size..digits - 1 counter = filling_symbol + counter i += 1 end return counter end #------------------------------------------------------------------------------ # Метод изменяет все параметры шрифта заданного изображения, если они не указаны, # возвращает их к значению по умолчанию # bitmap : bitmap - изображение, для которого изменяются параметры шрифта # size : integer - размер шрифта # bold : bool - флаг утолщенности # italic : bool - флаг курсива # color : color - цвет шрифта # name : string / [string] - имя шрифта или массив имен def changeFont (bitmap, size = 24 , bold = false, italic = false, color = Color.new(255,255,255,255), name = [ Arial , Courier New , Times New Roman ]) bitmap.font.size = size bitmap.font.bold = bold bitmap.font.italic = italic bitmap.font.color = color bitmap.font.name = name end #------------------------------------------------------------------------------ # Метод построчно рисует заданный text на bitmap, перенося непомещающиеся слова # text : string - строка (длина не важна), которую требуется записать # bitmap : bitmap - изображение, на котором будем рисовать # width : integer - максимальная длина строк # x : integer - координата x начала первой строки # y : integer - координата y начала первой строки # height : integer - высота строки; при некорректном значении, будет высчитана автоматически def hyphenDrawText (text, bitmap, width, x = 20, y = 20, height = -1) n = 0 index = 0 strings = [] while n text.size length = text.size while bitmap.text_size(text[n, length]).width width length /= (bitmap.text_size(text[n, length]).width.to_f / width.to_f).to_f end strings[index] = text[n, length] while (strings[index][length - 1, 1] != && strings[index][length - 1, 1] != ) length -= 1 strings[index] = strings[index][0, length] end n += length - 1 index += 1 end for i in 0..strings.size - 1 if strings[i][0, 1] == then strings[i] = strings[i][1, strings[i].size] end if height (bitmap.font.size.to_f / 1.2).to_f then height = bitmap.text_size(strings[i]).height end bitmap.draw_text(x, y + height * i, width, height, strings[i]) end end #------------------------------------------------------------------------------ # Метод рисует геометрические фигуры на заданном изображении # bitmap : bitmap - изображение, на котором будем рисовать # type : string - тип фигуры, которую будем рисовать # color : color - цвет, который будем использовать, к примеру Color.new(255,255,255,255) # Прочие параметры изменяются от фигуры к фигуре - смотрим скрипт # Доступные типы фигур: square = квадрат; def drawFigure (bitmap, type, color, param1 = 0, param2 = 0, param3 = 0, param4 = 0, param5 = 0, param6 = 0) case type when square filling = param1 # : integer [0, 1] - будем ли заливать квадрат или оставим его пустым gauge = param2 # : integer - толщина линии, в случае заливки принципиального значения не имеет x = param3 # : integer - координата x верхнего левого угла квадрата y = param4 # : integer - координата y верхнего левого угла квадрата width = param5 # : integer - ширина квадрата height = param6 # : integer - высота квадрата if filling != 0 bitmap.fill_rect(x, y, width, height, color) else bitmap.fill_rect(x, y, width, gauge, color) bitmap.fill_rect(x, y, gauge, height, color) bitmap.fill_rect(x, y + height - gauge, width, gauge, color) bitmap.fill_rect(x + width - gauge, y, gauge, height, color) end end end #------------------------------------------------------------------------------ # Метод возвращает первый найденный файл в директории path, # с именем filename и расширением, взятым из массива exp # path : string - директория в которой следует производить поиск, # может быть приравнена к или nil # filename : string - имя файла или его абсолютный адрес без расширения # exp : string / [string] - одна из констант, передаваемая в виде строки # или массив возможных расширений файла # Константы для exp: images = изображения; audio = аудио. def findFileExp (path, filename, exp) if filename == nil || filename == return false end if path == nil then path = end if exp == images exp = [ png , jpg , bmp ] elsif exp == audio exp = [ mp3 , wav , ogg , wma ] end for i in 0..exp.size - 1 if FileTest.exist?(path + filename + . + exp[i]) return (filename + . + exp[i]) end end return false end #------------------------------------------------------------------------------ end

Истина там, во тьме, и во тьме ты иди - мыслящий бродит во тьме.
В себя самого загляни, открой свою дорогу в Ничто.
В Ничто ты войди, во тьму, и пойми:
Пока ты во тьме, не может она быть Ничем - ведь там ты.
Тема заблокирована.
Разработчик 2 место Организатор конкурсов 3 место
Больше
17 года 7 мес. назад #23497 от Kuraudo
Kuraudo ответил в теме (XP)EKLib v1.5
Такс, пока мало представляю как это выглядит, но спасибо, попробую разобраться)

Это все, потому что я ужасный тип.
Тема заблокирована.
Больше
17 года 7 мес. назад #23498 от Equilibrium Keeper
Equilibrium Keeper ответил в теме (XP)EKLib v1.5
Попробуй. И доложи о результатах. (=

Истина там, во тьме, и во тьме ты иди - мыслящий бродит во тьме.
В себя самого загляни, открой свою дорогу в Ничто.
В Ничто ты войди, во тьму, и пойми:
Пока ты во тьме, не может она быть Ничем - ведь там ты.
Тема заблокирована.
Больше
17 года 7 мес. назад #23501 от Arykray
Arykray ответил в теме (XP)EKLib v1.5
Больше всего мне понравилось в этом коде то, что он отформатирован по всем правилам и приятен для чтения))))

Чем сложнее задача - тем проще ее не решать.

[img
Тема заблокирована.
Больше
17 года 7 мес. назад #23503 от Equilibrium Keeper
Equilibrium Keeper ответил в теме (XP)EKLib v1.5
Хех, это такой вежливый намек, что само он фигня, нафиг никому не нужен, а пара идей, которые еще можно было вытянуть на троечку исполнены на -6? ^______^
Но, спасибо, старался... ^^ И по части оформления тоже. (=

Истина там, во тьме, и во тьме ты иди - мыслящий бродит во тьме.
В себя самого загляни, открой свою дорогу в Ничто.
В Ничто ты войди, во тьму, и пойми:
Пока ты во тьме, не может она быть Ничем - ведь там ты.
Тема заблокирована.
  • Inca
  • Новый участник
  • Новый участник
Больше
17 года 7 мес. назад #23506 от Inca
Inca ответил в теме (XP)EKLib v1.5
Equilibrium Keeper, а опиши пожалуйста популярнее для чего такие скрипты можно использовать. Мне что-то трудно сообразить...
Тема заблокирована.
Больше
17 года 7 мес. назад #23509 от Equilibrium Keeper
Equilibrium Keeper ответил в теме (XP)EKLib v1.5
getImagePartByIndex - вещь ценная и нужная, спасет вас от бесчисленных картинок в папках графики. Актуально, к примеру, если у вас в проекте 100+ иконок предметов. Или та же сотня монстров и у каждого своя физиономия. Да, собственно, и для сетов мосек каваииных персонажей подойдет. Просто пихаем все изображения в один файл (при условии, что они одинакового размера), а потом циферкой выбираем нужный фрагмент.
intToString - за большую востребованность данного метода не ручаюсь, но пригодиться может, к примеру, когда нужно перебрать большое количество файлов, различающиеся лишь порядковым номером. Иначе, придется называть их без ноликов и в папке они будут следовать примерно так: a1, a2, a20, a21, a22, a23, a3, a4... и т.д. Думаю, понятно. Не смертельно, но, имхо, не удобно. Уж лучше старые добрые нолики - a01, a02, a03....
changeFont - этот товарищь еще до конца не сформирован, и я сильно сомневаюсь в его необходимости, но пока рука не поднимается удалить... прикручу поддержку фонтов, что бы он менял, как их на битмапах, так и просто их, может, еще чего придумаю... а может и потру...
hyphenDrawText - без лишней скромности скажу, что значение этого метода переоценить сложно. Ибо стоит тебе попытаться нарисовать текст в 2 и более строчки на битмапе, если по какой-то причине (а причин полно) не получится сделать это стандартным мессаджем, как тут же возникнет проблема переноса слов. Этот метод наиболее оптимально подсчитывает длину для каждой строки, с учетом типа и размера шрифта, подбирает высоту строки, если ее не указать вручную, и сам переносит непомещающиеся слова! Причем именно слова, не оставляя кусок слова на одной строке, а другой - на второй. В будущем добавлю поддержку больших слов - которые при всем желании не поместятся на строке (сейчас выдает false) и выравнивание текста, аля html овские align и valign
drawFigure - просто и мило. несмотря на то, что сейчас оно умеет рисовать лишь квадраты, даже это умение способно облегчить кому-нибудь жизнь, если квадрат нужно нарисовать полый , и не 1, а десяток. Моя большая мечта - научить его рисовать кружки. ^^
findFileExp - это вторая сомнительная функция... тем не менее, ее можно использовать что бы выбрать наиболее предпочтительное расширение файла, а соответственно появляется возможность хранить несколько файлов под одним именем, но с разными расширениями... фигня, конечно, но вдруг кому-нибудь пригодится?..

Воть... =^-^=

Истина там, во тьме, и во тьме ты иди - мыслящий бродит во тьме.
В себя самого загляни, открой свою дорогу в Ничто.
В Ничто ты войди, во тьму, и пойми:
Пока ты во тьме, не может она быть Ничем - ведь там ты.
Тема заблокирована.
Больше
17 года 7 мес. назад #23510 от Dr. Nick To
Dr. Nick To ответил в теме (XP)EKLib v1.5
Не простую ты штуку выбрал. Особенно тем, что это не просто набор скриптов, а библиотека расширяющая способности мейкера. (разработчики бы об этом подумали)

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


intToString Ещё неплохо бы выбирать количество ноликов.
Народ у нас жадный. Кому то количество предметов 01 хватит, а другому и 001 мало.


changeFont без комментариев. Хорошая функция, пригодится.
особенно вместе с hyphenDrawText

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

На седьмом столбе мудрости дома клана Тайра в Эдо написано: Каждый, кто не понимает разницу между небрежностью и качеством, старанием и поспешностью, - достоин сожаления.
Тема заблокирована.
Больше
17 года 7 мес. назад #23511 от Equilibrium Keeper
Equilibrium Keeper ответил в теме (XP)EKLib v1.5


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

Да, насчет замены - верно. К сожалению, мои познания в программировании не столь велики, как хотелось бы; а так, в идеале, собрать бы внешнюю программку для работы с такими вот произвольными сетами... Может, и займусь...
Ну, а по поводу последовательности картинок - поскольку она ничего сама не показывает, а лишь возвращает образец bitmap, то нет ничего сложного в том, что бы вернуть целый массив из определенного количества элементов. Сделаю.

intToString Ещё неплохо бы выбирать количество ноликов.
Народ у нас жадный. Кому то количество предметов 01 хватит, а другому и 001 мало.

А выбор количества ноликов там есть ^_-
def intToString (number, digits = 3, filling_symbol = 0 ).
И даже выбор значка, если не нравится нолик. ^^

changeFont без комментариев. Хорошая функция, пригодится.
особенно вместе с hyphenDrawText

В таком случае довожу ее до ума.

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

А вот тут меня опредили. Чужую славу грабастать себе не буду, но имени автора я не знаю. =\
Code:
class Bitmap def draw_line(start_x, start_y, end_x, end_y, start_color, width = 1, end_color = start_color) distance = (start_x - end_x).abs + (start_y - end_y).abs if end_color == start_color for i in 1..distance x = (start_x + 1.0 * (end_x - start_x) * i / distance).to_i y = (start_y + 1.0 * (end_y - start_y) * i / distance).to_i if width == 1 self.set_pixel(x, y, start_color) else self.fill_rect(x, y, width, width, start_color) end end else for i in 1..distance x = (start_x + 1.0 * (end_x - start_x) * i / distance).to_i y = (start_y + 1.0 * (end_y - start_y) * i / distance).to_i r = start_color.red * (distance-i)/distance + end_color.red * i/distance g = start_color.green * (distance-i)/distance + end_color.green * i/distance b = start_color.blue * (distance-i)/distance + end_color.blue * i/distance a = start_color.alpha * (distance-i)/distance + end_color.alpha * i/distance if width == 1 self.set_pixel(x, y, Color.new(r, g, b, a)) else self.fill_rect(x, y, width, width, Color.new(r, g, b, a)) end end end end end
Узнать бы имя автора - переписал бы под свою библиотеку с сохранением копирайтов. А так... Автор, я так понимаю, кто-то из корейцев... Теперь даже самому нечто похожее не написать - чужие формулы засели в голове. =\

Истина там, во тьме, и во тьме ты иди - мыслящий бродит во тьме.
В себя самого загляни, открой свою дорогу в Ничто.
В Ничто ты войди, во тьму, и пойми:
Пока ты во тьме, не может она быть Ничем - ведь там ты.
Тема заблокирована.
Больше
17 года 5 мес. назад #24058 от Equilibrium Keeper
Equilibrium Keeper ответил в теме (XP)EKLib v1.5
К выходу готовится новая версия. так теперь вопрос:
Как лучше сделать: Отдельным классом, как это сделано сейчас - соответственно сохранится совместимость с ранними версиями.
Или же изменять существующие классы, такие как Bitmap, добавляя им новые методы?
Как будет выглядеть грамотнее, красивее и... удобнее... с точки зрения скриптописания?

Истина там, во тьме, и во тьме ты иди - мыслящий бродит во тьме.
В себя самого загляни, открой свою дорогу в Ничто.
В Ничто ты войди, во тьму, и пойми:
Пока ты во тьме, не может она быть Ничем - ведь там ты.
Тема заблокирована.
Больше
17 года 5 мес. назад #24059 от Arykray
Arykray ответил в теме (XP)EKLib v1.5
Делай так, как тебе приятней, это твой скрипт и ты в праве преподнести его как считаешь нужным!

Чем сложнее задача - тем проще ее не решать.

[img
Тема заблокирована.
Больше
17 года 5 мес. назад #24061 от Equilibrium Keeper
Equilibrium Keeper ответил в теме (XP)EKLib v1.5
Сделал, так, как считал правильнее. ^_^
Обновлено в соседней темке.

Истина там, во тьме, и во тьме ты иди - мыслящий бродит во тьме.
В себя самого загляни, открой свою дорогу в Ничто.
В Ничто ты войди, во тьму, и пойми:
Пока ты во тьме, не может она быть Ничем - ведь там ты.
Тема заблокирована.
Больше
17 года 5 мес. назад #24184 от Dr. Nick To
Dr. Nick To ответил в теме (XP)EKLib v1.5
Тема закрыта. Продолжение смотрите в теме
(XP)EKLib v2.0
rpg-maker.info/index.php?option=com_smf&...g24183;topicseen#new

На седьмом столбе мудрости дома клана Тайра в Эдо написано: Каждый, кто не понимает разницу между небрежностью и качеством, старанием и поспешностью, - достоин сожаления.
Тема заблокирована.
Время создания страницы: 0.119 секунд
Работает на Kunena форум