设为首页收藏本站|繁體中文

Project1

 找回密码
 注册会员
搜索
查看: 2963|回复: 4
打印 上一主题 下一主题

[转载] 【注意!非原创】重新发布画廊模式VA脚本

[复制链接]

Lv1.梦旅人

梦石
0
星屑
49
在线时间
152 小时
注册时间
2012-1-12
帖子
456
跳转到指定楼层
1
发表于 2012-4-19 00:31:57 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式

加入我们,或者,欢迎回来。

您需要 登录 才可以下载或查看,没有帐号?注册会员

x
本帖最后由 无双sxa 于 2012-4-19 18:24 编辑

我不是原创的,作者还没有找到,不加分也可以,我只是义务搬运劳动而已,助人为乐嘛。
  1. #==============================================================================
  2. # ■ VXAce-RGSS3-18 ギャラリー        by Claimh
  3. #------------------------------------------------------------------------------
  4. # 写真を表示するギャラリーを作ります
  5. # なお、ギャラリーの管理情報は全セーブデータで共通となります。
  6. #------------------------------------------------------------------------------
  7. # ●ギャラリー全体の表示許可
  8. #   DataManager.garally.enable = true
  9. # ●写真の表示許可
  10. #   DataManager.garally[id] = true
  11. # ●写真の追加(LIST以外のスナップショットなどを追加)
  12. #   DataManager.garally.push(id, GFile.new(filename, text))
  13. # ●イベント等から呼び出す
  14. #   SceneManager.call(Scene_ExGarally)
  15. #==============================================================================

  16. class GFile
  17.   attr_reader :name
  18.   attr_reader :text
  19.   def initialize(filename, text="")
  20.     @name = filename; @text = text
  21.   end
  22. end

  23. module ExGarally
  24.   # 写真の設定
  25.   LIST = {
  26. #  ID => GFile.new("ファイル名(Graphics/Pictures)", 表示文字)
  27.    1  => GFile.new("BlueSky", "青い空\n改行"),
  28.    2  => GFile.new("CloudySky1", "曇った空"),
  29.    3  => GFile.new("CloudySky2"),
  30.    4  => GFile.new("DarkSpace1"),
  31.    5  => GFile.new("DarkSpace2"),
  32.    6  => GFile.new("Mountains1"),
  33.    7  => GFile.new("Mountains2"),
  34.    8  => GFile.new("Mountains3"),
  35.    9  => GFile.new("Mountains4"),
  36.    10 => GFile.new("Mountains5"),
  37.    12 => GFile.new("Ocean2"),
  38.    11 => GFile.new("Ocean1"),
  39.    13 => GFile.new("SeaofClouds"),
  40.    14 => GFile.new("StarlitSky"),
  41. #   15 => GFile.new("Sunset"),
  42.   }
  43.   
  44.   # ヘルプウィンドウの行数(1~3)
  45.   HELP_LINES = 2
  46. end


  47. #==============================================================================
  48. # ■ ExGarally
  49. #==============================================================================
  50. module ExGarally
  51.   #--------------------------------------------------------------------------
  52.   # ● ギャラリーの表示有効?
  53.   #--------------------------------------------------------------------------
  54.   def self.enable?
  55.     DataManager.garally.enable
  56.   end
  57.   #--------------------------------------------------------------------------
  58.   # ● ファイル名
  59.   #--------------------------------------------------------------------------
  60.   def self.filename
  61.     "exgallary.rvdata2"
  62.   end
  63.   #--------------------------------------------------------------------------
  64.   # ● セーブの実行
  65.   #--------------------------------------------------------------------------
  66.   def self.save_exdata(obj)
  67.     save_data(obj, filename)
  68.   end
  69.   #--------------------------------------------------------------------------
  70.   # ● ロードの実行
  71.   #--------------------------------------------------------------------------
  72.   def self.load_exdata
  73.     exist? ? load_data(filename) : Game_ExGarallyList.new
  74.   end
  75.   #--------------------------------------------------------------------------
  76.   # ● ファイル削除
  77.   #--------------------------------------------------------------------------
  78.   def self.delete_exdata
  79.     return unless exist?
  80.     File.delete(filename) rescue nil
  81.   end
  82.   #--------------------------------------------------------------------------
  83.   # ● ファイルの有無チェック
  84.   #--------------------------------------------------------------------------
  85.   def self.exist?
  86.     FileTest.exist?(filename)
  87.   end
  88. end


  89. #==============================================================================
  90. # ■ DataManager
  91. #==============================================================================
  92. class << DataManager
  93.   #--------------------------------------------------------------------------
  94.   # ● 各種ゲームオブジェクトの作成
  95.   #--------------------------------------------------------------------------
  96.   alias create_game_objects_exgrly create_game_objects
  97.   def create_game_objects
  98.     create_game_objects_exgrly
  99.     load_garally
  100.   end
  101.   #--------------------------------------------------------------------------
  102.   # ● セーブの実行
  103.   #--------------------------------------------------------------------------
  104.   alias save_game_exgarally save_game
  105.   def save_game(index)
  106.     r = save_game_exgarally(index)
  107.     save_garally if r
  108.     r
  109.   end
  110.   #--------------------------------------------------------------------------
  111.   # ● ロードの実行
  112.   #--------------------------------------------------------------------------
  113.   alias load_game_exgrly load_game
  114.   def load_game(index)
  115.     r = load_game_exgrly(index)
  116.     load_garally if r
  117.     r
  118.   end
  119.   #--------------------------------------------------------------------------
  120.   # ● ギャラリー情報load
  121.   #--------------------------------------------------------------------------
  122.   def load_garally
  123.     @exgarally = ExGarally.load_exdata
  124.   end
  125.   #--------------------------------------------------------------------------
  126.   # ● ギャラリー情報load
  127.   #--------------------------------------------------------------------------
  128.   def save_garally
  129.     ExGarally.save_exdata(@exgarally)
  130.   end
  131.   #--------------------------------------------------------------------------
  132.   # ● ギャラリー情報削除
  133.   #--------------------------------------------------------------------------
  134.   def delete_garally
  135.     ExGarally.delete_exdata
  136.     load_garally
  137.   end
  138.   #--------------------------------------------------------------------------
  139.   # ● ギャラリー情報参照
  140.   #--------------------------------------------------------------------------
  141.   def garally
  142.     @exgarally
  143.   end
  144. end


  145. #==============================================================================
  146. # ■ Game_ExGarally
  147. #==============================================================================
  148. class Game_ExGarally
  149.   attr_accessor :name   # ファイル名
  150.   attr_accessor :text   # 表示文字
  151.   attr_accessor :enable # 表示可否
  152.   #--------------------------------------------------------------------------
  153.   # ● オブジェクト初期化
  154.   #--------------------------------------------------------------------------
  155.   def initialize(file, enable=false)
  156.     @name   = file.name
  157.     @text   = file.text
  158.     @enable = enable
  159.   end
  160. end

  161. #==============================================================================
  162. # ■ Game_ExGarallyList  : DataManager.garallyで参照可能
  163. #==============================================================================
  164. class Game_ExGarallyList
  165.   LIST = ExGarally::LIST
  166.   attr_accessor :enable
  167.   attr_reader   :size
  168.   #--------------------------------------------------------------------------
  169.   # ● オブジェクト初期化
  170.   #--------------------------------------------------------------------------
  171.   def initialize
  172.     clear
  173.   end
  174.   #--------------------------------------------------------------------------
  175.   # ● クリア
  176.   #--------------------------------------------------------------------------
  177.   def clear
  178.     @size = LIST.size
  179.     @data = {}
  180.     @enable = false
  181.   end
  182.   #--------------------------------------------------------------------------
  183.   # ● 参照
  184.   #--------------------------------------------------------------------------
  185.   def [](id)
  186.     return nil if LIST[id].nil? and @data[id].nil?
  187.     return Game_ExGarally.new(LIST[id]) if @data[id].nil?
  188.     @data[id]
  189.   end
  190.   #--------------------------------------------------------------------------
  191.   # ● 表示許可/禁止
  192.   #--------------------------------------------------------------------------
  193.   def []=(id, val)
  194.     return nil if LIST[id].nil? and @data[id].nil?
  195.     if val
  196.       @data[id] = Game_ExGarally.new(LIST[id]) if @data[id].nil?
  197.       @data[id].enable = true
  198.     elsif !@data[id].nil?
  199.       @data.delete(id)
  200.     end
  201.   end
  202.   #--------------------------------------------------------------------------
  203.   # ● リスト
  204.   #--------------------------------------------------------------------------
  205.   def list
  206.     (@data.keys+LIST.keys).uniq.sort.collect {|id| self.[](id) }
  207.   end
  208.   #--------------------------------------------------------------------------
  209.   # ● 追加ギャラリー
  210.   #--------------------------------------------------------------------------
  211.   def push(id, name, enable=true)
  212.     @data[id] = Game_ExGarally.new(name, enable)
  213.     @size += 1 if LIST[id].nil?
  214.   end
  215. end


  216. #==============================================================================
  217. # ■ Sprite_ExGrlyPicture
  218. #==============================================================================
  219. class Sprite_ExGrlyPicture < Sprite
  220.   #--------------------------------------------------------------------------
  221.   # ● オブジェクト初期化
  222.   #--------------------------------------------------------------------------
  223.   def initialize(rect=Rect.new(0,0,Graphics.width,Graphics.height))
  224.     super(Viewport.new(rect))
  225.     viewport.z = 100
  226.     create_bitmap
  227.   end
  228.   #--------------------------------------------------------------------------
  229.   # ● オブジェクト解放
  230.   #--------------------------------------------------------------------------
  231.   def dispose
  232.     dispose_bitmap
  233.     super
  234.   end
  235.   #--------------------------------------------------------------------------
  236.   # ● ビットマップ生成
  237.   #--------------------------------------------------------------------------
  238.   def create_bitmap
  239.     self.bitmap = Bitmap.new(vw, vh)
  240.   end
  241.   #--------------------------------------------------------------------------
  242.   # ● ビットマップ下方
  243.   #--------------------------------------------------------------------------
  244.   def dispose_bitmap
  245.     self.bitmap.dispose
  246.   end
  247.   #--------------------------------------------------------------------------
  248.   # ● ピクチャ設定
  249.   #--------------------------------------------------------------------------
  250.   def picture(filename, enabled=true)
  251.     dispose_bitmap
  252.     if enabled
  253.       self.bitmap = Cache.picture(filename)
  254.     else
  255.       create_bitmap
  256.       self.bitmap.fill_rect(0,0,vw,vh,Color.new(0,0,0,160))
  257. #      self.bitmap.draw_text(0,0, vw, vh, filename, 1)
  258.     end
  259.     fit_screen
  260.     resize
  261.   end
  262.   #--------------------------------------------------------------------------
  263.   # ● ズーム倍率再設定
  264.   #--------------------------------------------------------------------------
  265.   def resize(r=Rect.new(0,0,vw,vh))
  266.     self.ox = bitmap.width  / 2
  267.     self.oy = bitmap.height / 2
  268.     self.x = r.width  / 2 + r.x
  269.     self.y = r.height / 2 + r.y
  270.   end
  271.   #--------------------------------------------------------------------------
  272.   # ● 画面にフィットさせる
  273.   #--------------------------------------------------------------------------
  274.   def bwz;  (bitmap.width * zoom_x).truncate; end # ズーム後のbitmap幅
  275.   def bhz;  (bitmap.height* zoom_y).truncate; end # ズーム後のbitmap高さ
  276.   def vw;   viewport.rect.width;   end
  277.   def vh;   viewport.rect.height;  end
  278.   def fit_screen(w=vw, h=vh)
  279.     x_zoom = w * 1.0 / bitmap.width
  280.     y_zoom = h * 1.0 / bitmap.height
  281.     zoom = x_zoom < y_zoom ? x_zoom : y_zoom
  282.     self.zoom_x = self.zoom_y = zoom
  283.   end
  284. end


  285. #==============================================================================
  286. # ■ Sprite_ExGrlyPicture
  287. #==============================================================================
  288. class Sprite_ExGrlyPictFull < Sprite_ExGrlyPicture
  289.   #--------------------------------------------------------------------------
  290.   # ● オブジェクト初期化
  291.   #--------------------------------------------------------------------------
  292.   def initialize
  293.     super
  294.     hide.viewport.z = 200
  295.   end
  296.   #--------------------------------------------------------------------------
  297.   # ● ウィンドウの表示
  298.   #--------------------------------------------------------------------------
  299.   def show
  300.     self.visible = true
  301.     self
  302.   end
  303.   #--------------------------------------------------------------------------
  304.   # ● ウィンドウの非表示
  305.   #--------------------------------------------------------------------------
  306.   def hide
  307.     self.visible = false
  308.     self
  309.   end
  310.   #--------------------------------------------------------------------------
  311.   # ● ピクチャ設定
  312.   #--------------------------------------------------------------------------
  313.   def picture(filename, enabled=true)
  314.     dispose_bitmap
  315.     b = Cache.picture(filename)
  316.     r = Rect.new(0, 0, b.width, b.height)
  317.     self.bitmap = Bitmap.new(r.width, r.height)
  318.     self.bitmap.stretch_blt(r, b, r)
  319.     fit_screen
  320.     resize
  321.   end
  322. end

  323. #==============================================================================
  324. # ■ Grly_Thumbnail
  325. #==============================================================================
  326. class Grly_Thumbnail
  327.   attr_reader :item
  328.   attr_reader :rect
  329.   #--------------------------------------------------------------------------
  330.   # ● オブジェクト初期化
  331.   #--------------------------------------------------------------------------
  332.   def initialize(item, rect)
  333.     @item = item; @rect = rect
  334.   end
  335. end

  336. #==============================================================================
  337. # ■ SpritesetExGrlyPictures
  338. #==============================================================================
  339. class SpritesetExGrlyPictures
  340.   #--------------------------------------------------------------------------
  341.   # ● オブジェクト初期化
  342.   #--------------------------------------------------------------------------
  343.   def initialize
  344.     @sprites = []
  345.   end
  346.   #--------------------------------------------------------------------------
  347.   # ● オブジェクト解放
  348.   #--------------------------------------------------------------------------
  349.   def dispose
  350.     dispose_sprites
  351.   end
  352.   #--------------------------------------------------------------------------
  353.   # ● ピクチャスプライト生成
  354.   #--------------------------------------------------------------------------
  355.   def create_sprites(thumnails)
  356.     thumnails.each do |thm|
  357.       s = Sprite_ExGrlyPicture.new(thm.rect)
  358.       s.picture(thm.item.name, thm.item.enable)
  359.       @sprites.push(s)
  360.     end
  361.   end
  362.   #--------------------------------------------------------------------------
  363.   # ● ピクチャスプライト解放
  364.   #--------------------------------------------------------------------------
  365.   def dispose_sprites
  366.     @sprites.each { |s| s.dispose }
  367.   end
  368.   #--------------------------------------------------------------------------
  369.   # ● ピクチャスプライト更新
  370.   #--------------------------------------------------------------------------
  371.   def update_sprites(thumnails)
  372.     dispose_sprites
  373.     create_sprites(thumnails)
  374.   end
  375.   #--------------------------------------------------------------------------
  376.   # ● サムネイル矩形
  377.   #--------------------------------------------------------------------------
  378.   def thm_rect(i)
  379.     @sprites[i].nil? ? nil : @sprites[i].thm
  380.   end
  381. end


  382. #==============================================================================
  383. # ■ Window_GrlyPicture
  384. #==============================================================================
  385. class Window_GrlyPicture < Window_Selectable
  386.   attr_accessor :thum_sprites
  387.   #--------------------------------------------------------------------------
  388.   # ● オブジェクト初期化
  389.   #--------------------------------------------------------------------------
  390.   def initialize
  391.     @thum_sprites = nil
  392.     make_list
  393.     super(0, help_height, Graphics.width, Graphics.height-help_height)
  394.     activate
  395.   end
  396.   #--------------------------------------------------------------------------
  397.   # ● ヘルプウィンドウの高さ
  398.   #--------------------------------------------------------------------------
  399.   def help_height
  400.     fitting_height(ExGarally::HELP_LINES)
  401.   end
  402.   #--------------------------------------------------------------------------
  403.   # ● 桁数の取得
  404.   #--------------------------------------------------------------------------
  405.   def col_max
  406.     return 3
  407.   end
  408.   #--------------------------------------------------------------------------
  409.   # ● 横に項目が並ぶときの空白の幅を取得
  410.   #--------------------------------------------------------------------------
  411.   def spacing
  412.     return 16
  413.   end
  414.   #--------------------------------------------------------------------------
  415.   # ● 項目数の取得
  416.   #--------------------------------------------------------------------------
  417.   def item_max
  418.     DataManager.garally.size
  419.   end
  420.   #--------------------------------------------------------------------------
  421.   # ● 項目の高さを取得
  422.   #--------------------------------------------------------------------------
  423.   def item_height
  424.     (Graphics.height - help_height - standard_padding * 2) / 2
  425.   end
  426.   #--------------------------------------------------------------------------
  427.   # ● 項目を描画する矩形の取得
  428.   #--------------------------------------------------------------------------
  429.   def item_rect(index)
  430.     rect = super(index)
  431.     thm  = calc_thm_rect
  432.     rect.x += (rect.width  - (thm.width  + 8)) / 2
  433.     rect.y += (rect.height - (thm.height + 8)) / 2
  434.     rect.width  = thm.width  + 8
  435.     rect.height = thm.height + 8
  436.     rect
  437.   end
  438.   #--------------------------------------------------------------------------
  439.   # ● サムネイル矩形計算
  440.   #--------------------------------------------------------------------------
  441.   def calc_thm_rect
  442.     r = Rect.new
  443.     r.width  = item_width  - 8
  444.     r.height = item_height - 8
  445.     if (Graphics.width  / r.width) > (Graphics.height / r.height)
  446.       r.height = r.width  * Graphics.height / Graphics.width
  447.     else
  448.       r.width  = r.height * Graphics.width  / Graphics.height
  449.     end
  450.     r
  451.   end
  452.   #--------------------------------------------------------------------------
  453.   # ● サムネイルの表示位置を取得
  454.   #--------------------------------------------------------------------------
  455.   def thum_rect(index)
  456.     r = item_rect_for_text(index)
  457.     r.x += self.x + standard_padding
  458.     r.y += self.y + standard_padding
  459.     r
  460.   end
  461.   #--------------------------------------------------------------------------
  462.   # ● 先頭行のindex
  463.   #--------------------------------------------------------------------------
  464.   def top_i
  465.     (top_row * col_max)
  466.   end
  467.   #--------------------------------------------------------------------------
  468.   # ● 先頭行からの@index
  469.   #--------------------------------------------------------------------------
  470.   def top_cur_i
  471.     (@index - (top_row * col_max))
  472.   end
  473.   #--------------------------------------------------------------------------
  474.   # ● サムネイルの表示位置を取得
  475.   #--------------------------------------------------------------------------
  476.   def thumnails
  477.     n = [page_item_max, item_max - top_i].min
  478.     idxs = []
  479.     n.times { |i| idxs.push(i) }
  480.     idxs.collect { |i| Grly_Thumbnail.new(@list[i+top_i], thum_rect(i)) }
  481.   end
  482.   #--------------------------------------------------------------------------
  483.   # ● リスト生成
  484.   #--------------------------------------------------------------------------
  485.   def make_list
  486.     @list = DataManager.garally.list
  487.   end
  488.   #--------------------------------------------------------------------------
  489.   # ● 選択中アイテム
  490.   #--------------------------------------------------------------------------
  491.   def item
  492.     @list[@index]
  493.   end
  494.   #--------------------------------------------------------------------------
  495.   # ● 選択項目の有効状態を取得
  496.   #--------------------------------------------------------------------------
  497.   def current_item_enabled?
  498.     !item.nil? and item.enable
  499.   end
  500.   #--------------------------------------------------------------------------
  501.   # ● ヘルプテキスト更新
  502.   #--------------------------------------------------------------------------
  503.   def update_help
  504.     text = ((!item.nil? and item.enable) ? item.text : "")
  505.     @help_window.set_text(text)
  506.   end
  507.   #--------------------------------------------------------------------------
  508.   # ● カーソルの更新
  509.   #--------------------------------------------------------------------------
  510.   def update_cursor
  511.     super
  512.     @thum_sprites.update_sprites(thumnails) unless @thum_sprites.nil?
  513.   end
  514. end



  515. #==============================================================================
  516. # ■ Scene_ExGarally
  517. #==============================================================================
  518. class Scene_ExGarally < Scene_Base
  519.   #--------------------------------------------------------------------------
  520.   # ● 開始処理
  521.   #--------------------------------------------------------------------------
  522.   def start
  523.     super
  524.     create_background
  525.     @help_window = Window_Help.new(ExGarally::HELP_LINES)
  526.     @thumset = SpritesetExGrlyPictures.new
  527.     @full_pict = Sprite_ExGrlyPictFull.new
  528.     create_list_window
  529.   end
  530.   #--------------------------------------------------------------------------
  531.   # ● 終了処理
  532.   #--------------------------------------------------------------------------
  533.   def terminate
  534.     super
  535.     dispose_background
  536.     @thumset.dispose
  537.     @full_pict.dispose
  538.   end
  539.   #--------------------------------------------------------------------------
  540.   # ● 背景の作成
  541.   #--------------------------------------------------------------------------
  542.   def create_background
  543.     @background_sprite = Sprite.new
  544.     @background_sprite.bitmap = SceneManager.background_bitmap
  545.     @background_sprite.color.set(16, 16, 16, 128)
  546.   end
  547.   #--------------------------------------------------------------------------
  548.   # ● 背景の解放
  549.   #--------------------------------------------------------------------------
  550.   def dispose_background
  551.     @background_sprite.dispose
  552.   end
  553.   #--------------------------------------------------------------------------
  554.   # ● ピクチャリストウィンドウ生成
  555.   #--------------------------------------------------------------------------
  556.   def create_list_window
  557.     @list_window = Window_GrlyPicture.new
  558.     @list_window.thum_sprites = @thumset
  559.     @list_window.help_window = @help_window
  560.     set_full_handler
  561.     @list_window.select(0)
  562.   end
  563.   #--------------------------------------------------------------------------
  564.   # ● フルスクリーン化用のハンドラ登録
  565.   #--------------------------------------------------------------------------
  566.   def set_full_handler
  567.     @list_window.set_handler(:ok,     method(:cmd_full))
  568.     @list_window.set_handler(:cancel, method(:return_scene))
  569.   end
  570.   #--------------------------------------------------------------------------
  571.   # ● サムネイルリスト用のハンドラ登録
  572.   #--------------------------------------------------------------------------
  573.   def set_thum_handler
  574.     @list_window.set_handler(:ok,     method(:cmd_thum))
  575.     @list_window.set_handler(:cancel, method(:cmd_thum))
  576.   end
  577.   #--------------------------------------------------------------------------
  578.   # ● フルスクリーン化
  579.   #--------------------------------------------------------------------------
  580.   def cmd_full
  581.     Graphics.freeze
  582.     @full_pict.show.picture(@list_window.item.name)
  583.     perform_transition
  584.     set_thum_handler
  585.     @list_window.activate.cursor_fix = true
  586.   end
  587.   #--------------------------------------------------------------------------
  588.   # ● サムネイル化
  589.   #--------------------------------------------------------------------------
  590.   def cmd_thum
  591.     Graphics.freeze
  592.     @full_pict.hide
  593.     perform_transition
  594.     set_full_handler
  595.     @list_window.activate.cursor_fix = false
  596.   end
  597. end





  598. module Title
  599.   # 拡張コマンドへ追加
  600.   EXCMD[3] = ["画廊", Scene_ExGarally, :garally]

  601.   # コマンド画像ファイル(Graphics/System)
  602.   # CMD_GRPHIC[コマンド番号] [画像1, 画像2]
  603.   CMD_GRPHIC[3] = ["garally",  "garally_s"]
  604. end

  605. #==============================================================================
  606. # ■ Scene_ExGarally
  607. #==============================================================================
  608. class Scene_ExGarally < Scene_Base
  609.   #--------------------------------------------------------------------------
  610.   # ● 呼び出し元のシーンへ戻る
  611.   #--------------------------------------------------------------------------
  612.   def return_scene
  613.     super
  614.     return unless SceneManager.scene_is?(Scene_Title)
  615.     SceneManager.scene.prepare(Title::Scene::S_TITLE, false,
  616.                                Title::CMD_BOX.index(3))
  617.   end
  618. end


  619. #==============================================================================
  620. # ■ Scene_Title
  621. #==============================================================================
  622. class Scene_Title < Scene_Base
  623.   #--------------------------------------------------------------------------
  624.   # ● メイン
  625.   #--------------------------------------------------------------------------
  626.   alias main_reload main
  627.   def main
  628.     DataManager.load_garally # ギャラリーのリロード
  629.     main_reload
  630.   end
  631. end
