Small edit to the gallery script

Clord

Nya~
Veteran
Joined
Aug 5, 2012
Messages
2,358
Reaction score
385
Primarily Uses
I made Moghunter's gallery script to look good on 640x480 resolution.

However I can't figure out one small detail that should be apparent when you look at this screenshot.



Code:
#==============================================================================# +++ MOG - Picture Gallery ACE (v1.3) +++#==============================================================================# By Moghunter# [URL="http://www.atelier-rgss.com/#%23"]http://www.atelier-rgss.com/##[/URL] Made 640x480 compatible by Clord (forums.rpgmakerweb.com)##==============================================================================# Sistema de galeria de imagens.#==============================================================================# Para ativar o script use o comando abaixo através de um evento usando o# comando chamar script. (Call Script)## SceneManager.call(Scene_Picture_Gallery)##==============================================================================# Para disponibilizar as imagens na galeria você deverá usar o seguinte # código através do comando chamar script.## $game_system.gallery[ID] = true## EX   $game_system.gallery[10] = true##==============================================================================# Você deverá criar uma pasta com o nome "Gallery" onde as imagens deverão# ser gravadas.## Graphics/Gallery/ ## A nomeação das imagens devem ser numéricas. (ID da imagem)# 0.jpg    (Imagem não disponível.)# 1.jpg# 2.jpg# 3.jpg# ...## Prefira usar imagens com resoluções igual ou maior a 544x416 pixels.#==============================================================================# Histórico# 1.3 - Movimento da imagem na diagonal.#     - Melhoria no sistema de dispose.# 1.2 - Compatibilidade com o sistema de cursor.# 1.1 - Opção de adicionar o command Picture Gallery no Menu principal.##==============================================================================module MOG_PICTURE_GALLERY       #Quantidade maxima de imagens na galeria.        MAX_PICTURES = 40       #Ativar o Scene Picture Gallery no Menu       PICTURE_GALLERY_MENU_COMMAND = true       #Nome do comando apresentado no menu.       PICTURE_GALLERY_COMMAND_NAME = "Collectables"end  #==============================================================================# ■ Game_System#==============================================================================class Game_System   attr_accessor :gallery  #------------------------------------------------------------------------------ # ● Initialize #------------------------------------------------------------------------------    alias art_picture_initialize initialize  def initialize      art_picture_initialize      @gallery = [] end  end#==============================================================================# ■ RPG#==============================================================================module Cache       def self.gallery(filename)       load_bitmap("Graphics/Gallery/", filename)    endend#==============================================================================# ■ Window_Base#==============================================================================class Window_Base < Window    #--------------------------------------------------------------------------  # ● Draw_Thumbnail  #--------------------------------------------------------------------------    def draw_thumbnail(x,y,id)      bitmap = Cache.gallery(id.to_s) rescue nil      return if bitmap == nil      src_rect = Rect.new(0, 0, bitmap.width , bitmap.height )      src_rect2 = Rect.new(x, y, 118, 59)        self.contents.stretch_blt(src_rect2, bitmap, src_rect)      bitmap.dispose  endend  #==============================================================================# ■ Window_Picture#==============================================================================class Window_Picture < Window_Selectable   #------------------------------------------------------------------------------ # ● Initialize #------------------------------------------------------------------------------     def initialize(page)      super(0, 64, 640, 480)      self.opacity = 0      @index = -1      @page = page      @pic_max = MOG_PICTURE_GALLERY::MAX_PICTURES      @pic_max = 1 if @pic_max <= 0      @pag_max = @pic_max / 9      if @pag_max == page         o = @pag_max * 9         o2 =  @pic_max - o         @item_max = o2      else         @item_max = 9       end      @i_max =  @item_max      refresh(page)      select(0)      activate  end #------------------------------------------------------------------------------ # ● Refresh #------------------------------------------------------------------------------     def refresh(page = 0)      if self.contents != nil         self.contents.dispose         self.contents = nil      end      if @item_max > 0         self.contents = Bitmap.new(width - 32, 6 * 89)         for i in 0...@item_max            draw_item(i,page)         end      end  end   #------------------------------------------------------------------------------ # ● draw_item #------------------------------------------------------------------------------     def draw_item(index,page)      np = 9 * page      picture_number = index + 1 + np      x = 64 + index % 3 * 183      y = 12 + index / 3 * 89      s = picture_number      s = 0 if $game_system.gallery[picture_number] == nil      draw_thumbnail(x,y,s)      self.contents.draw_text(x + 30,y + 49, 64, 32, "N - " + picture_number.to_s,1)  end   #------------------------------------------------------------------------------ # ● item_rect #------------------------------------------------------------------------------       def item_rect(index)      rect = Rect.new(0, 0, 0, 0)      rect.width = 150      rect.height = 90      rect.x = @index % col_max * (rect.width + 32)      rect.y = @index / col_max * 90      return rect  end       #------------------------------------------------------------------------------ # ● Col Max #------------------------------------------------------------------------------         def col_max      return 3  end     #------------------------------------------------------------------------------ # ● Item Max #------------------------------------------------------------------------------           def item_max      return @item_max == nil ? 0 : @item_max   end    end#==============================================================================# ■ Scene_ArtPictures#==============================================================================class Scene_Picture_Gallery include MOG_PICTURE_GALLERY    #------------------------------------------------------------------------------ # ● Main #------------------------------------------------------------------------------      def main     setup     execute_dispose     create_image          create_background          create_loading_text               create_window     create_cursor     create_button     execute_loop     execute_dispose end #------------------------------------------------------------------------------ # ● Create_Loading #------------------------------------------------------------------------------       def create_loading_text     @loading = Sprite.new     @loading.bitmap = Bitmap.new(100,32)     @loading.z = 300     @loading.bitmap.font.size = 20     @loading.bitmap.font.bold = true     @loading.bitmap.font.name = "Georgia"       @loading.bitmap.draw_text(0,0, 100, 32, "Loading...",1)     @loading.x = (640 / 2) - 50      @loading.y = (480 / 2)     Graphics.transition(20) end    #------------------------------------------------------------------------------ # ● Setup #------------------------------------------------------------------------------       def setup     @max_pictures = MAX_PICTURES     @max_pictures = 1 if @max_pictures <= 0     v = (@max_pictures / 9)      v2 = (v - 1) * 9     v3 = (@max_pictures - v2) - 9     if v3 != 0        @max_pages = (@max_pictures / 9) + 1     else         @max_pages = (@max_pictures / 9)      end       @max_pages = 1 if @max_pages == 0      @aw_center = 0     @aw_left = 0     @aw_right = 0      @slide_type = 0     @page_old = 0     @picture_id = 0     @image_active = false     @old_index = 0     @picures_enabled = 0     @comp = 0     @ex = 0     @ey = 0     @ex_max = 0     @ey_max = 0     @ex_max_zoom = 0     @ey_max_zoom = 0     for i in 0..MAX_PICTURES         @picures_enabled += 1 if $game_system.gallery[i]      end   end      #------------------------------------------------------------------------------ # ● create_background  #------------------------------------------------------------------------------         def create_background     @background = Sprite.new     @background.bitmap = Cache.gallery("Background")       @background.z = 0     @background2 = Plane.new     @background2.bitmap = Cache.gallery("Background2")           @background2.z = -1 end  #------------------------------------------------------------------------------ # ● Create Window #------------------------------------------------------------------------------       def create_window     @info = Window_Help.new     @info.y = 360     @info.opacity = 0     @wp_page = 0     @wp_page_old = @wp_page     @wp_index = 0     @wp =[]     for i in 0...@max_pages         @wp[i] = Window_Picture.new(i)     end       check_active_window(true)     refresh_info_window(true)     #@wp[@wp_page].x = 0 end  #------------------------------------------------------------------------------ # ● Create_image #------------------------------------------------------------------------------         def create_image     @picture = Sprite.new     @picture.bitmap = Cache.gallery("")     @picture.z = 100     @picture.opacity = 0 end  #------------------------------------------------------------------------------ # ● Check Active Window #------------------------------------------------------------------------------        def check_active_window(starting = false)     for i in 0...@max_pages        if i == @wp_page            @wp[@wp_page].active = true            @wp[@wp_page].visible = true            if @slide_type == 0                  @wp[@wp_page].x = 640            else               @wp[@wp_page].x = -640            end            elsif i == @page_old  and starting == false             @wp[@page_old].active = false            @wp[@page_old].visible = true            @wp[@page_old].visible = false if starting             @wp[@page_old].x = 0              else               @wp[i].active = false            @wp[i].visible = false         end        end   end  #------------------------------------------------------------------------------ # ● Create Button #------------------------------------------------------------------------------        def create_button     @button_image = Cache.gallery("Button")     @button_bitmap =  Bitmap.new(@button_image.width, @button_image.height)     @cw = @button_image.width     @ch = @button_image.height / 2     src_rect = Rect.new(0, 0, @cw, @ch)     @button_bitmap .blt(0,0, @button_image, src_rect)                @button = Sprite.new     @button.bitmap = @button_bitmap     @button.y = 443     @button.z = 250     @button.opacity = 0     @button_fade_time = 0 end  #------------------------------------------------------------------------------ # ● Create Cursor #------------------------------------------------------------------------------       def create_cursor     @cx1 = 0     @cx2 = 0     @cursor_speed = 0     image = Cache.gallery("Cursor")     @bitmap = Bitmap.new(image.width, image.height)     cw = image.width / 2     ch = image.height     src_rect = Rect.new(cw, 0, cw, ch)     @bitmap.blt(0,0, image, src_rect)          @cursor1 = Sprite.new     @cursor1.bitmap = @bitmap      @cursor1.x = 0 + @cx1     @cursor1.y = 190     @cursor1.z = 200     @bitmap2 = Bitmap.new(image.width, image.height)     src_rect2 = Rect.new(0, 0, cw, ch)     @bitmap2.blt(0,0, image, src_rect2)               @cursor2 = Sprite.new     @cursor2.bitmap = @bitmap2      @cursor2.x = 608 + @cx2      @cursor2.y = 190     @cursor2.z = 200     image.dispose     if @max_pages == 1        @cursor1.visible = false        @cursor2.visible = false     end    end #------------------------------------------------------------------------------ # ● Execute Loop #------------------------------------------------------------------------------      def execute_loop     loop do          Graphics.update          Input.update          update          if SceneManager.scene != self              break          end     end end  #------------------------------------------------------------------------------ # ● Execute Dispose #------------------------------------------------------------------------------       def execute_dispose     return if @background == nil     Graphics.freeze     for i in 0...@max_pages         @wp[i].dispose     end         @info.dispose     if @picture.bitmap != nil        @picture.bitmap.dispose     end     @picture.dispose     @background.bitmap.dispose     @background.dispose     @background = nil     @background2.bitmap.dispose     @background2.dispose          @bitmap.dispose     @bitmap2.dispose     @cursor1.bitmap.dispose     @cursor1.dispose          @cursor2.bitmap.dispose     @cursor2.dispose     @button_bitmap.dispose     @button.bitmap.dispose     @button.dispose     @button_image.dispose     if @loading != nil        @loading.bitmap.dispose        @loading.dispose     end    end  #------------------------------------------------------------------------------ # ● Update #------------------------------------------------------------------------------       def update     @wp.each {|wid| wid.update}     @info.update     if @image_active          update_command_image     else           update_command     end        update_slide     update_image_effect     update_cursor_animation     refresh_info_window end     #------------------------------------------------------------------------------ # ● update_cursor_animation #------------------------------------------------------------------------------         def update_cursor_animation     @cursor_speed += 1     case @cursor_speed        when 1..20           @cx1 += 1           @cx2 -= 1        when 21..40           @cx1 -= 1           @cx2 += 1                 else          @cursor_speed = 0        @cx1 = 0         @cx2 = 0     end     @cursor1.x = 0 + @cx1      @cursor2.x = 608 + @cx2  end    #------------------------------------------------------------------------------ # ● Update Image Effect #------------------------------------------------------------------------------        def update_image_effect     return if @wp[@wp_page].x != 0     @button_fade_time -= 1 if @button_fade_time > 0     if @image_active         @picture.opacity += 15        if @button_fade_time != 0           @button.opacity += 5        else              if @button.y < 416                 @button.opacity -= 10              @button.y += 1           end           end          @wp[@wp_page].contents_opacity -= 15        @info.contents_opacity -= 15        @background.opacity -= 15        @cursor1.opacity -= 15        @cursor2.opacity -= 15     else          @picture.opacity -= 10        @button.opacity -= 15        @wp[@wp_page].contents_opacity += 15        @info.contents_opacity += 15        @background.opacity += 15        @cursor1.opacity += 15        @cursor2.opacity += 15             end   end #------------------------------------------------------------------------------ # ● Refresh Info Window #------------------------------------------------------------------------------        def refresh_info_window(starting = false)     return if @image_active      return if @wp_page_old == @wp_page and starting == false        @wp_page_old = @wp_page     page = @wp_page + 1     @picture_id = (9 * @wp_page) + @wp[@wp_page].index  + 1     p_pages = "Page - " + page.to_s + " / " + @max_pages.to_s     comp  = "          Completed " + (@picures_enabled.to_f / @max_pictures.to_f * 100).truncate.to_s + "%"     p_number = "          Pictures " + @picures_enabled.to_s + " / " + @max_pictures.to_s     @info.set_text("            " + p_pages + comp + p_number) end      #------------------------------------------------------------------------------ # ● Update Slide #------------------------------------------------------------------------------        def update_slide     @background2.ox += 1     if @loading != nil        @loading.opacity -= 5        if @loading.opacity <= 0           @loading.bitmap.dispose           @loading.dispose           @loading = nil         end       end        return if @wp[@wp_page].x == 0       slide_speed = 25     @picture.opacity = 0     @background.opacity = 255     if @slide_type == 1             if @wp[@wp_page].x < 0           @wp[@wp_page].x += slide_speed           if @wp[@wp_page].x >= 0              @wp[@wp_page].x = 0            end         end        if @wp[@page_old].x < 640           @wp[@page_old].x += slide_speed           if @wp[@page_old].x >= 640              @wp[@page_old].x = 640           end         end                else              if @wp[@wp_page].x > 0            @wp[@wp_page].x -= slide_speed            if @wp[@wp_page].x <= 0                 @wp[@wp_page].x = 0            end            end         if @wp[@page_old].x > -640            @wp[@page_old].x -= slide_speed            if @wp[@page_old].x <= -640               @wp[@page_old].x = -640            end         end                  end        if @slide_type == 0              @wp[@wp_page].x = 0 if @wp[@wp_page].x <= 0         else            @wp[@wp_page].x = 0 if @wp[@wp_page].x >= 0       end   end  #------------------------------------------------------------------------------ # ● Check_limite #------------------------------------------------------------------------------         def check_limit     if @wp_page < 0        @wp_page = @max_pages - 1     elsif @wp_page >= @max_pages           @wp_page = 0        end     check_active_window end    #------------------------------------------------------------------------------ # ● Update Command Image #------------------------------------------------------------------------------         def update_command_image     if Input.trigger?(Input:: or Input.trigger?(Input::C)        Sound.play_cursor        @image_active = false        @wp[@wp_page].active = true        return     end        if Input.trigger?(Input::R) or Input.trigger?(Input::L)        Sound.play_cursor        execute_zoom           end       @ex += 4 if Input.press?(Input::RIGHT)      @ex -= 4 if Input.press?(Input::LEFT)     @ey += 4 if Input.press?(Input::DOWN)     @ey -= 4 if Input.press?(Input::UP)        @ex = @ex_max + @ex_max_zoom if @ex > @ex_max + @ex_max_zoom     @ex = 0 if @ex < 0     @ey = @ey_max + @ey_max_zoom if @ey > @ey_max + @ey_max_zoom     @ey = 0 if @ey < 0             @picture.x = -@ex     @picture.y = -@ey end    #------------------------------------------------------------------------------ # ● Execute Zoom #------------------------------------------------------------------------------          def execute_zoom     if @picture.zoom_x == 1.0        @picture.zoom_x = 1.5        @picture.zoom_y = 1.5        refresh_button(1)        @ex_max_zoom = (@picture.bitmap.width / 2)         if @ex != @ex_max            @ex += @ex_max_zoom / 2                  else              if @ex_max != 0                 @ex += @ex_max_zoom           else                 @ex += @ex_max_zoom / 2           end          end          @ey_max_zoom = (@picture.bitmap.height / 2)         if @ey != @ey_max            @ey += @ey_max_zoom / 2                  else              if @ey_max != 0                 @ey += @ey_max_zoom           else                 @ey += @ey_max_zoom / 2           end           end        else         if @picture.bitmap.width > 640 or           @picture.bitmap.height > 480            refresh_button(1)        else           refresh_button(0)        end                   @ex -= @ex_max_zoom / 2         @ey -= @ey_max_zoom / 2                   @picture.zoom_x = 1.0        @picture.zoom_y = 1.0            @ex_max_zoom = 0        @ey_max_zoom = 0     end      end     #------------------------------------------------------------------------------ # ● check_avaliable_picture? #------------------------------------------------------------------------------         def check_avaliable_picture?     @picture_id = (9 * @wp_page) + @wp[@wp_page].index  + 1      return false if $game_system.gallery[@picture_id] == nil     return true end    #------------------------------------------------------------------------------ # ● create_bitmap #------------------------------------------------------------------------------         def create_bitmap     @picture.opacity = 0     @picture.bitmap.dispose     @picture.bitmap = Cache.gallery(@picture_id.to_s) rescue nil     @ex = 0     @ey = 0     @ex_max_zoom = 0     @ey_max_zoom = 0     @picture.zoom_x = 1.0     @picture.zoom_y = 1.0           if @picture.bitmap == nil        @picture.bitmap = Cache.gallery("")        refresh_button(0)        return      end       if @picture.bitmap.width > 640         @ex_max = @picture.bitmap.width - 640     else        @ex_max = 0      end     if @picture.bitmap.height > 480        @ey_max = @picture.bitmap.height - 480      else        @ey_max = 0     end        if @picture.bitmap.width > 544 or        @picture.bitmap.height > 416        refresh_button(1)     else        refresh_button(0)     end  end    #------------------------------------------------------------------------------ # ● Refresh Button  #------------------------------------------------------------------------------         def refresh_button(type = 0)     @button.bitmap.clear     if type == 0        src_rect = Rect.new(0, 0, @cw, @ch)     else        src_rect = Rect.new(0, @ch, @cw, @ch)      end       @button_bitmap .blt(0,0, @button_image, src_rect)       @button.y = 379     @button_fade_time = 120      @button.opacity = 0 unless @button.y == 379 end     #------------------------------------------------------------------------------ # ● Update Command #------------------------------------------------------------------------------        def update_command     return if @wp[@wp_page].x != 0     if Input.trigger?(Input::        Sound.play_cancel        SceneManager.return        return     end     if Input.trigger?(Input::C)         if check_avaliable_picture?           Sound.play_ok           @image_active = true           @wp[@wp_page].active = false           create_bitmap        else           Sound.play_buzzer        end        return      end       if Input.trigger?(Input::L) and @max_pages != 1         Sound.play_cursor        @page_old = @wp_page        @wp_page -= 1        @slide_type = 1        check_limit        return      elsif Input.trigger?(Input::R) and @max_pages != 1           Sound.play_cursor        @page_old = @wp_page        @wp_page += 1        @slide_type = 0        check_limit        return     end   end  end  if MOG_PICTURE_GALLERY::PICTURE_GALLERY_MENU_COMMAND#==============================================================================# ■ Window Menu Command#==============================================================================class Window_MenuCommand < Window_Command     #------------------------------------------------------------------------------ # ● Add Main Commands #------------------------------------------------------------------------------       alias mog_picture_gallery_add_main_commands add_main_commands  def add_main_commands      mog_picture_gallery_add_main_commands      add_command(MOG_PICTURE_GALLERY::PICTURE_GALLERY_COMMAND_NAME, :picture, main_commands_enabled)  endend   #==============================================================================# ■ Scene Menu#==============================================================================class Scene_Menu < Scene_MenuBase   #------------------------------------------------------------------------------ # ● Create Command Windows #------------------------------------------------------------------------------          alias mog_picture_gallery_create_command_window create_command_window   def create_command_window       mog_picture_gallery_create_command_window       @command_window.set_handler(:picture,     method(:Picture_Gallery))   end    #------------------------------------------------------------------------------ # ● Picture Gallery #------------------------------------------------------------------------------           def Picture_Gallery       SceneManager.call(Scene_Picture_Gallery)   end end    end$mog_rgss3_picture_gallery = true
 
