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

Project1

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

[已经解决] 选项和选项之间的距离?和暂时使用普通对话框……

[复制链接]

Lv1.梦旅人

梦石
0
星屑
50
在线时间
122 小时
注册时间
2008-7-3
帖子
724
跳转到指定楼层
1
发表于 2010-6-30 21:19:47 | 只看该作者 |只看大图 回帖奖励 |倒序浏览 |阅读模式

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

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

x
本帖最后由 沙之爱罗 于 2010-7-4 18:19 编辑

我用的是这个脚本……当出现选择项的时候,最后一个选择项文字只能显示一半,而且在一个地图中和某人说话使用了脚本chat,(??,"某人")显示对话:XXOOXXOO,再和一块石头说话他都依然是这个改版后的对话框,无法变回普通的框框……能明白么……
  1. 决定换脚本#==============================================================================
  2. # ++ メッセージふきだし表示 ver. 1.16 ++
  3. #  Script by パラ犬
  4. #  http://rpg.para.s3p.net/
  5. #--
  6. # ふきだし表示をするには、
  7. # テール用画像「(スキン名)-top」「(スキン名)-under」を
  8. # 「Graphics/Windowskins」フォルダにインポートしておく必要があります。
  9. #--
  10. #
  11. # [ふきだし表示の使い方]
  12. # イベントコマンド「スクリプト」で「$mes_id」にイベントIDを代入することで
  13. # そのイベントにふきだしがポップするようになります。
  14. # (記述例: $mes_id=4 )
  15. # IDに-1を代入するとプレイヤー、0でそのイベント自身。
  16. # nilまたは""を代入すると、通常のメッセージ表示に戻ります。
  17. # 表示位置はイベント「文章オプション」で変更できます。
  18. # 表示位置に「中央」を指定すると、イベントの位置に関係なく
  19. # 画面中央に表示されます。
  20. #
  21. # [名前ウインドウの使い方]
  22. # イベントコマンド「スクリプト」で「$mes_name」に文字列を代入することで
  23. # 名前ウインドウを表示します。
  24. # (記述例: $mes_name="アルシェス" )
  25. # ""またはnilを代入すると、非表示になります。
  26. #
  27. # 二つの機能は独立していますので、それぞれ単体で使えます。
  28. #  $mes_id=(ID) + $mes_name="名前"  :ふきだし表示 + 名前ウインドウ
  29. #  $mes_id=(ID) + $mes_name=""      :ふきだし表示 (名前なし)
  30. #  $mes_id=nil + $mes_name="名前"   :デフォルトウインドウ + 名前ウインドウ
  31. #  $mes_id=nil + $mes_name=""       :デフォルトウインドウ (名前なし)
  32. #
  33. # [メッセージ表示スピードの変更法]
  34. # イベントコマンド「スクリプト」で「$mes_speed」に数値を代入します。
  35. # (記述例: $mes_speed=1 )
  36. #==============================================================================
  37. class Game_Temp
  38.   attr_accessor  :namebmp              # 调试画面 保存状态用
  39.   attr_accessor  :map_visible          # 地图的表示状態
  40.   attr_accessor  :run_weapon           # 武器配方   
  41.   alias old_initialize initialize
  42.   def initialize
  43.     old_initialize
  44.     @map_visible = true
  45.     @namebmp ={"新一焦急"=>"gongteng1", "新一怀疑"=>"gongteng2","新一生气"=>"gongteng3","新一"=>"gongteng5",
  46.     "伪娘正常"=>"weiniang1","伪娘惊讶"=>"weiniang2","新一无奈"=>"gongteng4","伪娘自大"=>"weiniang3",
  47.     "伪娘口吃"=>"weiniang4","新一正常"=>"gongteng6","平次高兴"=>"pingcigaoxing","平次生气"=>"pingcishengqi",
  48.     "平次怀疑"=>"pingcihuaiyi","平次正常"=>"pingcizhengchang","平次惊讶"=>"pingcijingya",
  49.     "平次温柔"=>"pingciwenrou"}
  50.     run_weapon = []
  51.   end
  52. end


  53. def chat(id = 0,name = "")
  54.   $mes_id = id
  55.   $mes_name = name
  56. end


  57. module FUKI
  58.   
  59.   # SKINの設定
  60.   FUKI_SKIN_NAME = "fk"   #
  61.   NAME_SKIN_NAME = "fk"   # 名前表示用
  62.   
  63.   MES_FONT_SIZE = 18    #
  64.   NAME_FONT_SIZE = 18   # 名前
  65.   
  66.   #透明度
  67.   FUKI_OPACITY = 255    #
  68.   MES_OPACITY = 255     # 通常の
  69.   NAME_OPACITY = 255    # 名前
  70.   
  71.   # 名前の相対位置
  72.   NAME_SHIFT_X = 0    # 横位置
  73.   NAME_SHIFT_Y = 16   # 縦位置

  74.   # 画面の一番端ではふきだしを少しずらす
  75.   # 角の丸いスキンを使っていて、枠の角がふきだしと重なる場合に true にする
  76.   CORNER_SHIFT = false
  77.   SHIFT_PIXEL = 4   # trueの時にずらすピクセル数
  78.   
  79.   # キャラクターの縦のサイズ
  80.   CHARACTOR_HEIGHT = 48
  81.   # ふきだしの相対位置(縦位置)
  82.   POP_SHIFT_TOP = 0     # 表示位置が上のとき
  83.   POP_SHIFT_UNDER = -16   # 表示位置が下のとき
  84.   
  85.   # メッセージ表示速度(数字が小さいほど速い。0で瞬間表示)
  86.   # $mes_speedに数値を代入することで、ゲーム中に変更可。
  87.   MES_SPEED = 1

  88. end
  89.   
  90. #==============================================================================
  91. # □ Window_FukiMessage
  92. #==============================================================================

  93. class Window_Message < Window_Selectable

  94.   #------------------------------------
  95.   # ○ オブジェクト初期化
  96.   #------------------------------------
  97.   def initialize
  98.     super(80, 304, 480, 160)
  99.     self.contents = Bitmap.new(width - 32, height - 32)
  100.     self.visible = false
  101.     self.z = 9998
  102.     @fade_in = false
  103.     @fade_out = false
  104.     @contents_showing = false
  105.     @cursor_width = 0
  106.     self.active = false
  107.     self.index = -1
  108.     @w = 0
  109.     @h = 0
  110.     @wait = 0
  111.     @dx = 0
  112.     @dy = 0
  113.     $mes_speed = FUKI::MES_SPEED
  114.   end
  115.   #------------------------------------
  116.   # ○ サイズを決定してウインドウを作成
  117.   #------------------------------------
  118.   def refresh_create
  119.     self.contents.clear
  120.     self.contents.font.color = normal_color
  121.     self.contents.font.size = FUKI::MES_FONT_SIZE
  122.     # ウインドウサイズを取得
  123.     get_windowsize
  124.     w = @w + 32 + 8
  125.     h = @h * (self.contents.font.size + 10) + 26
  126.     # ふきだしウインドウを作成
  127.     set_fukidasi(self.x, self.y, w, h)
  128.     # 名前ウインドウを作成
  129.     set_namewindow
  130.     # メッセージ表示用変数の初期化
  131.     @dx = @dy = 0
  132.     @cursor_width = 0
  133.     @contents_drawing = true
  134.     # 瞬間表示の場合、ここで表示処理
  135.     if $mes_speed == 0
  136.       # 描画処理をループ
  137.       while $game_temp.message_text != ""
  138.         draw_massage
  139.       end
  140.       draw_opt_text
  141.       @contents_showing_end = true
  142.       @contents_drawing = false
  143.     else
  144.       # 一文字ずつ描画
  145.       refresh_drawtext
  146.     end
  147.   end
  148.   #------------------------------------
  149.   # ○ 一文字ずつ描画
  150.   #------------------------------------
  151.   def refresh_drawtext
  152.     if $game_temp.message_text != nil
  153.       if @wait > 0
  154.         @wait -= 1
  155.       elsif @wait == 0
  156.         # 描画処理
  157.         draw_massage
  158.         @wait = $mes_speed
  159.       end
  160.     end
  161.     # 描画終了
  162.     if $game_temp.message_text == ""
  163.       draw_opt_text
  164.       @contents_showing_end = true
  165.       @contents_drawing = false
  166.     end
  167.   end
  168.   #------------------------------------
  169.   # ○ ウインドウサイズを取得
  170.   #------------------------------------
  171.   def get_windowsize
  172.     x = y = 0
  173.     @h = @w = 0
  174.     @cursor_width = 0
  175.     # 選択肢なら字下げを行う
  176.     if $game_temp.choice_start == 0
  177.       x = 8
  178.     end
  179.     # 表示待ちのメッセージがある場合
  180.     if $game_temp.message_text != nil
  181.     text = $game_temp.message_text.clone
  182.       # 制御文字処理
  183.       begin
  184.         last_text = text.clone
  185.         text.gsub!(/\\[Vv]\[([0-9]+)\]/) { $game_variables[$1.to_i] }
  186.       end until text == last_text
  187.       text.gsub!(/\\[Nn]\[([0-9]+)\]/) do
  188.         $game_actors[$1.to_i] != nil ? $game_actors[$1.to_i].name : ""
  189.       end
  190.       # 便宜上、"\\\\" を "\000" に変換
  191.       text.gsub!(/\\\\/) { "\000" }
  192.       # "\\C" を "\001" に、"\\G" を "\002" に変換
  193.       text.gsub!(/\\[Cc]\[([0-9]+)\]/) { "\001[#{$1}]" }
  194.       text.gsub!(/\\[Gg]/) { "\002" }
  195.       # c に 1 文字を取得 (文字が取得できなくなるまでループ)
  196.       while ((c = text.slice!(/./m)) != nil)
  197.         # \\ の場合
  198.         if c == "\000"
  199.           # 本来の文字に戻す
  200.           c = "\\"
  201.         end
  202.         # \C[n] または \G の場合
  203.         if c == "\001"  or c == "\002"
  204.           # 次の文字へ
  205.           next
  206.         end
  207.         # 改行文字の場合
  208.         if c == "\n"
  209.           # y に 1 を加算
  210.           y += 1
  211.           # 縦横サイズを取得
  212.           @h = y
  213.           @w = x > @w ? x : @w
  214.           if y >= $game_temp.choice_start
  215.             @w = x + 8 > @w ? x + 8 : @w
  216.           end
  217.           x = 0
  218.           # 選択肢なら字下げを行う
  219.           if y >= $game_temp.choice_start
  220.             x = 8
  221.           end
  222.           # 次の文字へ
  223.           next
  224.         end
  225.         # x に描画した文字の幅を加算
  226.         x += self.contents.text_size(c).width
  227.       end
  228.     end
  229.     # 数値入力の場合
  230.     if $game_temp.num_input_variable_id > 0
  231.       digits_max = $game_temp.num_input_digits_max
  232.       number = $game_variables[$game_temp.num_input_variable_id]
  233.       @h += 1
  234.       x = digits_max * self.contents.font.size + 16
  235.       @w = x > @w ? x : @w
  236.     end
  237.   end
  238.   #------------------------------------
  239.   # ○ 描画処理
  240.   #------------------------------------
  241.   def draw_massage
  242.     # 表示待ちのメッセージがある場合
  243.     if $game_temp.message_text != nil
  244.       text = $game_temp.message_text
  245.       # 制御文字処理
  246.       begin
  247.         last_text = text.clone
  248.         text.gsub!(/\\[Vv]\[([0-9]+)\]/) { $game_variables[$1.to_i] }
  249.       end until text == last_text
  250.       text.gsub!(/\\[Nn]\[([0-9]+)\]/) do
  251.         $game_actors[$1.to_i] != nil ? $game_actors[$1.to_i].name : ""
  252.       end
  253.       # 便宜上、"\\\\" を "\000" に変換
  254.       text.gsub!(/\\\\/) { "\000" }
  255.       # "\\C" を "\001" に、"\\G" を "\002" に変換
  256.       text.gsub!(/\\[Cc]\[([0-9]+)\]/) { "\001[#{$1}]" }
  257.       text.gsub!(/\\[Gg]/) { "\002" }
  258.       # c に 1 文字を取得
  259.       if ((c = text.slice!(/./m)) != nil)
  260.         # 選択肢の場合
  261.         if @dy >= $game_temp.choice_start
  262.           # 字下げを行う
  263.           @dx = 8
  264.           # 文字を描画
  265.           self.contents.draw_text(4 + @dx, 32 * @dy, 40, 32, c)
  266.           # x に描画した文字の幅を加算
  267.           @dx += self.contents.text_size(c).width
  268.           # ループ
  269.           while ((c = text.slice!(/./m)) != "\n")
  270.             # 文字を描画
  271.             self.contents.draw_text(4 + @dx, 32 * @dy, 40, 32, c)
  272.             # x に描画した文字の幅を加算
  273.             @dx += self.contents.text_size(c).width
  274.           end
  275.           if c == "\n"
  276.             # カーソルの幅を更新
  277.             @cursor_width = [@cursor_width, @dx].max
  278.             # y に 1 を加算
  279.             @dy += 1
  280.             @dx = 0
  281.           end
  282.           return
  283.         end
  284.         # \\ の場合
  285.         if c == "\000"
  286.           # 本来の文字に戻す
  287.           c = "\\"
  288.         end
  289.         # \C[n] の場合
  290.         if c == "\001"
  291.           # 文字色を変更
  292.           text.sub!(/\[([0-9]+)\]/, "")
  293.           color = $1.to_i
  294.           if color >= 0 and color <= 7
  295.             self.contents.font.color = text_color(color)
  296.           end
  297.         end
  298.         # \G の場合
  299.         if c == "\002"
  300.           # ゴールドウィンドウを作成
  301.           if @gold_window == nil
  302.             @gold_window = Window_Gold.new
  303.             @gold_window.x = 560 - @gold_window.width
  304.             if $game_temp.in_battle
  305.               @gold_window.y = 192
  306.             else
  307.               @gold_window.y = self.y >= 128 ? 32 : 384
  308.             end
  309.             @gold_window.opacity = self.opacity
  310.             @gold_window.back_opacity = self.back_opacity
  311.           end
  312.         end
  313.         # 改行文字の場合
  314.         if c == "\n"
  315.           # y に 1 を加算
  316.           @dy += 1
  317.           @dx = 0
  318.         end
  319.         # 文字を描画
  320.         self.contents.font.size = FUKI::MES_FONT_SIZE
  321.         font_size = self.contents.font.size
  322.         self.contents.draw_text(4+@dx, (font_size+10)*@dy, font_size, font_size, c)
  323.         # x に描画した文字の幅を加算
  324.         @dx += self.contents.text_size(c).width
  325.       end
  326.     end
  327.   end
  328.   #------------------------------------
  329.   # ○ 選択肢と数値入力を有効に
  330.   #------------------------------------
  331.   def draw_opt_text
  332.     # 選択肢の場合
  333.     if $game_temp.choice_max > 0
  334.       @item_max = $game_temp.choice_max
  335.       self.active = true
  336.       self.index = 0
  337.     end
  338.     # 数値入力の場合
  339.     if $game_temp.num_input_variable_id > 0
  340.       digits_max = $game_temp.num_input_digits_max
  341.       number = $game_variables[$game_temp.num_input_variable_id]
  342.       @input_number_window = Window_InputNumber.new(digits_max)
  343.       @input_number_window.number = number
  344.       @input_number_window.x = self.x + 8
  345.       @input_number_window.y = self.y + $game_temp.num_input_start * 32
  346.     end
  347.   end
  348.   #------------------------------------
  349.   # ○ ふきだしを表示
  350.   #------------------------------------
  351.   def set_fukidasi(x, y, width, height)
  352.     # $mes_id が空のときはふきだしを表示しない
  353.     if $mes_id == nil or $mes_id == ""
  354.       del_fukidasi
  355.       reset_window
  356.     else
  357.       # ポーズサインを非表示
  358.       self.pause = false
  359.       # キャラクターを取得
  360.       if $mes_id=="2"
  361.         character = $game_allies[1]
  362.       else
  363.         character = get_character($mes_id)
  364.       end
  365.       if character == nil
  366.         # キャラクターが存在しないときは通常のメッセージウインドウに
  367.         del_fukidasi
  368.         reset_window
  369.         return
  370.       end
  371.       # マップがスクロールされていないときの座標処理
  372.       if $game_map.display_x == 0
  373.         x = character.x * 32 - (width / 2) + 16
  374.       elsif $game_map.display_x == ($game_map.width - 20) * 128
  375.         x = ( character.real_x - $game_map.display_x + 64 ) / 128  * 32 - (width / 2) + 16
  376.       else
  377.         x = ( character.real_x - $game_map.display_x + 64 ) / 128  * 32 - (width / 2)
  378.       end
  379.       # はみ出すときは画面内に収まるように移動
  380.       if x + width > 640
  381.         x = 640 - width
  382.       elsif x < 0
  383.         x = 0
  384.       end
  385.       # ウインドウの位置を決定
  386.       up_or_down = $game_system.message_position
  387.       case $game_system.message_position
  388.         when 0  # 上
  389.           y = ( (character.real_y - $game_map.display_y + 64) / 128) * 32 - height + 16 - FUKI::CHARACTOR_HEIGHT + FUKI::OP_SHIFT_TOP
  390.           if y < 40
  391.             y =  ( (character.real_y - $game_map.display_y + 64) / 128) * 32 + 48 + FUKI::OP_SHIFT_UNDER
  392.             up_or_down = 2
  393.           end
  394.         when 1  # 中
  395.           y = (480 - height) / 2
  396.           x = (640 - width) / 2
  397.         when 2  # 下
  398.           y =  ( (character.real_y - $game_map.display_y + 64) / 128) * 32 + 48 + FUKI::OP_SHIFT_UNDER
  399.           if y > 400
  400.             y = ( (character.real_y - $game_map.display_y + 64) / 128) * 32 - height + 16 - FUKI::CHARACTOR_HEIGHT + FUKI::OP_SHIFT_TOP         
  401.             up_or_down = 0
  402.           end
  403.       end
  404.       skin = FUKI::FUKI_SKIN_NAME != "" ? FUKI::FUKI_SKIN_NAME : $game_system.windowskin_name
  405.       self.windowskin = RPG::Cache.windowskin(skin)
  406.       self.x = x
  407.       self.y = y
  408.       self.height = height
  409.       self.width = width
  410.       self.contents.dispose
  411.       self.contents = Bitmap.new(width - 32, height - 32)
  412.       self.back_opacity = FUKI::FUKI_OPACITY
  413.       self.contents.clear
  414.       self.contents.font.color = normal_color
  415.       self.contents.font.size = FUKI::MES_FONT_SIZE
  416.       if $game_system.message_frame == 0
  417.         @fuki = Sprite.new
  418.         case up_or_down
  419.           when 0  # 上
  420.             @fuki.bitmap = RPG::Cache.windowskin(skin + "-top")
  421.             if $game_map.display_x == 0
  422.               @fuki.x = character.x * 32
  423.             elsif $game_map.display_x == ($game_map.width - 20) * 128
  424.               @fuki.x = ( character.real_x - $game_map.display_x + 64 ) / 128  * 32
  425.             else
  426.               @fuki.x = ( character.real_x - $game_map.display_x + 64 ) / 128  * 32 - 16
  427.             end
  428.             if FUKI::CORNER_SHIFT
  429.               if @fuki.x == 0
  430.                 @fuki.x = FUKI::SHIFT_PIXEL
  431.               elsif @fuki.x == 640 - 32
  432.                 @fuki.x = 640 - 32 - FUKI::SHIFT_PIXEL
  433.               end
  434.             end
  435.             @fuki.y = y + height - 16
  436.             @fuki.z = self.z + 1
  437.           when 1  # 中
  438.             @fuki.dispose
  439.             @fuki = nil
  440.           when 2  # 下
  441.             @fuki.bitmap = RPG::Cache.windowskin(skin + "-under")
  442.             if $game_map.display_x == 0
  443.               @fuki.x = character.x * 32
  444.             elsif $game_map.display_x == ($game_map.width - 20) * 128
  445.               @fuki.x = ( character.real_x - $game_map.display_x + 64 ) / 128  * 32
  446.             else
  447.               @fuki.x = ( character.real_x - $game_map.display_x + 64 ) / 128  * 32 - 16
  448.             end
  449.             if FUKI::CORNER_SHIFT
  450.               if @fuki.x == 0
  451.                 @fuki.x = FUKI::SHIFT_PIXEL
  452.               elsif @fuki.x == 640 - 32
  453.                 @fuki.x = 640 - 32 - FUKI::SHIFT_PIXEL
  454.               end
  455.             end
  456.             @fuki.y = y - 16
  457.             @fuki.z = self.z + 1
  458.         end
  459.       end
  460.     end
  461.   end
  462.   #------------------------------------
  463.   # ○ 名前ウインドウを表示
  464.   #------------------------------------
  465.   def set_namewindow
  466.     if $mes_name == nil or $mes_name == ""
  467.       return
  468.     else
  469.       mes_name = $mes_name
  470.       name_width = mes_name.size / 2 * FUKI::NAME_FONT_SIZE - 4
  471.       name_height = FUKI::NAME_FONT_SIZE+4
  472.       name_x = x + width - 58 + FUKI::NAME_SHIFT_X
  473.       name_y = y - name_height - 16 + FUKI::NAME_SHIFT_Y
  474.       
  475.       #判断名称是否有对应的图片"Graphics/heads/" +
  476.       if $game_temp.namebmp[mes_name] == nil then
  477.         sFile = 'notfile'
  478.       else
  479.         sFile = "Graphics/heads/"+$game_temp.namebmp[mes_name] + ".png"
  480.       end
  481.       
  482.       if FileTest.exist?(sFile ) == true then
  483.         bmp1 = Bitmap.new(sFile)
  484.         iwidth = bmp1.width
  485.         iheight = bmp1.height
  486.         if self.x+self.width > 400
  487.           @name_win = Window_Base.new(self.x-iwidth-5, name_y, iwidth + 5, iheight + 5)
  488.           @name_win.y = self.y+self.height/2 - @name_win.height/2
  489.           skin = FUKI::NAME_SKIN_NAME != "" ? FUKI::NAME_SKIN_NAME : $game_system.windowskin_name
  490.           @name_win.windowskin = RPG::Cache.windowskin(skin)
  491.           @name_win.back_opacity =0     
  492.           @name_win.z = self.z + 1
  493.           viewport = Viewport.new(@name_win.x+3, @name_win.y+1, iwidth, iheight)
  494.           @name_contents = Sprite.new(viewport)
  495.           @name_contents.bitmap = Bitmap.new(sFile)
  496.           viewport.z = @name_win.z - 1
  497.           @name_contents.z = @name_win.z + 2               
  498.         else
  499.           @name_win = Window_Base.new(self.x+self.width, name_y, iwidth + 5, iheight + 5)
  500.           @name_win.y = self.y+self.height/2 - @name_win.height/2
  501.           skin = FUKI::NAME_SKIN_NAME != "" ? FUKI::NAME_SKIN_NAME : $game_system.windowskin_name
  502.           @name_win.windowskin = RPG::Cache.windowskin(skin)
  503.           @name_win.back_opacity =0     
  504.           @name_win.z = self.z + 1
  505.           viewport = Viewport.new(@name_win.x+3, @name_win.y+1, iwidth, iheight)
  506.           @name_contents = Sprite.new(viewport)
  507.           @name_contents.bitmap = Bitmap.new(sFile)
  508.           viewport.z = @name_win.z - 1
  509.           @name_contents.z = @name_win.z + 2                 
  510.         end               
  511.       else
  512.         @name_win = Window_Base.new(name_x, name_y, name_width, name_height)
  513.         skin = FUKI::NAME_SKIN_NAME != "" ? FUKI::NAME_SKIN_NAME : $game_system.windowskin_name
  514.         @name_win.windowskin = RPG::Cache.windowskin(skin)
  515.         @name_win.back_opacity = FUKI::NAME_OPACITY  
  516.         @name_win.z = self.z + 1
  517.         rect = self.contents.text_size(mes_name)
  518.         @name_win.width = rect.width + 16
  519.         rect.y +=4
  520.         @name_win.height += 8        
  521.         rect.x +=6
  522.         @name_win.x = self.x + self.width - @name_win.width
  523.         viewport = Viewport.new(@name_win.x, @name_win.y, @name_win.width+32, @name_win.height)
  524.         viewport.z = @name_win.z + 1
  525.         @name_contents = Sprite.new(viewport)
  526.         @name_contents.bitmap = Bitmap.new(name_width, name_height)
  527.         @name_contents.z = @name_win.z + 2
  528.         @name_contents.bitmap.font.color = normal_color
  529.         @name_contents.bitmap.font.size = FUKI::NAME_FONT_SIZE
  530.         @name_contents.bitmap.draw_text(rect, mes_name)
  531.       end      
  532.     end
  533.   end
  534.   #------------------------------------
  535.   # ○ ふきだしと名前ウインドウを破棄
  536.   #------------------------------------
  537.   def del_fukidasi
  538.     if @fuki != nil
  539.       @fuki.dispose
  540.       @fuki = nil
  541.     end
  542.     if @name_win != nil
  543.       @name_win.dispose
  544.       @name_win = nil
  545.       @name_contents.dispose
  546.       @name_contents = nil
  547.     end
  548.     self.opacity = 0
  549.     self.x = 80
  550.     self.width = 480
  551.     self.height = 160
  552.     self.contents.dispose
  553.     self.contents = Bitmap.new(width - 32, height - 32)
  554.     self.pause = true
  555.   end
  556.   #------------------------------------
  557.   # ○ キャラクターの取得
  558.   #     parameter : パラメータ
  559.   #------------------------------------
  560.   def get_character(parameter)
  561.     # パラメータで分岐
  562.     case parameter
  563.     when -1  # プレイヤー
  564.       return $game_player
  565.     when 0  # このイベント
  566.       events = $game_map.events
  567.       return events == nil ? nil : events[$active_event_id]
  568.     else  # 特定のイベント
  569.       events = $game_map.events
  570.       return events == nil ? nil : events[parameter]
  571.     end
  572.   end
  573.   #------------------------------------
  574.   # ○ ウィンドウの位置と不透明度の設定
  575.   #------------------------------------
  576.   def reset_window
  577.     if $game_temp.in_battle
  578.       self.y = 16
  579.     else
  580.       case $game_system.message_position
  581.       when 0  # 上
  582.         self.y = 16
  583.       when 1  # 中
  584.         self.y = 160
  585.       when 2  # 下
  586.         self.y = 304
  587.       end
  588.     end
  589.     if $game_system.message_frame == 0
  590.       self.opacity = 255
  591.     else
  592.       self.opacity = 0
  593.     end
  594.     self.back_opacity = FUKI::MES_OPACITY
  595.   end
  596.   #------------------------------------
  597.   # ○ フレーム更新
  598.   #------------------------------------
  599.   def update
  600.     super
  601.     # フェードインの場合
  602.     if @fade_in
  603.       self.contents_opacity += 24
  604.       if @name_win != nil
  605.         @name_win.opacity += 24
  606.       end
  607.       if @fuki != nil
  608.         @fuki.opacity += 24
  609.       end
  610.       if @input_number_window != nil
  611.         @input_number_window.contents_opacity += 24
  612.       end
  613.       if self.contents_opacity == 255
  614.         @fade_in = false
  615.       end
  616.       return
  617.     end
  618.     # メッセージ表示中の場合
  619.     if @contents_drawing
  620.       refresh_drawtext
  621.       return
  622.     end
  623.     # 数値入力中の場合
  624.     if @input_number_window != nil
  625.       @input_number_window.update
  626.       # 決定
  627.       if Input.trigger?(Input::C)
  628.         $game_system.se_play($data_system.decision_se)
  629.         $game_variables[$game_temp.num_input_variable_id] =
  630.           @input_number_window.number
  631.         $game_map.need_refresh = true
  632.         # 数値入力ウィンドウを解放
  633.         @input_number_window.dispose
  634.         @input_number_window = nil
  635.         terminate_message
  636.       end
  637.       return
  638.     end
  639.     # メッセージ表示終了の場合
  640.     if @contents_showing_end
  641.       # 選択肢の表示中でなければポーズサインを表示
  642.       # ふきだしモードでは非表示
  643.       if $game_temp.choice_max == 0 and @fuki == nil
  644.         self.pause = true
  645.       else
  646.         self.pause = false
  647.       end
  648.       # キャンセル
  649.       if Input.trigger?(Input::B)
  650.         if $game_temp.choice_max > 0 and $game_temp.choice_cancel_type > 0
  651.           $game_system.se_play($data_system.cancel_se)
  652.           $game_temp.choice_proc.call($game_temp.choice_cancel_type - 1)
  653.           terminate_message
  654.         end
  655.       end
  656.       # 決定
  657.       if Input.trigger?(Input::C)
  658.         if $game_temp.choice_max > 0
  659.           $game_system.se_play($data_system.decision_se)
  660.           $game_temp.choice_proc.call(self.index)
  661.         end
  662.         terminate_message
  663.         # ふきだしを破棄
  664.         del_fukidasi
  665.       end
  666.       return
  667.     end
  668.     # フェードアウト中以外で表示待ちのメッセージか選択肢がある場合
  669.     if @fade_out == false and $game_temp.message_text != nil
  670.       @contents_showing = true
  671.       $game_temp.message_window_showing = true
  672.       reset_window
  673.       refresh_create
  674.       if @name_win != nil
  675.         @name_win.opacity = 0
  676.       end
  677.       if @fuki != nil
  678.         @fuki.opacity = 0
  679.       end
  680.       Graphics.frame_reset
  681.       self.visible = true
  682.       self.contents_opacity = 0
  683.       if @input_number_window != nil
  684.         @input_number_window.contents_opacity = 0
  685.       end
  686.       @fade_in = true
  687.       return
  688.     end
  689.     # 表示すべきメッセージがないが、ウィンドウが可視状態の場合
  690.     if self.visible
  691.       @fade_out = true
  692.       self.opacity -= 48
  693.       if @name_win != nil
  694.         @name_win.opacity -= 48
  695.       end
  696.       if @fuki != nil
  697.         @fuki.opacity -= 48
  698.       end
  699.       if self.opacity == 0
  700.         self.visible = false
  701.         @fade_out = false
  702.         $game_temp.message_window_showing = false
  703.         del_fukidasi
  704.       end
  705.       return
  706.     end
  707.   end
  708.   #------------------------------------
  709.   # ○ 解放
  710.   #------------------------------------
  711.   def dispose
  712.     terminate_message
  713.     $game_temp.message_window_showing = false
  714.     if @input_number_window != nil
  715.       @input_number_window.dispose
  716.     end
  717.     super
  718.   end
  719.   #------------------------------------
  720.   # ○ メッセージ終了処理
  721.   #------------------------------------
  722.   def terminate_message
  723.     self.active = false
  724.     self.pause = false
  725.     self.index = -1
  726.     self.contents.clear
  727.     # 表示中フラグをクリア
  728.     @contents_showing = false
  729.     @contents_showing_end = false
  730.     # メッセージ コールバックを呼ぶ
  731.     if $game_temp.message_proc != nil
  732.       $game_temp.message_proc.call
  733.     end
  734.     # 文章、選択肢、数値入力に関する変数をクリア
  735.     $game_temp.message_text = nil
  736.     $game_temp.message_proc = nil
  737.     $game_temp.choice_start = 99
  738.     $game_temp.choice_max = 0
  739.     $game_temp.choice_cancel_type = 0
  740.     $game_temp.choice_proc = nil
  741.     $game_temp.num_input_start = 99
  742.     $game_temp.num_input_variable_id = 0
  743.     $game_temp.num_input_digits_max = 0
  744.     # ゴールドウィンドウを開放
  745.     if @gold_window != nil
  746.       @gold_window.dispose
  747.       @gold_window = nil
  748.     end
  749.   end
  750.   #------------------------------------
  751.   # ○ カーソルの矩形更新
  752.   #------------------------------------
  753.   def update_cursor_rect
  754.     if @index >= 0
  755.       n = $game_temp.choice_start + @index
  756.       self.cursor_rect.set(8, n * 32, @cursor_width, 32)
  757.     else
  758.       self.cursor_rect.empty
  759.     end
  760.   end
  761. end

  762. #==============================================================================
  763. # ■ Interpreter
  764. #==============================================================================

  765. class Interpreter
  766.   #------------------------------------
  767.   # ● イベントのセットアップ
  768.   #     event_id : イベント ID
  769.   #------------------------------------
  770.   alias setup_fuki setup
  771.   def setup(list, event_id)
  772.     setup_fuki(list, event_id)
  773.     # 戦闘中でなければ
  774.     if !($game_temp.in_battle)
  775.       # イベントIDを記録
  776.       $active_event_id = event_id
  777.     end
  778.   end
  779. end


  780. #==============================================================================
  781. # ■ Window_InputNumber
  782. #==============================================================================

  783. class Window_InputNumber < Window_Base
  784.   #------------------------------------
  785.   # ● オブジェクト初期化
  786.   #     digits_max : 桁数
  787.   #------------------------------------
  788.   def initialize(digits_max)
  789.     @digits_max = digits_max
  790.     @number = 0
  791.     # 数字の幅からカーソルの幅を計算 (0~9 は等幅と仮定)
  792.     dummy_bitmap = Bitmap.new(32, 32)
  793.     dummy_bitmap.font.size = FUKI::MES_FONT_SIZE
  794.     @cursor_width = dummy_bitmap.text_size("0").width + 8
  795.     dummy_bitmap.dispose
  796.     super(0, 0, @cursor_width * @digits_max + 32, 64)
  797.     self.contents = Bitmap.new(width - 32, height - 32)
  798.     self.contents.font.size = FUKI::MES_FONT_SIZE
  799.     self.z += 9999
  800.     self.opacity = 0
  801.     @index = 0
  802.     refresh
  803.     update_cursor_rect
  804.   end
  805. end

  806. #==============================================================================
  807. # ■ Window_Gold
  808. #==============================================================================

  809. class Window_Gold < Window_Base
  810.   #------------------------------------
  811.   # ● オブジェクト初期化
  812.   #------------------------------------
  813.   def initialize
  814.     height = FUKI::MES_FONT_SIZE + 32
  815.     super(0, 0, 160, height)
  816.     self.contents = Bitmap.new(width - 32, height - 32)
  817.     self.back_opacity = FUKI::MES_OPACITY
  818.     self.contents.font.size = FUKI::MES_FONT_SIZE
  819.     refresh
  820.   end
  821.   #------------------------------------
  822.   # ● リフレッシュ
  823.   #------------------------------------
  824.   def refresh
  825.     self.contents.clear
  826.     cx = contents.text_size($data_system.words.gold).width
  827.     self.contents.font.color = normal_color
  828.     self.contents.draw_text(4, 0, 120-cx-2, FUKI::MES_FONT_SIZE, $game_party.gold.to_s, 2)
  829.     self.contents.font.color = system_color
  830.     self.contents.draw_text(124-cx, 0, cx, FUKI::MES_FONT_SIZE, $data_system.words.gold, 2)
  831.   end
  832. end
