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

Project1

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

[已经解决] 想请教一下正则表达式

 关闭 [复制链接]

Lv4.逐梦者

梦石
7
星屑
2585
在线时间
567 小时
注册时间
2009-4-30
帖子
271
跳转到指定楼层
1
发表于 2011-9-28 23:27:33 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
本帖最后由 timmyyayaya 于 2011-9-29 00:27 编辑

想请教一下正则表达式

对话框脚本的读取方式为\a[角色名称,编号]

请问该怎么改写才能直接读取指定位置图片名称?
像是0101.png,直接输入\a[0101]这样

Project2.rar

263.08 KB, 下载次数: 2

Lv2.观梦者

(?????)

梦石
0
星屑
728
在线时间
1327 小时
注册时间
2011-7-18
帖子
3184

贵宾

2
发表于 2011-9-28 23:45:00 | 只看该作者
本帖最后由 各种压力的猫君 于 2011-9-29 00:39 编辑

完全不认为和正则表达式有关系 = = b
最好能附个工程方便测试 =W=
  1.   #--------------------------------------------------------------------------
  2.   # ● 顔グラフィック表示
  3.   #--------------------------------------------------------------------------
  4.   def actor(name, write = true)
  5.     if write
  6.       @face.bitmap = RPG::Cache.face(name.to_s)
  7.       @face.x = 75 - @face.bitmap.width / 2
  8.       @face.y = 530 - @face.bitmap.height #self.y + 12#self.height / 2
  9.       @face.z = self.z + 1
  10.       @face.oy = 50
  11.       @fade_in = true
  12.       @face.opacity = 120
  13.     end
  14.     @fi = 0
  15.     # 最初の行を字下げ
  16.     @x = @fi + @i if @x <= @fi
  17.   end
  18.   #--------------------------------------------------------------------------
  19.   # ● オブジェクト初期化
  20.   #--------------------------------------------------------------------------
  21.   def initialize
  22.     super(80, 304, 480, 160)
  23.     self.contents = Bitmap.new(width - 32, height - 32)
  24.     self.visible = false
  25.     self.z = 9998
  26.     # 顔グラフィックの作成
  27.     @face = Sprite.new(self.viewport)
  28.     @face.bitmap = Bitmap.new(10, 10)
  29.     @face.visible = false
  30.     @text = ""
  31.     @fade_in = false
  32.     @fade_out = false
  33.     @contents_showing = false
  34.     @contents_showed = false
  35.     @cursor_width = 0
  36.     self.active = false
  37.     self.index = -1
  38.     # 履歴ウィンドウの作成
  39.     @h_window = Window.new(self.viewport)
  40.     @h_window.x = 77
  41.     @h_window.y = 64
  42.     @h_window.z = 10001
  43.     @h_window.width = 486
  44.     @h_window.height = 352
  45.     @h_window.opacity = 0
  46.     @h_window.back_opacity = 160
  47.     @h_window.windowskin = RPG::Cache.windowskin($game_system.windowskin_name)
  48.     @h_window.active = false
  49.     @h_window.visible = false
  50.     @c_h = 0
  51.     # メッセージスピードの初期化
  52.     unless $game_player.message_speed.is_a?(Numeric)
  53.       $game_player.message_speed = 1
  54.     end
  55.   end
  56.   #--------------------------------------------------------------------------
  57.   # ● 解放
  58.   #--------------------------------------------------------------------------
  59.   def dispose
  60.     terminate_message
  61.     $game_temp.message_window_showing = false
  62.     @face.dispose
  63.     if @input_number_window != nil
  64.       @input_number_window.dispose
  65.     end
  66.     @h_window.dispose
  67.     super
  68.   end
  69.   #--------------------------------------------------------------------------
  70.   # ● メッセージ終了処理
  71.   #--------------------------------------------------------------------------
  72.   def terminate_message
  73.     self.active = false
  74.     self.pause = false
  75.     self.index = -1
  76.     self.contents.clear
  77.     # 表示中フラグをクリア
  78.     @contents_showing = false
  79.     @contents_showed = false
  80.     # メッセージ コールバックを呼ぶ
  81.     if $game_temp.message_proc != nil
  82.       $game_temp.message_proc.call
  83.     end
  84.     # 文章、選択肢、数値入力に関する変数をクリア
  85.     $game_temp.message_text = nil
  86.     $game_temp.message_proc = nil
  87.     $game_temp.choice_start = 99
  88.     $game_temp.choice_max = 0
  89.     $game_temp.choice_cancel_type = 0
  90.     $game_temp.choice_proc = nil
  91.     $game_temp.num_input_start = 99
  92.     $game_temp.num_input_variable_id = 0
  93.     $game_temp.num_input_digits_max = 0
  94.     # ゴールドウィンドウを開放
  95.     if @gold_window != nil
  96.       @gold_window.dispose
  97.       @gold_window = nil
  98.     end
  99.   end
  100.   #--------------------------------------------------------------------------
  101.   # ● テキスト初期化設定
  102.   #--------------------------------------------------------------------------
  103.   def text_initialize
  104.     # メッセージウィンドウ初期化設定
  105.     @text = $game_temp.message_text
  106.     @back_up = @text.clone
  107.     @rubi = ""
  108.     @speed = $game_player.message_speed
  109.     font_size = 22
  110.     @wait = 0
  111.     @push_enter = false
  112.     @contents_close = false
  113.     @cursor_width = 0
  114.     # 制御文字処理
  115.     begin
  116.       last_text = @text.clone
  117.       @text.gsub!(/\\[Vv]\[(\d+)\]/) { $game_variables[$1.to_i] }
  118.     end until @text == last_text
  119.     @text.gsub!(/\\[Nn]\[(\d+)\]/) do
  120.       $game_actors[$1.to_i] != nil ? $game_actors[$1.to_i].name : ""
  121.     end
  122.     # 便宜上、"\\\\" を "\000" に変換
  123.     @text.gsub!(/\\\\/) { "\000" }
  124.     # "\\C" を "\001" に、"\\G" を "\002" に変換
  125.     @text.gsub!(/\\[Cc]\[(\d+)\]/) { "\001[#{$1}]" }
  126.     @text.gsub!(/\\[Gg]/) { "\002" }
  127.     # 制御文字をそれぞれバックスラッシュ記法に変換
  128.     @text.gsub!(/\\[Ss]\[(\d+)\]/) { "\003[#{$1}]" }
  129.     @text.gsub!(/\\\./) { "\004" }
  130.     @text.gsub!(/\\\;/) { "\005" }
  131.     @text.gsub!(/\\\|/) { "\006" }
  132.     @text.gsub!(/\\\!/) { "\010" }
  133.     @text.gsub!(/\\\>/) { "\016" }
  134.     @text.gsub!(/\\\</) { "\017" }
  135.     @text.gsub!(/\\\^/) { "\020" }
  136.     @text.gsub!(/\\[Ii]/) { "\021" }
  137.     @text.gsub!(/\\[Ll][Tt]/) { "\022" }
  138.     @text.gsub!(/\\[Cc][Tt]/) { "\023" }
  139.     @text.gsub!(/\\[Rr][Tt]/) { "\024" }
  140.     @text.gsub!(/\\[Ff]\[(\d+)\]/) { "\025[#{$1}]" }
  141.     @text.gsub!(/\\[Aa]\[(\w+)\]/) { "\026[#{$1}]" }
  142.     @text.gsub!(/\\[Rr]\[(.+?),(.+?)\]/) { "\027[#{$1},#{$2}]" }
  143.     @text.gsub!(/\\[Oo]\[(.+?)\]/) { "\030[#{$1}]" }
  144.     @text.gsub!(/\<[Bb]\>/) { "\031" }
  145.     @text.gsub!(/\<\/[Bb]\>/) { "\033" }
  146.     @text.gsub!(/\<[Ii]\>/) { "\034" }
  147.     @text.gsub!(/\<\/[Ii]\>/) { "\035" }
  148.     @text.gsub!(/\\[Ss][Tt]/) { "" }
  149.     @text.gsub!(/\\[Nn]/) { "\n" }
  150.     @text.gsub!(/\\[Pp](.*?)\n/) { $1 }
  151.     @x = @i = 4
  152.     @fi = @y = @py = 0
  153.     # 最初の行がルビ付きの場合、字下げを行う
  154.     @text = "\n" if @text == ""
  155.     text = @text[/^.*?\n/]
  156.     r_height = 0
  157.     while ((c = text.slice!(/./m)) != nil)
  158.       # \F[n] の場合、フォントサイズの変更
  159.       if c == "\025"
  160.         text.sub!(/\[([0-9]+)\]/, "")
  161.         font_size = $1.to_i
  162.         next
  163.       end
  164.       # ルビが存在した場合
  165.       if c == "\027"
  166.         text.sub!(/\[(.+?),(.+?)\]/, "")
  167.         # ルビのテキストサイズを格納
  168.         r_height = [r_height, font_size].max
  169.         next
  170.       end
  171.     end
  172.     # 字下げの設定
  173.     @py = [(r_height + [(r_height + 66) / 8, r_height * 2 / 3].min - 5) -
  174.       max_height(@text), 0].max
  175.     # 選択肢なら字下げを行う
  176.     if $game_temp.choice_start == 0
  177.       @x = 12
  178.     end
  179.     # "\\E[n]" がある場合、イベントnに吹き出し表示
  180.     unless self.contents.disposed?
  181.       self.contents.dispose
  182.     end
  183.     # 吹き出し表示の場合
  184.     if @text.gsub!(/\\[Ee]\[(\-*?\d+),?(\d*?)\]/) { "" }
  185.       # メッセージの幅、高さの読み込み
  186.       @event = $game_system.map_interpreter.get_character($1.to_i)
  187.       self.contents = Bitmap.new(10, 10)
  188.       self.contents.font.size = font_size
  189.       self.width = text_width(@text) + 32
  190.       self.height = [text_height(@text) + 32 + @py, 32].max
  191.       # 数値入力の場合、高さと幅の調整
  192.       if $game_temp.num_input_variable_id > 0
  193.         dummy_bitmap = Bitmap.new(32, 32)
  194.         i_width = dummy_bitmap.text_size("0").width + 8
  195.         dummy_bitmap.dispose
  196.         self.width=[self.width,i_width*$game_temp.num_input_digits_max+48].max
  197.         self.height += 32
  198.         # 高さが数値分しかない場合、数値入力を繰り上げる
  199.         $game_temp.num_input_start -= 1 if self.height == 64
  200.       end
  201.       @w_pos = $2.to_i
  202.       window_position
  203.       self.contents.dispose
  204.     else
  205.       @event = nil
  206.       self.x = 80
  207.       if $game_temp.in_battle
  208.         self.y = 16
  209.       else
  210.         case $game_system.message_position
  211.         when 0  # 上
  212.           self.y = 16
  213.         when 1  # 中
  214.           self.y = 160
  215.         when 2  # 下
  216.           self.y = 345
  217.         end
  218.       end
  219.       self.width = 480
  220.       self.height = 160
  221.     end
  222.     # ウィンドウ内容の初期化
  223.     self.contents = Bitmap.new(width - 32, height - 32)
  224.     self.contents.font.size = font_size
  225.     self.contents.font.color = normal_color
  226.     self.contents.font.bold = false
  227.     self.contents.font.italic = false
  228.     # メッセージ履歴に文章を挿入
  229.     history_write(@text.clone)
  230.     # 第一行目のフォントサイズが基準フォントサイズと異なる場合の体裁を整える
  231.     @h = @c_h = max_height(@text) - self.contents.font.size
  232.     @c_w = 0
  233.   end
  234.   #--------------------------------------------------------------------------
  235.   # ● 吹き出し表示:ウィンドウ位置設定
  236.   #--------------------------------------------------------------------------
  237.   def window_position
  238.     m_x = (@event.real_x - $game_map.display_x) / 4 - self.width / 2 + 16
  239.     m_y = (@event.real_y - $game_map.display_y) / 4
  240.     if @w_pos == 0
  241.       m_y -= self.height + 32
  242.     else
  243.       m_y += 48
  244.     end
  245.     self.x =[[m_x, 0].max, 640 - self.width].min
  246.     self.y = [[m_y, 0].max, 480 - self.height].min
  247.     if @input_number_window != nil
  248.       @input_number_window.x = self.x + 8
  249.       @input_number_window.y = self.y + 32 + @h + @py
  250.     end
  251.   end
  252.   #--------------------------------------------------------------------------
  253.   # ● リフレッシュ
  254.   #--------------------------------------------------------------------------
  255.   def refresh
  256.     # 表示待ちのメッセージがある場合
  257.     if @text != nil
  258.       # c に 1 文字を取得 (文字が取得できなくなるまでループ)
  259.       while ((c = @text.slice!(/./m)) != nil)
  260.         next unless control(c)
  261.         if @push_enter
  262.           @contents_showed = true
  263.           break
  264.         end
  265.         # 文字を描画
  266.         size = self.contents.font.size
  267.         self.contents.font.name = "華康中圓體"
  268.         self.contents.draw_text(@x, @h + @py, 10 + size, 10 + size, c)
  269.         # x に描画した文字の幅を加算
  270.         @x += self.contents.text_size(c).width
  271.         rubi_draw if @rubi != ""
  272.         if @speed > 0 and @contents_showed == false and
  273.             not (ENTER and Input.trigger?(Input::C)) and
  274.             not ($game_variables[MSN_SKIP] >= ($DEBUG ? 0 : 1) and Input.press?(Input::SHIFT))
  275.           @wait += @speed if @wait <= 0
  276.           break if @wait > 0
  277.         end
  278.       end
  279.       if @text == ""
  280.         text_end
  281.       end
  282.     end
  283.   end
  284.   #--------------------------------------------------------------------------
  285.   # ● テキスト描画終了時
  286.   #--------------------------------------------------------------------------
  287.   def text_end
  288.     @contents_showed = true
  289.     # 選択肢の場合
  290.     if $game_temp.choice_max > 0
  291.       @item_max = $game_temp.choice_max
  292.       self.active = true
  293.       self.index = 0
  294.       @c_h = @h
  295.     end
  296.     # 数値入力の場合
  297.     if $game_temp.num_input_variable_id > 0
  298.       digits_max = $game_temp.num_input_digits_max
  299.       number = $game_variables[$game_temp.num_input_variable_id]
  300.       @input_number_window = Window_InputNumber.new(digits_max)
  301.       @input_number_window.number = number
  302.       @input_number_window.x = self.x + 8
  303.       @input_number_window.y = self.y + 32 + @h + @py
  304.     end
  305.   end
  306.   #--------------------------------------------------------------------------
  307.   # ● 制御文字処理
  308.   #--------------------------------------------------------------------------
  309.   def control(c)
  310.     # \\ の場合
  311.     if c == "\000"
  312.       # 本来の文字に戻す
  313.       c = "\\"
  314.       return true
  315.     end
  316.     # \C[n] の場合
  317.     if c == "\001"
  318.       c_change
  319.       return false
  320.     end
  321.     # \G の場合
  322.     if c == "\002"
  323.       gold
  324.       return false
  325.     end
  326.     # \S[n] の場合
  327.     if c == "\003"
  328.       @text.sub!(/\[(\d+)\]/, "")
  329.       @speed = $game_player.message_speed * $1.to_i
  330.       return false
  331.     end
  332.     # \. の場合
  333.     if c == "\004"
  334.       @wait = 10
  335.       c.sub!("\004", "")
  336.       return true
  337.     end
  338.     # \: の場合
  339.     if c == "\005"
  340.       @wait = 20
  341.       c.sub!("\005", "")
  342.       return true
  343.     end
  344.     # \| の場合
  345.     if c == "\006"
  346.       @wait = 40
  347.       c.sub!("\006", "")
  348.       return true
  349.     end
  350.     # \! の場合
  351.     if c == "\010"
  352.       self.pause = true
  353.       @push_enter = true
  354.       @contents_showed = true
  355.       c.sub!("\010", "")
  356.       return true
  357.     end
  358.     # \> の場合
  359.     if c == "\016"
  360.       @temp_speed = @speed
  361.       @speed = 0
  362.       return false
  363.     end
  364.     # \< の場合
  365.     if c == "\017"
  366.       @speed = @temp_speed
  367.       c.sub!("\017", "")
  368.       return true
  369.     end
  370.     # \^ の場合
  371.     if c == "\020"
  372.       @contents_close = true
  373.       return false
  374.     end
  375.     # \I の場合
  376.     if c == "\021"
  377.       @i = @x - @fi
  378.       if @y >= $game_temp.choice_start
  379.         @i = @x - @fi - 8
  380.       end
  381.       return false
  382.     end
  383.     # \LT の場合
  384.     if c == "\022"
  385.       @i = @x = @fi + 4
  386.       return false
  387.     end
  388.     # \CT の場合
  389.     if c == "\023"
  390.       @text[(/(.+?)\n/)]
  391.       width = max_width($1)[0]
  392.       @x = (@fi + self.contents.width - width) / 2
  393.       return false
  394.     end
  395.     # \RT の場合
  396.     if c == "\024"
  397.       @text[(/(.+?)\n/)]
  398.       width = max_width($1)[0]
  399.       @x = self.contents.width - width - 4
  400.       return false
  401.     end
  402.     # \F[n] の場合
  403.     if c == "\025"
  404.       s_change
  405.       return false
  406.     end
  407.     # \A[n] の場合
  408.     if c == "\026"
  409.       @text.sub!(/\[(\w+)\]/, "")
  410.       actor($1)
  411.       return false
  412.     end
  413.     # \R[n,m] の場合
  414.     if c == "\027"
  415.       @text.sub!(/\[(.+?),(.+?)\]/) { rubi_set($1, $2) }
  416.       return false
  417.     end
  418.     # \O[i] の場合
  419.     if c == "\030"
  420.       @text.sub!(/\[(.+?)\]/, "")
  421.       letter($1.to_i)
  422.       return false
  423.     end
  424.     # <B> の場合
  425.     if c == "\031"
  426.       self.contents.font.bold = true
  427.       return false
  428.     end
  429.     # </B> の場合
  430.     if c == "\033"
  431.       self.contents.font.bold = false
  432.       return false
  433.     end
  434.     # <I> の場合
  435.     if c == "\034"
  436.       self.contents.font.italic = true
  437.       return false
  438.     end
  439.     # </I> の場合
  440.     if c == "\035"
  441.       self.contents.font.italic = false
  442.       return false
  443.     end
  444.     # 改行文字の場合
  445.     if c == "\n"
  446.       new_line
  447.       return false
  448.     end
  449.     return true
  450.   end
  451.   #--------------------------------------------------------------------------
  452.   # ● ルビ描画
  453.   #--------------------------------------------------------------------------
  454.   def rubi_draw
  455.     # フォントサイズのバックアップ
  456.     f_size = self.contents.font.size
  457.     # ルビサイズの設定
  458.     size = [(f_size + 66) / 8, f_size * 2 / 3].min
  459.     if @h_window.active
  460.       @h_window.contents.font.size = size
  461.     else
  462.       self.contents.font.size = size
  463.     end
  464.     # ルビのテキスト長 / メインテキストのテキスト長の算出
  465.     num = @rubi_s / @main_s.to_f
  466.     # 一回の描画でどれだけルビを振るか計算
  467.     cnt = num.ceil - (num.ceil - num).round
  468.     # 描画回数分だけルビの描画
  469.     for i in 1..cnt
  470.       c = @rubi.slice!(/./m)
  471.       # 履歴表示中の場合、履歴ウィンドウにルビを描画
  472.       if @h_window.active
  473.         @h_window.contents.draw_text(@rubi_x - 5 - size / 2,
  474.           @h + @py - size + 3, 10 + size, 6 + size, c, 1)
  475.       # メッセージウィンドウにルビを描画
  476.       else
  477.         self.contents.draw_text(@rubi_x - 5 - size / 2,
  478.           @h + @py - size + 3, 10 + size, 6 + size, c, 1)
  479.       end
  480.       @rubi_x += @rubi_w
  481.       @rubi_s -= 1
  482.     end
  483.     @main_s -= 1
  484.     self.contents.font.size = f_size
  485.   end
  486.   #--------------------------------------------------------------------------
  487.   # ● ルビ設定
  488.   #--------------------------------------------------------------------------
  489.   def rubi_set(main, rubi)
  490.     text = main.clone
  491.     @rubi = rubi.clone
  492.     @main_s = 0
  493.     @rubi_s = 0
  494.     while(main.slice!(/./m) != nil)
  495.       @main_s += 1
  496.     end
  497.     while(rubi.slice!(/./m) != nil)
  498.       @rubi_s += 1
  499.     end
  500.     f_size = self.contents.font.size
  501.     main_w = self.contents.text_size(text).width
  502.     self.contents.font.size = [(f_size + 66) / 8, f_size * 2 / 3].min
  503.     rubi_w = self.contents.text_size(@rubi).width
  504.     if main_w >= rubi_w or @rubi_s == 1
  505.       @rubi_x = @x + main_w.to_f / (@rubi_s * 2)
  506.       @rubi_w = main_w.to_f / @rubi_s
  507.     else
  508.       @rubi_x = @x - (rubi_w - main_w - self.contents.font.size) / 2
  509.       @rubi_w = rubi_w.to_f / @rubi_s
  510.     end
  511.     self.contents.font.size = f_size
  512.     return text
  513.   end
  514.   #--------------------------------------------------------------------------
  515.   # ● 外字の表示
  516.   #--------------------------------------------------------------------------
  517.   def letter(i)
  518.     pict = RPG::Cache.windowskin("Letter_" + (i / 16).to_s)
  519.     p_width = pict.width / 4
  520.     p_height = pict.height / 4
  521.     p_x = i % 4
  522.     p_y = (i % 16) / 4
  523.     rect = Rect.new(p_x * p_width, p_y * p_height, p_width, p_height)
  524.     if @h_window.active
  525.       @h_window.contents.blt(@x,
  526.         @h + @py + self.contents.font.size - p_height + 5, pict, rect)
  527.     else
  528.       self.contents.blt(@x,
  529.         @h + @py + self.contents.font.size - p_height + 5, pict, rect)
  530.     end
  531.     @x += p_width
  532.   end
  533.   #--------------------------------------------------------------------------
  534.   # ● 文字色変更
  535.   #--------------------------------------------------------------------------
  536.   def c_change
  537.     # 文字色を変更
  538.     @text.sub!(/\[(\d+)\]/, "")
  539.     color = $1.to_i
  540.     if color >= 0 and color <= 7
  541.       if @h_window.active
  542.         @h_window.contents.font.color = text_color(color)
  543.       else
  544.         self.contents.font.color = text_color(color)
  545.       end
  546.     end
  547.   end
  548.   #--------------------------------------------------------------------------
  549.   # ● 所持金表示
  550.   #--------------------------------------------------------------------------
  551.   def gold
  552.     # ゴールドウィンドウを作成
  553.     if @gold_window == nil
  554.       @gold_window = Window_Gold.new
  555.       @gold_window.x = 560 - @gold_window.width
  556.       if $game_temp.in_battle
  557.         @gold_window.y = 192
  558.       else
  559.         @gold_window.y = self.y >= 128 ? 32 : 384
  560.       end
  561.       @gold_window.opacity = self.opacity
  562.       @gold_window.back_opacity = self.back_opacity
  563.     end
  564.   end
  565.   #--------------------------------------------------------------------------
  566.   # ● 文字サイズ変更
  567.   #--------------------------------------------------------------------------
  568.   def s_change
  569.     # 文字色を変更
  570.     @text.sub!(/\[([0-9]+)\]/, "")
  571.     @h += self.contents.font.size - $1.to_i
  572.     self.contents.font.size = $1.to_i
  573.   end
  574.   #--------------------------------------------------------------------------
  575.   # ● 行のテキスト幅の取得
  576.   #--------------------------------------------------------------------------
  577.   def max_width(text)
  578.     # 不要な制御文字の削除
  579.     text.gsub!(/\001\[\d+\]/) { "" }
  580.     text.gsub!(/\002/) { "" }
  581.     text.gsub!(/\003\[\d+\]/) { "" }
  582.     text.gsub!(/\004/) { "" }
  583.     text.gsub!(/\005/) { "" }
  584.     text.gsub!(/\006/) { "" }
  585.     text.gsub!(/\010/) { "" }
  586.     text.gsub!(/\016/) { "" }
  587.     text.gsub!(/\017/) { "" }
  588.     text.gsub!(/\020/) { "" }
  589.     text.gsub!(/\022/) { "" }
  590.     text.gsub!(/\023/) { "" }
  591.     text.gsub!(/\024/) { "" }
  592.     text.gsub!(/\026\[(\w+)\]/) { "" }
  593.     text.gsub!(/\027\[(.+?),(.+?)\]/) { $1 }
  594.    
  595.    
  596.     # 現在のウィンドウ情報を取得
  597.     size = self.contents.font.size
  598.     bold = self.contents.font.bold
  599.     italic = self.contents.font.italic
  600.     width = 0
  601.     i = @i
  602.     while ((c = text.slice!(/./m)) != nil)
  603.       # テキストが \I の場合インデントの設定
  604.       if c == "\021"
  605.         i = width
  606.         if @y >= $game_temp.choice_start
  607.           i = width - 8
  608.         end
  609.         next
  610.       end
  611.       # \F[n] の場合、フォントサイズの変更
  612.       if c == "\025"
  613.         text.sub!(/\[([0-9]+)\]/, "")
  614.         self.contents.font.size = $1.to_i
  615.         next
  616.       end
  617.       # テキストが\O[i] の場合、外字分だけ幅を増やす
  618.       if c == "\030"
  619.         text.sub!(/\[(.+?)\]/, "")
  620.         width += RPG::Cache.windowskin("Letter_"+($1.to_i/16).to_s).width / 4
  621.         next
  622.       end
  623.       # <B> の場合
  624.       if c == "\031"
  625.         self.contents.font.bold = true
  626.         next
  627.       end
  628.       # </B> の場合
  629.       if c == "\033"
  630.         self.contents.font.bold = false
  631.         next
  632.       end
  633.       # <I> の場合
  634.       if c == "\034"
  635.         self.contents.font.italic = true
  636.         next
  637.       end
  638.       # </I> の場合
  639.       if c == "\035"
  640.         self.contents.font.italic = false
  641.         next
  642.       end
  643.       width += self.contents.text_size(c).width
  644.     end
  645.     # 行終了時のウィンドウ情報の格納
  646.     e_size = self.contents.font.size
  647.     e_bold = self.contents.font.bold
  648.     e_italic = self.contents.font.italic
  649.     # ウィンドウ情報を元に戻す
  650.     self.contents.font.size = size
  651.     self.contents.font.bold = bold
  652.     self.contents.font.italic = italic
  653.     return [width, i, e_size, e_bold, e_italic]
  654.   end
  655.   #--------------------------------------------------------------------------
  656.   # ● 文章全体の幅の取得
  657.   #--------------------------------------------------------------------------
  658.   def text_width(sentence)
  659.     # 現在のウィンドウ情報を取得
  660.     size = self.contents.font.size
  661.     bold = self.contents.font.bold
  662.     italic = self.contents.font.italic
  663.     i = @i
  664.     x = @x
  665.     # 文章幅の取得開始
  666.     text = sentence.clone
  667.     width = 0
  668.     # \A[n] の場合
  669.     if text[/\026/]
  670.       text.sub!(/\026\[(\w+)\]/, "")
  671.       actor($1, false)
  672.       width = @x
  673.     end
  674.     cnt = 0
  675.     while text != ""
  676.       t_width = max_width(text[/^.*?\n/])
  677.       # 選択肢だった場合は幅に32加算する
  678.       t_width[0] += 20 if cnt >= $game_temp.choice_start
  679.       width = [width, @i + t_width[0]].max
  680.       # ウィンドウ情報を更新して次の行へ
  681.       @i = t_width[1]
  682.       self.contents.font.size = t_width[2]
  683.       self.contents.font.bold = t_width[3]
  684.       self.contents.font.italic = t_width[4]
  685.       text.sub!(/^.*?\n/) {""}
  686.       cnt += 1
  687.     end
  688.     # ウィンドウ情報を元に戻す
  689.     self.contents.font.size = size
  690.     self.contents.font.bold = bold
  691.     self.contents.font.italic = italic
  692.     @i = i
  693.     @x = x
  694.     return width + @fi + 4
  695.   end
  696.   #--------------------------------------------------------------------------
  697.   # ● 行の最大テキスト高さを求める
  698.   #--------------------------------------------------------------------------
  699.   def max_height(sentence)
  700.     text = sentence[/(.+?)\n/]
  701.     t_size = 0
  702.     # テキストが空になるまで繰り返し
  703.     while text != "" and text != nil
  704.       c = text.slice!(/./m)
  705.       # テキストが \C[n] か \S[n] の場合次のテキストへ
  706.       if c == "\001" or c == "\003"
  707.         text.sub!(/\[([0-9]+)\]/, "")
  708.         next
  709.       end
  710.       # アクターグラフィックの場合次のテキストへ
  711.       if c == "\026"
  712.         text.sub!(/\[(\w+)\]/, "")
  713.         next
  714.       end
  715.       # テキストが\O[i] の場合
  716.       if c == "\030"
  717.         text.sub!(/\[(.+?)\]/, "")
  718.         p_height = RPG::Cache.windowskin("Letter_"+($1.to_i/16).to_s).height/4
  719.         l_height = [((p_height + 1) * 8 - 66) / 9, (p_height + 1) * 3 / 5].max
  720.         t_size = [t_size, l_height].max
  721.         next
  722.       end
  723.       # テキストが \F[n] の場合、最大テキスト高さに n を代入
  724.       if c == "\025"
  725.         text.sub!(/\[([0-9]+)\]/, "")
  726.         t_size = [t_size, $1.to_i].max
  727.       end
  728.       # 最大テキスト高さが0の場合、現在のフォントサイズを代入
  729.       t_size = self.contents.font.size if t_size == 0
  730.     end
  731.     return t_size
  732.   end
  733.   #--------------------------------------------------------------------------
  734.   # ● 文章全体の高さを求める
  735.   #--------------------------------------------------------------------------
  736.   def text_height(sentence)
  737.     # 高さ・ルビ分の高さを初期化
  738.     h = 0
  739.     size = self.contents.font.size
  740.     text = sentence.clone
  741.     if text[/^.*?\n/][/\027/]
  742.       py = [(max_height(text) + 66) / 8, max_height(text) * 2 / 3].min - 5
  743.     else
  744.       py = 0
  745.     end
  746.     # 文章の総合高さを計算
  747.     while text != ""
  748.       # 現在の行の高さを計算
  749.       height = max_height(text)
  750.       # 総高さに現在の行の高さを加算
  751.       h += height + [(height + 66) / 8, height * 2 / 3].min - 1
  752.       # \F[n] の場合、フォントサイズの変更
  753.       if text[/^.*?\n/][/.*\025\[(\d+)\]/]
  754.         self.contents.font.size = $1.to_i
  755.       end
  756.       # 次の行へ
  757.       text.sub!(/^.*?\n/) {""}
  758.     end
  759.     # 顔グラフィックがある場合
  760.     if sentence[/\026/]
  761.       h = [h, 100].max
  762.     end
  763.     self.contents.font.size = size
  764.     # 文章全体の高さを返す
  765.     return h
  766.   end
  767.   #--------------------------------------------------------------------------
  768.   # ● 改行
  769.   #--------------------------------------------------------------------------
  770.   def new_line
  771.     # 選択肢ならカーソルの幅を更新
  772.     if @h_window.active == false and @y >= $game_temp.choice_start
  773.       @cursor_width = [@cursor_width, @x].max
  774.     end
  775.     # y に 1 を加算
  776.     @y += 1
  777.     # 次の行の最大テキスト高さ + ルビ分の字下げ
  778.     height = max_height(@text)
  779.     @h += height + [(height + 66) / 8, height * 2 / 3].min - 1
  780.     @x = @fi + @i
  781.     # 選択肢なら字下げを行う
  782.     if @h_window.active == false and @y >= $game_temp.choice_start
  783.       @x = 8 + @fi + @i
  784.       # ルビ付きの場合、字下げを行う
  785.       text = @text[/^.*?\n/]
  786.       font_size = self.contents.font.size
  787.       r_height = 0
  788.       while text != "" and text != nil
  789.         c = text.slice!(/./m)
  790.         # \F[n] の場合、フォントサイズの変更
  791.         if c == "\025"
  792.           text.sub!(/\[([0-9]+)\]/, "")
  793.           font_size = $1.to_i
  794.           next
  795.         end
  796.         # ルビが存在した場合
  797.         if c == "\027"
  798.           text.sub!(/\[(.+?),(.+?)\]/, "")
  799.           # ルビのテキストサイズを格納
  800.           r_height = [r_height, font_size].max
  801.           next
  802.         end
  803.       end
  804.       # 字下げの設定
  805.       @py = [(r_height + [(r_height + 66) / 8, r_height * 2 / 3].min - 5) -
  806.         max_height(@text), 0].max
  807.     end
  808.     # 次の文字へ
  809.   end
  810.   #--------------------------------------------------------------------------
  811.   # ● フレーム更新
  812.   #--------------------------------------------------------------------------
  813.   def update
  814.    
  815.     # メッセージ履歴の呼び出し
  816.   #  if @h_window.active == false and (@contents_showed or
  817.   #       $game_system.map_interpreter.running? == false) and
  818.    #     (Input.trigger?(Input::L) or Input.trigger?(Input::R)) and
  819.    #     not $game_player.message_history.empty?
  820.    #   history_start
  821.   #  end
  822.   
  823.     if @h_window.active
  824.       if @h_window.opacity < 255
  825.         @h_window.opacity += 24
  826.         @h_window.contents_opacity += 24
  827.         @bar.opacity += 24
  828.         return
  829.       end
  830.       history_update
  831.       return
  832.     end
  833.     # メッセージ履歴消去中の場合
  834.     if @h_window.opacity > 0
  835.       # 透過度を増やす
  836.       @h_window.opacity -= 48
  837.       @h_window.contents_opacity -= 48
  838.       @bar.opacity -= 48
  839.       # メッセージ履歴が完全透過状態になった場合
  840.       if @h_window.opacity == 0
  841.         @h_window.visible = false
  842.         @h_window.contents.dispose
  843.         @bar.bitmap.dispose
  844.         @bar.dispose
  845.         if @contents_showed == false
  846.           $game_temp.message_window_showing = false
  847.         end
  848.       end
  849.       return
  850.     end
  851.     super
  852.     # 吹き出し表示の場合、ウィンドウ位置設定
  853.     window_position if @event != nil
  854.     # フェードインの場合
  855.     if @fade_in
  856.       self.contents_opacity += 24
  857.       @face.opacity += 24 if FADE
  858.       if @input_number_window != nil
  859.         @input_number_window.contents_opacity += 24
  860.       end
  861.       if self.contents_opacity == 255
  862.         @fade_in = false
  863.       end
  864.     end
  865.     # 数値入力中の場合
  866.     if @input_number_window != nil
  867.       @input_number_window.update
  868.       # 決定
  869.       if Input.trigger?(Input::C)
  870.         if @push_enter
  871.           self.pause = false
  872.           @push_enter = false
  873.           @contents_showed = false
  874.           return
  875.         end
  876.         $game_system.se_play($data_system.decision_se)
  877.         $game_variables[$game_temp.num_input_variable_id] =
  878.                                                   @input_number_window.number
  879.         $game_map.need_refresh = true
  880.         # 数値入力ウィンドウを解放
  881.         @input_number_window.dispose
  882.         @input_number_window = nil
  883.         terminate_message
  884.       end
  885.       return
  886.     end
  887.     # メッセージ表示中の場合
  888.     if @contents_showing and @contents_showed == false
  889.       if (ENTER and Input.trigger?(Input::C)) or
  890.           ($game_variables[MSN_SKIP] >= ($DEBUG ? 0 : 1) and Input.press?(Input::SHIFT))
  891.         @wait = 0
  892.       end
  893.       if @wait > 0
  894.         @wait -= 1
  895.         return if @wait > 0
  896.       end
  897.       refresh
  898.       return
  899.     end
  900.     # メッセージ表示終了の場合
  901.     if @contents_showed
  902.       # 選択肢の表示中でなければポーズサインを表示
  903.       if $game_temp.choice_max == 0
  904.         self.pause = true
  905.       end
  906.       # キャンセル
  907.       if Input.trigger?(Input::B)
  908.         if $game_temp.choice_max > 0 and $game_temp.choice_cancel_type > 0
  909.           $game_system.se_play($data_system.cancel_se)
  910.           $game_temp.choice_proc.call($game_temp.choice_cancel_type - 1)
  911.           terminate_message
  912.         end
  913.       end
  914.       # 決定
  915.       if Input.trigger?(Input::C)
  916.         if @push_enter
  917.           self.pause = false
  918.           @push_enter = false
  919.           @contents_showed = false
  920.           return
  921.         end
  922.         if $game_temp.choice_max > 0
  923.           $game_system.se_play($data_system.decision_se)
  924.           $game_temp.choice_proc.call(self.index)
  925.         end
  926.         terminate_message
  927.       end
  928.       if $game_variables[MSN_SKIP] == 2 and Input.press?(Input::SHIFT) and
  929.           $game_temp.choice_max == 0
  930.         if @push_enter
  931.           self.pause = false
  932.           @push_enter = false
  933.           @contents_showed = false
  934.           return
  935.         end
  936.         terminate_message
  937.       end
  938.       if @contents_close and $game_temp.choice_max == 0
  939.         if $game_temp.choice_max > 0
  940.           $game_system.se_play($data_system.decision_se)
  941.           $game_temp.choice_proc.call(self.index)
  942.         end
  943.         terminate_message
  944.       end
  945.       return
  946.     end
  947.     # フェードアウト中以外で表示待ちのメッセージか選択肢がある場合
  948.     if @fade_out == false and $game_temp.message_text != nil
  949.       @contents_showing = true
  950.       $game_temp.message_window_showing = true
  951.       reset_window
  952.       text_initialize
  953.       self.visible = true
  954.       self.contents_opacity = 0
  955.       @face.bitmap = nil
  956.       @face.visible = true
  957.       if FADE
  958.         @face.opacity = 0
  959.       else
  960.         @face.opacity = 255
  961.       end
  962.       if @input_number_window != nil
  963.         @input_number_window.contents_opacity = 0
  964.       end
  965.       @fade_in = true
  966.       refresh
  967.       Graphics.frame_reset
  968.       return
  969.     end
  970.     # 表示すべきメッセージがないが、ウィンドウが可視状態の場合
  971.     if self.visible
  972.       @fade_out = true
  973.       self.opacity -= 48
  974.       @face.opacity -= 48
  975.       if self.opacity == 0
  976.         self.visible = false
  977.         @face.visible = false
  978.         @fade_out = false
  979.         $game_temp.message_window_showing = false
  980.       end
  981.       return
  982.     end
  983.   end
  984.   #--------------------------------------------------------------------------
  985.   # ● メッセージ履歴テキスト格納
  986.   #--------------------------------------------------------------------------
  987.   def history_write(text)
  988.     # メッセージ履歴に不要な制御文字の削除
  989.     text.gsub!(/\002/) { "" }
  990.     text.gsub!(/\003\[\d+\]/) { "" }
  991.     text.gsub!(/\004/) { "" }
  992.     text.gsub!(/\005/) { "" }
  993.     text.gsub!(/\006/) { "" }
  994.     text.gsub!(/\010/) { "" }
  995.     text.gsub!(/\016/) { "" }
  996.     text.gsub!(/\017/) { "" }
  997.     text.gsub!(/\020/) { "" }
  998.     text.gsub!(/\026\[(\w+)\]/) { "" }

  999.     # メッセージ履歴の初期化
  1000.     unless $game_player.message_history.is_a?(Array)
  1001.       $game_player.history_size = 100
  1002.       $game_player.message_history = []
  1003.     end
  1004.     # 現在のテキストをメッセージ履歴に格納
  1005.     $game_player.message_history.push([text, text_height(text)])
  1006.     # メッセージ履歴のサイズが大きい場合、最初の方より履歴を削除
  1007.     if $game_player.message_history.size > $game_player.history_size
  1008.       $game_player.message_history.shift
  1009.     end
  1010.   end
  1011.   #--------------------------------------------------------------------------
  1012.   # ● メッセージ履歴テキスト描画
  1013.   #--------------------------------------------------------------------------
  1014.   def history_refresh
  1015.     # 描画範囲に何もかかれていない場合、メッセージ履歴の描画を行う
  1016.     while (@h >= @h_window.oy and @h != 0)
  1017.       # 初期設定
  1018.       @text = $game_player.message_history[@index][0].clone
  1019.       h = @h
  1020.       self.contents.font.size = 22
  1021.       self.contents.font.color = normal_color
  1022.       self.contents.font.bold = false
  1023.       self.contents.font.italic = false
  1024.       @rubi = ""
  1025.       @x = @i = 4
  1026.       @fi = @y = 0
  1027.       @h += max_height(@text) - self.contents.font.size - text_height(@text)
  1028.       # ルビ付きの場合、字下げを行う
  1029.       text = @text[/^.*?\n/]
  1030.       font_size = self.contents.font.size
  1031.       r_height = 0
  1032.       while ((c = text.slice!(/./m)) != nil)
  1033.         # \F[n] の場合、フォントサイズの変更
  1034.         if c == "\025"
  1035.           text.sub!(/\[([0-9]+)\]/, "")
  1036.           font_size = $1.to_i
  1037.           next
  1038.         end
  1039.         # ルビが存在した場合
  1040.         if c == "\027"
  1041.           text.sub!(/\[(.+?),(.+?)\]/, "")
  1042.           # ルビのテキストサイズを格納
  1043.           r_height = [r_height, font_size].max
  1044.           next
  1045.         end
  1046.       end
  1047.       # 字下げの設定
  1048.       @py = [(r_height + [(r_height + 66) / 8, r_height * 2 / 3].min - 5) -
  1049.         max_height(@text), 0].max
  1050.       # c に 1 文字を取得 (文字が取得できなくなるまでループ)
  1051.       while ((c = @text.slice!(/./m)) != nil)
  1052.         next unless control(c)
  1053.         # 文字を描画
  1054.         size = self.contents.font.size
  1055.         @h_window.contents.font.size = size
  1056.         @h_window.contents.font.bold = self.contents.font.bold
  1057.         @h_window.contents.font.italic = self.contents.font.italic
  1058.         @h_window.contents.draw_text(@x, @h + @py, 10 + size, 10 + size, c)
  1059.         # x に描画した文字の幅を加算
  1060.         @x += @h_window.contents.text_size(c).width
  1061.         rubi_draw if @rubi != ""
  1062.       end
  1063.       @h = h - text_height($game_player.message_history[@index][0])
  1064.       @index -= 1
  1065.     end
  1066.   end
  1067.   #--------------------------------------------------------------------------
  1068.   # ● メッセージ履歴呼び出し
  1069.   #--------------------------------------------------------------------------
  1070.   def history_start
  1071.     # メッセージ履歴初期化設定
  1072.     $game_temp.message_window_showing = true
  1073.     @h_window.active = true
  1074.     @h_window.visible = true
  1075.     # メッセージ履歴の最終行より、どれだけ描画できるか計算を行う
  1076.     @h = 0
  1077.     for history in $game_player.message_history
  1078.       @h += history[1]
  1079.     end
  1080.     # メッセージ履歴描画矩形の作成
  1081.     @h_window.contents = Bitmap.new(@h_window.width - 32, @h)
  1082.     @h_window.opacity = 0
  1083.     @h_window.contents_opacity = 0
  1084.     @h_window.contents.fill_rect(
  1085.       @h_window.width - 38, 0, 6, @h, Color.new(0, 0, 0, 128))
  1086.     @h_window.oy = [@h - (@h_window.height - 32), 0].max
  1087.     # メッセージ履歴サイドバーの作成
  1088.     @bar = Sprite.new(self.viewport)
  1089.     height = [(@h_window.height - 32) ** 2 / @h, @h_window.height - 32].min
  1090.     @bar.x = @h_window.x + @h_window.width - 22
  1091.     @bar.y = @h_window.y + @h_window.height - 16 - height
  1092.     @bar.z = 10003
  1093.     @bar.opacity = 0
  1094.     @bar.bitmap = Bitmap.new(6, height)
  1095.     @bar.bitmap.fill_rect(0, 0, 6, height, Color.new(16, 32, 64, 224))
  1096.     @bar.bitmap.fill_rect(0, 0, 5, height - 1, Color.new(32, 64, 128, 224))
  1097.     @bar.bitmap.fill_rect(1, 1, 4, height - 2, Color.new(128, 224, 255, 255))
  1098.     @bar.bitmap.fill_rect(1, 1, 3, height - 3, Color.new(192, 255, 255, 255))
  1099.     @bar.bitmap.fill_rect(2, 2, 2, height - 4, Color.new(32, 64, 128, 192))
  1100.     @bar.bitmap.fill_rect(3, 3, 1, height - 5, Color.new(48, 96, 192, 192))
  1101.     @scroll_height = @h
  1102.     # メッセージ履歴描画情報の初期設定
  1103.     @index = $game_player.message_history.size - 1
  1104.     # メッセージ履歴描画
  1105.     history_refresh
  1106.   end
  1107.   #--------------------------------------------------------------------------
  1108.   # ● メッセージ履歴フレーム更新
  1109.   #--------------------------------------------------------------------------
  1110.   def history_update
  1111.     @h_window.update
  1112.     # 十字キーの上が押下された場合
  1113.     if Input.press?(Input::UP)
  1114.       # ウィンドウ上方向にスクロール
  1115.       @h_window.oy = [@h_window.oy - 8, 0].max
  1116.     end
  1117.     # 十字キーの下が押下された場合
  1118.     if Input.press?(Input::DOWN)
  1119.       # ウィンドウ下方向にスクロール
  1120.       @h_window.oy = [[@h_window.oy + 8,
  1121.         @h_window.contents.height - (@h_window.height - 32)].min, 0].max
  1122.     end
  1123.     # 十字キーの左が押下された場合
  1124.     if Input.press?(Input::LEFT)
  1125.       # ウィンドウ上方向に大きくスクロール
  1126.       @h_window.oy = [@h_window.oy - 32, 0].max
  1127.     end
  1128.     # 十字キーの右が押下された場合
  1129.     if Input.press?(Input::RIGHT)
  1130.       # ウィンドウ下方向に大きくスクロール
  1131.       @h_window.oy = [[@h_window.oy + 32,
  1132.         @h_window.contents.height - (@h_window.height - 32)].min, 0].max
  1133.     end
  1134.     # L ボタンが押下された場合
  1135.     if Input.press?(Input::L)
  1136.       # ウィンドウ上方向に大きくスクロール
  1137.       @h_window.oy = [@h_window.oy - 96, 0].max
  1138.     end
  1139.     # R ボタンの右が押下された場合
  1140.     if Input.press?(Input::R)
  1141.       # ウィンドウ下方向に大きくスクロール
  1142.       @h_window.oy = [[@h_window.oy + 96,
  1143.         @h_window.contents.height - (@h_window.height - 32)].min, 0].max
  1144.     end
  1145.     # スクロールバーの移動
  1146.     @bar.y = 16 + @h_window.y +
  1147.       ((@h_window.height - 32) * @h_window.oy / @scroll_height.to_f).ceil
  1148.     # メッセージ履歴の更新
  1149.     history_refresh
  1150.     if Input.trigger?(Input::B)
  1151.       @h_window.active = false
  1152.     end
  1153.   end
  1154.   #--------------------------------------------------------------------------
  1155.   # ● カーソルの矩形更新
  1156.   #--------------------------------------------------------------------------
  1157.   def update_cursor_rect
  1158.     if @index >= 0
  1159.       n = @c_h + @py - ($game_temp.choice_max - 1) * 32
  1160.       self.cursor_rect.set(8, n + @index * 32, @cursor_width, 32)
  1161.     else
  1162.       self.cursor_rect.empty
  1163.     end
  1164.   end
  1165. end

  1166. #==============================================================================
  1167. # ■ RPG
  1168. #------------------------------------------------------------------------------
  1169. #  基本モジュールです
  1170. #==============================================================================

  1171. module RPG
  1172.   #============================================================================
  1173.   # ■ Cache
  1174.   #----------------------------------------------------------------------------
  1175.   #  画像処理を行うモジュールです。
  1176.   #============================================================================
  1177.   module Cache
  1178.     def self.face(filename)
  1179.       self.load_bitmap("Graphics/Faces/", filename)
  1180.     end
  1181.   end
  1182. end