复制代码
  1. #==============================================================================
  2. # ■ VXAce-RGSS3-18 ギャラリー in Menu        by Claimh
  3. #------------------------------------------------------------------------------
  4. # メニューコマンドに拡張コマンド[ギャラリー]を追加します。
  5. #==============================================================================

  6. #==============================================================================
  7. # ■ Window_MenuCommand
  8. #==============================================================================
  9. class Window_MenuCommand < Window_Command
  10.   #--------------------------------------------------------------------------
  11.   # ● 独自コマンドの追加用
  12.   #--------------------------------------------------------------------------
  13.   alias add_original_commands_exgarally add_original_commands
  14.   def add_original_commands
  15.     add_original_commands_exgarally
  16.     add_command("画廊", :garally, ExGarally.enable?) if ExGarally.enable?
  17.   end
  18. end

  19. #==============================================================================
  20. # ■ Scene_Menu
  21. #==============================================================================
  22. class Scene_Menu < Scene_MenuBase
  23.   #--------------------------------------------------------------------------
  24.   # ● コマンドウィンドウの作成
  25.   #--------------------------------------------------------------------------
  26.   alias create_command_window_dictionary create_command_window
  27.   def create_command_window
  28.     create_command_window_dictionary
  29.     @command_window.set_handler(:garally, method(:command_garally))
  30.   end
  31.   #--------------------------------------------------------------------------
  32.   # ● コマンド[ギャラリー]
  33.   #--------------------------------------------------------------------------
  34.   def command_garally
  35.     SceneManager.call(Scene_ExGarally)
  36.   end
  37. end
