Project1

标题: 角色站到有优先级图块上的问题 [打印本页]

作者: cinderelmini    时间: 2008-12-24 03:43
标题: 角色站到有优先级图块上的问题
这个脚本实现了角色行走时不按照一步一格的形式而是一格多步...
但是角色总是在不可通行的地图图块前一格多走一小步,到了下一格的一点点,
造成角色站到有优先级图块上了...(工程里看看)
工程:
http://rpg.blue/upload_program/d ... ject1_110489977.rar

希望高手看看....改一下脚本...... [LINE]1,#dddddd[/LINE]此贴于 2008-12-24 12:06:30 被版主darkten提醒,请楼主看到后对本贴做出回应。 [LINE]1,#dddddd[/LINE]此贴于 2008-12-26 13:07:13 被版主darkten提醒,请楼主看到后对本贴做出回应。 [LINE]1,#dddddd[/LINE]此贴于 2008-12-28 11:18:31 被版主darkten提醒,请楼主看到后对本贴做出回应。 [LINE]1,#dddddd[/LINE]版务信息:本贴由楼主自主结贴~
作者: 柳之一    时间: 2008-12-24 07:00
以下引用cinderelmini于2008-12-23 19:43:24的发言:


本贴悬赏额度如下:VIP:0   积分:100   
这个脚本实现了角色行走时不按照一步一格的形式而是一格多步...
但是角色总是在不可通行的地图图块前一格多走一小步,到了下一格的一点点,
造成角色站到有优先级图块上了...(工程里看看)
工程:
http://rpg.blue/upload_program/d/cinderelmini_Project1_110489977.rar

希望高手看看....改一下脚本......