Last edited by a moderator:

lemongreen

Veteran
Veteran
Joined
Jul 16, 2013
Messages
230
Reaction score
260
First Language
English
Primarily Uses
You should download the newest version (2.0) it fixes the problems in the script naturally so you don't have to mess with it yourself anymore. 

I should probably clarify that it fixes the problems caused by changing the resolution. 
 
Last edited by a moderator:

Clord

Nya~
Veteran
Joined
Aug 5, 2012
Messages
2,358
Reaction score
385
Primarily Uses
You should download the newest version (2.0) it fixes the problems in the script naturally so you don't have to mess with it yourself anymore. 

I should probably clarify that it fixes the problems caused by changing the resolution.
Well, I ended up fixing it myself before reading your post.

Thanks anyway. :)

Code:
 #------------------------------------------------------------------------------ # ● item_rect #------------------------------------------------------------------------------       def item_rect(index)      rect = Rect.new(0, 0, 0, 0)      rect.width = 150      rect.height = 90      rect.x = @index % col_max * (rect.width + 32) + 48      rect.y = @index / col_max * 90      return rect  end
 
Last edited by a moderator:

Users Who Are Viewing This Thread (Users: 0, Guests: 1)

Latest Threads

Latest Posts

Latest Profile Posts

People3_5 and People3_8 added!

so hopefully tomorrow i get to go home from the hospital i've been here for 5 days already and it's driving me mad. I miss my family like crazy but at least I get to use my own toiletries and my own clothes. My mom is coming to visit soon i can't wait to see her cause i miss her the most. :kaojoy:
Couple hours of work. Might use in my game as a secret find or something. Not sure. Fancy though no? :D
Holy stink, where have I been? Well, I started my temporary job this week. So less time to spend on game design... :(
Cartoonier cloud cover that better fits the art style, as well as (slightly) improved blending/fading... fading clouds when there are larger patterns is still somewhat abrupt for some reason.

Forum statistics

Threads
105,868
Messages
1,017,085
Members
137,583
Latest member
write2dgray
Top