复制代码
有画廊肯定有保存图片
  1. # coding: utf-8
  2. #===============================================================================
  3. # ■ 遅延型スクリーンショット撮影さん for RGSS3
  4. #-------------------------------------------------------------------------------
  5. # 2012/01/07 Ru/むっくRu
  6. #-------------------------------------------------------------------------------
  7. #  PrintScreenを押すと指定フォルダに
  8. #  ゲーム画面のスクリーンショットを保存する機能を追加します
  9. #  (処理落ち対策として,押してから数秒後にファイルが生成されます)
  10. #-------------------------------------------------------------------------------
  11. # 【問題点など】
  12. #  保存の際にゲームのフレームレートが少し落ちます(処理落ち)
  13. #-------------------------------------------------------------------------------
  14. # 【更新履歴】
  15. # 2012/01/07 戦闘中にうまく撮影できないのを修正?
  16. # 2011/12/27 ぶっぱ
  17. #-------------------------------------------------------------------------------
  18. # 【参考:PNG画像生成処理】
  19. #  http://d.hatena.ne.jp/ku-ma-me/20091003/p1
  20. #-------------------------------------------------------------------------------

  21. #===============================================================================
  22. # ● 設定項目
  23. #==============================================================================
  24. module HZM_VXA
  25.   module ScreenShot
  26.     # 保存するフォルダ名(末尾に/は付けない)
  27.     DIRNAME = 'screenshot'
  28.     # 保存するファイル名.拡張子(.png)は不要
  29.     #  %Y …… 西暦
  30.     #  %m …… 月(01-12)
  31.     #  %d …… 日(01-31)
  32.     #  %H …… 時(00-23)
  33.     #  %M …… 分(00-59)
  34.     #  %S …… 秒(00-59)
  35.     FILENAME = "%Y%m%d_%H%M%S"
  36.    
  37.     # スクリーンショットに著作表示を入れる
  38.     #   true  …… 入れる
  39.     #   false …… 入れない
  40.     USE_COPYRIGHT = false
  41.     # 著作表示の文字
  42.     COPYRIGHT_TEXT = '(C) 鳥小屋.txt'
  43.     # 著作表示の色
  44.     COPYRIGHT_COLOR = Color.new(255, 255, 255)
  45.     # 著作表示の大きさ
  46.     COPYRIGHT_SIZE  = 16
  47.     # 著作表示の位置(0:左寄せ,1:中央寄せ,2:右寄せ)
  48.     COPYRIGHT_ALIGN = 2
  49.    
  50.     # 1フレームに処理する回数
  51.     # ※この値を増やすとファイルが生成されるまでの時間が短くなりますが,
  52.     #   一度にかかる負荷量も増えるため,処理落ちが激しくなります
  53.     RUN_SPEED = 3
  54.   end
  55. end

  56. #===============================================================================
  57. # ↑   ここまで設定   ↑
  58. # ↓ 以下、スクリプト部 ↓
  59. #===============================================================================

  60. module HZM_VXA
  61.   module ScreenShot
  62.     @pressed = false
  63.     @list = []
  64.     VK_SNAPSHOT = 0x2c
  65.     GetKeyState = Win32API.new('user32', 'GetKeyState', %w(l), 'i')
  66.     #---------------------------------------------------------------------------
  67.     # ● 更新
  68.     #---------------------------------------------------------------------------
  69.     def self.update
  70.       add  if press?
  71.       RUN_SPEED.times { develop }
  72.     end
  73.     #---------------------------------------------------------------------------
  74.     # ● PrintScreen監視
  75.     #---------------------------------------------------------------------------
  76.     def self.press?
  77.       if @pressed
  78.         @pressed = (GetKeyState.call(VK_SNAPSHOT) < 0)
  79.         false
  80.       else
  81.         @pressed = (GetKeyState.call(VK_SNAPSHOT) < 0)
  82.       end
  83.     end
  84.     #---------------------------------------------------------------------------
  85.     # ● 今の画面を現像待ちに追加
  86.     #---------------------------------------------------------------------------
  87.     def self.add
  88.       bitmap = Graphics.snap_to_bitmap
  89.       if USE_COPYRIGHT
  90.         bitmap.font.size  = COPYRIGHT_SIZE
  91.         bitmap.font.color = COPYRIGHT_COLOR
  92.         bitmap.draw_text(0, bitmap.height - COPYRIGHT_SIZE, bitmap.width, COPYRIGHT_SIZE, COPYRIGHT_TEXT, COPYRIGHT_ALIGN)
  93.       end
  94.       filename = "#{Time.now.getlocal.strftime(FILENAME)}"
  95.       @list.push({
  96.         :bitmap => bitmap,
  97.         :filename => filename
  98.       })
  99.     end
  100.     #---------------------------------------------------------------------------
  101.     # ● 現像処理
  102.     #---------------------------------------------------------------------------
  103.     def self.develop
  104.       return if @list.empty?
  105.       data = @list.first
  106.       if data[:line] == nil  # 未処理
  107.         data[:line] = 0
  108.         data[:img] = []
  109.       elsif data[:line] < data[:bitmap].height # 解析中
  110.         data[:img].push 0
  111.         for i in 0...data[:bitmap].width
  112.           c = data[:bitmap].get_pixel(i, data[:line])
  113.           data[:img].push(c.red, c.green, c.blue)
  114.         end
  115.         data[:line] += 1
  116.       else  # 保存処理
  117.         Dir.mkdir(DIRNAME) unless File.exist?(DIRNAME)
  118.         cnt = Dir.glob("#{DIRNAME}/#{data[:filename]}*.png").size
  119.         footer = cnt > 0 ? "_#{cnt}" : ""
  120.         File.open("#{DIRNAME}/#{data[:filename]}#{footer}.png", 'wb') do |file|
  121.           file.write "\x89PNG\r\n\x1a\n"
  122.           file.write createChunk('IHDR', [data[:bitmap].width, data[:bitmap].height, 8, 2, 0, 0, 0].pack('N2C5'))
  123.           file.write createChunk('IDAT', Zlib::Deflate.deflate(data[:img].pack('C*')))
  124.           file.write createChunk('IEND', '')
  125.         end
  126.         data[:bitmap].dispose
  127.         @list.shift
  128.       end
  129.     end
  130.     #---------------------------------------------------------------------------
  131.     # ● PNGチャンク作成
  132.     #---------------------------------------------------------------------------
  133.     def self.createChunk(type, data)
  134.       [data.bytesize, type, data, Zlib.crc32(type + data)].pack('NA4A*N')
  135.     end
  136.   end
  137. end

  138. class Scene_Base
  139.   #-----------------------------------------------------------------------------
  140.   # ● フレーム更新(基本)(エイリアス)
  141.   #-----------------------------------------------------------------------------
  142.   alias hzm_vxa_screenshot_update_basic update_basic
  143.   def update_basic
  144.     hzm_vxa_screenshot_update_basic
  145.     HZM_VXA::ScreenShot.update
  146.   end
  147. end