[本贴由作者于 2008-12-23 19:44:12 最后编辑]

  1. class Game_Player < Game_Character
  2.   #--------------------------------------------------------------------------
  3.   # ● 定数
  4.   #--------------------------------------------------------------------------
  5.   TOP_SPACE = BOTTOM_SPACE = 16 # 上下の判定無視領域
  6.   LEFT_SPACE = RIGHT_SPACE = 16 # 左右の判定無視領域
  7.   #--------------------------------------------------------------------------
  8.   # ● 公開インスタンス変数
  9.   #--------------------------------------------------------------------------
  10.   attr_accessor :dot_moving     # ドット移動の向き(nil:ドット移動していない 0:止まっている)
  11.   #--------------------------------------------------------------------------
  12.   # ● 初期化
  13.   #--------------------------------------------------------------------------
  14.   def initialize
  15.     super
  16.     # ドット移動開始、立ち止まらせる
  17.     @dot_moving = 0
  18.   end
  19.   #--------------------------------------------------------------------------
  20.   # ● 移動中判定
  21.   #--------------------------------------------------------------------------
  22.   def moving?(by_update = false)
  23.     # 呼び出し元がupdate以外で、かつドット移動中のとき
  24.     if !by_update and @dot_moving
  25.       # 立ち止まっていなければ移動中
  26.       return @dot_moving != 0
  27.     else
  28.       # ドット移動中でなく、かつ論理座標と実座標が違っていれば移動中
  29.       return (!@dot_moving and (@real_x != @x * 128 or @real_y != @y * 128))
  30.     end
  31.   end
  32.   #--------------------------------------------------------------------------
  33.   # ● 移動ルートの強制
  34.   #     move_route : 新しい移動ルート
  35.   #--------------------------------------------------------------------------
  36.   def force_move_route(move_route)
  37.     # 立ち止まらせる
  38.     @dot_moving = 0
  39.     super(move_route)
  40.   end
  41.   #--------------------------------------------------------------------------
  42.   # ● フレーム更新
  43.   #--------------------------------------------------------------------------
  44.   def update
  45.     # ローカル変数に座標を記憶
  46.     last_real_x, last_real_y = @real_x, @real_y
  47.     last_x, last_y = @x, @y
  48.     # ローカル変数に移動中かどうかを記憶
  49.     last_moving = moving?(true)
  50.     # 移動中、イベント実行中、移動ルート強制中、
  51.     # メッセージウィンドウ表示中のいずれでもない場合
  52.     unless moving?(true) or $game_system.map_interpreter.running? or
  53.            @move_route_forcing or $game_temp.message_window_showing
  54.       # ドット移動
  55.       dot_move(Input.dir4)
  56.     end
  57.     super
  58.     # キャラクターが下に移動し、かつ画面上の位置が中央より下の場合
  59.     if @real_y > last_real_y and @real_y - $game_map.display_y > CENTER_Y
  60.       # マップを下にスクロール
  61.       $game_map.scroll_down(@real_y - last_real_y)
  62.     end
  63.     # キャラクターが左に移動し、かつ画面上の位置が中央より左の場合
  64.     if @real_x < last_real_x and @real_x - $game_map.display_x < CENTER_X
  65.       # マップを左にスクロール
  66.       $game_map.scroll_left(last_real_x - @real_x)
  67.     end
  68.     # キャラクターが右に移動し、かつ画面上の位置が中央より右の場合
  69.     if @real_x > last_real_x and @real_x - $game_map.display_x > CENTER_X
  70.       # マップを右にスクロール
  71.       $game_map.scroll_right(@real_x - last_real_x)
  72.     end
  73.     # キャラクターが上に移動し、かつ画面上の位置が中央より上の場合
  74.     if @real_y < last_real_y and @real_y - $game_map.display_y < CENTER_Y
  75.       # マップを上にスクロール
  76.       $game_map.scroll_up(last_real_y - @real_y)
  77.     end
  78.     # 移動中ではない場合
  79.     unless moving?(true)
  80.       # 座標が更新されたか、ドット移動中でなく前回プレイヤーが移動中だった場合
  81.       if last_x != @x or last_y != @y or (!@dot_moving and last_moving)
  82.         # 同位置のイベントとの接触によるイベント起動判定
  83.         result = check_event_trigger_here([1,2])
  84.         # 起動したイベントがない場合
  85.         if result == false
  86.           # デバッグモードが ON かつ CTRL キーが押されている場合を除き
  87.           unless $DEBUG and Input.press?(Input::CTRL)
  88.             # エンカウント カウントダウン
  89.             if @encounter_count > 0
  90.               @encounter_count -= 1
  91.             end
  92.           end
  93.         # 起動したイベントがある場合
  94.         else
  95.           # 立ち止まる、ドット移動していないならそのまま
  96.           @dot_moving = @dot_moving ? 0 : nil
  97.         end
  98.       end
  99.       # C ボタンが押された場合
  100.       if Input.trigger?(Input::C)
  101.         # 同位置および正面のイベント起動判定
  102.         check_event_trigger_here([0])
  103.         check_event_trigger_there([0,1,2])
  104.       end
  105.     end
  106.   end
  107.   #--------------------------------------------------------------------------
  108.   # ● 移動タイプ : カスタム
  109.   #--------------------------------------------------------------------------
  110.   def move_type_custom
  111.     # 停止中でなければ中断
  112.     if jumping? or moving?
  113.       return
  114.     end
  115.     # 移動コマンドのリストの最後に到達するまでループ
  116.     while @move_route_index < @move_route.list.size
  117.       # 移動コマンドを取得
  118.       command = @move_route.list[@move_route_index]
  119.       # コマンドコード 0 番 (リストの最後) の場合
  120.       if command.code == 0
  121.         # オプション [動作を繰り返す] が ON の場合
  122.         if @move_route.repeat
  123.           # 移動ルートのインデックスを最初に戻す
  124.           @move_route_index = 0
  125.         end
  126.         # オプション [動作を繰り返す] が OFF の場合
  127.         unless @move_route.repeat
  128.           # 移動ルート強制中の場合
  129.           if @move_route_forcing and not @move_route.repeat
  130.             # 移動ルートの強制を解除
  131.             @move_route_forcing = false
  132.             # オリジナルの移動ルートを復帰
  133.             @move_route = @original_move_route
  134.             @move_route_index = @original_move_route_index
  135.             @original_move_route = nil
  136.           end
  137.           # 停止カウントをクリア
  138.           @stop_count = 0
  139.         end
  140.         return
  141.       end
  142.       # 移動系コマンド (下に移動~ジャンプ) の場合
  143.       if command.code <= 14
  144.         # ドット移動強制終了
  145.         @dot_moving = nil
  146.         # コマンドコードで分岐
  147.         case command.code
  148.         when 1  # 下に移動
  149.           move_down
  150.         when 2  # 左に移動
  151.           move_left
  152.         when 3  # 右に移動
  153.           move_right
  154.         when 4  # 上に移動
  155.           move_up
  156.         when 5  # 左下に移動
  157.           move_lower_left
  158.         when 6  # 右下に移動
  159.           move_lower_right
  160.         when 7  # 左上に移動
  161.           move_upper_left
  162.         when 8  # 右上に移動
  163.           move_upper_right
  164.         when 9  # ランダムに移動
  165.           move_random
  166.         when 10  # プレイヤーに近づく
  167.           move_toward_player
  168.         when 11  # プレイヤーから遠ざかる
  169.           move_away_from_player
  170.         when 12  # 一歩前進
  171.           move_forward
  172.         when 13  # 一歩後退
  173.           move_backward
  174.         when 14  # ジャンプ
  175.           jump(command.parameters[0], command.parameters[1])
  176.         end
  177.         # オプション [移動できない場合は無視] が OFF で、移動失敗の場合
  178.         if not @move_route.skippable and not moving? and not jumping?
  179.           return
  180.         end
  181.         @move_route_index += 1
  182.         return
  183.       end
  184.       # ウェイトの場合
  185.       if command.code == 15
  186.         # ウェイトカウントを設定
  187.         @wait_count = command.parameters[0] * 2 - 1
  188.         @move_route_index += 1
  189.         return
  190.       end
  191.       # 向き変更系のコマンドの場合
  192.       if command.code >= 16 and command.code <= 26
  193.         # コマンドコードで分岐
  194.         case command.code
  195.         when 16  # 下を向く
  196.           turn_down
  197.         when 17  # 左を向く
  198.           turn_left
  199.         when 18  # 右を向く
  200.           turn_right
  201.         when 19  # 上を向く
  202.           turn_up
  203.         when 20  # 右に 90 度回転
  204.           turn_right_90
  205.         when 21  # 左に 90 度回転
  206.           turn_left_90
  207.         when 22  # 180 度回転
  208.           turn_180
  209.         when 23  # 右か左に 90 度回転
  210.           turn_right_or_left_90
  211.         when 24  # ランダムに方向転換
  212.           turn_random
  213.         when 25  # プレイヤーの方を向く
  214.           turn_toward_player
  215.         when 26  # プレイヤーの逆を向く
  216.           turn_away_from_player
  217.         end
  218.         @move_route_index += 1
  219.         return
  220.       end
  221.       # その他のコマンドの場合
  222.       if command.code >= 27
  223.         # コマンドコードで分岐
  224.         case command.code
  225.         when 27  # スイッチ ON
  226.           $game_switches[command.parameters[0]] = true
  227.           $game_map.need_refresh = true
  228.         when 28  # スイッチ OFF
  229.           $game_switches[command.parameters[0]] = false
  230.           $game_map.need_refresh = true
  231.         when 29  # 移動速度の変更
  232.           @move_speed = command.parameters[0]
  233.         when 30  # 移動頻度の変更
  234.           @move_frequency = command.parameters[0]
  235.         when 31  # 移動時アニメ ON
  236.           @walk_anime = true
  237.         when 32  # 移動時アニメ OFF
  238.           @walk_anime = false
  239.         when 33  # 停止時アニメ ON
  240.           @step_anime = true
  241.         when 34  # 停止時アニメ OFF
  242.           @step_anime = false
  243.         when 35  # 向き固定 ON
  244.           @direction_fix = true
  245.         when 36  # 向き固定 OFF
  246.           @direction_fix = false
  247.         when 37  # すり抜け ON
  248.           @through = true
  249.         when 38  # すり抜け OFF
  250.           @through = false
  251.         when 39  # 最前面に表示 ON
  252.           @always_on_top = true
  253.         when 40  # 最前面に表示 OFF
  254.           @always_on_top = false
  255.         when 41  # グラフィック変更
  256.           @tile_id = 0
  257.           @character_name = command.parameters[0]
  258.           @character_hue = command.parameters[1]
  259.           if @original_direction != command.parameters[2]
  260.             @direction = command.parameters[2]
  261.             @original_direction = @direction
  262.             @prelock_direction = 0
  263.           end
  264.           if @original_pattern != command.parameters[3]
  265.             @pattern = command.parameters[3]
  266.             @original_pattern = @pattern
  267.           end
  268.         when 42  # 不透明度の変更
  269.           @opacity = command.parameters[0]
  270.         when 43  # 合成方法の変更
  271.           @blend_type = command.parameters[0]
  272.         when 44  # SE の演奏
  273.           $game_system.se_play(command.parameters[0])
  274.         when 45  # スクリプト
  275.           result = eval(command.parameters[0])
  276.         end
  277.         @move_route_index += 1
  278.       end
  279.     end
  280.   end
  281.   #--------------------------------------------------------------------------
  282.   # ● フレーム更新 (移動)
  283.   #--------------------------------------------------------------------------
  284.   def update_move
  285.     # ドット移動中で無いなら論理座標更新
  286.     unless @dot_moving
  287.       # 移動速度からマップ座標系での移動距離に変換
  288.       distance = 2 ** @move_speed
  289.       # 論理座標が実座標より下の場合
  290.       if @y * 128 > @real_y
  291.         # 下に移動
  292.         @real_y = [@real_y + distance, @y * 128].min
  293.       end
  294.       # 論理座標が実座標より左の場合
  295.       if @x * 128 < @real_x
  296.         # 左に移動
  297.         @real_x = [@real_x - distance, @x * 128].max
  298.       end
  299.       # 論理座標が実座標より右の場合
  300.       if @x * 128 > @real_x
  301.         # 右に移動
  302.         @real_x = [@real_x + distance, @x * 128].min
  303.       end
  304.       # 論理座標が実座標より上の場合
  305.       if @y * 128 < @real_y
  306.         # 上に移動
  307.         @real_y = [@real_y - distance, @y * 128].max
  308.       end
  309.     end
  310.     # 移動時アニメが ON の場合
  311.     if @walk_anime
  312.       # アニメカウントを 1.5 増やす
  313.       @anime_count += 1.5
  314.     # 移動時アニメが OFF で、停止時アニメが ON の場合
  315.     elsif @step_anime
  316.       # アニメカウントを 1 増やす
  317.       @anime_count += 1
  318.     end
  319.   end
  320.   #--------------------------------------------------------------------------
  321.   # ● ドット移動(追加)
  322.   #     dir : 方向(0,2,4,6,8)
  323.   #--------------------------------------------------------------------------
  324.   def dot_move(dir)
  325.     @dot_moving = dir
  326.     # 立ち止まっているかドット移動中でないならすぐにリターン
  327.     if dir == 0 or !dir
  328.       return
  329.     end
  330.     # 座標の保存
  331.     last_real_x, last_real_y = @real_x, @real_y
  332.     last_x, last_y = @x, @y
  333.     # 移動速度からマップ座標系での移動距離に変換
  334.     distance = 2 ** @move_speed
  335.     # 座標を更新、進行方向側の二隅の座標を得る
  336.     case dir
  337.     when 2
  338.       turn_down
  339.       @real_y += distance
  340.       dx, dy = 0, 1
  341.       x1, y1 = @real_x + LEFT_SPACE, @real_y + 127 - BOTTOM_SPACE
  342.       x2, y2 = @real_x + 127 - RIGHT_SPACE, y1
  343.     when 4
  344.       turn_left
  345.       @real_x -= distance
  346.       dx, dy = -1, 0
  347.       x1, y1 = @real_x + LEFT_SPACE, @real_y + TOP_SPACE
  348.       x2, y2 = x1, @real_y + 127 - BOTTOM_SPACE
  349.     when 6
  350.       turn_right
  351.       @real_x += distance
  352.       dx, dy = 1, 0
  353.       x1, y1 = @real_x + 127 - RIGHT_SPACE, @real_y + TOP_SPACE
  354.       x2, y2 = x1, @real_y + 127 - BOTTOM_SPACE
  355.     when 8
  356.       turn_up
  357.       @real_y -= distance
  358.       dx, dy = 0, -1
  359.       x1, y1 = @real_x + LEFT_SPACE, @real_y + TOP_SPACE
  360.       x2, y2 = @real_x + 127 - RIGHT_SPACE, y1
  361.     end
  362.     # 二隅がいずれもキャラクタの論理座標からはみ出している場合
  363.     if (x1 / 128 != @x or y1  / 128 != @y) and (x2  / 128 != @x or y2  / 128 != @y)
  364.       # 進行方向の二隅がともに通行可能か調べる
  365.       @x, @y = x1 / 128 - dx, y1 / 128 - dy
  366.       pass1 = passable?(@x, @y, dir)
  367.       @x, @y = x2 / 128 - dx, y2 / 128 - dy
  368.       pass2 = passable?(@x, @y, dir)
  369.       # 座標を元に戻す
  370.       @x, @y = last_x, last_y
  371.       # 通行可能な場合
  372.       if pass1 and pass2
  373.         # 新しい実座標の計算
  374.         @x, @y = (@real_x + 64) / 128, (@real_y + 64) / 128
  375.         # 座標が変化したなら歩数更新
  376.         if last_x != @x or last_y != @y
  377.           increase_steps
  378.         end
  379.       # 通行不可能な場合
  380.       else
  381.         # 立ち止まる
  382.         @dot_moving = 0
  383.         # 実座標を矯正する
  384.         case dir
  385.         when 2
  386.           @real_y = [(last_real_y + 64) / 128 * 128, last_real_y].max
  387.           # 右側に寄っているとき
  388.           if @real_x / 128 < @x
  389.             # 右のイベントを先に処理
  390.             x1, x2 = x2, x1
  391.           end
  392.         when 4
  393.           @real_x = [(last_real_x + 64) / 128 * 128, last_real_x].min
  394.           # 下側に寄っているとき
  395.           if @real_y / 128 < @y
  396.             # 下のイベントを先に処理
  397.             y1, y2 = y2, y1
  398.           end
  399.         when 6
  400.           @real_x = [(last_real_x + 64) / 128 * 128, last_real_x].max
  401.           # 下側に寄っているとき
  402.           if @real_y / 128 < @y
  403.             # 下のイベントを先に処理
  404.             y1, y2 = y2, y1
  405.           end
  406.         when 8
  407.           @real_y = [(last_real_y + 64) / 128 * 128, last_real_y].min
  408.           # 右側に寄っているとき
  409.           if @real_x / 128 < @x
  410.             # 右のイベントを先に処理
  411.             x1, x2 = x2, x1
  412.           end
  413.         end
  414.         # 接触イベントの起動判定(一つ起動したらもう一つは無視)
  415.         check_event_trigger_touch(x1 / 128, y1 / 128) or
  416.         check_event_trigger_touch(x2 / 128, y2 / 128)
  417.       end
  418.     end
  419.   end
  420. end

  421. class Scene_Map
  422.   def update
  423.     # ループ
  424.     loop do
  425.       # マップ、インタプリタ、プレイヤーの順に更新
  426.       # (この更新順序は、イベントを実行する条件が満たされているときに
  427.       #  プレイヤーに一瞬移動する機会を与えないなどの理由で重要)
  428.       $game_map.update
  429.       $game_system.map_interpreter.update
  430.       $game_player.update
  431.       # システム (タイマー)、画面を更新
  432.       $game_system.update
  433.       $game_screen.update
  434.       # プレイヤーの場所移動中でなければループを中断
  435.       unless $game_temp.player_transferring
  436.         break
  437.       end
  438.       # 場所移動を実行
  439.       transfer_player
  440.       # トランジション処理中の場合、ループを中断
  441.       if $game_temp.transition_processing
  442.         break
  443.       end
  444.     end
  445.     # スプライトセットを更新
  446.     @spriteset.update
  447.     # メッセージウィンドウを更新
  448.     @message_window.update
  449.     # ゲームオーバーの場合
  450.     if $game_temp.gameover
  451.       # ゲームオーバー画面に切り替え
  452.       $scene = Scene_Gameover.new
  453.       return
  454.     end
  455.     # タイトル画面に戻す場合
  456.     if $game_temp.to_title
  457.       # タイトル画面に切り替え
  458.       $scene = Scene_Title.new
  459.       return
  460.     end
  461.     # トランジション処理中の場合
  462.     if $game_temp.transition_processing
  463.       # トランジション処理中フラグをクリア
  464.       $game_temp.transition_processing = false
  465.       # トランジション実行
  466.       if $game_temp.transition_name == ""
  467.         Graphics.transition(20)
  468.       else
  469.         Graphics.transition(40, "Graphics/Transitions/" +
  470.           $game_temp.transition_name)
  471.       end
  472.     end
  473.     # メッセージウィンドウ表示中の場合
  474.     if $game_temp.message_window_showing
  475.       return
  476.     end
  477.     # エンカウント カウントが 0 で、エンカウントリストが空ではない場合
  478.     if $game_player.encounter_count == 0 and $game_map.encounter_list != []
  479.       # イベント実行中かエンカウント禁止中でなければ
  480.       unless $game_system.map_interpreter.running? or
  481.              $game_system.encounter_disabled
  482.         # トループを決定
  483.         n = rand($game_map.encounter_list.size)
  484.         troop_id = $game_map.encounter_list[n]
  485.         # トループが有効なら
  486.         if $data_troops[troop_id] != nil
  487.           # バトル呼び出しフラグをセット
  488.           $game_temp.battle_calling = true
  489.           $game_temp.battle_troop_id = troop_id
  490.           $game_temp.battle_can_escape = true
  491.           $game_temp.battle_can_lose = false
  492.           $game_temp.battle_proc = nil
  493.         end
  494.       end
  495.     end
  496.     # B ボタンが押された場合
  497.     if Input.trigger?(Input::B)
  498.       # イベント実行中かメニュー禁止中でなければ
  499.       unless $game_system.map_interpreter.running? or
  500.              $game_system.menu_disabled
  501.         # メニュー呼び出しフラグと SE 演奏フラグをセット
  502.         $game_temp.menu_calling = true
  503.         $game_temp.menu_beep = true
  504.       end
  505.     end
  506.     # デバッグモードが ON かつ F9 キーが押されている場合
  507.     if $DEBUG and Input.press?(Input::F9)
  508.       # デバッグ呼び出しフラグをセット
  509.       $game_temp.debug_calling = true
  510.     end
  511.     # ドット移動中でなくプレイヤーの移動中である場合を除き
  512.     unless !$game_player.dot_moving and $game_player.moving?
  513.       # 各種画面の呼び出しを実行
  514.       if $game_temp.battle_calling
  515.         call_battle
  516.       elsif $game_temp.shop_calling
  517.         call_shop
  518.       elsif $game_temp.name_calling
  519.         call_name
  520.       elsif $game_temp.menu_calling
  521.         call_menu
  522.       elsif $game_temp.save_calling
  523.         call_save
  524.       elsif $game_temp.debug_calling
  525.         call_debug
  526.       end
  527.     end
  528.   end
  529. end
