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

Project1

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

[已经过期] 【立ち絵表示】立绘脚本求助~~~

[复制链接]

Lv1.梦旅人

梦石
0
星屑
48
在线时间
331 小时
注册时间
2012-5-4
帖子
158
跳转到指定楼层
1
 楼主| 发表于 2013-1-30 22:32:59 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式

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

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

x
本帖最后由 wshzya 于 2013-1-31 11:04 编辑

RT,
第212行发生NoMethodError。
undefined method 'width' for NilClass.
大部分立绘都能正常显示,但有些出错,改名了也不行的样子。发好人卡求援~~~
脚本在此:
  1. #===========================================================================
  2. # ◆ A1 Scripts ◆
  3. #    立ち絵表示(RGSS3)
  4. #
  5. # バージョン   : 1.10 (2011/12/15)
  6. # 作者         : A1
  7. # URL     : http://a1tktk.web.fc2.com/
  8. #---------------------------------------------------------------------------
  9. # 機能:
  10. # ・「ピクチャの表示」などを使わなくても立ち絵を表示・非表示・移動します
  11. #---------------------------------------------------------------------------
  12. # 更新履歴   :2011/12/15 Ver1.00 リリース
  13. #---------------------------------------------------------------------------
  14. # 設置場所      
  15. #  RGSS3用A1共通スクリプトより下
  16. #    (ネームウィンドウ以下)
  17. #
  18. # 必要スクリプト
  19. #    RGSS3用A1共通処理
  20. #---------------------------------------------------------------------------
  21. # 使い方
  22. #  顔グラフィックに対応した立ち絵を
  23. #  Picturesフォルダにインポートすれば機能します
  24. #
  25. #  対応する立ち絵のファイル名は
  26. #  [顔グラフィックファイル名]_[顔グラフィックスインデックス]_[0 or 1]
  27. #  
  28. #  例:顔グラフィック Actor1 のIndex 0 (ラルフ) の場合
  29. #    Actor1_0_0 が対応立ち絵になります
  30. #    Actor1_0_1 があれば口パクします
  31. #
  32. #  立ち絵表示フラグをOnにすると、立ち絵が表示されるようになります
  33. #  立ち絵表示フラグの番号は設定項目で設定できます
  34. #
  35. # 名前の置き換え
  36. #  設定項目の「名前の置き換え」を設定することで
  37. #  顔グラフィックファイル名と、表示する立ちグラフィックの関連付けができます
  38. #
  39. #  例1(1つの顔グラフィックファイルを複数キャラで使用する場合)
  40. #   "Actor1"  =>  [["ラルフ",0],["アリシア",0],nil,nil,
  41. #                    nil,         nil,          nil,nil],
  42. #
  43. #   顔グラフィックファイル「Actor1」のIndex0を表示した際
  44. #   ラルフ_0_0 が対応立ち絵になります
  45. #   ラルフ_0_1 があれば口パクします
  46. #
  47. #   「Actor1」のIndex1を表示した際は
  48. #   アリシア_0_0 が対応立ち絵になります
  49. #   アリシア_0_1 があれば口パクします
  50. #
  51. #  例2(複数の顔グラフィックファイルを1キャラで使用する場合)
  52. #   "ラルフ"     => [["ラルフ",0]]  (省略可能)
  53. #   "ラルフ_ex"  => [["ラルフ",1]]
  54. #
  55. #   顔グラフィックファイル「ラルフ」「ラルフ_ex」に対応した
  56. #   全ての立ち絵を、「ラルフ」の立ち絵として扱います
  57. #---------------------------------------------------------------------------
  58. # 追加文章中コマンド
  59. #
  60. #  \TURN[direction]              立ち絵を左右反転させます
  61. #                                direction = 向きを指定します (L or R)
  62. #
  63. #                                L : 元の立ち絵を反転させます
  64. #                                R : 反転を元の立ち絵に戻します
  65. #                                使用例:\TURN[L]
  66. #
  67. #  \RETURN[duration]             立ち絵を所定の位置に戻します
  68. #                                duration = 移動完了までの時間(フレーム)
  69. #
  70. #  \ERASE                        立ち絵を消去します
  71. #
  72. #  \SHOW                         消去した立ち絵を表示させます
  73. #
  74. #  \TONE[duration,red,green,blue,gray]
  75. #                                立ち絵の色調を変更します
  76. #                                duration = 色調変更完了までの時間(フレーム)
  77. #                                red      = 色調の赤要素
  78. #                                green    = 色調の緑要素
  79. #                                blue     = 色調の青要素
  80. #                                gray     = 色調のグレー要素(省略可)
  81. #
  82. #  \MV[x,y,duration]             立ち絵を移動します(絶対座標)
  83. #                                x        = 移動先のx座標
  84. #                                y        = 移動先のy座標
  85. #                                duration = 移動完了までの時間(フレーム)
  86. #
  87. #  \MVA[x,y,duration]            立ち絵を移動します(相対座標)
  88. #                                x        = x方向の移動距離
  89. #                                y        = y方向の移動距離
  90. #                                duration = 移動完了までの時間(フレーム)
  91. #
  92. #  \OP[opacity,duration]         立ち絵の透明度を変更します
  93. #                                opacity  = 透明度
  94. #                                duration = 透明度変更完了までの時間(フレーム)
  95. #
  96. #
  97. #  \BYE[direction,duration]      立ち絵を画面外に移動させます
  98. #                                direction = 向きを指定します (L or R or D)
  99. #                                duration  = 移動完了までの時間(フレーム)
  100. #
  101. #                                L : 画面左に退場します
  102. #                                R : 画面右に退場します
  103. #                                D : 画面下に退場します
  104. #                                使用例:\BYE[L,60]
  105. #==============================================================================
  106. $imported ||= {}
  107. $imported["A1_Stand_Picture"] = true
  108. if $imported["A1_Common_Script"]
  109. #==============================================================================
  110. # ■ 設定項目
  111. #==============================================================================
  112. module A1_System::StandPicture
  113.   
  114.   # 名前の置き換え
  115.   NAME_CHANGE = {
  116.   
  117.     "Actor1"  =>  [["ラルフ",0],["アリシア",0],nil,nil,
  118.                     nil,         nil,          nil,nil],
  119.   }
  120.   
  121. end
  122. #==============================================================================
  123. # ■ Window_Message
  124. #------------------------------------------------------------------------------
  125. #  文章表示に使うメッセージウィンドウです。
  126. #==============================================================================

  127. class Window_Message < Window_Base
  128.   #--------------------------------------------------------------------------
  129.   # ○ 定数
  130.   #--------------------------------------------------------------------------
  131.   LEFT  = 0
  132.   RIGHT = 1
  133.   BYE_DURATION = 30
  134.   MOVE_DURATION = 30
  135.   #--------------------------------------------------------------------------
  136.   # ☆ オブジェクト初期化
  137.   #--------------------------------------------------------------------------
  138.   alias a1_stand_picture_window_message_initialize initialize
  139.   def initialize
  140.     @stand_pic = {}
  141.     @show_pos = []
  142.     @prev_name = ""
  143.     @pre_message = false
  144.     a1_stand_picture_window_message_initialize
  145.   end
  146.   #--------------------------------------------------------------------------
  147.   # ☆ 改ページ処理
  148.   #--------------------------------------------------------------------------
  149.   alias a1_stand_picture_window_message_new_page new_page
  150.   def new_page(text, pos)
  151.    
  152.     file_name = $game_message.face_name
  153.     file_index = $game_message.face_index
  154.    
  155.     file_info = find_name(file_name, file_index)
  156.     name = file_info[0]
  157.     index = file_info[1]
  158.    
  159.     # 顔グラフィックがない
  160.     if name.empty?
  161.       
  162.       # 従来の改ページ処理
  163.       a1_stand_picture_window_message_new_page(text, pos)
  164.       return
  165.       
  166.     # 顔グラフィックがある
  167.     else
  168.       
  169.       # 立ち絵作成(新顔なら表示)
  170.       new_face = false
  171.       new_face = create_stand_pic(file_name, name, index) if @stand_pic[name] == nil
  172.       
  173.       # 立ち絵がない
  174.       unless stand_pic_enable?(name)
  175.         
  176.         # 従来の改ページ処理
  177.         a1_stand_picture_window_message_new_page(text, pos)
  178.         return
  179.       end
  180.     end
  181.    
  182.     unless new_face
  183.       if show_pos(name) > -1
  184.         # 顔グラフィック変更
  185.         @stand_pic[name].change_face(file_name, index)
  186.         
  187.       elsif @show_pos.size == 2
  188.         change_character(file_name, name, index)
  189.         
  190.       else
  191.         create_stand_pic(file_name, name, index)
  192.       end
  193.     end
  194.     # 顔グラフィックスを一度emptyにする
  195.     $game_message.face_name = "" if @stand_pic[name].enable_bitmap?(index)
  196.     # 従来の改ページ処理
  197.     a1_stand_picture_window_message_new_page(text, pos)
  198.     # 顔グラフィックスを戻す
  199.     $game_message.face_name = file_name
  200.     # 直前に話した名前を入れる
  201.     @prev_name = name
  202.    
  203.     if $imported["A1_Name_Window"]
  204.       
  205.       pos = show_pos(name)
  206.       
  207.       unless stand_pic_enable?(name)
  208.         show_name_window(file_name, file_index, 0)
  209.         
  210.       else
  211.         bitmap_width = @stand_pic[name].pic_sprite.bitmap.width
  212.         
  213.         x = bitmap_width / 2 if pos == 0
  214.         x = Graphics.width - bitmap_width / 2 if pos == 1
  215.         
  216.         show_name_window(file_name, file_index, x, 0)
  217.       end
  218.     end
  219.   end
  220.   #--------------------------------------------------------------------------
  221.   # ☆ 改行処理
  222.   #--------------------------------------------------------------------------
  223.   alias a1_stand_picture_window_message_new_line_x new_line_x
  224.   def new_line_x
  225.    
  226.     file_name = $game_message.face_name
  227.     file_index = $game_message.face_index
  228.    
  229.     file_info = find_name(file_name, file_index)
  230.     name = file_info[0]
  231.     index = file_info[1]
  232.    
  233.     # 顔グラフィックがない
  234.     if name.empty?
  235.       
  236.       # 従来の改行処理
  237.       return a1_stand_picture_window_message_new_line_x
  238.     end
  239.    
  240.     # 立ち絵がない
  241.     unless stand_pic_enable?(name)
  242.       
  243.       # 従来の改行処理
  244.       return a1_stand_picture_window_message_new_line_x
  245.     end
  246.    
  247.     # 顔グラフィックスを一度emptyにする
  248.     $game_message.face_name = "" if @stand_pic[name].enable_bitmap?(index)
  249.     # 従来の改行処理
  250.     ret = a1_stand_picture_window_message_new_line_x
  251.     # 顔グラフィックスを戻す
  252.     $game_message.face_name = file_name
  253.    
  254.     return ret
  255.   end
  256.   #--------------------------------------------------------------------------
  257.   # ○ 立ち絵作成
  258.   #--------------------------------------------------------------------------
  259.   def create_stand_pic(file_name, name, index, duration = MOVE_DURATION)
  260.    
  261.     @stand_pic[name] = Game_StandPic.new(name, index)
  262.    
  263.     return if @stand_pic[name].pic_sprite == nil
  264.     return unless $game_system.show_stand_picture
  265.    
  266.     if @show_pos.size == 0
  267.       pos = LEFT
  268.       @show_pos[0] = name
  269.       
  270.     elsif @show_pos.size == 1
  271.       pos = RIGHT
  272.       @show_pos[1] = name
  273.    
  274.     else
  275.       change_character(file_name, name, index)
  276.       return true
  277.     end
  278.    
  279.     @stand_pic[name].show(file_name, pos,index, duration)
  280.     return true
  281.    
  282.   end
  283.   #--------------------------------------------------------------------------
  284.   # ○ 表示する立ち絵の変更
  285.   #--------------------------------------------------------------------------
  286.   def change_character(file_name, name, index, duration = MOVE_DURATION)
  287.    
  288.     return if @stand_pic[name].pic_sprite == nil
  289.     return unless $game_system.show_stand_picture
  290.    
  291.     no_index = no_prev_index
  292.     no_prev_name = @show_pos[no_index]
  293.    
  294.     case no_index
  295.     when 0
  296.       @stand_pic[no_prev_name].bye("L",BYE_DURATION) if stand_pic_enable?(no_prev_name)
  297.       pos = LEFT
  298.       @show_pos[0] = name
  299.       
  300.     when 1
  301.       @stand_pic[no_prev_name].bye("R",BYE_DURATION) if stand_pic_enable?(no_prev_name)
  302.       pos = RIGHT
  303.       @show_pos[1] = name
  304.     end
  305.     @stand_pic[name].show(file_name, pos,index, duration) if stand_pic_enable?(name)
  306.   end
  307.   #--------------------------------------------------------------------------
  308.   # ○ 直前に話していないIndexを取得
  309.   #--------------------------------------------------------------------------
  310.   def no_prev_index
  311.     return 0 if @show_pos[0] != @prev_name
  312.     return 1 if @show_pos[1] != @prev_name
  313.   end
  314.   #--------------------------------------------------------------------------
  315.   # ○ 表示されているか調べる
  316.   #--------------------------------------------------------------------------
  317.   def show_pos(name)
  318.     return 0 if @show_pos[0] == name
  319.     return 1 if @show_pos[1] == name
  320.     return -1
  321.   end
  322.   #--------------------------------------------------------------------------
  323.   # ☆ フレーム更新
  324.   #--------------------------------------------------------------------------
  325.   alias a1_stand_pic_window_message_update update
  326.   def update
  327.     update_stand_pic
  328.     a1_stand_pic_window_message_update
  329.   end
  330.   #--------------------------------------------------------------------------
  331.   # ○ 立ち絵のアップデート
  332.   #--------------------------------------------------------------------------
  333.   def update_stand_pic
  334.     for name in @stand_pic.keys
  335.       @stand_pic[name].update
  336.     end
  337.   end
  338.   #--------------------------------------------------------------------------
  339.   # ○ 文章のチェック
  340.   #--------------------------------------------------------------------------
  341.   alias a1_stand_pic_wm_chk_text chk_text
  342.   def chk_text(text)
  343.     text.gsub!(/\eERASE/,"")
  344.     text.gsub!(/\eSHOW/,"")
  345.     return a1_stand_pic_wm_chk_text(text)
  346.   end
  347.   #--------------------------------------------------------------------------
  348.   # ☆ 制御文字の処理
  349.   #     code : 制御文字の本体部分(「\C[1]」なら「C」)
  350.   #     text : 描画処理中の文字列バッファ(必要なら破壊的に変更)
  351.   #     pos  : 描画位置 {:x, :y, :new_x, :height}
  352.   #--------------------------------------------------------------------------
  353.   alias a1_stand_pic_wm_process_escape_character process_escape_character
  354.   def process_escape_character(code, text, pos)
  355.    
  356.     file_name = $game_message.face_name
  357.     file_index = $game_message.face_index
  358.    
  359.     file_info = find_name(file_name, file_index)
  360.     name = file_info[0]
  361.     index = file_info[1]
  362.    
  363.     case code.upcase
  364.     when 'TURN'
  365.       text.slice!(/\[(.)\]/) rescue 0
  366.       if stand_bitmap_enable?(name, index)
  367.         case $1
  368.         when 'L'
  369.           @stand_pic[name].pic_sprite.mirror = true
  370.         when 'R'
  371.           @stand_pic[name].pic_sprite.mirror = false
  372.         end
  373.       end
  374.       return true
  375.       
  376.     when 'RETURN'
  377.       text.slice!(/\[(\d+)\]/) rescue 0
  378.       if stand_bitmap_enable?(name, index)
  379.         index = show_pos(name)
  380.         return if index == -1
  381.         duration = $1.to_i
  382.         @stand_pic[name].return_pos(index, duration)
  383.       end
  384.       
  385.     when 'SHOW'
  386.       if stand_bitmap_enable?(name, index)
  387.         return if @stand_pic[name].pic_sprite == nil or name.empty?
  388.         @stand_pic[name].pic_sprite.visible = true
  389.       end
  390.       
  391.     when 'ERASE'
  392.       if stand_bitmap_enable?(name, index)
  393.         return if @stand_pic[name].pic_sprite == nil or name.empty?
  394.         @stand_pic[name].pic_sprite.visible = false
  395.       end
  396.       
  397.     when 'TONE'
  398.       text.slice!(/\[(.+)\]/) rescue 0
  399.       if stand_bitmap_enable?(name, index)
  400.         params = $1.to_s.split(",")
  401.         duration = params[0].to_i
  402.         red   = $a1_common.minus_to_i(params[1])
  403.         green = $a1_common.minus_to_i(params[2])
  404.         blue  = $a1_common.minus_to_i(params[3])
  405.         gray  = $a1_common.minus_to_i(params[4]) unless params[4] == nil
  406.         if gray == nil
  407.           tone = Tone.new(red, green, blue)
  408.         else
  409.           tone = Tone.new(red, green, blue, gray)
  410.         end
  411.         @stand_pic[name].start_tone_change(tone, duration)
  412.       end
  413.       
  414.     when 'MV'
  415.       text.slice!(/\[([-]*\d+)[,]([-]*\d+)[,](\d+)\]/) rescue 0
  416.       if stand_bitmap_enable?(name, index)
  417.         x = $a1_common.minus_to_i($1)
  418.         y = $a1_common.minus_to_i($2)
  419.         duration = $3.to_i
  420.         @stand_pic[name].move(x, y, duration)
  421.       end
  422.       
  423.     when 'MVA'
  424.       text.slice!(/\[([-]*\d+)[,]([-]*\d+)[,](\d+)\]/) rescue 0
  425.       if stand_bitmap_enable?(name, index)
  426.         x = $a1_common.minus_to_i($1)
  427.         y = $a1_common.minus_to_i($2)
  428.         duration = $3.to_i
  429.         @stand_pic[name].move_plus(x, y, duration)
  430.       end
  431.       
  432.     when 'OP'
  433.       text.slice!(/\[(\d+)[,](\d+)\]/) rescue 0
  434.       if stand_bitmap_enable?(name, index)
  435.         @stand_pic[name].change_opacity($1.to_i,$2.to_i)
  436.       end
  437.       
  438.     when 'BYE'
  439.       text.slice!(/^\[(.)[,](\d+)\]/) rescue 0
  440.       if stand_bitmap_enable?(name, index)
  441.         @show_pos.delete_at(show_pos(name))
  442.         @stand_pic[name].bye($1,$2.to_i)
  443.       end
  444.       
  445.     else
  446.       a1_stand_pic_wm_process_escape_character(code, text, pos)
  447.     end
  448.   end
  449.   #--------------------------------------------------------------------------
  450.   # ☆ 通常文字の処理
  451.   #--------------------------------------------------------------------------
  452.   alias a1_stand_pic_wm_process_normal_character process_normal_character
  453.   def process_normal_character(c, pos)
  454.    
  455.     file_name = $game_message.face_name
  456.     file_index = $game_message.face_index
  457.    
  458.     file_info = find_name(file_name, file_index)
  459.     name = file_info[0]
  460.     index = file_info[1]
  461.    
  462.     if stand_bitmap_enable?(name, index)
  463.       @stand_pic[name].mouth_move
  464.     end
  465.     a1_stand_pic_wm_process_normal_character(c, pos)
  466.   end
  467.   #--------------------------------------------------------------------------
  468.   # ○ 立ち絵が有効?
  469.   #--------------------------------------------------------------------------
  470.   def stand_pic_enable?(name)
  471.     return false if name.empty?
  472.     return false if @stand_pic[name] == nil
  473.     return false if @stand_pic[name].pic_sprite == nil
  474.     return false unless $game_system.show_stand_picture
  475.     return true
  476.   end
  477.   #--------------------------------------------------------------------------
  478.   # ○ ビットマップが有効?
  479.   #--------------------------------------------------------------------------
  480.   def stand_bitmap_enable?(name, index)
  481.     return false if name.empty?
  482.     return false if @stand_pic[name].pic_sprite == nil
  483.     return false unless @stand_pic[name].enable_bitmap?(index)
  484.     return false unless $game_system.show_stand_picture
  485.     return true
  486.   end
  487.   #--------------------------------------------------------------------------
  488.   # ☆ 解放
  489.   #--------------------------------------------------------------------------
  490.   alias a1_stand_pic_window_message_dispose dispose
  491.   def dispose
  492.     a1_stand_pic_window_message_dispose
  493.     dispose_stand_picture
  494.   end
  495.   #--------------------------------------------------------------------------
  496.   # ○ 立ち絵の解放
  497.   #--------------------------------------------------------------------------
  498.   def dispose_stand_picture
  499.     for name in @stand_pic.keys
  500.       @stand_pic[name].erase
  501.     end
  502.   end
  503.   #--------------------------------------------------------------------------
  504.   # ○ 名前の検索
  505.   #--------------------------------------------------------------------------
  506.   def find_name(filename, fileindex)
  507.     list = A1_System::StandPicture::NAME_CHANGE[filename]
  508.     return [filename,fileindex] if list == nil
  509.    
  510.     if list.size == 1
  511.       info = list[0]
  512.       return [info[0],info[1]*8+fileindex]
  513.     end
  514.    
  515.     return [filename,fileindex] if list[fileindex] == nil
  516.     return list[fileindex]
  517.   end
  518. end
  519. #==============================================================================
  520. # ■ Game_StandPic
  521. #==============================================================================

  522. class Game_StandPic
  523.   #--------------------------------------------------------------------------
  524.   # ○ 定数
  525.   #--------------------------------------------------------------------------
  526.   LEFT  = 0
  527.   RIGHT = 1
  528.   MOVE_DURATION = 30
  529.   MOUTH_MOVE_DURATION = 4
  530.   #--------------------------------------------------------------------------
  531.   # ● 公開インスタンス変数
  532.   #--------------------------------------------------------------------------
  533.   attr_reader   :x                        # X 座標
  534.   attr_reader   :y                        # Y 座標
  535.   attr_reader   :opacity                  # 不透明度
  536.   attr_reader   :tone                     # 色調
  537.   attr_reader   :mirror                   # 左右反転
  538.   attr_reader   :pic_sprite               # スプライト
  539.   attr_reader   :bitmap                   # ビットマップの配列
  540.   #--------------------------------------------------------------------------
  541.   # ● オブジェクト初期化
  542.   #     number : ピクチャ番号
  543.   #--------------------------------------------------------------------------
  544.   def initialize(name, index)
  545.     @name = name
  546.     @duration = 0
  547.     @target_opacity = 255.0
  548.     @tone = Tone.new(0, 0, 0, 0)
  549.     @tone_target = Tone.new(0, 0, 0, 0)
  550.     @tone_duration = 0
  551.     [url=home.php?mod=space&uid=111303]@mirror[/url] = false
  552.     @pic_sprite = nil
  553.    
  554.     @face_index = 0
  555.     @mouth_index = 0
  556.     @mouth_move_duration = 0
  557.     @pos = -1
  558.    
  559.     @bitmap = []
  560.     @bitmap_test = []
  561.     plus = (index / 8) * 8
  562.     create_bitmap(name, plus)
  563.    
  564.     @pic_sprite = create_sprite if @bitmap.size > 0
  565.   end
  566.   #--------------------------------------------------------------------------
  567.   # ● スプライトの作成
  568.   #--------------------------------------------------------------------------
  569.   def create_sprite
  570.     pic_sprite = Sprite.new
  571.     pic_sprite.visible = false
  572.     return pic_sprite
  573.   end
  574.   #--------------------------------------------------------------------------
  575.   # ● ビットマップの作成
  576.   #--------------------------------------------------------------------------
  577.   def create_bitmap(name, plus = 0)
  578.    
  579.     file = sprintf("Graphics/Pictures/%s",name)
  580.    
  581.     Dir::glob(sprintf("%s*.*",file)).each {|f|
  582.    
  583.       next unless f =~ /#{file}_(\d+)_(\d+)/i
  584.       next unless FileTest.file?(f)
  585.       next unless file_ext(f)
  586.       
  587.       index = $1.to_i + plus
  588.       
  589.       @bitmap[index] = [] if @bitmap[index] == nil
  590.       file_name = File.basename(f,".*")
  591.       @bitmap[index][$2.to_i] = Cache.picture(file_name)
  592.       @bitmap_test[index] = true
  593.     }
  594.   end
  595.   #--------------------------------------------------------------------------
  596.   # ● 拡張子を調べる
  597.   #--------------------------------------------------------------------------
  598.   def file_ext(f)
  599.     return true if File::extname(f) == ".png"
  600.     return true if File::extname(f) == ".bmp"
  601.     return false
  602.   end
  603.   #--------------------------------------------------------------------------
  604.   # ● ビットマップの存在を調べる
  605.   #--------------------------------------------------------------------------
  606.   def enable_bitmap?(index)
  607.     return false if @bitmap[index] == nil
  608.     return true
  609.   end
  610.   #--------------------------------------------------------------------------
  611.   # ● 代替ビットマップの検索
  612.   #--------------------------------------------------------------------------
  613.   def search_bitmap
  614.     for bitmap in @bitmap
  615.       next if bitmap == nil
  616.       return bitmap[0]
  617.     end
  618.   end
  619.   #--------------------------------------------------------------------------
  620.   # ● ピクチャの表示
  621.   #--------------------------------------------------------------------------
  622.   def show(file_name, pos, index, duration, opacity = 255)
  623.    
  624.     @face_index = index
  625.     @pos = pos
  626.    
  627.     if @bitmap[@face_index] == nil and @bitmap_test[@face_index] != true
  628.       plus = (@face_index / 8) * 8
  629.       create_bitmap(file_name, plus)
  630.     end
  631.    
  632.     if @bitmap[@face_index] == nil or $game_system.show_stand_picture == false
  633.       @pic_sprite.bitmap = nil
  634.       @pic_sprite.visible = false
  635.       bitmap = search_bitmap
  636.     else
  637.       @pic_sprite.visible = true
  638.       @pic_sprite.bitmap = @bitmap[@face_index][0]
  639.       bitmap = @pic_sprite.bitmap
  640.     end
  641.    
  642.     fix_pos(pos, duration, bitmap, opacity)
  643.    
  644.     return true
  645.   end
  646.   #--------------------------------------------------------------------------
  647.   # ● 場所確定
  648.   #--------------------------------------------------------------------------
  649.   def fix_pos(pos, duration, bitmap, opacity)
  650.     case pos
  651.     when LEFT
  652.       @pic_sprite.x = (0 - bitmap.width).to_f
  653.       @target_x = 0.0
  654.       @duration = duration
  655.       @pic_sprite.mirror = false
  656.       
  657.     when RIGHT
  658.       @pic_sprite.x = Graphics.width.to_f
  659.       @target_x = (Graphics.width - bitmap.width).to_f
  660.       @duration = duration
  661.       @pic_sprite.mirror = true
  662.     end
  663.    
  664.     @pic_sprite.opacity = opacity.to_f
  665.     @pic_sprite.visible = true
  666.    
  667.     @pic_sprite.y = (Graphics.height - bitmap.height).to_f
  668.     @target_y = @pic_sprite.y
  669.   end
  670.   #--------------------------------------------------------------------------
  671.   # ● 定位置に戻る
  672.   #--------------------------------------------------------------------------
  673.   def return_pos(pos, duration)
  674.     case pos
  675.     when LEFT
  676.       @target_x = 0.0
  677.       @duration = duration
  678.       @pic_sprite.mirror = false
  679.       
  680.     when RIGHT
  681.       @target_x = (Graphics.width - @pic_sprite.bitmap.width).to_f
  682.       @duration = duration
  683.       @pic_sprite.mirror = true
  684.     end
  685.     @target_y = (Graphics.height - @pic_sprite.bitmap.height).to_f
  686.   end
  687.   #--------------------------------------------------------------------------
  688.   # ● 顔変更
  689.   #--------------------------------------------------------------------------
  690.   def change_face(name, index)
  691.     @face_index = index
  692.    
  693.     if @bitmap[@face_index] == nil and @bitmap_test[@face_index] != true
  694.       plus = (@face_index / 8) * 8
  695.       create_bitmap(name, plus)
  696.     end
  697.    
  698.     if @bitmap[@face_index] == nil or $game_system.show_stand_picture == false
  699.       @pic_sprite.bitmap = nil
  700.       @pic_sprite.visible = false
  701.       
  702.     else
  703.       @pic_sprite.bitmap = @bitmap[@face_index][0]
  704.       case @pos
  705.       when LEFT
  706.         @pic_sprite.x = 0.0
  707.         
  708.       when RIGHT
  709.         @pic_sprite.x = (Graphics.width - @pic_sprite.bitmap.width).to_f
  710.       end
  711.       @pic_sprite.y = (Graphics.height - @pic_sprite.bitmap.height).to_f
  712.       @target_x = @pic_sprite.x
  713.       @target_y = @pic_sprite.y
  714.       
  715.       @pic_sprite.visible = true
  716.     end
  717.   end
  718.   #--------------------------------------------------------------------------
  719.   # ● 口パク
  720.   #--------------------------------------------------------------------------
  721.   def mouth_move
  722.    
  723.     return if @mouth_move_duration > 0
  724.     return if bitmap[@face_index] == nil
  725.     return if bitmap[@face_index].size == 1
  726.    
  727.     @mouth_move_duration = MOUTH_MOVE_DURATION
  728.    
  729.     if @mouth_index == 0 and bitmap[@face_index][1] != nil
  730.       @mouth_index = 1
  731.     elsif @mouth_index == 1
  732.       @mouth_index = 0
  733.     end
  734.     @pic_sprite.bitmap = bitmap[@face_index][@mouth_index]
  735.   end
  736.   #--------------------------------------------------------------------------
  737.   # ● ピクチャの移動
  738.   #--------------------------------------------------------------------------
  739.   def move(x, y, duration)
  740.     @target_x = x
  741.     @target_y = y
  742.     @duration = duration
  743.   end
  744.   #--------------------------------------------------------------------------
  745.   # ● 透明度変更
  746.   #--------------------------------------------------------------------------
  747.   def change_opacity(opacity, duration)
  748.     @target_opacity = opacity
  749.     @duration = duration
  750.   end
  751.   #--------------------------------------------------------------------------
  752.   # ● 相対移動
  753.   #--------------------------------------------------------------------------
  754.   def move_plus(x, y, duration)
  755.     @target_x = @pic_sprite.x + x
  756.     @target_y = @pic_sprite.y + y
  757.     @duration = duration
  758.   end
  759.   #--------------------------------------------------------------------------
  760.   # ● 退場
  761.   #--------------------------------------------------------------------------
  762.   def bye(direction, duration)
  763.    
  764.     return if @pic_sprite.bitmap == nil
  765.    
  766.     case direction
  767.     when "D"
  768.       @target_y = Graphics.height
  769.     when "R"
  770.       @target_x = Graphics.width
  771.     when "L"
  772.       @target_x = 0 - @pic_sprite.bitmap.width
  773.     end
  774.     @duration = duration
  775.   end
  776.   #--------------------------------------------------------------------------
  777.   # ● 色調変更の開始
  778.   #--------------------------------------------------------------------------
  779.   def start_tone_change(tone, duration)
  780.     @tone_target = tone.clone
  781.     @tone_duration = duration
  782.     if @tone_duration == 0
  783.       @tone = @tone_target.clone
  784.     end
  785.   end
  786.   #--------------------------------------------------------------------------
  787.   # ● ピクチャの消去
  788.   #--------------------------------------------------------------------------
  789.   def erase
  790.    
  791.     for arr in @bitmap
  792.       next if arr == nil
  793.       for bitmap in arr
  794.         next if bitmap == nil
  795.         bitmap.dispose
  796.       end
  797.     end
  798.     @bitmap = nil
  799.    
  800.     return if @pic_sprite == nil
  801.    
  802.     @pic_sprite.dispose
  803.     @pic_sprite = nil
  804.   end
  805.   #--------------------------------------------------------------------------
  806.   # ● フレーム更新
  807.   #--------------------------------------------------------------------------
  808.   def update
  809.    
  810.     return if @pic_sprite == nil
  811.    
  812.     @mouth_move_duration -= 1 if @mouth_move_duration > 0
  813.     if @duration >= 1
  814.       d = @duration
  815.       @pic_sprite.x = (@pic_sprite.x * (d - 1) + @target_x) / d
  816.       @pic_sprite.y = (@pic_sprite.y * (d - 1) + @target_y) / d
  817.       @pic_sprite.opacity = (@pic_sprite.opacity * (d - 1) + @target_opacity) / d
  818.       @duration -= 1
  819.     end
  820.     if @tone_duration >= 1
  821.       d = @tone_duration
  822.       @tone.red = (@tone.red * (d - 1) + @tone_target.red) / d
  823.       @tone.green = (@tone.green * (d - 1) + @tone_target.green) / d
  824.       @tone.blue = (@tone.blue * (d - 1) + @tone_target.blue) / d
  825.       @tone.gray = (@tone.gray * (d - 1) + @tone_target.gray) / d
  826.       @tone_duration -= 1
  827.       @pic_sprite.tone = @tone
  828.     end
  829.   end
  830. end
  831. #==============================================================================
  832. # ■ Game_System
  833. #------------------------------------------------------------------------------
  834. #  システム周りのデータを扱うクラスです。乗り物や BGM などの管理も行います。
  835. # このクラスのインスタンスは $game_system で参照されます。
  836. #==============================================================================

  837. class Game_System
  838.   #--------------------------------------------------------------------------
  839.   # ● 公開インスタンス変数
  840.   #--------------------------------------------------------------------------
  841.   attr_accessor :show_stand_picture                # 立ち絵表示フラグ
  842.   #--------------------------------------------------------------------------
  843.   # ☆ オブジェクト初期化
  844.   #--------------------------------------------------------------------------
  845.   alias a1_stand_picture_game_system_initialize initialize
  846.   def initialize
  847.     a1_stand_picture_game_system_initialize
  848.     @show_stand_picture = false
  849.   end
  850. end
  851. #==============================================================================
  852. # ■ Game_Interpreter
  853. #------------------------------------------------------------------------------
  854. #  イベントコマンドを実行するインタプリタです。このクラスは Game_Map クラス、
  855. # Game_Troop クラス、Game_Event クラスの内部で使用されます。
  856. #==============================================================================

  857. class Game_Interpreter
  858.   
  859.   #--------------------------------------------------------------------------
  860.   # ○ 注釈の処理
  861.   #--------------------------------------------------------------------------
  862.   alias a1_stand_picture_proc_comment_command proc_comment_command
  863.   def proc_comment_command(command, params)
  864.    
  865.     if command == "立ち絵表示"
  866.       case params[0]
  867.       when "on"
  868.         $game_system.show_stand_picture = true
  869.       when "off"
  870.         $game_system.show_stand_picture = false
  871.       end
  872.     else
  873.       a1_stand_picture_proc_comment_command(command, params)
  874.     end
  875.   end
  876. end
  877. end
复制代码

Lv1.梦旅人

梦石
0
星屑
50
在线时间
687 小时
注册时间
2012-10-29
帖子
1543
2
发表于 2013-1-31 06:41:42 | 只看该作者
with?

是不是打错了?width?

212 行没看到有 with 这个字,
修改劇本中,仔細審查原來的劇情大綱,覺得有點不太滿意,嘗試編寫不同主角不同主線的劇情,希望能寫得出來。
回复 支持 反对

使用道具 举报

Lv1.梦旅人

梦石
0
星屑
48
在线时间
331 小时
注册时间
2012-5-4
帖子
158
3
 楼主| 发表于 2013-1-31 11:03:24 | 只看该作者
j433463 发表于 2013-1-31 06:41
with?

是不是打错了?width?

呃…………的确是~~~
回复 支持 反对

使用道具 举报

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

本版积分规则

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

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

GMT+8, 2024-11-18 02:53

Powered by Discuz! X3.1

© 2001-2013 Comsenz Inc.

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