复制代码
’’


源地址http://www4.plala.or.jp/findias/ ... -garally/index.html
作者:Claimh



评分

参与人数 1星屑 +10 收起 理由
无双sxa + 10 心意领了,O(∩_∩)O谢谢

查看全部评分

Lv1.梦旅人

派大星

梦石
0
星屑
195
在线时间
2133 小时
注册时间
2011-9-18
帖子
2652
2
发表于 2012-4-19 18:05:27 | 只看该作者
感谢分享,作者和源地址偶已经找到了。
作者是Claimh,
源地址是http://www4.plala.or.jp/findias/ ... -garally/index.html
下次记得注明源地址,谢谢支持。O(∩_∩)O
回复 支持 反对

使用道具 举报

Lv1.梦旅人

AFKの

梦石
0
星屑
48
在线时间
762 小时
注册时间
2011-10-1
帖子
1248

贵宾

3
发表于 2012-4-19 18:11:02 | 只看该作者
强烈建议大家都放预览图和功能简介……

点评

用法有空偶研究下或者等楼主来介绍O(∩_∩)O谢谢支持  发表于 2012-4-19 18:26

评分

参与人数 1星屑 +20 收起 理由
无双sxa + 20 我很赞同

查看全部评分

人家是水母
回复 支持 反对