复制代码

用在main前面,就ok了。按照像素移动的,一个多步
放在新建工程里面就可以了。
作者: cinderelmini    时间: 2008-12-25 03:21
可是问题是一样的...
角色还是会走多一个像素,到下一格有优先级的图块上面啊....
作者: dbshy    时间: 2008-12-25 04:00
没有rm,希望帖出脚本
作者: cinderelmini    时间: 2008-12-25 04:09
脚本太长...帖子不够发.....
所以才用工程弄上来的说...
作者: cinderelmini    时间: 2008-12-25 05:33
难道就没办法把它修改一下吗?
看来明尼可能又要掩泪甩掉一个功能了....{/fd}
作者: 200878242    时间: 2008-12-26 04:22
把优先级1调成5
作者: cinderelmini    时间: 2008-12-26 04:41
LS的...这怎么可以呢...那么其他需要放在那些优先级1调成5上面的不是都要改优先级了吗?

所以...明尼不想用优先级来修改的说....
作者: Sucre    时间: 2008-12-26 04:44
提示: 作者被禁止或删除 内容自动屏蔽
作者: cinderelmini    时间: 2008-12-26 22:38
那么,有办法解决吗?...
这个东西就这点比较烦人...明尼还是很喜欢这个东西的说....
作者: dbshy    时间: 2008-12-28 04:57
今天装了RM,抽空看了一下,因为时间问题,没有仔细看脚本
大概是这里
def move_on
if @y < (@y + ..)....
后面加个判断条件 passable(x,y,2)

ps:没有调试,如果不成功,可能需要修改@y_revise的算法
涉及到move_down_p ,down1,因为时间不够,就没仔细看了

[LINE]1,#dddddd[/LINE]系统信息:本贴由楼主认可为正确答案,66RPG感谢您的热情解答~
作者: cinderelmini    时间: 2008-12-28 22:14
就这样了。这个问题没解决的话就这样算了吧。。。
谢谢各位了。。。。




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