复制代码

Lv3.寻梦者 (暗夜天使)

名侦探小柯

梦石
0
星屑
3299
在线时间
3619 小时
注册时间
2006-9-6
帖子
37400

开拓者贵宾第3届短篇游戏大赛主流游戏组亚军第5届短篇游戏比赛亚军

2
发表于 2010-6-30 22:50:01 | 只看该作者
把文章选项改成中,就会恢复了……
改成上或者下又会变成那种样子。
回复 支持 反对

使用道具 举报

Lv1.梦旅人

梦石
0
星屑
55
在线时间
9 小时
注册时间
2006-4-26
帖子
444
3
发表于 2010-6-30 22:56:58 | 只看该作者
把文章选项改成中,就会恢复了……
改成上或者下又会变成那种样子。
越前リョーマ 发表于 2010-6-30 22:50



想法一样..不过lz的问题不是理解的很透,,试试吧
话说小柯啊.你那brv呢..没搞 了?

回复 支持 反对

使用道具 举报

Lv1.梦旅人

梦石
0
星屑
50
在线时间
122 小时
注册时间
2008-7-3
帖子
724
4
 楼主| 发表于 2010-6-30 23:15:03 | 只看该作者
不行!一样是哪个模样啊~这是我一开始想的办法……是不可取的
琥太哥你别哭了,我受不了了!
回复 支持 反对

