PickUpM@ster Message

Больше
9 года 4 мес. назад #95586 от Paranoid
Paranoid создал тему: PickUp Massage
Можно ли настраивать вид окна?

И офф-топчик: ты где учился прогать? А то я тоже хочу.

Пожалуйста Войти или Регистрация, чтобы присоединиться к беседе.

3 место 3 место в Кодировке 2 место Организатор конкурсов
Больше
9 года 4 мес. назад #95587 от Волчонок
Волчонок ответил в теме PickUp Massage

Paranoid пишет: Можно ли настраивать вид окна?

Пока нет. Положение, рамка и фон пока не настраиваются, сделаю на неделе, если смогу.

Paranoid пишет: И офф-топчик: ты где учился прогать? А то я тоже хочу.

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

Ленивый волчонок с большими амбициями

Рассказ "Рождение мага" , периодически обновляется
РПГ История Егеря . Основной текущий проект.

ВНИМАНИЕ: Спойлер!
Спасибо сказали: Paranoid

Пожалуйста Войти или Регистрация, чтобы присоединиться к беседе.

Больше
9 года 4 мес. назад #95588 от Paranoid
Paranoid ответил в теме PickUp Massage

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

Ну рили, хочется на руби лабать, а только с простыми операциями аля бейсик могу сладить

Пожалуйста Войти или Регистрация, чтобы присоединиться к беседе.

Проект месяца 2 место Проект месяца 3 место Ветеран Оратор Разработчик Проект месяца 1 место Паладин Проект года 2 место Проект года 1 место
Больше
9 года 4 мес. назад #95606 от I_LORD
I_LORD ответил в теме PickUp Massage
Добавь пожалуйста звуковой эффект, когда подбираешь предметы.
Спасибо сказали: Волчонок

Пожалуйста Войти или Регистрация, чтобы присоединиться к беседе.

3 место 3 место в Кодировке 2 место Организатор конкурсов
Больше
9 года 4 мес. назад #95616 от Волчонок
Волчонок ответил в теме PickUp Massage
Добавил, пользуйся =)

Ленивый волчонок с большими амбициями

Рассказ "Рождение мага" , периодически обновляется
РПГ История Егеря . Основной текущий проект.

ВНИМАНИЕ: Спойлер!

Пожалуйста Войти или Регистрация, чтобы присоединиться к беседе.

Больше
9 года 4 мес. назад #95618 от DarkKel
DarkKel ответил в теме PickUp Massage
Огромная просьба, тоже самое, но для МВ )

P.S. Эм.. mAssage? ))

Пожалуйста Войти или Регистрация, чтобы присоединиться к беседе.

3 место 3 место в Кодировке 2 место Организатор конкурсов
Больше
9 года 4 мес. назад #95620 от Волчонок
Волчонок ответил в теме PickUp Massage

DarkKel пишет: Огромная просьба, тоже самое, но для МВ )


Патоооом.

DarkKel пишет: P.S. Эм.. mAssage? ))


В следующем году исправлю.

Ленивый волчонок с большими амбициями

Рассказ "Рождение мага" , периодически обновляется
РПГ История Егеря . Основной текущий проект.

ВНИМАНИЕ: Спойлер!

Пожалуйста Войти или Регистрация, чтобы присоединиться к беседе.

3 место 3 место в Кодировке 2 место Организатор конкурсов
Больше
9 года 3 мес. назад #96539 от Волчонок
Волчонок ответил в теме PickUp Message
Мини-обновление!

Добавлено:
- Возможность настраивать размер текста во всплывающем окне. Изменяйте параметр TextSize в секции настроек.
- Возможность задавать звук подбора предмета. Указывайте название файла (без расширения) в параметре SEName.

Ленивый волчонок с большими амбициями

Рассказ "Рождение мага" , периодически обновляется
РПГ История Егеря . Основной текущий проект.

ВНИМАНИЕ: Спойлер!

Пожалуйста Войти или Регистрация, чтобы присоединиться к беседе.

3 место 3 место в Кодировке 2 место Организатор конкурсов
Больше
9 года 3 мес. назад - 9 года 3 мес. назад #96576 от Волчонок
Волчонок ответил в теме PickUpM@ster Message
Мини-обновление!

