我的gallery脚本 #------------------------------------------------------------------------------ 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 = 544 else @wp[@wp_page].x = -544 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 = 514 + @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 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 @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 = 514 + @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 >= 544 @wp[@page_old].x = 544 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 > -544 @wp[@page_old].x -= slide_speed if @wp[@page_old].x <= -544 @wp[@page_old].x = -544 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::B) 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 if Input.press?(Input::RIGHT) @ex += 4 elsif Input.press?(Input::LEFT) @ex -= 4 elsif Input.press?(Input::DOWN) @ey += 4 elsif Input.press?(Input::UP) @ey -= 4 end @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 > 544 @ex_max = @picture.bitmap.width - 544 else @ex_max = 0 end if @picture.bitmap.height > 416 @ey_max = @picture.bitmap.height - 416 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::B) 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) end end #============================================================================== # ■ 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 |
站长信箱:[email protected]|手机版|小黑屋|无图版|Project1游戏制作
GMT+8, 2025-7-18 12:57
Powered by Discuz! X3.1
© 2001-2013 Comsenz Inc.