Project1

标题: 有关里面脚本的问题 [打印本页]

作者: s9210123    时间: 2011-5-14 15:04
标题: 有关里面脚本的问题
網址
有谁能帮我翻译一下里面的脚本,以及使用方法,感激不尽。dsu_plus_rewardpost_czw
作者: 五月的血    时间: 2011-5-14 15:31
提示: 作者被禁止或删除 内容自动屏蔽
作者: Cola酱    时间: 2011-5-14 22:09
解释用法都打在他的说明下面了
懒得翻译脚本的注释
反正就是在RGSS绘制文字时动了手脚
没有注释也应该可以明白~
  1. #◆◇◆◇◆  ルビ描写スクリプト ver 1・00  ◇◆◇◆◇
  2. # 全マスタースクリプト共通スクリプト
  3. #  サポート掲示板 http://www2.ezbbs.net/21/minto-aaa/
  4. #   by みんと

  5. =begin

  6. 説明

  7. 特定の文字列にルビ(振り仮名)を描写します。
  8. ルビは文字列が設定した文字列と等しい場合に表示されます。
  9. 例えば 試験(テスト)とする場合、
  10. 文字列が 試験 なら表示されますが、
  11. 試験2 の場合は表示されません。

  12. あくまで完全に等しい場合に表示します。
  13. 設定した文字列であれば、アクター名や武器などを問わず描写します。

  14. ただし、ルビを描写する場合、
  15. ルビの描写スペースを確保するために、文章が多少小さくなります。

  16. 说明
  17. 这个脚本是用来显示日文汉字的假名
  18. 也就是如你所见缩小汉字
  19. 然后在上面显示假名(学过日语应该很好懂)

  20. 用法
  21. 脚本最开始找到“@ruby_text["試験君"] = "でばっぐくん"”处
  22. 随意删减添加
  23. 格式为@ruby_text["对应文字"] = "对应假名"

  24. =end

  25. #==============================================================================
  26. # ☆ MINTO
  27. #------------------------------------------------------------------------------
  28. #   様々なフラグを扱うメインモジュールです。
  29. #==============================================================================

  30. module MINTO
  31.   
  32.   # ルビ描写スクリプトを有効化 ( true で有効 / false で無効 )
  33.   RGSS["ルビ描写スクリプト"] = true
  34.   
  35. end

  36. if MINTO::RGSS["ルビ描写スクリプト"] == true then

  37. #==============================================================================
  38. # ☆ カスタマイズ
  39. #------------------------------------------------------------------------------
  40. #   機能のカスタマイズを行うモジュールです。
  41. #==============================================================================

  42. module MINTO
  43.   
  44.   # ルビを管理するハッシュ(変更しない)
  45.   @ruby_text = {}
  46.   # ルビを表示したい文字列(文字列が設定した文字列と等しい場合に表示されます)
  47.   # 例 : @ruby_text["ルビを振りたい本文"] = "ルビ"
  48.   
  49.   @ruby_text["試験君"] = "でばっぐくん"
  50.   @ruby_text["戦闘開始"] = "たたかう"
  51.   @ruby_text["戦略的後退"] = "にげる"
  52.   
  53.   #--------------------------------------------------------------------------
  54.   # ● ルビを管理するハッシュの取得
  55.   #--------------------------------------------------------------------------
  56.   def self.ruby_text
  57.     return @ruby_text
  58.   end
  59. end
  60. #==============================================================================
  61. # ■ Bitmap
  62. #------------------------------------------------------------------------------
  63. #  ゲーム中のビットマップの表示を管理する組み込みクラスです
  64. #==============================================================================

  65. class Bitmap
  66.   #--------------------------------------------------------------------------
  67.   # ● テキスト描画
  68.   #--------------------------------------------------------------------------
  69.   # 多重エイリアスでない場合
  70.   if not method_defined?("ruby_MINTO_draw_text") then
  71.     # エイリアスを実行
  72.     alias :ruby_MINTO_draw_text :draw_text
  73.   end
  74.   def draw_text(x, y, width = 0, height = 0, text = "", align = 0)
  75.     # ルビを表示フラグをオフ
  76.     ruby_on = false
  77.     # 最初の引数が Rect の場合
  78.     if x.is_a?(Rect) == true then
  79.       # 文字列がルビを表示すべき文字の場合
  80.       if MINTO.ruby_text.key?(y) == true then
  81.         # 各データを取得
  82.         x2 = x.x
  83.         y2 = x.y
  84.         width2 = x.width
  85.         height2 = x.height
  86.         text2 = y.dup
  87.         align2 = width
  88.         # ルビを取得
  89.         ruby = MINTO.ruby_text[text2]
  90.         # ルビを表示フラグをオン
  91.         ruby_on = true
  92.       # それ以外の文章の場合
  93.       else
  94.         # 元の処理を実行
  95.         ruby_MINTO_draw_text(x, y, width)
  96.       end
  97.     # 通常の引数の場合
  98.     else
  99.       # 文字列がルビを表示すべき文字の場合
  100.       if MINTO.ruby_text.key?(text) == true then
  101.         # 各データを取得
  102.         x2 = x
  103.         y2 = y
  104.         width2 = width
  105.         height2 = height
  106.         text2 = text.dup
  107.         align2 = align
  108.         # ルビを取得
  109.         ruby = MINTO.ruby_text[text2]
  110.         # ルビを表示フラグをオン
  111.         ruby_on = true
  112.       # それ以外の文章の場合
  113.       else
  114.         # 元の処理を実行
  115.         ruby_MINTO_draw_text(x, y, width, height, text, align)
  116.       end
  117.     end
  118.     # ルビ表示フラグがオンの場合
  119.     if ruby_on == true then
  120.       # 文字サイズを保存
  121.       text_size = self.font.size
  122.       # 文字サイズを調節
  123.       self.font.size = [self.font.size, height2 / 2 + 2].min
  124.       # 文章の長さを測る
  125.       text_width = self.text_size(text2).width
  126.       # 文章の高さを測る
  127.       text_height = self.text_size(text2).height
  128.       # 求められたルビを一文字ずつ配列にする
  129.       ruby_array = ruby.to_s.split(//)
  130.       # ルビの1文字辺りの描写幅を取得
  131.       ruby_width = text_width / ruby_array.size
  132.       # 文章のY座標を調節
  133.       text_y = y2 + ((height2 - text_height) / 2)
  134.       # 求められた文章を描写
  135.       ruby_MINTO_draw_text(x2, text_y, width2, height2, text2, align2)
  136.       # 文字を小さくする
  137.       self.font.size = self.font.size / 2
  138.       # ルビの高さを測る
  139.       ruby_height = self.text_size(ruby).height
  140.       # ループ処理
  141.       (0...ruby_array.size).each do |i|
  142.         # アライメントに応じて分岐
  143.         case align2
  144.         # 左寄せ
  145.         when 0
  146.           # 描写座標を計算して取得
  147.           ruby_x = x2 + (i * ruby_width)
  148.         # 中央寄せ
  149.         when 1
  150.           # 描写座標を計算して取得
  151.           ruby_x = x2 + ((width2 - text_width) / 2) + (i * ruby_width)
  152.         # 右寄せ
  153.         when 2
  154.           # 描写座標を計算して取得
  155.           ruby_x = x2 + (width2 - text_width) + (i * ruby_width)
  156.         end
  157.         # ルビを取得
  158.         r = ruby_array[i]
  159.         # ルビを描写
  160.         ruby_MINTO_draw_text(ruby_x, y2 + 2, ruby_width, ruby_height, r, 1)
  161.       end
  162.       # 文字サイズを戻す
  163.       self.font.size = text_size
  164.     end
  165.   end
  166.   #--------------------------------------------------------------------------
  167.   # ● ルビ付き文字描写
  168.   #     x      : 文章の X 座標
  169.   #     y      : 文章の Y 座標
  170.   #     width  : 文章の描写範囲(横幅)
  171.   #     height : 文章の描写範囲(高さ)
  172.   #     text   : 文章
  173.   #     ruby   : 振り仮名
  174.   #     align  : アラインメント (0..左揃え、1..中央揃え、2..右揃え)
  175.   #--------------------------------------------------------------------------
  176.   def draw_ruby(x, y, width, height, text, ruby, align = 0)
  177.     # 文字サイズを保存
  178.     text_size = self.font.size
  179.     # 文字サイズを調節
  180.     self.font.size = [self.font.size, 18].min
  181.     # 文章の長さを測る
  182.     text_width = self.text_size(text).width
  183.     # 文章の高さを測る
  184.     text_height = self.text_size(text).height
  185.     # 求められたルビを一文字ずつ配列にする
  186.     ruby_array = ruby.to_s.split(//)
  187.     # ルビの1文字辺りの描写幅を取得
  188.     ruby_width = text_width / ruby_array.size
  189.     # 文章のY座標を調節
  190.     text_y = y + ((height - text_height) / 2)
  191.     # 求められた文章を描写
  192.     draw_text(x, text_y, width, height, text, align)
  193.     # 文字を小さくする
  194.     self.font.size = self.font.size / 2
  195.     # ルビの高さを測る
  196.     ruby_height = self.text_size(ruby).height
  197.     # ループ処理
  198.     (0...ruby_array.size).each do |i|
  199.       # アライメントに応じて分岐
  200.       case align
  201.       # 左寄せ
  202.       when 0
  203.         # 描写座標を計算して取得
  204.         ruby_x = x + (i * ruby_width)
  205.       # 中央寄せ
  206.       when 1
  207.         # 描写座標を計算して取得
  208.         ruby_x = x + ((width - text_width) / 2) + (i * ruby_width)
  209.       # 右寄せ
  210.       when 2
  211.         # 描写座標を計算して取得
  212.         ruby_x = x + (width - text_width) + (i * ruby_width)
  213.       end
  214.       # ルビを取得
  215.       r = ruby_array[i]
  216.       # ルビを描写
  217.       draw_text(ruby_x, y + 2, ruby_width, ruby_height, r, 1)
  218.     end
  219.     # 文字サイズを戻す
  220.     self.font.size = text_size
  221.   end
  222. end

  223. end
复制代码

作者: s9210123    时间: 2011-5-15 08:44
回复 Cola酱 的帖子

感谢帮忙




欢迎光临 Project1 (https://rpg.blue/) Powered by Discuz! X3.1