扫描二维码关注官方公众号
返回列表
+ 发新帖
查看: 164|回复: 0

[转载发布] 萌新改造外站的多重动画脚本

[复制链接]
累计送礼:
0 个
累计收礼:
0 个
  • TA的每日心情
    开心
    昨天 16:47
  • 签到天数: 113 天

    连续签到: 3 天

    [LV.6]常住居民II

    2338

    主题

    400

    回帖

    1万

    积分

    管理员

    Rank: 9Rank: 9Rank: 9

    VIP
    6
    卡币
    10580
    OK点
    16
    推广点
    0
    同能卷
    0
    积分
    13346

    灌水之王

    发表于 2024-4-18 18:59:01 | 显示全部楼层 |阅读模式
    转自http://mintoroom.saloon.jp/Main.html
    みんとの部屋
    作者:みんと
    大感谢
    需要和前置脚本一起使用
    这脚本功能是在播放一个动画的基础下再播放新的动画 多个动画可以同时存在
    多重动画脚本原版只能调用动画ID765以內的动画

    萌新进行了小改造改成能调用9999的动画ID
    原版调用动画ID是在SE闪烁强度为0
    RGB的合计值为动画ID

    萌新改成
    当强度为0 持续时间为2帧时
    动画ID=R+G连接成一起的值
    当强度为0 持续时间为3帧时
    动画ID=R+G+B连接成一起的值
    例1:R99 G99 =9999
    例2:R50 G0 B0 =5000
    以下放脚本
    RUBY 代码
    1. #◆◇◆◇◆  ☆ 多重追加アニメーション ver 1.02  ◇◆◇◆◇
    2. # ☆ マスタースクリプト ver 2.00 以降専用
    3. #  サポート掲示板 [url]http://www2.ezbbs.net/21/minto-aaa/[/url]
    4. #   by みんと
    5. =begin
    6. 更新履歴
    7. ver 1.02(2009/11/24)
    8. ・イベントの解放に時間がかかる仕様を変更
    9. ver 1.01(2008/09/07)
    10. ・F12リセットでエラー落ちするミスを修正
    11. セクション指定上下関係
    12. アクティブ・アニメシェイク
    13. A・C・A・システム
    14. このスクリプト
    15. 説明
    16. デフォルトでは、
    17. 戦闘アニメ表示中に、新たなアニメを表示した場合、
    18. 表示中のアニメが消えてしまいますが、
    19. 多重表示できるアニメ表示機能を追加します。
    20. 設定には
    21. アニメーションに「強さが 0」の「画面のフラッシュ」を設定してください。
    22. そのフレームで、アニメを追加します。
    23. アニメのIDはフラッシュの赤、青、緑の合計値になります。
    24. なので、事実上、ID_765番までのアニメを追加表示できます。
    25. フラッシュの条件も機能しますので、
    26. ヒットした場合のみの追加エフェクト、
    27. ミスした場合のみのエフェクトなど、
    28. バリエーションが広がります。
    29. なお、追加にACAシステムが反映されないのは仕様となっています。
    30. (動きがおかしくなってしまうので)
    31. またデフォルトのアニメの表示機能自体はそのままです。
    32. マップでも反映されます。
    33. =end
    34. #==============================================================================
    35. # ☆ MINTO
    36. #------------------------------------------------------------------------------
    37. #   様々なフラグを扱うメインモジュールです。
    38. #==============================================================================
    39. module MINTO
    40.   # 多重追加アニメーションを有効化( true で有効 / false で無効 )
    41.   RGSS["Array_Anima"] = true
    42. end
    43. ifMINTO::RGSS["Array_Anima"]
    44. #==============================================================================
    45. # ☆ Mint_Cache
    46. #------------------------------------------------------------------------------
    47. #   様々なキャッシュを扱うモジュールです。
    48. #==============================================================================
    49. module Mint_Cache
    50.   # キャッシュを初期化
    51.   @cache = {}
    52.   #-------------------------------------------------------------------------
    53.   # ● ビットマップのロード
    54.   #    folder_name : 読み込むフォルダ
    55.   #    filename    : 読み込むファイル
    56.   #    hue         : 色相の情報
    57.   #-------------------------------------------------------------------------
    58.   defself.load_bitmap(folder_name, filename, hue = 0)
    59.     # ハッシュ用のパスを設定
    60.     path = folder_name + filename
    61.     # 未作成のアニメかそのアニメが解放されている場合
    62.     ifnot@cache.include?(path)or@cache[path].disposed?
    63.       # ファイルネームが空文字以外の場合
    64.       if filename != ""
    65.         # ファイルからビットマップを作成
    66.         @cache[path] = Bitmap.new(path)
    67.       else
    68.         # ビットマップを作成
    69.         @cache[path] = Bitmap.new(32, 32)
    70.       end
    71.     end
    72.     # 色相の変換が無い場合
    73.     if hue == 0
    74.       # 元の画像ファイルを渡す
    75.       return@cache[path]
    76.     else
    77.       # ハッシュ用のキーを取得
    78.       key = [path, hue]
    79.       # キャッシュに存在しないかすでに解放されている場合
    80.       ifnot@cache.include?(key)or@cache[key].disposed?
    81.         # キャッシュに複製を渡す
    82.         @cache[key] = @cache[path].clone
    83.         # 色相を変更
    84.         @cache[key].hue_change(hue)
    85.       end
    86.       # 画像のファイルを渡す
    87.       return@cache[key]
    88.     end
    89.   end
    90.   #-------------------------------------------------------------------------
    91.   # ● アニメーションの読み込み
    92.   #    filename    : 読み込むファイル
    93.   #    hue         : 色相の情報
    94.   #-------------------------------------------------------------------------
    95.   defself.animation(filename, hue)
    96.     # 対象ファイルを読み込んで渡す
    97.     returnself.load_bitmap("Graphics/Animations/", filename, hue)
    98.   end
    99.   #-------------------------------------------------------------------------
    100.   # ● クリア
    101.   #-------------------------------------------------------------------------
    102.   defself.clear
    103.     # キャッシュの内容をクリア
    104.     @cache = {}
    105.   end
    106. end
    107. #==============================================================================
    108. # ■ RPG::Sprite
    109. #------------------------------------------------------------------------------
    110. #   ゲームで戦闘中に使用されるスプライト表示を管理するクラスです。
    111. #==============================================================================
    112. module RPG
    113.   class Sprite < ::Sprite
    114.     #-----------------------------------------------------------------------
    115.     # ● 配列アニメーション作成
    116.     #    animation : 渡されたアニメーション
    117.     #    hit       : ヒットフラグ
    118.     #-----------------------------------------------------------------------
    119.     def array_animation(animation, hit)
    120.       # 無効なアニメの場合
    121.       if animation == nilthen
    122.         # 処理を返す
    123.         return
    124.       end
    125.       # アニメを配列の先頭に追加
    126.       @_array_animation.unshift(animation)
    127.       # ヒットフラグの先頭に追加
    128.       @_array_animation_hit.unshift(hit)
    129.       # 更新カウントの先頭に追加
    130.       @_array_animation_duration.unshift(animation.frame_max)
    131.       # アニメの名前を取得
    132.       animation_name = animation.animation_name
    133.       # アニメの色調情報を取得
    134.       animation_hue = animation.animation_hue
    135.       # アニメの画像をキャッシュからロード
    136.       bitmap = Mint_Cache.animation(animation_name, animation_hue)
    137.       # アニメのスプライトを作成して先頭に追加
    138.       @_array_animation_sprite.unshift(sprite_set_array(bitmap))
    139.     end
    140.     #------------------------------------------------------------------------
    141.     # ● スプライトセット
    142.     #    bitmap : 読み込んだ画像
    143.     #------------------------------------------------------------------------
    144.     def sprite_set_array(bitmap)
    145.       # 配列を初期化
    146.       animation_sprites = []
    147.       # スプライトを新規作成
    148.       sprite = ::Sprite.new(self.viewport)
    149.       sprite.bitmap = bitmap
    150.       sprite.visible = false
    151.       animation_sprites.push(sprite)
    152.       sprite = ::Sprite.new(self.viewport)
    153.       sprite.bitmap = bitmap
    154.       sprite.visible = false
    155.       animation_sprites.push(sprite)
    156.       sprite = ::Sprite.new(self.viewport)
    157.       sprite.bitmap = bitmap
    158.       sprite.visible = false
    159.       animation_sprites.push(sprite)
    160.       sprite = ::Sprite.new(self.viewport)
    161.       sprite.bitmap = bitmap
    162.       sprite.visible = false
    163.       animation_sprites.push(sprite)
    164.       sprite = ::Sprite.new(self.viewport)
    165.       sprite.bitmap = bitmap
    166.       sprite.visible = false
    167.       animation_sprites.push(sprite)
    168.       sprite = ::Sprite.new(self.viewport)
    169.       sprite.bitmap = bitmap
    170.       sprite.visible = false
    171.       animation_sprites.push(sprite)
    172.       sprite = ::Sprite.new(self.viewport)
    173.       sprite.bitmap = bitmap
    174.       sprite.visible = false
    175.       animation_sprites.push(sprite)
    176.       sprite = ::Sprite.new(self.viewport)
    177.       sprite.bitmap = bitmap
    178.       sprite.visible = false
    179.       animation_sprites.push(sprite)
    180.       sprite = ::Sprite.new(self.viewport)
    181.       sprite.bitmap = bitmap
    182.       sprite.visible = false
    183.       animation_sprites.push(sprite)
    184.       sprite = ::Sprite.new(self.viewport)
    185.       sprite.bitmap = bitmap
    186.       sprite.visible = false
    187.       animation_sprites.push(sprite)
    188.       sprite = ::Sprite.new(self.viewport)
    189.       sprite.bitmap = bitmap
    190.       sprite.visible = false
    191.       animation_sprites.push(sprite)
    192.       sprite = ::Sprite.new(self.viewport)
    193.       sprite.bitmap = bitmap
    194.       sprite.visible = false
    195.       animation_sprites.push(sprite)
    196.       sprite = ::Sprite.new(self.viewport)
    197.       sprite.bitmap = bitmap
    198.       sprite.visible = false
    199.       animation_sprites.push(sprite)
    200.       sprite = ::Sprite.new(self.viewport)
    201.       sprite.bitmap = bitmap
    202.       sprite.visible = false
    203.       animation_sprites.push(sprite)
    204.       sprite = ::Sprite.new(self.viewport)
    205.       sprite.bitmap = bitmap
    206.       sprite.visible = false
    207.       animation_sprites.push(sprite)
    208.       sprite = ::Sprite.new(self.viewport)
    209.       sprite.bitmap = bitmap
    210.       sprite.visible = false
    211.       animation_sprites.push(sprite)
    212.       # スプライトを返す
    213.       return animation_sprites
    214.     end
    215.     #------------------------------------------------------------------------
    216.     # ● 配列アニメの更新
    217.     #------------------------------------------------------------------------
    218.     def update_array_anima
    219.       # 現在表示中のアニメの数だけ繰り返す
    220.       (0...@_array_animation_duration.size).eachdo |i|
    221.         # グラフィックカウントが偶数の場合
    222.         if(Graphics.frame_count % 2 == 0)then
    223.           # アニメを取得
    224.           anima = @_array_animation[i]
    225.           # 無効なアニメの場合
    226.           if anima == nilthen
    227.             # 次の処理へ以降
    228.             next
    229.           end
    230.           # アニメーションカウントを減らす
    231.           @_array_animation_duration[i] -= 1
    232.           # アニメのスプライトを取得
    233.           sprite = @_array_animation_sprite[i]
    234.           # アニメのヒットフラグを取得
    235.           hit = @_array_animation_hit[i]
    236.           # アニメカウントが1以上の場合
    237.           if@_array_animation_duration[i] >= 1then
    238.             # 現在のフレームを取得
    239.             frame_index = anima.frame_max - @_array_animation_duration[i]
    240.             # アニメのセルのデータを取得
    241.             cell_data = anima.frames[frame_index].cell_data
    242.             # アニメのポジションデータを取得
    243.             position = anima.position
    244.             # 生成先のオブジェクトに応じて分岐
    245.             caseself
    246.             # マップキャラクターの場合
    247.             when Sprite_Character then
    248.               # アニメを動かす
    249.               animation_set_sprites(sprite, cell_data, position)
    250.             # 戦闘キャラの場合
    251.             else
    252.               # ターゲット二体目以降ではない場合
    253.               ifself.battler != nilandnotself.battler.all_animethen
    254.                 # アニメを動かす
    255.                 animation_set_sprites(sprite, cell_data, position)
    256.               end
    257.             end
    258.             # アニメの効果を進める
    259.             anima.timings.eachdo |timing|
    260.               # タイミングのフレームと現在のフレームが等しい場合
    261.               if timing.frame == frame_index-1then
    262.                 # アニメの効果を適用
    263.                 animation_process_timing(timing, hit)
    264.               end
    265.             end
    266.           # アニメのカウントが0の場合
    267.           else
    268.             # アニメを解放
    269.             dispose_array_animation(i)
    270.           end
    271.         end
    272.       end
    273.     end
    274.     #-----------------------------------------------------------------------
    275.     # ● 配列アニメを解放
    276.     #    index : 求められたアニメのインデックス
    277.     #-----------------------------------------------------------------------
    278.     def dispose_array_animation(index)
    279.       # アニメが有効な場合
    280.       if@_array_animation[index] != nilthen
    281.         # セルスプライトを順番に処理
    282.         @_array_animation_sprite[index].eachdo |sprite|
    283.           # セルスプライトを解放
    284.           sprite.dispose
    285.         end
    286.         # アニメを空にする
    287.         @_array_animation[index] = nil
    288.         @_array_animation_sprite[index] = nil
    289.         @_array_animation_duration[index] = nil
    290.         @_array_animation_hit[index] = nil
    291.         # 無効な配列を除外
    292.         @_array_animation.compact!
    293.         @_array_animation_sprite.compact!
    294.         @_array_animation_duration.compact!
    295.         @_array_animation_hit.compact!
    296.       end
    297.       # インデックスが -1 の場合
    298.       if index == -1then
    299.         # 表示中のアニメ分だけ繰り返す
    300.         (0...@_array_animation_sprite.size).eachdo |i|
    301.           # 対象インデックスのアニメを解放
    302.           dispose_array_animation(i)
    303.         end
    304.       end
    305.     end
    306.     #------------------------------------------------------------------------
    307.     # ● 追加アニメの効果適用
    308.     #    timing : SEなどのタイミングデータ
    309.     #    hit    : アニメのヒットフラグ改造BY:SOULSAGA 20210314
    310.     #------------------------------------------------------------------------
    311.     def abb_anima_effect(timing, hit)
    312.       红色=timing.flash_color.red.to_s
    313.       绿色=timing.flash_color.green.to_s
    314.       蓝色=timing.flash_color.blue.to_s
    315.       动画2=红色+绿色
    316.       动画3=红色+绿色+蓝色
    317.       动画2=动画2.to_i
    318.       动画3=动画3.to_i
    319.       # 条件が ヒット で攻撃がヒットした場合か、
    320.       # 条件が ミス で攻撃がミスだった場合、
    321.       # もしくは条件が なし だった場合
    322.       if(timing.condition == 0)or
    323.         (timing.condition == 1and hit == true)or
    324.         (timing.condition == 2and hit == false)
    325.         # 強さが0の画面のフラッシュが設定されている場合
    326.         if timing.flash_color.alpha == 0and timing.flash_scope == 2then
    327.           # 追加アニメのIDを取得(フラッシュの赤、青、緑の合計値)
    328.           anima_id = timing.flash_color.red
    329.           anima_id += timing.flash_color.green
    330.           anima_id += timing.flash_color.blue
    331.           anima_id = timing.flash_duration == 2 ? 动画2 : timing.flash_duration == 3 ? 动画3 : anima_id
    332.           # アニメーションを読み込む
    333.           anima = Data_Animations.data[anima_id]
    334.           # 配列アニメを実行
    335.           array_animation(anima, hit)
    336.         end
    337.       end
    338.     end
    339.   end
    340. end
    341. #==============================================================================
    342. # ■ Game_Battler (分割定義 1)
    343. #------------------------------------------------------------------------------
    344. #  バトラーを扱うクラスです。このクラスは Game_Actor クラスと Game_Enemy クラ
    345. # スのスーパークラスとして使用されます。
    346. #==============================================================================
    347. class Game_Battler
    348.   #--------------------------------------------------------------------------
    349.   # ● 公開インスタンス変数
    350.   #--------------------------------------------------------------------------
    351.   attr_accessor :all_anime                # ターゲット二体目以降フラグ
    352. end
    353. #==============================================================================
    354. # ■ Sprite_Battler
    355. #------------------------------------------------------------------------------
    356. #  バトラー表示用のスプライトです。Game_Battler クラスのインスタンスを監視し、
    357. # スプライトの状態を自動的に変化させます。
    358. #==============================================================================
    359. class Sprite_Battler < RPG::Sprite
    360.   #--------------------------------------------------------------------------
    361.   # ● オブジェクト初期化
    362.   #     viewport : ビューポート
    363.   #     battler  : バトラー (Game_Battler)
    364.   #    alias     : initialize_Array_Anima
    365.   #--------------------------------------------------------------------------
    366.   alias initialize_Array_Anima initialize
    367.   def initialize(viewport, battler = nil)
    368.     # 元の処理を実行
    369.     initialize_Array_Anima(viewport, battler)
    370.     @_array_animation = []
    371.     @_array_animation_sprite = []
    372.     @_array_animation_duration = []
    373.     @_array_animation_hit = []
    374.   end
    375.   #--------------------------------------------------------------------------
    376.   # ● 解放
    377.   #    alias : dispose_Array_Anima
    378.   #--------------------------------------------------------------------------
    379.   alias dispose_Array_Anima dispose
    380.   def dispose
    381.     # 元の処理を実行
    382.     dispose_Array_Anima
    383.     # 配列アニメを全て解放
    384.     dispose_array_animation(-1)
    385.     # キャッシュを解放
    386.     Mint_Cache.clear
    387.   end
    388.   #--------------------------------------------------------------------------
    389.   # ● フレーム更新
    390.   #    alias : update_Array_Anima
    391.   #--------------------------------------------------------------------------
    392.   alias update_Array_Anima update
    393.   def update
    394.     # 元の処理を実行
    395.     update_Array_Anima
    396.     # 配列アニメを更新
    397.     update_array_anima
    398.   end
    399.   #-------------------------------------------------------------------------
    400.   # ● エフェクト表示中判定
    401.   #-------------------------------------------------------------------------
    402.   def effect?
    403.     # スーパークラスを実行
    404.     bool = super
    405.     bool or@_array_animation_duration.size > 0
    406.   end
    407.   #--------------------------------------------------------------------------
    408.   # ● アニメーション・プロセスタイミング
    409.   #    timing : SEなどのデータ
    410.   #    hit    : ヒットフラグ
    411.   #--------------------------------------------------------------------------
    412.   def animation_process_timing(timing, hit)
    413.     # 追加アニメ判定
    414.     abb_anima_effect(timing, hit)
    415.     # スーパークラスメソッドを実行
    416.     super(timing, hit)
    417.     # アクティブ・アニメシェイクが有効ではない場合
    418.     ifnotMINTO::RGSS["Active_Shake"]then
    419.       # 処理を返す
    420.       return
    421.     end
    422.     # 条件が ヒット で攻撃がヒットした場合か、
    423.     # 条件が ミス で攻撃がミスだった場合、
    424.     # もしくは条件が なし だった場合
    425.     if(timing.condition == 0)or
    426.       (timing.condition == 1and hit == true)or
    427.       (timing.condition == 2and hit == false)
    428.       # 対象無しのフラッシュが設定されている場合
    429.       if timing.flash_scope == 0then
    430.         # フラッシュの赤と緑が0の場合
    431.         if timing.flash_color.red == 0and timing.flash_color.green == 0then
    432.           # シェイクの強さ(フラッシュの強さ)
    433.           s_alpha = [timing.flash_color.alpha.to_i, 9].min
    434.           # シェイクの早さ(フラッシュの青)
    435.           s_speed = [timing.flash_color.blue.to_i, 9].min
    436.           # シェイクの時間(フラッシュの時間)
    437.           s_thyme = timing.flash_duration.to_i * 2
    438.           # 画面をシェイク
    439.           $game_screen.start_shake(s_alpha, s_speed, s_thyme)
    440.         end
    441.       end
    442.     end
    443.   end
    444. end
    445. #==============================================================================
    446. # ■ Sprite_Character
    447. #------------------------------------------------------------------------------
    448. #  キャラクター表示用のスプライトです。Game_Character クラスのインスタンスを
    449. # 監視し、スプライトの状態を自動的に変化させます。
    450. #==============================================================================
    451. class Sprite_Character < RPG::Sprite
    452. #--------------------------------------------------------------------------
    453.   # ● オブジェクト初期化
    454.   #     viewport  : ビューポート
    455.   #     character : キャラクター (Game_Character)
    456.   #     alias     : initialize_Array_Anima
    457.   #--------------------------------------------------------------------------
    458.   alias initialize_Array_Anima initialize
    459.   def initialize(viewport, character = nil)
    460.     @_array_animation = []
    461.     @_array_animation_sprite = []
    462.     @_array_animation_duration = []
    463.     @_array_animation_hit = []
    464.     # 元の処理を実行
    465.     initialize_Array_Anima(viewport, character)
    466.   end
    467.   #--------------------------------------------------------------------------
    468.   # ● 解放
    469.   #--------------------------------------------------------------------------
    470.   def dispose
    471.     super
    472.     # 配列アニメを全て解放
    473.     dispose_array_animation(-1)
    474.     # キャッシュを解放
    475.     Mint_Cache.clear
    476.   end
    477.   #--------------------------------------------------------------------------
    478.   # ● フレーム更新
    479.   #    alias : update_Array_Anima
    480.   #--------------------------------------------------------------------------
    481.   alias update_Array_Anima update
    482.   def update
    483.     # 元の処理を実行
    484.     update_Array_Anima
    485.     # 配列アニメを更新
    486.     update_array_anima
    487.   end
    488.   #--------------------------------------------------------------------------
    489.   # ● アニメーション・プロセスタイミング
    490.   #    timing : SEなどのデータ
    491.   #    hit    : ヒットフラグ
    492.   #--------------------------------------------------------------------------
    493.   def animation_process_timing(timing, hit)
    494.     # 追加アニメ判定
    495.     abb_anima_effect(timing, hit)
    496.     # スーパークラスメソッドを実行
    497.     super(timing, hit)
    498.     # アクティブ・アニメシェイクが有効ではない場合
    499.     ifnotMINTO::RGSS["Active_Shake"]then
    500.       # 処理を返す
    501.       return
    502.     end
    503.     # 条件が ヒット で攻撃がヒットした場合か、
    504.     # 条件が ミス で攻撃がミスだった場合、
    505.     # もしくは条件が なし だった場合
    506.     if(timing.condition == 0)or
    507.       (timing.condition == 1and hit == true)or
    508.       (timing.condition == 2and hit == false)
    509.       # 対象無しのフラッシュが設定されている場合
    510.       if timing.flash_scope == 0then
    511.         # フラッシュの赤と緑が0の場合
    512.         if timing.flash_color.red == 0and timing.flash_color.green == 0then
    513.           # シェイクの強さ(フラッシュの強さ)
    514.           s_alpha = [timing.flash_color.alpha.to_i, 9].min
    515.           # シェイクの早さ(フラッシュの青)
    516.           s_speed = [timing.flash_color.blue.to_i, 9].min
    517.           # シェイクの時間(フラッシュの時間)
    518.           s_thyme = timing.flash_duration.to_i * 2
    519.           # 画面をシェイク
    520.           $game_screen.start_shake(s_alpha, s_speed, s_thyme)
    521.         end
    522.       end
    523.     end
    524.   end
    525. end
    526. end
    复制代码

                 本帖来自P1论坛作者soulsaga,因Project1站服务器在国外有时候访问缓慢不方便作者交流学习,经联系P1站长fux2同意署名转载一起分享游戏制作经验,共同为国内独立游戏作者共同创造良好交流环境,原文地址:https://rpg.blue/forum.php?mod=viewthread&tid=484983  若有侵权,发帖作者可联系底部站长QQ在线咨询功能删除,谢谢。
    天天去同能,天天有童年!
    回复 送礼论坛版权

    使用道具 举报

    文明发言,和谐互动
    文明发言,和谐互动
    高级模式
    您需要登录后才可以回帖 登录 | 立即注册

    本版积分规则

    关闭

    幸运抽奖

    社区每日抽奖来袭,快来试试你是欧皇还是非酋~

    立即查看

    聊天机器人
    Loading...

    QQ|Archiver|手机版|小黑屋|同能RPG制作大师 ( 沪ICP备12027754号-3 )

    GMT+8, 2025-3-14 14:24 , Processed in 0.134015 second(s), 53 queries .

    Powered by Discuz! X3.4

    Copyright © 2001-2020, Tencent Cloud.

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