使用道具 举报

Lv1.梦旅人

梦石
0
星屑
50
在线时间
122 小时
注册时间
2008-7-3
帖子
724
5
 楼主| 发表于 2010-7-1 21:23:48 | 只看该作者
为什么无视我啊~那是为什么呢?
琥太哥你别哭了,我受不了了!
回复 支持 反对

使用道具 举报

头像被屏蔽

Lv1.梦旅人 (禁止发言)

梦石
0
星屑
50
在线时间
0 小时
注册时间
2009-2-13
帖子
82
6
发表于 2010-7-1 21:40:44 | 只看该作者
提示: 作者被禁止或删除 内容自动屏蔽
签名被屏蔽
回复 支持 反对

使用道具 举报

Lv1.梦旅人

梦石
0
星屑
50
在线时间
122 小时
注册时间
2008-7-3
帖子
724
7
 楼主| 发表于 2010-7-1 21:48:35 | 只看该作者
不行的……那是绝对的不行的……
琥太哥你别哭了,我受不了了!
回复 支持 反对

使用道具 举报

头像被屏蔽

Lv1.梦旅人 (禁止发言)

梦石
0
星屑
50
在线时间
0 小时
注册时间
2009-2-13
帖子
82
8
发表于 2010-7-1 22:07:59 | 只看该作者
提示: 作者被禁止或删除 内容自动屏蔽
签名被屏蔽
回复 支持 反对

使用道具 举报

Lv1.梦旅人

梦石
0
星屑
50
在线时间
122 小时
注册时间
2008-7-3
帖子
724
9
 楼主| 发表于 2010-7-2 00:35:02 | 只看该作者
本帖最后由 沙之爱罗 于 2010-7-2 00:40 编辑

这个是行距……不过只能调整文字……不能调整选项啊……没办法了么
琥太哥你别哭了,我受不了了!
回复 支持 反对

使用道具 举报

Lv1.梦旅人

梦石
0
星屑
50
在线时间
78 小时
注册时间
2007-3-4
帖子
24
10
发表于 2010-7-3 01:35:53 | 只看该作者
是因为改了字号吧
可以出选项前把字号改成默认的,选择结束再改回去
回复 支持 反对

使用道具 举报

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

本版积分规则

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

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

GMT+8, 2024-12-25 15:43

Powered by Discuz! X3.1

© 2001-2013 Comsenz Inc.

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