Добавлено:
- Возможность включать / отключать отображение иконок предметов. Если высота иконка меньше, чем высота строки текста, иконка обрезается снизу!
- Возможность менять цвет подложки (цвет берётся из системных настроек, а точнее из настроек тона окна на вкладке "Система" Базы Данных игры)

Ленивый волчонок с большими амбициями

Рассказ "Рождение мага" , периодически обновляется
РПГ История Егеря . Основной текущий проект.

ВНИМАНИЕ: Спойлер!
Последнее редактирование: 9 года 3 мес. назад пользователем Волчонок.
Спасибо сказали: yuryol

Пожалуйста Войти или Регистрация, чтобы присоединиться к беседе.

Проект месяца 1 место Программист Ruby Писатель 3 место 3 место Учитель Организатор конкурсов 1 место в Готв Ветеран Проект месяца 2 место
Больше
9 года 2 мес. назад - 9 года 2 мес. назад #96587 от DeadElf79
DeadElf79 ответил в теме PickUpM@ster Message
Поставил, попробовал.
У меня добавление предметов сделано автораном, так что при старте карты всё отразилось на экране и... FPS просел с 60 до 6 кадров в секунду. По завершении отображения взятых предметов потерянные кадры вернулись.

Что ты такого сделал, что оно столько памяти жрет? О.о Пойду вычитывать код.

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

Перепишу и вышлю сюда исправленный код.

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

На данный момент код пожирает 1-2 кадра в секунду вместо 54-58, как было в оригинале.
Code:
#============================================================================== # PickUp Message #------------------------------------------------------------------------------ # Написал: Urban.Wolfling # Внёс исправления: DeadElf79 #------------------------------------------------------------------------------ # For both commercial and non-commercial use as long as credit is given to # Urban.Wolfling. Licensed under Creative Commons CC BY 4.0 - # http://creativecommons.org/licenses/by/4.0/ #============================================================================== # Для коммерческого и не коммерческого использования, при условии указания # авторства Urban.Wolfling. Лицензировано под Creative Commons CC BY 4.0 - # http://creativecommons.org/licenses/by/4.0/ #============================================================================== class Game_System #============================================================================== # Setting Section / Секция настроек #============================================================================== TextShowTime = 120 # дительность показа строки о подборе предмета в кадрах TextFadeTime = 60 # длительность плавного удаления строки в кадрах SEName = "Equip3" # название звука подбора (должен лежать в Audio\SE\) UseIcons = true # отображать (true) или нет (false) иконки предметов TextSize = 20 # размер текста в окне TextFontColor = Color.new(255,255,255) # цвет текста (специально для тех) #============================================================================== # End Setting Section / Конец секции настроек #============================================================================== attr_accessor :pickup_sound attr_accessor :pickup_list alias pum_initialize initialize def initialize pum_initialize @pickup_list = [] @pickup_sound = RPG::SE.new(Game_System::SEName, 10, 100) end end class Game_Party < Game_Unit def push_pickuped_item(icon, amount, name) $game_system.pickup_list.push({ :icon => icon, :amount => amount, :name => name, :time => Game_System::TextShowTime }) end def gain_item(item, amount, include_equip = false) container = item_container(item.class) return unless container last_number = item_number(item) new_number = last_number + amount container[item.id] = [[new_number, 0].max, max_item_number(item)].min push_pickuped_item(item.icon_index,amount,item.name) $game_system.pickup_sound.play container.delete(item.id) if container[item.id] == 0 if include_equip && new_number < 0 discard_members_equip(item, -new_number) end $game_map.need_refresh = true end end class Window_NewItems < Sprite def initialize(x, y, width, height) super(nil) self.x, self.y = x, y self.z = 200 @font_size = Game_System::TextSize @w_c = $data_system.window_tone @t_ui = Game_System::UseIcons @iconset = Cache.system("Iconset") @last_size = -1 self.bitmap = Bitmap.new(width, height) self.bitmap.font.size = @font_size if Game_System::TextFontColor self.bitmap.font.color = Game_System::TextFontColor end redraw_back refresh end def draw_item_icon(icon_index, x, y) return unless icon_index != 0 rect = Rect.new(icon_index % 16 * 24, icon_index / 16 * 24, 24, 24) self.bitmap.blt(x, y, @iconset, rect) end def draw_text(x,y,text) self.bitmap.draw_text(x,y,width,@font_size,text) end def refresh self.bitmap.clear redraw_back $game_system.pickup_list.each do |pickup| index = $game_system.pickup_list.index(pickup) if @t_ui draw_item_icon(pickup[:icon], 4, index * @font_size) tab = 32 else tab = 4 end draw_text( tab, index * @font_size, [ pickup[:amount], pickup[:name] ].join(" ") ) end end def update plist = $game_system.pickup_list plist.each_index do |index| pickup = plist[index] pickup[:time] -= 1 if pickup[:time] <= 0 $game_system.pickup_list.delete_at(index) $game_system.pickup_list.compact! end end if @last_size != plist.size refresh @last_size = plist.size end end def redraw_back puts :redraw_back rect = Rect.new( 0, 0, self.bitmap.width, $game_system.pickup_list.size * @font_size ) red = ( @w_c.red + 255 ) / 2 green = ( @w_c.green + 255 ) / 2 blue = ( @w_c.blue + 255 ) / 2 bg0 = Color.new(red, green, blue, 255) bg1 = Color.new(red, green, blue, 0) self.bitmap.gradient_fill_rect(rect, bg0, bg1) end end class Scene_Map < Scene_Base alias pum_update_scene update_scene def update_scene pum_update_scene @new_items_window.update end alias pum_create_all_windows create_all_windows def create_all_windows pum_create_all_windows create_pum_window end def create_pum_window @new_items_window = Window_NewItems.new( 0, 0, Graphics.width / 2, Graphics.height / 2 ) end end
Последнее редактирование: 9 года 2 мес. назад пользователем DeadElf79.
Спасибо сказали: Волчонок

