楼主: guoxiaomi

[原创发布] 【RGM】RGModern 1.0.4 - RMXP新runtime

[复制链接]
梦石
1
星屑
24088
在线时间
3339 小时
注册时间
2011-7-8
回帖
3862

开拓者

 楼主| 发表于 2023-5-27 20:36:36 | 显示全部楼层
RTCanwind 发表于 2023-5-27 17:50
class Win32API
  @@RGSSWINDOW = nil
  @@GetCurrentThreadId       = Win32API.new('kernel32', 'GetCu ...

额,看来是ruby3不支持这种产生字符串的语法了。你要这样写:
  1. @@GetCurrentThreadId = Win32API.new('kernel32', 'GetCurrentThreadId', '', 'l')
  2. @@GetWindowThreadProcessId = Win32API.new('user32', 'GetWindowThreadProcessId', 'lp', 'l')
  3. @@FindWindowEx = Win32API.new('user32', 'FindWindowEx', 'llpp', 'l')
复制代码

以及你读这些Win32API是用作什么呢,如果是改分辨率、输入法之类的,RGM已经内置了这些功能。
熟悉rgss和ruby,xp区版主~
正在填坑:《膜拜组传奇》讲述膜拜组和学霸们的故事。
已上steam:与TXBD合作的Reformers《变革者》
* 战斗调用公共事件 *
* RGSOS 网络脚本 *
回复

使用道具 举报

梦石
0
星屑
801
在线时间
86 小时
注册时间
2020-12-15
回帖
22
发表于 2023-5-27 21:24:40 | 显示全部楼层
guoxiaomi 发表于 2023-5-27 20:36
额,看来是ruby3不支持这种产生字符串的语法了。你要这样写:
以及你读这些Win32API是用作什么呢,如果是 ...

是Pokemon essentials的老版本中的调用,我没太分析过具体作用()。

**后续又出现了一个未定义问题
2023-05-27 21:14:06 +0800
Error occurs when load Data/Scripts.rxdata.
undefined method `rect=' for class `Viewport'
- 007_Sprite_Resizer.rb:450:in `<class:Viewport>'
- 007_Sprite_Resizer.rb:446:in `block in load_scripts_from_folder'

对应的脚本是
class Viewport
  unless @SpriteResizerMethodsAliased
    alias _initialize_SpriteResizer initialize
    alias _rect_ViewportResizer rect
    alias _recteq_SpriteResizer rect=
    alias _oxeq_SpriteResizer ox=
    alias _oyeq_SpriteResizer oy=
    @SpriteResizerMethodsAliased=true
  end

点评

失误,确实忘了定义,下个版本会修复。你可以先定义一下:attr_accessor :rect  发表于 2023-5-27 21:41
回复

使用道具 举报

遠航の猫咪

梦石
3
星屑
26947
在线时间
2423 小时
注册时间
2005-10-15
回帖
987

开拓者

发表于 2023-5-27 23:16:17 | 显示全部楼层
guoxiaomi 发表于 2023-5-27 20:36
额,看来是ruby3不支持这种产生字符串的语法了。你要这样写:
以及你读这些Win32API是用作什么呢,如果是 ...

从这个角度来说,这个现象如此普遍的话,可能真的需要一个ruby 3降级支持ruby 1.8的mod了
不然几乎所有以前的插件能废一大半

点评

但是它是拿引号括起来,然后在里面用%w的……  发表于 2023-5-29 09:40
%w(这个用法1.9也有啊…… 到2.4x好像还有,3有没有我不知道了……我平时用2.6  发表于 2023-5-28 21:57
说实话这代码我看得一身冷汗,感觉也是XP专属,后面的版本ruby升级到1.9之后代码就“规范”多了  发表于 2023-5-28 01:01
SailCat (小猫子·要开心一点) 共上站 24 次,发表过 11 篇文章 上 次 在: [2006年01月28日11:41:18 星期六] 从 [162.105.120.91] 到本站一游。
回复

使用道具 举报

梦石
0
星屑
801
在线时间
86 小时
注册时间
2020-12-15
回帖
22
发表于 2023-5-28 01:18:50 | 显示全部楼层
大佬我又来了(),感觉ess老版本确实有些时代眼泪了

出现的错误是
2023-05-27 22:00:54 +0800
Error occurs when load Data/Scripts.rxdata.
Exec format error
- Main:32:in `rescue in block in load_scripts_from_folder'
- Main:29:in `block in load_scripts_from_folder'
- Main:27:in `each'
- Main:27:in `load_scripts_from_folder'
- Main:40:in `block in load_scripts_from_folder'
- Main:39:in `each'
- Main:39:in `load_scripts_from_folder'
- Main:44:in `block in rgss_main'
- eval:36:in `eval'
- eval:36:in `block in rgss_main'
- eval:32:in `each'
- eval:32:in `rgss_main'
- eval:60:in `load_script'
- eval:23:in `load_script'
- eval:23:in `load_script'
- eval:69:in `<main>'
- ruby:in `load_script'

相关代码是负责从文件夹读取脚本的部分
[pre lang="ruby" line="19"]def load_scripts_from_folder(path)
  files   = []
  folders = []
  Dir.foreach(path) do |f|
    next if f == '.' || f == '..'
    (File.directory?(path + "/" + f)) ? folders.push(f) :  files.push(f)
  end
  files.sort!
  files.each do |f|
    code = File.open(path + "/" + f, "r") { |file| file.read }
    begin
      eval(code, nil, f)
    rescue ScriptError
      raise ScriptError.new($!.message)
    rescue
      $!.message.sub!($!.message, traceback_report)
      raise_traceback_error
    end
  end
  folders.sort!
  folders.each do |folder|
    load_scripts_from_folder(path + "/" + folder)
  end
end

load_scripts_from_folder("Data/Scripts")[/pre]

回复

使用道具 举报

梦石
1
星屑
24088
在线时间
3339 小时
注册时间
2011-7-8
回帖
3862

开拓者

 楼主| 发表于 2023-5-28 08:43:52 | 显示全部楼层
RTCanwind 发表于 2023-5-28 01:18
大佬我又来了(),感觉ess老版本确实有些时代眼泪了

出现的错误是

这里不是读取有问题,而且被读取的代码有问题,因为抛出了scripterror。你需要在32行前面加一些调试信息,输出报错的代码位置。或者可以不捕获错误,让rgm来接管异常处理:29到36行只保留30行就行。然后根据报错提示去排查。
熟悉rgss和ruby,xp区版主~
正在填坑:《膜拜组传奇》讲述膜拜组和学霸们的故事。
已上steam:与TXBD合作的Reformers《变革者》
* 战斗调用公共事件 *
* RGSOS 网络脚本 *
回复

使用道具 举报

梦石
0
星屑
801
在线时间
86 小时
注册时间
2020-12-15
回帖
22
发表于 2023-5-28 12:25:44 | 显示全部楼层
guoxiaomi 发表于 2023-5-27 20:36
额,看来是ruby3不支持这种产生字符串的语法了。你要这样写:
以及你读这些Win32API是用作什么呢,如果是 ...

上面的Win32API的问题 似乎是用来找游戏窗口的
进行如上修改以后 点开Game,RGM不抛出错误,黑屏无响应
Ess给出以下错误:
Exception: RuntimeError
Message: Can't find RGSS player window

Backtrace:
004_Win32API.rb:31:in `pbFindRgssWindow'
[pre lang="ruby" line="14"]  def Win32API.pbFindRgssWindow
    return @@RGSSWINDOW if @@RGSSWINDOW
    processid = [0].pack('l')
    threadid = @@GetCurrentThreadId.call
    nextwindow = 0
    loop do
      nextwindow = @@FindWindowEx.call(0,nextwindow,"RGSS Player",0)
      if nextwindow!=0
        wndthreadid = @@GetWindowThreadProcessId.call(nextwindow,processid)
        if wndthreadid==threadid
          @@RGSSWINDOW = nextwindow
          return @@RGSSWINDOW
        end
      end
      break if nextwindow==0
    end
    raise "Can't find RGSS player window"
  end[/pre]

点评

你要不直接把脚本打个包传上来让我看看  发表于 2023-5-28 14:21
因为rgm的window不再叫rgss player了,不过还是那句话,找到window之后要做什么,大概率就是改分辨率输入法鼠标这些……  发表于 2023-5-28 14:19
回复

使用道具 举报

梦石
0
星屑
801
在线时间
86 小时
注册时间
2020-12-15
回帖
22
发表于 2023-5-28 18:50:22 | 显示全部楼层
RTCanwind 发表于 2023-5-28 12:25
上面的Win32API的问题 似乎是用来找游戏窗口的
进行如上修改以后 点开Game,RGM不抛出错误,黑屏无响应
E ...

不知道为什么站内的上传附件一直在请稍后
https://wwjk.lanzoub.com/i12PS0xj7z9e
回复

使用道具 举报

梦石
1
星屑
24088
在线时间
3339 小时
注册时间
2011-7-8
回帖
3862

开拓者

 楼主| 发表于 2023-5-30 00:14:20 | 显示全部楼层
本帖最后由 guoxiaomi 于 2023-5-30 00:20 编辑
RTCanwind 发表于 2023-5-28 18:50
不知道为什么站内的上传附件一直在请稍后
https://wwjk.lanzoub.com/i12PS0xj7z9e ...


基本上都是win32api的格式改动,大概改了10处吧,你可以对照看看。现在运行Game.exe的报错是找不到Animations.rxdata文件,说明脚本语法已经基本通过了,后续还有什么bug还需要运行时排查。

附上了新编译的Game.exe: test20230529.7z (5.6 MB, 下载次数: 7) ,相关的改动会在下一次发布RGM时同步。
熟悉rgss和ruby,xp区版主~
正在填坑:《膜拜组传奇》讲述膜拜组和学霸们的故事。
已上steam:与TXBD合作的Reformers《变革者》
* 战斗调用公共事件 *
* RGSOS 网络脚本 *
回复

使用道具 举报

梦石
0
星屑
801
在线时间
86 小时
注册时间
2020-12-15
回帖
22
发表于 2023-5-30 01:49:05 | 显示全部楼层
guoxiaomi 发表于 2023-5-30 00:14
基本上都是win32api的格式改动,大概改了10处吧,你可以对照看看。现在运行Game.exe的报错是找不到Animat ...

感谢~~
单独运行确实是到Animations.rxdata这步,不过在工程里运行时还有一些脚本报错,如
- 013_PictureEx.rb:114:in `new'
- 013_PictureEx.rb:114:in `initialize'
- 002_EventScene.rb:122:in `new'
- 002_EventScene.rb:122:in `addImage'
- 003_Scene_Intro.rb:10:in `initialize'
- 003_Scene_Intro.rb:130:in `new'
- 003_Scene_Intro.rb:130:in `main'
好像是Rect的初始化问题?
这里把v18.dev的原始工程(49M)传上来了,大佬如果有空再帮忙看看()
https://wwjk.lanzoub.com/igru70xnri8f

点评

吼,我先发布一下1.0.3,已经累计更新了一些内容了。  发表于 2023-5-30 10:53
回复

使用道具 举报

梦石
24
星屑
8942
在线时间
248 小时
注册时间
2020-12-4
回帖
259

极短24获奖极短23获奖极短22获奖

发表于 2023-5-30 18:54:59 | 显示全部楼层
本帖最后由 纯属小虫 于 2023-5-31 17:27 编辑

2023.05.30
试了试自己的工程,尝试能不能移植(抱紧大佬大腿死缠烂打)

第一次错误报告INFO: RGModern starts running...
WARN: [Kernel] the cooperation type is exclusive.
WARN: [Driver] use direct3d for rendering
WARN: [Driver] max texture 16384 x 16384
start ruby.
resource prefix = resource://
render driver = direct3d9 (2)
build mode = 2
WARN: [Input] text input is stopped
[Warning] resize window might destory all bitmaps.
Bitmaps in RPG::Cache are automatically reloaded.
Reload 0 bitmaps in total.
【对话】快捷指令●:7: warning: already initialized constant RB::Mes_Config::Shortcuts
【对话】对话框基础:191: warning: previous definition of Shortcuts was here
【对话】快捷指令●:12: warning: already initialized constant RB::Mes_Config::Shortcuts_Regexp
【对话】对话框基础:195: warning: previous definition of Shortcuts_Regexp was here
Error occurs when load Data/Scripts.rxdata.
superclass mismatch for class Game_Actor
- 【技能】●装备状态附加:5:in `block in rgss_main'
- eval:36:in `eval'
- eval:36:in `block in rgss_main'
- eval:32:in `each'
- eval:32:in `rgss_main'
- eval:60:in `load_script'
- eval:23:in `load_script'
- eval:23:in `load_script'
- eval:69:in `<main>'
- ruby:in `load_script'
libpng warning: iCCP: cHRM chunk does not match sRGB



请问,问题是出在【对话】的两个脚本,以及【技能】●装备状态附加  这个脚本中码?
还是说我操作错了,我只把【Game.exe】丢到旧工程里替换了一下




2023.05.31
发生错误的代码#===============================================================================
# ● 【简易坑爹系列】武器、装备与状态的附加特技
#===============================================================================
$WEAPONSKILLS_ORIG_ACTOR = Game_Actor.clone unless $WEAPONSKILLS_ORIG_ACTOR
class Game_Actor < $WEAPONSKILLS_ORIG_ACTOR
  WEAPON_SKILLS = {}
  ARMOR_SKILLS = {}
  STATE_SKILLS = {}
  #----------------------------------------------------#
  # 设置区域
  #
  # 设置方法:STATE_SKILLS[状态id] = [特技id]
  #           WEAPON_SKILLS 与 ARMOR_SKILLS 同理
  #           当特技id为负值时则删减该技能
  #           不论顺序,删减技能一并落后处理
  #----------------------------------------------------#

  
  WEAPON_SKILLS[5] = [5] #匕首 致命一击
  
  
  ARMOR_SKILLS[63] = [4]#软木盾 盾防

  
  #STATE_SKILLS[74] = [23]#鱼人仿息  悬浮水膜


  
   
  #----------------------------------------------------#
  def skills
    output = super |(WEAPON_SKILLS[@weapon_id] || [])
    [@armor1_id, @armor2_id, @armor3_id, @armor4_id].each{|a|output |= ARMOR_SKILLS[a] || []}
    @states.each{|s|output |= STATE_SKILLS || []}
    output.each do |s|
      if s < 0
        output.delete(s.abs)
        output.delete(s)
      end
    end
    return output.sort
  end
  def skill_learn?(skill_id)
    return skills.include?(skill_id)
  end
end


这个出错的代码是从图书馆里顺来的,感觉...内容有些高级,没太理解~~

出错的地方是这里
$WEAPONSKILLS_ORIG_ACTOR = Game_Actor.clone unless $WEAPONSKILLS_ORIG_ACTOR
class Game_Actor < $WEAPONSKILLS_ORIG_ACTOR



2023.05.31
然后有一处bitmap相关的错误。。。。
呼,完全超出修改能力之外了。。。。

另一处 error.log2023-05-31 17:19:55 +0800
Error occurs when load Data/Scripts.rxdata.
Exec format error
- eval:62:in `initialize'
- eval:62:in `new'
- eval:62:in `dlopen'
- eval:38:in `rescue in initialize'
- eval:33:in `initialize'
- 【地图】Bitmap追加(DLL):50:in `new'
- 【地图】Bitmap追加(DLL):50:in `<module:TKTK_Bitmap>'
- 【地图】Bitmap追加(DLL):44:in `block in rgss_main'
- eval:31:in `eval'
- eval:31:in `block in rgss_main'
- eval:27:in `each'
- eval:27:in `rgss_main'
- eval:55:in `load_script'
- eval:23:in `load_script'
- eval:23:in `load_script'
- eval:71:in `<main>'
- ruby:in `load_script'


发生错误的代码# coding: utf-8
=begin
= Bitmap類拡張 (DLL版)
RPGツクールXP/VX共用
添加功能 Bitmap 類。
- Marshaldump 啟用
- 保存為PNG文件
-色調變化
-馬賽克效果
-反相顏色
-模糊效果
-使用遮罩-切除
-混合

■ 注意
這個腳本需要"tktk_bitmap.dll"(ver0.1.2.6以上)。

Author::    半生
Date::      2010/12/13
Version::   0.1.2.6
URL::       http://www.tktkgame.com/

################更新########################
2010/12/13 ver 0.1.2.6
 dll名稱從"hn_rg_bitmap.dll"變更為"tktk_bitmap.dll"
 LARGE_BITMAP機能でメモリを確保できなかった場合の処理を追加
2010/10/12 ver 0.1.2.5(デンジャラスベータ版)
 大きいサイズのBitmapオブジェクトを機能を試験的に実装(危険)
2010/03/24 ver 0.1.2.2
 ブレンディング機能関連の軽量化。
 画像連結系メソッドの分離。
2010/03/24 ver 0.1.2.1
 ブレンディング機能関連のバグフィックス
2010/03/22 ver 0.1.2.0
 加算合成等のブレンディング機能の追加
2010/02/07 ver 0.1.1.0
 マーシャル化の処理の一部をDLLに移動
2010/01/17 ver 0.1.0.0
 dllの名称を"hn_rx_bitmap.dll"から"hn_rg_bitmap.dll"に変更
 モザイク効果・色反転・ぼかし効果の追加
############################################
=end

module TKTK_Bitmap
  LARGE_BITMAP = true # 是否使用大型點陣圖的功能
  DLL_NAME = 'tktk_bitmap'

  ERROR_ALLOCATE_FAILED = -110002

  @@png_save = Win32API.new(DLL_NAME, 'PngSaveA', 'p n i i', 'i')
  @@blur = Win32API.new(DLL_NAME, 'Blur', 'n i', 'i')
  @@change_tone = Win32API.new(DLL_NAME, 'ChangeTone', 'n i i i i', 'i')
  @@clip_mask = Win32API.new(DLL_NAME, 'ClipMask', 'n n i i i', 'i')
  @@invert = Win32API.new(DLL_NAME, 'InvertColor', 'n', 'i')
  @@mosaic = Win32API.new(DLL_NAME, 'Mosaic', 'n i i i i i i', 'i')
  @@address = Win32API.new(DLL_NAME, 'GetAddress', 'n', 'n')
  @@get_pixel_data = Win32API.new(DLL_NAME, 'GetPixelData', 'n p i', 'i')
  @@set_pixel_data = Win32API.new(DLL_NAME, 'SetPixelData', 'n p i', 'i')
  @@blend_blt = Win32API.new(DLL_NAME, 'BlendBlt', 'n i i n i i i i i i', 'i')
  #@@get_hwnd = Win32API.new(DLL_NAME, 'GetGameHWND', 'v', 'l')
  @@change_size = Win32API.new(DLL_NAME, 'ChangeSize', 'n i i', 'i')
  module_function

  # PNG形式儲存
  def png_save(bitmap,file_name,compression_level,filter)
    return @@png_save.call(file_name, bitmap.object_id, compression_level, filter)
  end

  # 模糊效果
  def blur(bitmap, r = 1)
    return @@blur.call(bitmap.object_id, r)
  end
  
  # 更改顏色平衡?
  def change_tone(bitmap, red = 0, green = 0, blue = 0, simplify = 1)
    return @@change_tone.call(bitmap.object_id, red, green, blue, simplify)
  end
# 剪貼蒙版圖像(α乘法)
  def clip_mask(g_bitmap, m_bitmap, x=0, y=0, outer=0)
    return @@clip_mask.call(g_bitmap.object_id, m_bitmap.object_id, x, y, outer)
  end

  # 色的反轉
  def invert(bitmap)
    return @@invert.call(bitmap.object_id)
  end

  # 馬賽克效果
  def mosaic(bitmap, msw=5, msh=5)
    return self.mosaic_rect(bitmap, bitmap.rect, msw, msh)
  end

  # 馬賽克效果(範圍指定)
  def mosaic_rect(bitmap, rect, msw=5, msh=5)
    return @@mosaic.call(bitmap.object_id,
    rect.x, rect.y, rect.width, rect.height, msw, msh)
  end

  # 獲取Bitmap資料位址
  def address(bitmap)
    return @@address.call(bitmap.object_id)
  end
  
  # 二進位資料獲取點Bitmap陣圖
  def get_pixel_data(bitmap)
    buffer = "bgra" * bitmap.width * bitmap.height
    @@get_pixel_data.call(bitmap.object_id, buffer, buffer.size)
    return buffer
  end
  
  #替換為Bitmap中的二進位資料
  def set_pixel_data(bitmap, data)
    return @@set_pixel_data.call(bitmap.object_id, data, data.size)
  end
  
  def blend_blt(dest_bmp, x, y, src_bmp, rect, blend_type=0, opacity=255)
    @@blend_blt.call(dest_bmp.object_id, x, y, src_bmp.object_id,
                rect.x, rect.y, rect.width, rect.height,
                blend_type, opacity)
  end

  # 改變Bitmap的大小(風險)
  def change_size(bitmap, new_width, new_height)
    return -1 if (new_width <=0 or new_height <= 0)
    result = @@change_size.call(bitmap.object_id, new_width, new_height)
    if result == ERROR_ALLOCATE_FAILED
      raise("tktk_bitmap:ERROR ALLOCATE FAILED")
    end
    return result
  end
  
end

class Font
  def marshal_dump;end
  def marshal_load(obj);end
end
class Bitmap
  # PNG 壓縮篩檢程式
  PNG_NO_FILTERS   = 0x00
  PNG_FILTER_NONE  = 0x08
  PNG_FILTER_SUB   = 0x10
  PNG_FILTER_UP    = 0x20
  PNG_FILTER_AVG   = 0x40
  PNG_FILTER_PAETH = 0x80
  PNG_ALL_FILTERS  = (PNG_FILTER_NONE | PNG_FILTER_SUB | PNG_FILTER_UP |
                      PNG_FILTER_AVG | PNG_FILTER_PAETH)

  # Marshal_dump
  def _dump(limit)
    return "" if self.disposed?
    data = TKTK_Bitmap.get_pixel_data(self)
    [width, height, Zlib::Deflate.deflate(data)].pack("LLa*") # ついでに圧縮
  end
  
  # Marshal_load
  def self._load(str)
    if str == ""
      b = Bitmap.new(1,1)
      b.dispose
      return b
    end
    w, h, zdata = str.unpack("LLa*"); b = new(w, h)
    TKTK_Bitmap.set_pixel_data(b, Zlib::Inflate.inflate(zdata))
    return b
  end  
  
  def address
    TKTK_Bitmap.address(self)
  end

  #         模糊效果
  def blur2(r=1)
    TKTK_Bitmap.blur(self, r)
  end

  # 色調變化
  def change_tone(red, green, blue, simplify = 1)
    TKTK_Bitmap.change_tone(self, red, green, blue, simplify)
  end
  
  # 剪切
  def clip_mask(bitmap, x=0, y=0, outer=0)
    TKTK_Bitmap.clip_mask(self, bitmap, x, y, outer)
  end

  # 反相顏色
  def invert
    TKTK_Bitmap.invert(self)
  end

  # 馬賽克效果
  def mosaic(msw=5, msh=5)
    TKTK_Bitmap.mosaic(self, msw, msh)
  end

  # 馬賽克效果 (指定區域)
  def mosaic_rect(rect=self.rect, msw=5, msh=5)
    TKTK_Bitmap.mosaic_rect(self, rect, msw, msh)
  end

  # 混合
  def blend_blt(x, y, src_bmp, rect, blend_type=0, opacity=255)
    return if opacity <= 0
    TKTK_Bitmap.blend_blt(self, x, y, src_bmp, rect, blend_type, opacity)
  end

  #Png 格式保存
  def png_save(outp, level = 9, filter = PNG_NO_FILTERS)
    if (TKTK_Bitmap.png_save(self, outp, level, filter) != 0)
      raise("Bitmap\#png_save failed")
    end
  end

  # 允許更大的 bitmap.new (危険)
  # 寬度 * 高度大約是1073741823
  if TKTK_Bitmap::LARGE_BITMAP
    class << self
      unless method_defined?(:_hn_large_bm__new)
        alias :_hn_large_bm__new :new
      end
      def new(*args)
        if args.size == 2 && args[0] * args[1] >= 4194304
          new_width = args[0]
          new_height = args[1]
          # 暫時以小尺寸作成
          bitmap = _hn_large_bm__new(16, 16)
          TKTK_Bitmap.change_size(bitmap, new_width, new_height)
          return bitmap
        else
          _hn_large_bm__new(*args)
        end
      end
    end # Bitmap.new
  end
end # CLASS Bitmap


这是用于烛光系统Bitmap相关的,也是从图书馆顺来的,
更...更改不来了

点评

找到出错的地方了....不过这段代码有些抽象,没理解到位,能求教一下咋改咩~~~  发表于 2023-5-31 17:19
问题出在【技能】●装备状态附加的第5行。一般只需要看error.log中的内容。报错信息说Game_Actor的父类不匹配。  发表于 2023-5-30 21:36
回复

使用道具 举报

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

本版积分规则

Powered by Discuz! X5.0 © 2001-2026 Discuz! Team.

在本版发帖返回顶部