使用道具 举报

Lv1.梦旅人

梦石
0
星屑
50
在线时间
2188 小时
注册时间
2011-6-23
帖子
1044
4
发表于 2012-4-19 18:23:02 | 只看该作者
本帖最后由 lsu666666 于 2012-4-19 18:39 编辑

是呢!~ 如同上方兩位版主的建议 楼主虽即使不是原创
对于发帖的内容 可以选择让大家更可以一目了然的方式

增加一些图片
增加一些自己的意见或想法
增加一些对于转载内容的详细描述(例如 来源出处 或作者资讯)

这样的情况下 即使不是原创  也可以真正达到有效帮助其他人的使用
也不至于让自己辛苦的转载的内容因为缺少内容或图片
而被灌上随意转贴 最终沦为开水的命运
才不至于让自己的好意随着开水而消失了...

以一个使用者的角度来看
很多人在查找主题的第一个观点 常常决定他是否使用这个脚本?! 或是不使用这个脚本!
以一个简单的转贴, 虽说脚本内容可能真的很棒 , 但是看到帖子内容只有单纯的脚本
, 完全没有任何详细的介绍 , 在很多人不是很了解腳本的情況之下 , 我想很多人都会选
择继续返回上一页或离开....往往是那些有詳細介紹的腳本 , 成了他的唯一選擇
如果没有详细的资料或图片介绍 , 除了流失一個好的腳本以外 ,也让楼主的好心被海水给沉没了 , 最終也没办法发挥真正想帮助人的好意 , 而可能走向开水的命运..

{:2_282:}


评分

参与人数 1星屑 +20 收起 理由
无双sxa + 20 我很赞同

查看全部评分

回复 支持 反对

使用道具 举报

Lv1.梦旅人

派大星

梦石
0
星屑
195
在线时间
2133 小时
注册时间
2011-9-18
帖子
2652
5
发表于 2012-4-19 18:49:18 | 只看该作者
@梦回碧落@lsu666666
经过研究,orz,发现这个脚本已经包含在这里的脚本集合里了;http://rpg.blue/thread-225130-1-1.html
重复了的说,那个画廊模式是把图片放在相应的文件夹,就可以选择画廊模式欣赏图片了。

点评

這樣都給找到了 好認真呢..@__@  发表于 2012-4-19 19:12
脚本合集V5霸气  发表于 2012-4-19 18:53
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 注册会员

本版积分规则

拿上你的纸笔,建造一个属于你的梦想世界,加入吧。
 注册会员
找回密码

站长信箱:[email protected]|手机版|小黑屋|无图版|Project1游戏制作

GMT+8, 2024-11-28 23:38

Powered by Discuz! X3.1

© 2001-2013 Comsenz Inc.

快速回复 返回顶部 返回列表