Пожалуйста Войти или Регистрация, чтобы присоединиться к беседе.

3 место 3 место в Кодировке 2 место Организатор конкурсов
Больше
9 года 2 мес. назад #96595 от Волчонок
Волчонок ответил в теме PickUpM@ster Message

DeadElf79 пишет: Волчонок, ты в курсе, что обращения к функциям, перерисовывающим что-то на картинке - самые "тяжелые"? Их выполнение происходит настолько медленно, что в официальной документации, если не ошибаюсь, рекомендовали их использовать настолько редко, насколько это вообще возможно. А у тебя refresh со всей перерисовкой идет каждый кадр! Причем, без видимых на то причин!


Теперь в курсе, и буду следить за этим и впредь :silly:

Ленивый волчонок с большими амбициями

Рассказ "Рождение мага" , периодически обновляется
РПГ История Егеря . Основной текущий проект.

ВНИМАНИЕ: Спойлер!
Спасибо сказали: DeadElf79

Пожалуйста Войти или Регистрация, чтобы присоединиться к беседе.

Проект месяца 1 место Программист Ruby Писатель 3 место 3 место Учитель Организатор конкурсов 1 место в Готв Ветеран Проект месяца 2 место
Больше
9 года 2 мес. назад #96599 от DeadElf79
DeadElf79 ответил в теме PickUpM@ster Message
Убрал лишний вывод в консоль и добавил шутку, которую хотел добавить, но упустил: возможность выставить нулевой звук при поднятии вещи. Специально для тех, кому звук не нужен.
Code:
#============================================================================== # PickUp Message #------------------------------------------------------------------------------ # Написал: Urban.Wolfling # Внёс исправления: DeadElf79 #------------------------------------------------------------------------------ # For both commercial and non-commercial use as long as credit is given to # Urban.Wolfling. Licensed under Creative Commons CC BY 4.0 - # http://creativecommons.org/licenses/by/4.0/ #============================================================================== # Для коммерческого и не коммерческого использования, при условии указания # авторства Urban.Wolfling. Лицензировано под Creative Commons CC BY 4.0 - # http://creativecommons.org/licenses/by/4.0/ #============================================================================== class Game_System #============================================================================== # Setting Section / Секция настроек #============================================================================== TextShowTime = 120 # дительность показа строки о подборе предмета в кадрах TextFadeTime = 60 # длительность плавного удаления строки в кадрах SEName = nil # название звука подбора (должен лежать в Audio\SE\) UseIcons = true # отображать (true) или нет (false) иконки предметов TextSize = 20 # размер текста в окне TextFontColor = Color.new(255,255,255) # цвет текста #============================================================================== # End Setting Section / Конец секции настроек #============================================================================== attr_accessor :pickup_sound attr_accessor :pickup_list alias pum_initialize initialize def initialize pum_initialize @pickup_list = [] if Game_System::SEName @pickup_sound = RPG::SE.new(Game_System::SEName, 10, 100) else @pickup_sound = nil end end end class Game_Party < Game_Unit def push_pickuped_item(icon, amount, name) $game_system.pickup_list.push({ :icon => icon, :amount => amount, :name => name, :time => Game_System::TextShowTime }) end def gain_item(item, amount, include_equip = false) container = item_container(item.class) return unless container last_number = item_number(item) new_number = last_number + amount container[item.id] = [[new_number, 0].max, max_item_number(item)].min push_pickuped_item(item.icon_index,amount,item.name) $game_system.pickup_sound.play unless $game_system.pickup_sound.nil? container.delete(item.id) if container[item.id] == 0 if include_equip && new_number < 0 discard_members_equip(item, -new_number) end $game_map.need_refresh = true end end class Window_NewItems < Sprite def initialize(x, y, width, height) super(nil) self.x, self.y = x, y self.z = 200 @font_size = Game_System::TextSize @w_c = $data_system.window_tone @t_ui = Game_System::UseIcons @iconset = Cache.system("Iconset") @last_size = -1 self.bitmap = Bitmap.new(width, height) self.bitmap.font.size = @font_size if Game_System::TextFontColor self.bitmap.font.color = Game_System::TextFontColor end redraw_back refresh end def draw_item_icon(icon_index, x, y) return unless icon_index != 0 rect = Rect.new(icon_index % 16 * 24, icon_index / 16 * 24, 24, 24) self.bitmap.blt(x, y, @iconset, rect) end def draw_text(x,y,text) self.bitmap.draw_text(x,y,width,@font_size,text) end def refresh self.bitmap.clear redraw_back $game_system.pickup_list.each do |pickup| index = $game_system.pickup_list.index(pickup) if @t_ui draw_item_icon(pickup[:icon], 4, index * @font_size) tab = 32 else tab = 4 end draw_text( tab, index * @font_size, [ pickup[:amount], pickup[:name] ].join(" ") ) end end def update plist = $game_system.pickup_list plist.each_index do |index| pickup = plist[index] pickup[:time] -= 1 if pickup[:time] <= 0 $game_system.pickup_list.delete_at(index) $game_system.pickup_list.compact! end end if @last_size != plist.size refresh @last_size = plist.size end end def redraw_back rect = Rect.new( 0, 0, self.bitmap.width, $game_system.pickup_list.size * @font_size ) red = ( @w_c.red + 255 ) / 2 green = ( @w_c.green + 255 ) / 2 blue = ( @w_c.blue + 255 ) / 2 bg0 = Color.new(red, green, blue, 255) bg1 = Color.new(red, green, blue, 0) self.bitmap.gradient_fill_rect(rect, bg0, bg1) end end class Scene_Map < Scene_Base alias pum_update_scene update_scene def update_scene pum_update_scene @new_items_window.update end alias pum_create_all_windows create_all_windows def create_all_windows pum_create_all_windows create_pum_window end def create_pum_window @new_items_window = Window_NewItems.new( 0, 0, Graphics.width / 2, Graphics.height / 2 ) end end

И на этом всё, возвращаю скрипт автору, дальше все обновления ждите только от него! ^_^
Спасибо сказали: Волчонок

Пожалуйста Войти или Регистрация, чтобы присоединиться к беседе.

3 место 3 место в Кодировке 2 место Организатор конкурсов
Больше
9 года 2 мес. назад - 9 года 2 мес. назад #96680 от Волчонок
Волчонок ответил в теме PickUpM@ster Message
Мини-обновление!

Багфикс:
- Исправлена ошибка, когда при открытии менюшек пикап лист не скрывался.

Ленивый волчонок с большими амбициями

Рассказ "Рождение мага" , периодически обновляется
РПГ История Егеря . Основной текущий проект.

ВНИМАНИЕ: Спойлер!
Последнее редактирование: 9 года 2 мес. назад пользователем Волчонок.

Пожалуйста Войти или Регистрация, чтобы присоединиться к беседе.

Время создания страницы: 0.107 секунд
Работает на Kunena форум