复制代码
以上脚本替换你发的这一段。
改的地方比较杂,“顔グラフィック表示”重定义,然后脚本里搜索026能找到的位置除了一处均做了更改。
依你要求传份压缩包 FIXED.zip (245.16 KB, 下载次数: 2)

现在可以直接用\a[n]了(n匹配包括下划线的任何字母数字字符,中文的全角字符也匹配。)

点评

QWQ...  发表于 2011-9-29 23:21
咱其实应该感激你的 =w= 之前一直以为正则表达式是很复杂的东西……因为被你问到才去F1帮助里学了一下……其实很简单嘛~新知识GET =W=  发表于 2011-9-29 00:45
太感激了!测是没有问题,在下来看看是如何修正的。  发表于 2011-9-29 00:39
好的 感谢  发表于 2011-9-29 00:29
... 好像怪怪的…能否直接压个档案回来,或是告知修正的部分…  发表于 2011-9-29 00:27
回复

使用道具 举报

头像被屏蔽

Lv1.梦旅人 (禁止发言)

梦石
0
星屑
50
在线时间
0 小时
注册时间
2011-9-26
帖子
9
3
发表于 2011-9-29 00:03:23 | 只看该作者
提示: 作者被禁止或删除 内容自动屏蔽
签名被屏蔽
回复

使用道具 举报

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

本版积分规则

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

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

GMT+8, 2024-11-23 12:57

Powered by Discuz! X3.1

© 2001-2013 Comsenz Inc.

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