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

Project1

 找回密码
 注册会员
搜索
12
返回列表 发新帖
楼主: kaze
打印 上一主题 下一主题

[RM脚本] 一个日站的整合系统

 关闭 [复制链接]

Lv1.梦旅人

梦石
0
星屑
50
在线时间
15 小时
注册时间
2007-2-18
帖子
2464
11
 楼主| 发表于 2007-9-5 15:44:47 | 只看该作者
以下引用美兽于2007-9-5 3:12:02的发言:

这里的电脑不能随便下载,

麻烦LZ能否将 “高速数字描绘”的脚本直接贴出来?
  1. #◆◇◆◇◆  開発者用・高速数字描写機構 1.00  ◇◆◇◆◇
  2. #  サポート掲示板 http://www2.ezbbs.net/21/minto-aaa/
  3. #   by みんと

  4. =begin

  5. XPに初期導入されている Bitmap の draw_text は
  6. 処理が重く過度のリフレッシュには非情に適していません。
  7. (この処理には時間がかかるため、
  8. 1 フレームごとに文字列を再描画するような使い方は推奨されません。)

  9. なのでXPゲームにとって恐らく最も多く更新と思われる
  10. 「数値」の描写に特化したクラスです。

  11. このクラスで生成された数値の表示は1フレームごとに描写しても
  12. FPSの消費が実質0で済み、非情に高速です。

  13. ただし、このRGSSスクリプトは開発者用なので、
  14. 使いこなすには「ある程度」のRGSS知識が求められます。

  15. 詳しい使い方は
  16. 公開中のアクティブレベルアップか、
  17. アクティブバトルステータスを参照してくっださい。

  18. Mint_Picture_Number のプロトタイプが実際に使用されています。

  19. ☆ 以下、開発者様向けの説明

  20. ┏━━━━ クラスメソッド ※()内部は省略可能な引数 ━━━━━━━━━━━━━

  21. ┃ Mint_Picture_Number.new(x, y, index, (z, size, text))

  22. ┠──────────────────────────────────────

  23. ┃ index : 描写可能な桁数です。(10000桁なら5)

  24. ┃ z     : Z座標です。省略した場合は999になります。

  25. ┃ size  : 1カラーの高さです。
  26. ┃         カラーとは読み込んだ画像をsizeで割った内の1つです。
  27. ┃         読み込んだ画像を size で割った数がカラーの数になります。
  28. ┃         なので、画像はこの数値で割り切れる必要があります。

  29. ┃ text  : 読み込む画像です。
  30. ┃         省略した場合はString02というピクチャーを参照します。
  31. ┃         1つ1つの数字は必ず均等幅で並べる必要があります。

  32. ┗━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━

  33. ┏━━━━ メソッド ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━

  34. ┃ dispose
  35. ┃ clear
  36. ┃ update
  37. ┃ string_pop(picture)
  38. ┃ set_text(number, (collar))

  39. ┠──────────────────────────────────────

  40. ┃ dispose          : このクラスで生成されたオブジェクトを解放します。
  41. ┃                    原則的に $scene が変わる前に実行する必要があります。

  42. ┃ clear            : 表示中のピクチャーを削除します。
  43. ┃                    ただし、string_pop で生成されたピクチャーは除きます。

  44. ┃ update           : string_pop で表示したピクチャーのスライドを進めます。
  45. ┃                    原則として1フレームに1度呼び出す必要があります。

  46. ┃ string_pop       : pictureで指定した名前のピクチャーを
  47. ┃                    ピクチャーフォルダから参照してポップします。
  48. ┃                    ピクチャーが存在しない場合はエラー落ちします。
  49. ┃                    また、このメソッドは処理が重いため、
  50. ┃                    過度の使用はオススメできますん。

  51. ┃ set_text         : number で指定した数字を描写します。
  52. ┃                    collar で色を変更できますが、
  53. ┃                    size で複数のカラーを用意しておく必要があります。

  54. ┗━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━

  55. ┏━━━━ プロパティ ━━━━━━━━━━━━━━━━━━━━━━━━━━━━

  56. ┃ visible
  57. ┃ contents_opacity

  58. ┠──────────────────────────────────────

  59. ┃ visible          : 可視状態を変更します。真の時に可視状態になります。

  60. ┃ contents_opacity : ピクチャーの透明度を変更します。
  61. ┃                    ただし、string_pop で生成されたピクチャーは除きます。

  62. ┗━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━

  63. =end

  64. #==============================================================================
  65. # ■ Mint_Picture_Number
  66. #------------------------------------------------------------------------------
  67. #  ピクチャー数字のスプライト表示を扱うクラスです。
  68. #   このクラスは数値の高速再描写に特化したクラスとなっています。
  69. #==============================================================================

  70. class Mint_Picture_Number
  71.   #--------------------------------------------------------------------------
  72.   # ● 公開インスタンス変数
  73.   #--------------------------------------------------------------------------
  74.   attr_reader   :x                        # X座標
  75.   attr_accessor :y                        # Y座標
  76.   attr_reader   :visible                  # 可視状態
  77.   attr_reader   :string_pop_duration      # ストリングポップカウント
  78.   attr_accessor :string                   # 文字列のピクチャー
  79.   attr_reader   :contents_opacity         # 内容の透明度
  80.   #--------------------------------------------------------------------------
  81.   # ● オブジェクト初期化
  82.   #    x     : X座標
  83.   #    y     : Y座標
  84.   #    index : 求められた行数
  85.   #    z     : Z座標
  86.   #    size  : 求められた1カラーの高さ
  87.   #    text  : 求められたピクチャー
  88.   #--------------------------------------------------------------------------
  89.   def initialize(x, y, index, z = 999, size = 24, text = "String02")
  90.     # ピクチャーデータを読み込んで代入
  91.     @number = RPG::Cache.picture(text)
  92.     # 各種データを初期化
  93.     @x = x
  94.     @y = y
  95.     @index = index
  96.     @string_pop_sprite = []
  97.     @string_pop_duration = []
  98.     # カラーサイズを取得(画像の高さをsizeで割った数)
  99.     collar_size = @number.rect.height / size
  100.     # 読み込んだ画像の幅を10で割った値が、1文字1文字の幅になる
  101.     @width = @number.rect.width / 10.0
  102.     # 読み込んだ画像の高さをカラーサイズで割った数が1カラーの高さになる
  103.     height = @number.rect.height / collar_size
  104.     # スプライトを収納する配列を定義
  105.     @sprite = []
  106.     # スプライト生成(求められた行数分)
  107.     for i in 0...@index
  108.       @sprite[i] = Sprite.new
  109.       @sprite[i].x = x.to_i + (i * @width)
  110.       @sprite[i].y = y.to_i
  111.       @sprite[i].z = z
  112.     end
  113.     # ピクチャー数字用の配列生成
  114.     @picture_number = []
  115.     # X, Y, 幅, 高さ
  116.     rect = Rect.new(0, 0, @width, height)
  117.     # 各カラー分のピクチャーを作成
  118.     for collar_index in 0...collar_size
  119.       # 配列内配列を作成
  120.       @picture_number[collar_index] = []
  121.       # 0~9までのピクチャー数字を予め作成
  122.       for i in 0..9
  123.         # インデックス(i)から、
  124.         # 基本幅(@width)を掛けたところにある画像を参照する
  125.         rect.x = i * @width
  126.         # collar_index から
  127.         # 基本高さ(height)を掛けたところにある画像を参照する
  128.         rect.y = collar_index * height
  129.         # Bitmapを作成
  130.         bitmap = Bitmap.new(@width, height)
  131.         # ピクチャー生成
  132.         bitmap.blt(0, 0, @number, rect)
  133.         # 生成したピクチャーを収納
  134.         @picture_number[collar_index][i] = bitmap
  135.       end
  136.     end
  137.   end
  138.   #--------------------------------------------------------------------------
  139.   # ● Y座標の変更
  140.   #    n : 新しいY座標
  141.   #--------------------------------------------------------------------------
  142.   def y=(n)
  143.     # Y座標の変更(イテレータ)
  144.     # for i in 0...@index
  145.     #   @sprite[i].y = n
  146.     # end
  147.     # という意味 ↓
  148.     (0...@index).each{|i| @sprite[i].y = n}
  149.   end
  150.   #--------------------------------------------------------------------------
  151.   # ● 内容の可視状態の変更
  152.   #    flag : 新しい可視状態
  153.   #--------------------------------------------------------------------------
  154.   def visible=(flag)
  155.     # 可視状態の変更(イテレータ)
  156.     (0...@index).each{|i| @sprite[i].visible = flag}
  157.   end
  158.   #--------------------------------------------------------------------------
  159.   # ● 内容の透明度の変更
  160.   #    opacity : 新しい透明度
  161.   #--------------------------------------------------------------------------
  162.   def contents_opacity=(opacity)
  163.     # 透明度の変更(イテレータ)
  164.     (0...@index).each{|i| @sprite[i].opacity = opacity}
  165.   end
  166.   #--------------------------------------------------------------------------
  167.   # ● クリア
  168.   #--------------------------------------------------------------------------
  169.   def clear
  170.     # 求められた行数分のビットマップをクリア
  171.     for i in 0...@index
  172.       @sprite[i].bitmap = nil
  173.     end
  174.   end
  175.   #--------------------------------------------------------------------------
  176.   # ● セットテキスト
  177.   #    number : 求められた数値
  178.   #    collar : 求められたカラーインデックス
  179.   #--------------------------------------------------------------------------
  180.   def set_text(number, collar = 0)
  181.     # 求められた文字を一文字ずつ配列にする
  182.     text = number.to_s.split(//)
  183.     # クリア行数
  184.     clear_index = text.size == 1 ? 1 : 0
  185.     # X座標を調整する
  186.     x_size = @index - text.size
  187.     # 求められた行数分繰り返す
  188.     for i in 0...@index
  189.       # クリア行数が0で求められた数字が0か、
  190.       # 元の数字が存在しなければなら次へ
  191.       if clear_index == 0 && text[i].to_i == 0 ||
  192.         text[i] == nil
  193.         @sprite[i].bitmap = nil
  194.         next
  195.       end
  196.       # X座標を調整する(右寄せ)
  197.       @sprite[i].x = @x.to_i + (i * @width) + (x_size * @width)
  198.       # 条件をクリアしていれば、クリア行数に1を加算
  199.       clear_index += 1
  200.       # 条件をクリアしていれば描写
  201.       @sprite[i].bitmap = @picture_number[collar][text[i].to_i]
  202.     end
  203.   end
  204.   #--------------------------------------------------------------------------
  205.   # ● ストリングポップ
  206.   #    string : 求められた文字列のピクチャーの名前
  207.   #    x_plus : 外部からのX座標の調整用
  208.   #    y_plus : 外部からのY座標の調整用
  209.   #--------------------------------------------------------------------------
  210.   def string_pop(string = "", x_plus = 0, y_plus = 0)
  211.     # 画像を読み込む(空文字の場合は無視)
  212.     if string != ""
  213.       @string = RPG::Cache.picture(string)
  214.     end
  215.     # @string が nil なら処理を終了
  216.     return if @string == nil
  217.     # 配列の nil をなくす
  218.     @string_pop_sprite.compact!
  219.     @string_pop_duration.compact!
  220.     # ストリングポップを解放(解放されている場合は無視)
  221.     dispose_string_pop
  222.     # スプライトを生成
  223.     string_pop_sprite = Sprite.new
  224.     # 幅を代入
  225.     width = @string.rect.width
  226.     # 高さを代入
  227.     height = @string.rect.height
  228.     # 画像の幅と高さからビットマップを生成
  229.     string_pop_sprite.bitmap = Bitmap.new(width, height)
  230.     # 画像を実際に描写
  231.     string_pop_sprite.bitmap.blt(0, 0, @string, @string.rect)
  232.     # 座標データを代入
  233.     string_pop_sprite.x = @x.to_i + x_plus
  234.     string_pop_sprite.y = @y.to_i + y_plus
  235.     string_pop_sprite.z = 999
  236.     # 配列の先頭にシフト
  237.     @string_pop_sprite.unshift(string_pop_sprite)
  238.     @string_pop_duration.unshift(40)      
  239.   end
  240.   #--------------------------------------------------------------------------
  241.   # ● ストリングポップ解放
  242.   #    index : 求められたインデックス
  243.   #--------------------------------------------------------------------------
  244.   def dispose_string_pop(index = nil)
  245.     # インデックスが nil なら処理を中断
  246.     if index == nil
  247.       return
  248.     end
  249.     # インデックスが -1 なら全て解放する
  250.     if index == -1
  251.       # for 文を使って1つずつ処理
  252.       for id in 0...@string_pop_sprite.size
  253.         # IDが0以上でそこにスプライトが存在すれば解放
  254.         if id >= 0 && @string_pop_sprite[id]
  255.           @string_pop_sprite[id].bitmap.dispose
  256.           @string_pop_sprite[id].dispose
  257.           @string_pop_sprite[id] = nil
  258.           @string_pop_duration[id] = nil
  259.         end
  260.       end
  261.     else
  262.       # インデックスが0以上でそこにスプライトが存在すれば解放
  263.       if index >= 0 && @string_pop_sprite[index]
  264.         @string_pop_sprite[index].bitmap.dispose
  265.         @string_pop_sprite[index].dispose
  266.         @string_pop_sprite[index] = nil
  267.         @string_pop_duration[index] = nil
  268.       end
  269.     end
  270.   end
  271.   #--------------------------------------------------------------------------
  272.   # ● フレーム更新
  273.   #--------------------------------------------------------------------------
  274.   def update
  275.     # 1つでもストリングポップが表示中の場合
  276.     if @string_pop_sprite.size > 0
  277.       # 表示中のストリングポップを1つずつ処理する
  278.       for i in 0...@string_pop_sprite.size
  279.         # ストリングポップを代入
  280.         string = @string_pop_sprite[i]
  281.         # カウントが0の場合
  282.         if @string_pop_duration[i] == 0
  283.           # ストリングポップを解放
  284.           dispose_string_pop(i)
  285.           # 次の処理へ
  286.           next
  287.         end
  288.         # カウントを減らす
  289.         @string_pop_duration[i] -= 1
  290.         # 残りカウントに応じて分岐
  291.         case @string_pop_duration[i]
  292.         when 36..39
  293.           string.y -= 4
  294.         when 33..37
  295.           string.y -= 2
  296.         when 32..34
  297.           string.y += 2
  298.         when 25..32
  299.           string.y += 4
  300.         end
  301.         # 透明度をカウントに応じて下げる
  302.         string.opacity = 256 - (12 - @string_pop_duration[i]) * 32
  303.       end
  304.       # 配列の nil を無くす
  305.       @string_pop_sprite.compact!
  306.       @string_pop_duration.compact!
  307.     end
  308.   end
  309.   #--------------------------------------------------------------------------
  310.   # ● 解放
  311.   #--------------------------------------------------------------------------
  312.   def dispose
  313.     # スプライトを解放
  314.     for s in @sprite
  315.       s.dispose      
  316.       s = nil
  317.     end
  318.     # ストリングポップを全て解放
  319.     dispose_string_pop(-1)
  320.   end
  321. end
复制代码
回复 支持 反对

使用道具 举报

Lv3.寻梦者

梦石
0
星屑
1624
在线时间
1609 小时
注册时间
2007-8-28
帖子
3253

第3届短篇游戏大赛主流游戏组冠军第1届Title华丽大赛新人奖

12
发表于 2007-9-5 18:13:00 | 只看该作者
哈哈,楼主经过みんと的允许了吗?
“我推荐你一个游戏吧,avg的,剧情特感人”
“我擦,都是文字图片的游戏有啥好玩的,连个战斗都没有!”
“我推荐你一个游戏吧,rpg的,战斗也新颖”
“我擦,怎么米有作i弊器?“
”你不是喜欢战斗么?”
“不,我是剧情党!!”

继续阅读请点击
http://rpg.blue/blog-53316-10027.html
回复 支持 反对

使用道具 举报

Lv1.梦旅人

梦石
0
星屑
50
在线时间
15 小时
注册时间
2007-2-18
帖子
2464
13
 楼主| 发表于 2007-9-5 19:18:03 | 只看该作者
以下引用柳之一于2007-9-5 10:13:00的发言:

哈哈,楼主经过みんと的允许了吗?

你的RM是正版么?
回复 支持 反对

使用道具 举报

Lv3.寻梦者

梦石
0
星屑
1624
在线时间
1609 小时
注册时间
2007-8-28
帖子
3253

第3届短篇游戏大赛主流游戏组冠军第1届Title华丽大赛新人奖

14
发表于 2007-9-5 19:35:35 | 只看该作者
你的RM是正版么?

哈哈,真经典,看来以后拆66的脚本,再也不需要申请拉,有什么拿什么用。你的游戏也不例外,哈哈。
“我推荐你一个游戏吧,avg的,剧情特感人”
“我擦,都是文字图片的游戏有啥好玩的,连个战斗都没有!”
“我推荐你一个游戏吧,rpg的,战斗也新颖”
“我擦,怎么米有作i弊器?“
”你不是喜欢战斗么?”
“不,我是剧情党!!”

继续阅读请点击
http://rpg.blue/blog-53316-10027.html
回复 支持 反对

使用道具 举报

头像被屏蔽

Lv1.梦旅人 (禁止发言)

梦石
0
星屑
50
在线时间
0 小时
注册时间
2007-8-28
帖子
39
15
发表于 2007-9-5 20:29:27 | 只看该作者
提示: 作者被禁止或删除 内容自动屏蔽
回复 支持 反对

使用道具 举报

Lv3.寻梦者

梦石
0
星屑
1350
在线时间
597 小时
注册时间
2007-7-12
帖子
1278
16
发表于 2007-9-5 22:09:16 | 只看该作者
确实不错的脚本...对我这脚本盲来说非常合适..找个时间下了吧
回复 支持 反对

使用道具 举报

Lv1.梦旅人

月下可怜人

梦石
0
星屑
50
在线时间
10 小时
注册时间
2005-11-23
帖子
4085

第1届短篇游戏比赛亚军

17
发表于 2007-9-6 02:52:03 | 只看该作者
以下引用kaze于2007-9-5 7:44:47的发言:


以下引用美兽于2007-9-5 3:12:02的发言:

这里的电脑不能随便下载,

麻烦LZ能否将 “高速数字描绘”的脚本直接贴出来?


#◆◇◆◇◆  開発者用・高速数字描写機構 1.00  ◇◆◇◆◇
#  サポート掲示板 http://www2.ezbbs.net/21/minto-aaa/
#   by みんと

=begin

XPに初期導入されている Bitmap の draw_text は
処理が重く過度のリフレッシュには非情に適していません。
(この処理には時間がかかるため、
1 フレームごとに文字列を再描画するような使い方は推奨されません。)

なのでXPゲームにとって恐らく最も多く更新と思われる
「数値」の描写に特化したクラスです。

このクラスで生成された数値の表示は1フレームごとに描写しても
FPSの消費が実質0で済み、非情に高速です。

ただし、このRGSSスクリプトは開発者用なので、
使いこなすには「ある程度」のRGSS知識が求められます。

詳しい使い方は
公開中のアクティブレベルアップか、
アクティブバトルステータスを参照してくっださい。

Mint_Picture_Number のプロトタイプが実際に使用されています。

☆ 以下、開発者様向けの説明

┏━━━━ クラスメソッド ※()内部は省略可能な引数 ━━━━━━━━━━━━━

┃ Mint_Picture_Number.new(x, y, index, (z, size, text))

┠──────────────────────────────────────

┃ index : 描写可能な桁数です。(10000桁なら5)

┃ z     : Z座標です。省略した場合は999になります。

┃ size  : 1カラーの高さです。
┃         カラーとは読み込んだ画像をsizeで割った内の1つです。
┃         読み込んだ画像を size で割った数がカラーの数になります。
┃         なので、画像はこの数値で割り切れる必要があります。

┃ text  : 読み込む画像です。
┃         省略した場合はString02というピクチャーを参照します。
┃         1つ1つの数字は必ず均等幅で並べる必要があります。

┗━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━

┏━━━━ メソッド ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━

┃ dispose
┃ clear
┃ update
┃ string_pop(picture)
┃ set_text(number, (collar))

┠──────────────────────────────────────

┃ dispose          : このクラスで生成されたオブジェクトを解放します。
┃                    原則的に $scene が変わる前に実行する必要があります。

┃ clear            : 表示中のピクチャーを削除します。
┃                    ただし、string_pop で生成されたピクチャーは除きます。

┃ update           : string_pop で表示したピクチャーのスライドを進めます。
┃                    原則として1フレームに1度呼び出す必要があります。

┃ string_pop       : pictureで指定した名前のピクチャーを
┃                    ピクチャーフォルダから参照してポップします。
┃                    ピクチャーが存在しない場合はエラー落ちします。
┃                    また、このメソッドは処理が重いため、
┃                    過度の使用はオススメできますん。

┃ set_text         : number で指定した数字を描写します。
┃                    collar で色を変更できますが、
┃                    size で複数のカラーを用意しておく必要があります。

┗━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━

┏━━━━ プロパティ ━━━━━━━━━━━━━━━━━━━━━━━━━━━━

┃ visible
┃ contents_opacity

┠──────────────────────────────────────

┃ visible          : 可視状態を変更します。真の時に可視状態になります。

┃ contents_opacity : ピクチャーの透明度を変更します。
┃                    ただし、string_pop で生成されたピクチャーは除きます。

┗━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━

=end

#==============================================================================
# ■ Mint_Picture_Number
#------------------------------------------------------------------------------
#  ピクチャー数字のスプライト表示を扱うクラスです。
#   このクラスは数値の高速再描写に特化したクラスとなっています。
#==============================================================================

class Mint_Picture_Number
  #--------------------------------------------------------------------------
  # ● 公開インスタンス変数
  #--------------------------------------------------------------------------
  attr_reader   :x                        # X座標
  attr_accessor :y                        # Y座標
  attr_reader   :visible                  # 可視状態
  attr_reader   :string_pop_duration      # ストリングポップカウント
  attr_accessor :string                   # 文字列のピクチャー
  attr_reader   :contents_opacity         # 内容の透明度
  #--------------------------------------------------------------------------
  # ● オブジェクト初期化
  #    x     : X座標
  #    y     : Y座標
  #    index : 求められた行数
  #    z     : Z座標
  #    size  : 求められた1カラーの高さ
  #    text  : 求められたピクチャー
  #--------------------------------------------------------------------------
  def initialize(x, y, index, z = 999, size = 24, text = "String02")
    # ピクチャーデータを読み込んで代入
    @number = RPG::Cache.picture(text)
    # 各種データを初期化
    @x = x
    @y = y
    @index = index
    @string_pop_sprite = []
    @string_pop_duration = []
    # カラーサイズを取得(画像の高さをsizeで割った数)
    collar_size = @number.rect.height / size
    # 読み込んだ画像の幅を10で割った値が、1文字1文字の幅になる
    @width = @number.rect.width / 10.0
    # 読み込んだ画像の高さをカラーサイズで割った数が1カラーの高さになる
    height = @number.rect.height / collar_size
    # スプライトを収納する配列を定義
    @sprite = []
    # スプライト生成(求められた行数分)
    for i in 0...@index
      @sprite = Sprite.new
      @sprite.x = x.to_i + (i * @width)
      @sprite.y = y.to_i
      @sprite.z = z
    end
    # ピクチャー数字用の配列生成
    @picture_number = []
    # X, Y, 幅, 高さ
    rect = Rect.new(0, 0, @width, height)
    # 各カラー分のピクチャーを作成
    for collar_index in 0...collar_size
      # 配列内配列を作成
      @picture_number[collar_index] = []
      # 0~9までのピクチャー数字を予め作成
      for i in 0..9
        # インデックス(i)から、
        # 基本幅(@width)を掛けたところにある画像を参照する
        rect.x = i * @width
        # collar_index から
        # 基本高さ(height)を掛けたところにある画像を参照する
        rect.y = collar_index * height
        # Bitmapを作成
        bitmap = Bitmap.new(@width, height)
        # ピクチャー生成
        bitmap.blt(0, 0, @number, rect)
        # 生成したピクチャーを収納
        @picture_number[collar_index] = bitmap
      end
    end
  end
  #--------------------------------------------------------------------------
  # ● Y座標の変更
  #    n : 新しいY座標
  #--------------------------------------------------------------------------
  def y=(n)
    # Y座標の変更(イテレータ)
    # for i in 0...@index
    #   @sprite.y = n
    # end
    # という意味 ↓
    (0...@index).each{|i| @sprite.y = n}
  end
  #--------------------------------------------------------------------------
  # ● 内容の可視状態の変更
  #    flag : 新しい可視状態
  #--------------------------------------------------------------------------
  def visible=(flag)
    # 可視状態の変更(イテレータ)
    (0...@index).each{|i| @sprite.visible = flag}
  end
  #--------------------------------------------------------------------------
  # ● 内容の透明度の変更
  #    opacity : 新しい透明度
  #--------------------------------------------------------------------------
  def contents_opacity=(opacity)
    # 透明度の変更(イテレータ)
    (0...@index).each{|i| @sprite.opacity = opacity}
  end
  #--------------------------------------------------------------------------
  # ● クリア
  #--------------------------------------------------------------------------
  def clear
    # 求められた行数分のビットマップをクリア
    for i in 0...@index
      @sprite.bitmap = nil
    end
  end
  #--------------------------------------------------------------------------
  # ● セットテキスト
  #    number : 求められた数値
  #    collar : 求められたカラーインデックス
  #--------------------------------------------------------------------------
  def set_text(number, collar = 0)
    # 求められた文字を一文字ずつ配列にする
    text = number.to_s.split(//)
    # クリア行数
    clear_index = text.size == 1 ? 1 : 0
    # X座標を調整する
    x_size = @index - text.size
    # 求められた行数分繰り返す
    for i in 0...@index
      # クリア行数が0で求められた数字が0か、
      # 元の数字が存在しなければなら次へ
      if clear_index == 0 && text.to_i == 0 ||
        text == nil
        @sprite.bitmap = nil
        next
      end
      # X座標を調整する(右寄せ)
      @sprite.x = @x.to_i + (i * @width) + (x_size * @width)
      # 条件をクリアしていれば、クリア行数に1を加算
      clear_index += 1
      # 条件をクリアしていれば描写
      @sprite.bitmap = @picture_number[collar][text.to_i]
    end
  end
  #--------------------------------------------------------------------------
  # ● ストリングポップ
  #    string : 求められた文字列のピクチャーの名前
  #    x_plus : 外部からのX座標の調整用
  #    y_plus : 外部からのY座標の調整用
  #--------------------------------------------------------------------------
  def string_pop(string = "", x_plus = 0, y_plus = 0)
    # 画像を読み込む(空文字の場合は無視)
    if string != ""
      @string = RPG::Cache.picture(string)
    end
    # @string が nil なら処理を終了
    return if @string == nil
    # 配列の nil をなくす
    @string_pop_sprite.compact!
    @string_pop_duration.compact!
    # ストリングポップを解放(解放されている場合は無視)
    dispose_string_pop
    # スプライトを生成
    string_pop_sprite = Sprite.new
    # 幅を代入
    width = @string.rect.width
    # 高さを代入
    height = @string.rect.height
    # 画像の幅と高さからビットマップを生成
    string_pop_sprite.bitmap = Bitmap.new(width, height)
    # 画像を実際に描写
    string_pop_sprite.bitmap.blt(0, 0, @string, @string.rect)
    # 座標データを代入
    string_pop_sprite.x = @x.to_i + x_plus
    string_pop_sprite.y = @y.to_i + y_plus
    string_pop_sprite.z = 999
    # 配列の先頭にシフト
    @string_pop_sprite.unshift(string_pop_sprite)
    @string_pop_duration.unshift(40)      
  end
  #--------------------------------------------------------------------------
  # ● ストリングポップ解放
  #    index : 求められたインデックス
  #--------------------------------------------------------------------------
  def dispose_string_pop(index = nil)
    # インデックスが nil なら処理を中断
    if index == nil
      return
    end
    # インデックスが -1 なら全て解放する
    if index == -1
      # for 文を使って1つずつ処理
      for id in 0...@string_pop_sprite.size
        # IDが0以上でそこにスプライトが存在すれば解放
        if id >= 0 && @string_pop_sprite[id]
          @string_pop_sprite[id].bitmap.dispose
          @string_pop_sprite[id].dispose
          @string_pop_sprite[id] = nil
          @string_pop_duration[id] = nil
        end
      end
    else
      # インデックスが0以上でそこにスプライトが存在すれば解放
      if index >= 0 && @string_pop_sprite[index]
        @string_pop_sprite[index].bitmap.dispose
        @string_pop_sprite[index].dispose
        @string_pop_sprite[index] = nil
        @string_pop_duration[index] = nil
      end
    end
  end
  #--------------------------------------------------------------------------
  # ● フレーム更新
  #--------------------------------------------------------------------------
  def update
    # 1つでもストリングポップが表示中の場合
    if @string_pop_sprite.size > 0
      # 表示中のストリングポップを1つずつ処理する
      for i in 0...@string_pop_sprite.size
        # ストリングポップを代入
        string = @string_pop_sprite
        # カウントが0の場合
        if @string_pop_duration == 0
          # ストリングポップを解放
          dispose_string_pop(i)
          # 次の処理へ
          next
        end
        # カウントを減らす
        @string_pop_duration -= 1
        # 残りカウントに応じて分岐
        case @string_pop_duration
        when 36..39
          string.y -= 4
        when 33..37
          string.y -= 2
        when 32..34
          string.y += 2
        when 25..32
          string.y += 4
        end
        # 透明度をカウントに応じて下げる
        string.opacity = 256 - (12 - @string_pop_duration) * 32
      end
      # 配列の nil を無くす
      @string_pop_sprite.compact!
      @string_pop_duration.compact!
    end
  end
  #--------------------------------------------------------------------------
  # ● 解放
  #--------------------------------------------------------------------------
  def dispose
    # スプライトを解放
    for s in @sprite
      s.dispose      
      s = nil
    end
    # ストリングポップを全て解放
    dispose_string_pop(-1)
  end
end

   提示:你可以先修改部分代码再运行



十分感谢,与想象的出入较大,原以为是DC,失望——
纵然千里外,我等雁归来。
回复 支持 反对

使用道具 举报

Lv1.梦旅人

本尊<

梦石
0
星屑
50
在线时间
2 小时
注册时间
2006-11-21
帖子
799

贵宾

18
发表于 2007-9-6 05:48:43 | 只看该作者
以下引用柳之一于2007-9-5 11:35:35的发言:


你的RM是正版么?

哈哈,真经典,看来以后拆66的脚本,再也不需要申请拉,有什么拿什么用。你的游戏也不例外,哈哈。
这么多年66的脚本本来就是免费发放的
黑羽毛
回复 支持 反对

使用道具 举报

Lv1.梦旅人

梦石
0
星屑
55
在线时间
0 小时
注册时间
2007-8-10
帖子
399
19
发表于 2007-9-6 06:04:02 | 只看该作者
版权是个很重要的问题,Kaze注意下。
其实我也是对那个高速数字描绘感兴趣,同样失望下。
少跟我装神秘,你当你是夜神月?
回复 支持 反对

使用道具 举报

Lv1.梦旅人

梦石
0
星屑
50
在线时间
23 小时
注册时间
2007-6-4
帖子
46
20
发表于 2007-12-15 20:03:12 | 只看该作者
我下不了啊,真郁闷!看到好东西却下不了!{/ll}
回复 支持 反对

使用道具 举报

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

本版积分规则

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

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

GMT+8, 2024-4-26 14:47

Powered by Discuz! X3.1

© 2001-2013 Comsenz Inc.

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