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

Project1

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

[已经过期] 漫画对话框为什么不能用?

[复制链接]

Lv1.梦旅人

梦石
0
星屑
55
在线时间
55 小时
注册时间
2011-7-15
帖子
48
跳转到指定楼层
1
发表于 2013-6-28 20:16:11 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式

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

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

x
  1. #==============================================================================
  2. # [VX] 漫画式对话框
  3. # [VX] ComicStyle Window_message
  4. #----------------------------------------------------------------------------
  5. # 使用说明:
  6. #
  7. #   ⑴ 关于对话者 (在地图事件里找到对话者,实现漫画式对话)
  8. #      ① 自动抓取对话者名字
  9. #           对于未进行手动填写的,会根据头像的文件名自动抓取对话者名字
  10. #      ② 手动指定对话者名字
  11. #           对话框第一行输入引号内文字"名字:",脚本会把名字提取出来美化显示
  12. #           例如"拉尔夫:",显示为"【拉尔夫】" ,美化符可在参数设定中修改
  13. #           可以使用"\n[队伍第几人]:"获得名字
  14. #      ③ 允许指定事件(对话者)ID
  15. #      ④ 允许暂时停止自动抓取名字
  16. #      ⑤ 允许设定跳过自动抓取名字的头像文件
  17. #      ⑥ 三种指定对话者的方法可以共存
  18. #           优先级: ③ > ② > ①
  19. #           ①和②都必须以对话者名字为地图事件命名
  20. #           事件页无效或暂时消除事件时,③仍然强制指定,即使地图上未显示事件
  21. #
  22. #   ⑵ 默认头像在左边显示
  23. #        当您需要右边显示时,在第一行加"\r"(大小写不限,位置不限)
  24. #        例: "拉尔夫\r:" 请注意此时头像显示为水平翻转
  25. #
  26. #   ⑶ 对话框动态显示功能,但缩放Sprite较消耗系统资源
  27. #
  28. #   ⑷ 使用自定义皮肤, 图片文件保存于Graphics\System内
  29. #                      配置文件保存于游戏文件夹内(Skin.ini)
  30. #
  31. #
  32. #   ⑸ 在对话中更改字体:
  33. #        \f[sX]:更改字号为X
  34. #        \f[nX]:更改字体为X
  35. #               更改字体失败(找不到字体)时,启用默认字体
  36. #        \f[cX]:更改字色为第X号颜色(text_color中的定义)
  37. #
  38. #   ⑹ 在对话中显示(技能 物品 武器 防具)图标和名称:
  39. #        \s[X]: 显示第X号技能图标和名称
  40. #        \i[X]: 显示第X号物品图标和名称
  41. #        \w[X]: 显示第X号武器图标和名称
  42. #        \a[X]: 显示第X号防具图标和名称
  43. #
  44. #   ⑺ 在对话中更改文字不透明度:
  45. #        \o[X]: 把文字不透明度更改为X (取值范围在0~255)
  46. #
  47. #   ⑻ 在对话中指定时间后自动关闭对话框:
  48. #        \x[X]: 对话框将在X帧后自动关闭
  49. #        \x:    省略参数时,将于默认帧数后自动关闭(默认值在参数设定中)
  50. #
  51. #   ⑼ 在对话中调整文字显示速度:
  52. #        \p[X]: 文字在X帧后显示
  53. #
  54. #   ⑽ 指定对话框在人物上方或下方(仅下一段文章有效):
  55. #        在对话前用"事件脚本"输入: ComicStyle "对话框在上"
  56. #                              或: ComicStyle "对话框在下"
  57. #
  58. #   ⑾ 禁用漫画式对话(仅下一段文章有效):
  59. #        在对话前用"事件脚本"输入: ComicStyle "禁用漫画式"
  60. #
  61. #   ⑿ 停止自动抓取名字(仅下一段文章有效):
  62. #        在对话前用"事件脚本"输入: ComicStyle "禁用自动名字"
  63. #
  64. #   ⒀ 指定事件(对话者)ID(仅下一段文章有效):
  65. #        在对话前用"事件脚本"输入: ComicStyle "指定事件[ID号]"
  66. #        主角ID号已设定为 0
  67. #
  68. #   ⒁ 指定新的皮肤:
  69. #        在对话前用"事件脚本"输入: ComicStyle "换皮肤[新的皮肤名]"
  70. #
  71. #   ⒂ 指定背景不透明度:
  72. #        在对话前用"事件脚本"输入: ComicStyle "背景不透明度[0-255]"
  73. #
  74. #   ⒃ 输入文章时设定冻结字符和注释字符:
  75. #        #[XX]: 字符串XX被冻结,不受转义等影响直接显示
  76. #               此功能可用于第一行显示冒号而不会被脚本误识别为对话者名字
  77. #        #<XX>: 字符串XX被当作注释,游戏运行时不会出现
  78. #------------------------------------------------------------------------------
  79. # 素材规格:
  80. #
  81. #   ⑴ 采用vx默认头像素材(Graphics\Faces)的格式
  82. #      即每个素材文件由2行4列共8格头像组成
  83. #
  84. #   ⑵ 所有头像朝向一致,默认是正面偏右
  85. #
  86. #   ⑶ 自定义皮肤有两个必须文件:
  87. #       ① 皮肤图片(Graphics\System),规格请看范例所附图片说明
  88. #       ② 配置文件,统一保存在游戏目录下,命名为Skin.ini,每个皮肤以自身
  89. #          [皮肤图片文件名](包含[])开头,详见范例使用的Skin.ini
  90. #----------------------------------------------------------------------------
  91. #    更新作者: 沉影不器
  92. #    许可协议: FSL
  93. #    项目版本: 2.00.1213
  94. #    引用网址: http://rpg.blue/thread-86073-1-1.html
  95. #----------------------------------------------------------------------------
  96. #    - *2.1.1213* (2011-12-13) By 沉影不器
  97. #      *新增 切换对话框模式(漫画式 \ 普通模式)
  98. #      *新增 对话框最小宽度和最小高度
  99. #      *新增 手动指定对话者名字
  100. #      *新增 允许首行名字被冻结或被注释
  101. #      *新增 对话者名字启用\n[X]
  102. #      *删简 删除对冒号的补偿转义
  103. #
  104. #    - *2.0.0213* (2011-02-13) By 沉影不器
  105. #      *优化 全部代码重写
  106. #      *优化 自动提取对话者名字功能
  107. #      *优化 两次字符串转义处理合并为一次
  108. #      *优化 改进窗体大小计算,增加行高逐行计算
  109. #      *修改 头像在右的控制符改为"\r"(大小写不限)
  110. #      *新增 自定义对话框皮肤
  111. #      *新增 自定义对话框暂停标记
  112. #      *新增 对话框皮肤不透明度
  113. #      *新增 对话者名字自动美化
  114. #      *新增 对话中修改字体名称、字号和透明度,失败时使用默认字体
  115. #      *新增 显示数据库各种图标及名称
  116. #      *新增 允许不受转义影响的字符串
  117. #      *新增 对话中播放动画和心情
  118. #      *新增 自动关闭对话框
  119. #
  120. #    - *1.1.0517* (2008-05-17) By 沉影不器
  121. #      *修复 消除数值输入影响头像坐标
  122. #      *修复 头像微调错位
  123. #      *新增 附加功能2项
  124. #      *新增 游戏中更改对话框设定多项
  125. #      *优化 对话框箭头图标上下独立
  126. #      *优化 无意义的代码
  127. #
  128. #    - *1.0.0510* (2008-05-10) By 沉影不器
  129. #      *初版
  130. #==============================================================================
  131. $fscript = {} if $fscript == nil
  132. $fscript["ComicStyle_Window_message"] = "2.1.1213"
  133. #----------------------------------------------------------------------------
  134. # ▼ 通用配置模块
  135. #----------------------------------------------------------------------------
  136. module FSL
  137.   module ComicStyle_Window_message
  138.    
  139.     ## 全局
  140.     FastShow = false           ## 是否确定键快速显示文字
  141.     Actional = true            ## 是否动态显示对话框
  142.     AutoClose = 90             ## 默认自动关闭时间(单位:帧)
  143.     TypeDelay = 2              ## 改变全局打字延时(单位:帧)
  144.     LineSpace = 2              ## 文字的行间距
  145.     SkipName = []              ## 跳过自动抓取名字的头像文件
  146.    
  147.     ## 窗体
  148.     Window_MinWidth = 96       ## 对话框最小宽度
  149.     Window_MinHeight = 24      ## 对话框最小高度
  150.     Window_DefWidth = 0        ## 对话框默认宽度(非漫画式时)
  151.     Window_DefHeight = 0       ## 对话框默认高度(非漫画式时)
  152.     Window_MaxLine = 5         ## 对话框最大行数
  153.    
  154.     ## 自定义暂停标记
  155.     Pause_Custom = 3           ## 位置(0:禁用 1:底边居中 2:右下角 3:跟随文字)
  156.     Pause_AniDelay = 8         ## 动画帧间隔(影响动画速度,单位:帧)
  157.    
  158.     ## 皮肤
  159.     Skin_Name = "Default"      ## 对话框皮肤文件名
  160.     Skin_Opacity = 200         ## 皮肤的不透明度
  161.    
  162.   end
  163. end

  164. #==============================================================================
  165. # □ INI
  166. #==============================================================================
  167. module FSL
  168.   module ComicStyle_Window_message
  169.     module_function
  170.     #--------------------------------------------------------------------------
  171.     # ○ 常量
  172.     #--------------------------------------------------------------------------
  173.     RdINI = Win32API.new("kernel32","GetPrivateProfileStringA","pppplp","l")
  174.     WtINI = Win32API.new("kernel32","WritePrivateProfileStringA","pppp","l")
  175.     M2W   = Win32API.new("kernel32","MultiByteToWideChar","ilpipi","l")
  176.     W2M   = Win32API.new("kernel32","WideCharToMultiByte","ilpipipp","l")
  177.     #--------------------------------------------------------------------------
  178.     # ○ 读取配置
  179.     #--------------------------------------------------------------------------
  180.     def readini(app_name, key_name)
  181.       buff = "\0" * 256
  182.       RdINI.call(app_name,key_name,"",buff,buff.size,"./Skin.ini")
  183.       buff.delete!("\0")
  184.       return a2u(buff)
  185.     end
  186.     #--------------------------------------------------------------------------
  187.     # ○ 保存配置
  188.     #--------------------------------------------------------------------------
  189.     def writeini(app_name, key_name, value)
  190.       WtINI.call(app_name,key_name,u2a(value),"./Skin.ini")
  191.     end
  192.     #--------------------------------------------------------------------------
  193.     # ○ ASCII转UTF8
  194.     #--------------------------------------------------------------------------
  195.     def a2u(str)
  196.       len = M2W.call(0,0,str,-1,nil,0)
  197.       buf = "\0" * (len*2)
  198.       M2W.call(0,0,str,-1,buf,buf.size/2)
  199.       len = W2M.call(0xFDE9,0,buf,-1,nil,0,nil,nil)
  200.       ret = "\0" * len
  201.       W2M.call(0xFDE9,0,buf,-1,ret,ret.size,nil,nil)
  202.       return ret.delete!("\0")
  203.     end
  204.     #--------------------------------------------------------------------------
  205.     # ○ UTF8转ASCII
  206.     #--------------------------------------------------------------------------
  207.     def u2a(str)
  208.       len = M2W.call(0xFDE9,0,str,-1,nil,0)
  209.       buf = "\0" * (len*2)
  210.       M2W.call(0xFDE9,0,str,-1,buf,buf.size/2)
  211.       len = W2M.call(0,0,buf,-1,nil,0,nil,nil)
  212.       ret = "\0" * len
  213.       W2M.call(0,0,buf,-1,ret,ret.size,nil,nil)
  214.       return ret.delete!("\0")
  215.     end
  216.   end
  217. end

  218. #==============================================================================
  219. # ■ Bitmap
  220. #==============================================================================
  221. class Bitmap
  222.   #--------------------------------------------------------------------------
  223.   # ○ 平铺
  224.   #--------------------------------------------------------------------------
  225.   def tile(dest_rect, src_bitmap, src_rect, opacity = 255)
  226.     m = dest_rect.width / src_rect.width
  227.     n = dest_rect.height / src_rect.height
  228.     m += 1 if dest_rect.width % src_rect.width > 0
  229.     n += 1 if dest_rect.height % src_rect.height > 0
  230.     buf = Bitmap.new(dest_rect.width, dest_rect.height)
  231.     for i in 0...m
  232.       x = src_rect.width * i
  233.       for j in 0...n
  234.         y = src_rect.height * j
  235.         buf.blt(x, y, src_bitmap, src_rect)
  236.       end
  237.     end
  238.     src_rect = Rect.new(0, 0, dest_rect.width, dest_rect.height)
  239.     self.blt(dest_rect.x, dest_rect.y, buf, src_rect, opacity)
  240.     buf.dispose
  241.   end
  242. end

  243. #==============================================================================
  244. # ■ Game_Message
  245. #==============================================================================
  246. class Game_Message
  247.   include FSL::ComicStyle_Window_message
  248.   #--------------------------------------------------------------------------
  249.   # ◎ 定义实例变量
  250.   #--------------------------------------------------------------------------
  251.   ## 标题
  252.   attr_accessor :title_symbol      ## 为名字添加的修饰符(一对)
  253.   attr_accessor :title_spaceh      ## 名字与对话内容之间的附加距离
  254.   attr_accessor :title_fontname    ## 名字使用的字体
  255.   attr_accessor :title_fontsize    ## 名字使用的字号
  256.   attr_accessor :title_fontcolor   ## 名字使用的字体颜色
  257.   ## 内容
  258.   attr_accessor :content_fontname  ## 对话内容使用的字体
  259.   attr_accessor :content_fontsize      ## 对话内容使用的字号
  260.   attr_accessor :content_fontcolor ## 对话内容使用的字体颜色
  261.   ## 头像
  262.   attr_accessor :face_type         ## 头像制式(0:小头像 1:半身像)
  263.   attr_accessor :face_indentx      ## 头像横坐标微调
  264.   attr_accessor :face_indenty      ## 头像纵坐标微调
  265.   attr_accessor :face_reserved     ## 头像的保留空间(与对话文字的保留间隔)
  266.   ## 皮肤
  267.   attr_accessor :skin_pauseframe   ## 暂停标记的动画帧数(1-5)
  268.   attr_accessor :skin_pausex       ## 暂停标记的x坐标微调
  269.   attr_accessor :skin_pausey       ## 暂停标记的y坐标微调
  270.   attr_accessor :skin_indent       ## 对话框内缩(用于减小框与文字的边距)
  271.   attr_accessor :skin_namegauge    ## 增加名字条和上边框的间距
  272.   attr_accessor :skin_adjarrow     ## 漫画式箭头横向偏移值
  273.   attr_accessor :skin_adjtx        ## 名字背景条横向偏移值
  274.   attr_accessor :skin_adjty        ## 名字背景条纵向偏移值
  275.   attr_accessor :skin_et           ## 名字背景条高度加成值
  276.   attr_accessor :skin_it           ## 名字背景条横向内缩值
  277.   attr_accessor :skin_ib           ## 皮肤背景内缩值
  278.                                    ##   请参考vx帮助文件-素材规格-窗口皮肤
  279.   #--------------------------------------------------------------------------
  280.   # ○ 设定参数
  281.   #--------------------------------------------------------------------------
  282.   def set_arg(app_name)
  283.     @title_symbol = readini(app_name, "Title_Symbol")
  284.     @title_spaceh = readini(app_name, "Title_SpaceH").to_i
  285.     @title_fontname = readini(app_name, "Title_FontName")
  286.     @title_fontsize = readini(app_name, "Title_FontSize").to_i
  287.     @title_fontcolor = readini(app_name, "Title_FontColor").to_i
  288.     @content_fontname = readini(app_name, "Content_FontName")
  289.     @content_fontsize = readini(app_name, "Content_FontSize").to_i
  290.     @content_fontcolor = readini(app_name, "Content_FontColor").to_i
  291.     @face_type = readini(app_name, "Face_Type").to_i
  292.     @face_indentx = readini(app_name, "Face_IndentX").to_i
  293.     @face_indenty = readini(app_name, "Face_IndentY").to_i
  294.     @face_reserved = readini(app_name, "Face_Reserved").to_i   
  295.     @skin_pauseframe = readini(app_name, "Skin_PauseFrame").to_i
  296.     @skin_pausex = readini(app_name, "Skin_PauseX").to_i
  297.     @skin_pausey = readini(app_name, "Skin_PauseY").to_i
  298.     @skin_indent = readini(app_name, "Skin_Indent").to_i
  299.     @skin_namegauge = readini(app_name, "Skin_NameGauge").to_i
  300.     @skin_adjarrow = readini(app_name, "Skin_AdjArrow").to_i
  301.     @skin_adjtx = readini(app_name, "Skin_AdjTx").to_i
  302.     @skin_adjty = readini(app_name, "Skin_AdjTy").to_i
  303.     @skin_et = readini(app_name, "Skin_ET").to_i
  304.     @skin_it = readini(app_name, "Skin_IT").to_i
  305.     @skin_ib = readini(app_name, "Skin_IB").to_i
  306.   end
  307. end

  308. #==============================================================================
  309. # ■ Game_Event
  310. #==============================================================================
  311. class Game_Event < Game_Character
  312.   attr_reader   :erased                 ## 被擦除
  313.   attr_reader   :page                   ## 事件页
  314.   #--------------------------------------------------------------------------
  315.   # ○ 获取名称
  316.   #--------------------------------------------------------------------------
  317.   def name
  318.     return @event.name
  319.   end
  320. end

  321. #==============================================================================
  322. # ■ Game_Interpreter
  323. #==============================================================================
  324. class Game_Interpreter
  325.   #--------------------------------------------------------------------------
  326.   # ○ 漫画式开关
  327.   #--------------------------------------------------------------------------
  328.   def ComicStyle(str)
  329.     msg_win = $scene.instance_variable_get :@message_window
  330.     ## 直接匹配
  331.     msg_win.instance_variable_set :@fix_type, 2 if str =~ /对话框在上/
  332.     msg_win.instance_variable_set :@fix_type, 8 if str =~ /对话框在下/
  333.     msg_win.instance_variable_set :@comic_style, false if str =~ /禁用漫画式/
  334.     msg_win.instance_variable_set :@auto_name, false if str =~ /禁用自动名字/
  335.     ## 待解释
  336.     str.sub(/换皮肤\[(\S+)\]/) {"#{$1}"}
  337.     msg_win.set_skin($1) if $1
  338.     str.sub(/指定事件\[(\d+)\]/) {"#{$1}"}
  339.     msg_win.instance_variable_set :@target_id, $1.to_i if $1
  340.     str.sub(/背景不透明度\[(\d+)\]/) {"#{$1}"}
  341.     msg_win.instance_variable_set :@skin_opacity, $1.to_i if $1
  342.   end
  343. end

  344. #==============================================================================
  345. # ■ Sprite_Character
  346. #==============================================================================
  347. class Sprite_Character < Sprite_Base
  348.   #--------------------------------------------------------------------------
  349.   # ◎ 开始显示心情图标
  350.   #--------------------------------------------------------------------------
  351.   def start_balloon
  352.     dispose_balloon
  353.     @balloon_duration = 8 * 8 + BALLOON_WAIT
  354.     @balloon_sprite = ::Sprite.new##(viewport)
  355.     @balloon_sprite.bitmap = Cache.system("Balloon")
  356.     @balloon_sprite.ox = 16
  357.     @balloon_sprite.oy = 32
  358.     update_balloon
  359.   end
  360. end

  361. #==============================================================================
  362. # □ Spriteset_Skin
  363. #==============================================================================
  364. class Spriteset_Skin
  365.   include FSL::ComicStyle_Window_message
  366.   #--------------------------------------------------------------------------
  367.   # ○ 实例变量
  368.   #--------------------------------------------------------------------------
  369.   attr_reader   :type                   ## 指定上箭头或下箭头
  370.   #--------------------------------------------------------------------------
  371.   # ○ 初始化
  372.   #--------------------------------------------------------------------------
  373.   def initialize(filename, width, height, type = 2)
  374.     @type =type
  375.     @bitmap = Cache.system(filename)
  376.     @main_sprite = Sprite.new
  377.     @main_sprite.bitmap = Bitmap.new(width, height + 32)
  378.     draw_skin(width, height + 32)
  379.     if Actional
  380.       @main_sprite.zoom_x = @main_sprite.zoom_y = 0
  381.       self.visible = false
  382.     else
  383.       @main_sprite.zoom_x = @main_sprite.zoom_y = 1
  384.       self.visible = true
  385.     end
  386.   end
  387.   #--------------------------------------------------------------------------
  388.   # ○ 释放
  389.   #--------------------------------------------------------------------------
  390.   def dispose
  391.     @main_sprite.bitmap.dispose
  392.     @main_sprite.dispose
  393.     @sprite_2.bitmap.dispose
  394.     @sprite_8.bitmap.dispose
  395.     @sprite_2.dispose
  396.     @sprite_8.dispose
  397.   end
  398.   #--------------------------------------------------------------------------
  399.   # ○ 宽度
  400.   #--------------------------------------------------------------------------
  401.   def width
  402.     return @main_sprite.bitmap.width
  403.   end
  404.   #--------------------------------------------------------------------------
  405.   # ○ 高度
  406.   #--------------------------------------------------------------------------
  407.   def height
  408.     return @main_sprite.bitmap.height
  409.   end
  410.   #--------------------------------------------------------------------------
  411.   # ○ X原点
  412.   #--------------------------------------------------------------------------
  413.   def ox
  414.     return @main_sprite.ox
  415.   end
  416.   #--------------------------------------------------------------------------
  417.   # ○ Y原点
  418.   #--------------------------------------------------------------------------
  419.   def oy
  420.     return @main_sprite.oy
  421.   end
  422.   #--------------------------------------------------------------------------
  423.   # ○ X坐标
  424.   #--------------------------------------------------------------------------
  425.   def x
  426.     return @main_sprite.x
  427.   end
  428.   #--------------------------------------------------------------------------
  429.   # ○ Y坐标
  430.   #--------------------------------------------------------------------------
  431.   def y
  432.     return @main_sprite.y
  433.   end
  434.   #--------------------------------------------------------------------------
  435.   # ○ Z坐标
  436.   #--------------------------------------------------------------------------
  437.   def z
  438.     return @main_sprite.z
  439.   end
  440.   #--------------------------------------------------------------------------
  441.   # ○ 修改X坐标
  442.   #--------------------------------------------------------------------------
  443.   def x=(val)
  444.     @main_sprite.x = val
  445.     @sprite_2.x = val - @main_sprite.ox + 16
  446.     @sprite_8.x = val - @main_sprite.ox + 16
  447.   end
  448.   #--------------------------------------------------------------------------
  449.   # ○ 修改Y坐标
  450.   #--------------------------------------------------------------------------
  451.   def y=(val)
  452.     @main_sprite.y = val
  453.     @sprite_2.y = val - @main_sprite.oy + @main_sprite.height - 32
  454.     @sprite_8.y = val - @main_sprite.oy
  455.   end
  456.   #--------------------------------------------------------------------------
  457.   # ○ 修改Z坐标
  458.   #--------------------------------------------------------------------------
  459.   def z=(val)
  460.     @main_sprite.z = val
  461.     @sprite_2.z = val + 1
  462.     @sprite_8.z = val + 1
  463.   end
  464.   #--------------------------------------------------------------------------
  465.   # ○ 修改可视性
  466.   #--------------------------------------------------------------------------
  467.   def visible=(val)
  468.     @main_sprite.visible = val
  469.     @sprite_2.visible = val
  470.     @sprite_8.visible = val
  471.   end
  472.   #--------------------------------------------------------------------------
  473.   # ○ 更改类型
  474.   #--------------------------------------------------------------------------
  475.   def type=(val)
  476.     if @type != val
  477.       @type = val
  478.       @sprite_8.src_rect.x,@sprite_2.src_rect.x =
  479.       @sprite_2.src_rect.x,@sprite_8.src_rect.x
  480.     end
  481.   end
  482.   #--------------------------------------------------------------------------
  483.   # ○ 修改不透明度
  484.   #--------------------------------------------------------------------------
  485.   def opacity=(val)
  486.     @main_sprite.opacity = val
  487.     @sprite_2.opacity = val
  488.     @sprite_8.opacity = val
  489.   end
  490.   #--------------------------------------------------------------------------
  491.   # ○ 显示标题
  492.   #--------------------------------------------------------------------------
  493.   def draw_title(height)
  494.     x = $game_message.skin_it + $game_message.skin_adjtx
  495.     y = $game_message.skin_adjty + 32 - $game_message.skin_indent + $game_message.skin_namegauge
  496.     width = @main_sprite.width - $game_message.skin_it*2
  497.     dst_rect = Rect.new(x, y, width, height + $game_message.skin_et)
  498.     src_rect = Rect.new(96,80,24,32)
  499.     @main_sprite.bitmap.stretch_blt(dst_rect, @bitmap, src_rect)
  500.     dst_rect = Rect.new(x, y, width, height + $game_message.skin_et)
  501.     src_rect = Rect.new(120,80,24,32)
  502.     @main_sprite.bitmap.tile(dst_rect, @bitmap, src_rect)
  503.   end
  504.   #--------------------------------------------------------------------------
  505.   # ○ 描绘底面
  506.   #--------------------------------------------------------------------------
  507.   def draw_skin(width, height)
  508.     ## 背景
  509.     dst_rect = Rect.new($game_message.skin_ib,$game_message.skin_ib+16,width-$game_message.skin_ib*2,height-$game_message.skin_ib*2-32)
  510.     src_rect = Rect.new(0,0,64,64)
  511.     @main_sprite.bitmap.stretch_blt(dst_rect, @bitmap, src_rect)
  512.     src_rect = Rect.new(0,64,64,64)
  513.     @main_sprite.bitmap.tile(dst_rect, @bitmap, src_rect)
  514.     ## 四角
  515.     src_rect = Rect.new(64,16,16,16)
  516.     @main_sprite.bitmap.blt(0, 16, @bitmap, src_rect)
  517.     src_rect = Rect.new(128,16,16,16)
  518.     @main_sprite.bitmap.blt(width-16, 16, @bitmap, src_rect)
  519.     src_rect = Rect.new(64,48,16,16)
  520.     @main_sprite.bitmap.blt(0, height-32, @bitmap, src_rect)
  521.     src_rect = Rect.new(128,48,16,16)
  522.     @main_sprite.bitmap.blt(width-16, height-32, @bitmap, src_rect)
  523.     ## 左右边框
  524.     dst_rect=Rect.new(0,32,16,height-64)
  525.     src_rect=Rect.new(64,32,16,16)
  526.     @main_sprite.bitmap.stretch_blt(dst_rect, @bitmap, src_rect)
  527.     dst_rect=Rect.new(width-16,32,16,height-64)
  528.     src_rect=Rect.new(128,32,16,16)
  529.     @main_sprite.bitmap.stretch_blt(dst_rect, @bitmap, src_rect)
  530.     ## 箭头(上下框)
  531.     draw_arrow(width-32, height)
  532.   end
  533.   #--------------------------------------------------------------------------
  534.   # ○ 描绘箭头
  535.   #--------------------------------------------------------------------------
  536.   def draw_arrow(width, height)
  537.     @sprite_2 = Sprite.new
  538.     @sprite_8 = Sprite.new
  539.     @sprite_2.bitmap = Bitmap.new(width*2+16, 32)
  540.     @sprite_8.bitmap = Bitmap.new(width*2+16, 32)
  541.     ##2
  542.     dst_rect=Rect.new(0, 0, width, 32)
  543.     src_rect=Rect.new(80,48,16,32)
  544.     @sprite_2.bitmap.stretch_blt(dst_rect, @bitmap, src_rect)
  545.     dst_rect=Rect.new(width+16,0,width, 32)
  546.     src_rect=Rect.new(112,48,16,32)
  547.     @sprite_2.bitmap.stretch_blt(dst_rect, @bitmap, src_rect)
  548.     src_rect=Rect.new(96,48,16,32)
  549.     @sprite_2.bitmap.blt(width, 0, @bitmap, src_rect)
  550.     ## 8
  551.     dst_rect=Rect.new(0, 0, width, 32)
  552.     src_rect=Rect.new(80,0,16,32)
  553.     @sprite_8.bitmap.stretch_blt(dst_rect, @bitmap, src_rect)
  554.     dst_rect=Rect.new(width+16,0,width, 32)
  555.     src_rect=Rect.new(112,0,16,32)
  556.     @sprite_8.bitmap.stretch_blt(dst_rect, @bitmap, src_rect)
  557.     src_rect=Rect.new(96,0,16,32)
  558.     @sprite_8.bitmap.blt(width, 0, @bitmap, src_rect)
  559.     ## 位图区域
  560.     @sprite_2.src_rect = @sprite_8.src_rect = Rect.new(0,0,width,32)
  561.   end
  562.   #--------------------------------------------------------------------------
  563.   # ○ 移动箭头
  564.   #--------------------------------------------------------------------------
  565.   def slide(val)
  566.     ## 微调 + 箭头宽度/2
  567.     val += $game_message.skin_adjarrow + 8
  568.     val = [@main_sprite.width-32, [@main_sprite.width-val, 16].max].min
  569.     @sprite_2.src_rect.x = val if @type == 2
  570.     @sprite_8.src_rect.x = val if @type == 8
  571.   end
  572.   #--------------------------------------------------------------------------
  573.   # ○ 动作
  574.   #--------------------------------------------------------------------------
  575.   def action(openness)
  576.     case @type
  577.     when 2
  578.       @main_sprite.ox = width - @sprite_2.src_rect.x - 8
  579.       @main_sprite.oy = @main_sprite.height - 16
  580.     when 8
  581.       @main_sprite.ox = width - @sprite_8.src_rect.x - 8
  582.       @main_sprite.oy = 16
  583.     when nil
  584.       @main_sprite.ox = @main_sprite.width / 2
  585.       @main_sprite.oy = @main_sprite.height / 2
  586.     end
  587.     zoom = openness / 255.0
  588.     @main_sprite.zoom_x = zoom
  589.     @main_sprite.zoom_y = zoom
  590.     if openness == 255
  591.       self.visible = true
  592.       ## 还原
  593.       if @backup
  594.         @main_sprite.bitmap.clear_rect(16, 0, width-32, 32)
  595.         @main_sprite.bitmap.clear_rect(16, height-32, width-32, 32)
  596.         @main_sprite.bitmap.blt(16, 0, @backup, Rect.new(0,0,width-32,32))
  597.         @main_sprite.bitmap.blt(16, height-32, @backup, Rect.new(0,32,width-32,32))
  598.         @backup.dispose
  599.       end
  600.     else
  601.       @main_sprite.visible = true
  602.       @sprite_2.visible = @sprite_8.visible = false
  603.       ## 临时描绘
  604.       unless @backup
  605.         @backup = Bitmap.new(width-32,64)
  606.         r = Rect.new(16, 0, width-32, 32)
  607.         @backup.blt(0, 0, @main_sprite.bitmap, r)
  608.         r = Rect.new(16, height-32, width-32, 32)
  609.         @backup.blt(0, 32, @main_sprite.bitmap, r)
  610.         @main_sprite.bitmap.blt(16, 0, @sprite_8.bitmap, @sprite_8.src_rect)
  611.         @main_sprite.bitmap.blt(16, height-32, @sprite_2.bitmap, @sprite_2.src_rect)
  612.       end
  613.     end
  614.   end
  615. end

  616. #==============================================================================
  617. # ■ Window_Selectable
  618. #==============================================================================
  619. class Window_Selectable < Window_Base
  620.   #--------------------------------------------------------------------------
  621.   # ◎ 更新画面
  622.   #--------------------------------------------------------------------------
  623.   alias selectable_update update
  624. end

  625. #==============================================================================
  626. # ■ Window_NumberInput
  627. #==============================================================================
  628. class Window_NumberInput < Window_Base
  629.   include FSL::ComicStyle_Window_message
  630.   #--------------------------------------------------------------------------
  631.   # ◎ 刷新
  632.   #--------------------------------------------------------------------------
  633.   def refresh
  634.     self.contents.clear
  635.     self.contents.font.color = normal_color
  636.     s = sprintf("%0*d", @digits_max, @number)
  637.     h = self.contents.font.size + LineSpace
  638.     for i in 0...@digits_max
  639.       self.contents.draw_text(24 + i * h, 0, h, h, s[i,1], 1)
  640.     end
  641.   end
  642.   #--------------------------------------------------------------------------
  643.   # ◎ 更新光标
  644.   #--------------------------------------------------------------------------
  645.   def update_cursor
  646.     h = self.contents.font.size + LineSpace
  647.     self.cursor_rect.set(24 + @index * h, 0, h, h)
  648.   end
  649. end

  650. #==============================================================================
  651. # □ Window_ComicStyle
  652. #==============================================================================
  653. class Window_ComicStyle < Window_Message
  654.   include FSL::ComicStyle_Window_message
  655.   #--------------------------------------------------------------------------
  656.   # ◎ 初始化对象
  657.   #--------------------------------------------------------------------------
  658.   def initialize
  659.     super
  660.     self.opacity = 0
  661.     ## 冻结字符池
  662.     @frozen_char = []
  663.     ## 头像右判断
  664.     @show_right = false
  665.     ## 指定上下型
  666.     @fix_type = 0
  667.     ## 自定义暂停标记
  668.     @custom_pause = false
  669.     ## 本行最大高度
  670.     @line_maxh = []
  671.     ## 漫画式标志
  672.     @comic_style = true
  673.     ## 手动输入名字
  674.     @auto_name = true
  675.     ## 指定事件ID
  676.     @target_id = nil
  677.     ## 设定系统窗体的皮肤
  678.     set_skin(Skin_Name)
  679.     ## 修改默认字体
  680.     contents.font = default_font
  681.     ## 皮肤不透明度
  682.     @skin_opacity = Skin_Opacity
  683.     ## 生成头像
  684.     create_face_sprite
  685.   end
  686.   #--------------------------------------------------------------------------
  687.   # ○ 设定皮肤
  688.   #--------------------------------------------------------------------------
  689.   def set_skin(skin_name)
  690.     ## 名字
  691.     @skin_name = skin_name
  692.     ## 参数
  693.     $game_message.set_arg(skin_name)
  694.     ## 选择框
  695.     src_bitmap = Cache.system @skin_name
  696.     src_rect = Rect.new(64, 80, 32, 32)
  697.     new_skin = self.windowskin.clone
  698.     new_skin.blt(64, 64, src_bitmap, src_rect)
  699.     @number_input_window.windowskin = self.windowskin = new_skin
  700.     ## 字体
  701.     @number_input_window.contents.font = @gold_window.contents.font = default_font
  702.     ## 暂停标记
  703.     create_pause_sprite
  704.   end
  705.   #--------------------------------------------------------------------------
  706.   # ◎ 更新画面
  707.   #--------------------------------------------------------------------------
  708.   def update
  709.     selectable_update
  710.     update_gold_window
  711.     update_number_input_window
  712.     update_back_sprite
  713.     update_show_fast
  714.     ## 更新自定义暂停标记
  715.     update_pause_sprite
  716.     unless @opening or @closing             # 除窗体关闭以外
  717.       if @wait_count > 0                    # 文章内等待中
  718.         @wait_count -= 1
  719.       elsif @custom_pause                   # 等待文章翻页待机中
  720.         input_pause
  721.       elsif self.active                     ## 正在输入选择项
  722.         input_choice
  723.       elsif @number_input_window.visible    # 正在输入数值
  724.         input_number
  725.       elsif @text != nil                    # 还有剩余的文章
  726.         update_message                        # 更新消息
  727.       elsif continue?                       # 继续的情况
  728.         start_message                       # 开始消息
  729.         ## 更新窗体坐标
  730.         update_window_pos
  731.         open                                  # 打开窗体
  732.         $game_message.visible = true
  733.       else                                  # 不继续的情况
  734.         close                                 # 关闭窗体
  735.         $game_message.visible = @closing
  736.       end
  737.       ## 更新窗体坐标
  738.       update_window_pos
  739.     end
  740.     ## 自动关闭对话框
  741.     if @auto_close != nil
  742.       if @auto_close > 0
  743.         @auto_close -= 1
  744.       else
  745.         terminate_message
  746.       end
  747.     end
  748.   end
  749.   #--------------------------------------------------------------------------
  750.   # ◎ 更新快速显示标志
  751.   #--------------------------------------------------------------------------
  752.   def update_show_fast
  753.     if @custom_pause or self.openness < 255
  754.       @show_fast = false
  755.     elsif Input.trigger?(Input::C)
  756.       if FastShow ## 快速显示文字
  757.         @show_fast = true
  758.         @wait_count = 0
  759.       end
  760.     elsif not Input.press?(Input::C)
  761.       @show_fast = false
  762.     end
  763.     if @show_fast and @wait_count > 0
  764.       @wait_count -= 1
  765.     end
  766.   end
  767.   #--------------------------------------------------------------------------
  768.   # ◎ 开始显示消息
  769.   #--------------------------------------------------------------------------
  770.   def start_message
  771.     @text = ""
  772.     ## 回避无文章的情况
  773.     unless $game_message.texts.empty?
  774.       ## 暂存消息
  775.       tmp_texts = []
  776.       $game_message.texts.each{|text| tmp_texts.push text.clone}
  777.       ## 特定字符预处理
  778.       tmp_texts[0].gsub!(/#\[(.*?)\]/)   { @frozen_char.push($1); "\xff" }
  779.       tmp_texts[0].gsub!(/#\<(.*?)\>/)   { "" }
  780.       tmp_texts[0].gsub!(/\\N\[(\d+)\]/i){ $game_actors[$1.to_i].name }
  781.       ## 判断头像朝向
  782.       @show_right = tmp_texts[0].sub!(/\\R/i){""} != nil
  783.       ## 处理名字
  784.       if tmp_texts[0].sub!(/[::]/){""}
  785.         ## 手动输入
  786.         unless tmp_texts[0].sub("\xff\]"){""}.empty?
  787.           @name = tmp_texts[0].clone
  788.         end
  789.       end
  790.       if @auto_name and show_face? and @name.nil?
  791.         ## 自动抓取
  792.         unless SkipName.include? $game_message.face_name
  793.           @name = $game_message.face_name
  794.           tmp_texts.unshift @name
  795.           $game_message.choice_start += 1
  796.         end
  797.       end
  798.       ## 名字美化
  799.       if show_name?
  800.         ## 去冒号加修饰符(可选)
  801.         unless $game_message.title_symbol.empty?
  802.           size = $game_message.title_symbol.size/2
  803.           tmp_texts[0] = $game_message.title_symbol[0, size] +
  804.           tmp_texts[0] + $game_message.title_symbol[size, size]
  805.         end
  806.         ## 设定文字颜色
  807.         tmp_texts[0] = "\\C[#{$game_message.title_fontcolor}]" +
  808.         tmp_texts[0] + "\\C[#{$game_message.content_fontcolor}]"
  809.         ## 设定文字字体
  810.         tmp_texts[0] = "\\F[N#{$game_message.title_fontname}]" +
  811.         tmp_texts[0] + "\\F[N#{$game_message.content_fontname}]"
  812.         ## 设定文字大小
  813.         tmp_texts[0] = "\\F[S#{$game_message.title_fontsize}]" +
  814.         tmp_texts[0] + "\\F[S#{$game_message.content_fontsize}]"
  815.         ## 内容缩进
  816.         for i in 1...tmp_texts.size
  817.           tmp_texts[i] = " " + tmp_texts[i]
  818.         end
  819.       end
  820.       for i in 0...tmp_texts.size
  821.         @text += "  " if i >= $game_message.choice_start
  822.         @text += tmp_texts[i].clone + "\x00"
  823.       end
  824.     end
  825.     @item_max = $game_message.choice_max
  826.     get_target
  827.     convert_special_characters
  828.     new_page #条件:@show_right
  829.     ## 重设窗体背景与位置
  830.     reset_window(*get_window_size) #条件:@text @name
  831.   end
  832.   #--------------------------------------------------------------------------
  833.   # ◎ 更换页面处理
  834.   #--------------------------------------------------------------------------
  835.   def new_page
  836.     contents.clear
  837.     ## 初始化文字描绘起点
  838.     @contents_x = 0
  839.     if show_face?
  840.       refresh_face_sprite
  841.       ## 计算文字横坐标起始
  842.       @contents_x += face_width + $game_message.face_reserved unless @show_right
  843.     else
  844.       @face_sprite.bitmap.clear
  845.     end
  846.     @contents_y = 0
  847.     @line_count = 0
  848.     @show_fast = false
  849.     @line_show_fast = false
  850.     @pause_skip = false
  851.   end
  852.   #--------------------------------------------------------------------------
  853.   # ◎ 换行处理
  854.   #--------------------------------------------------------------------------
  855.   def new_line
  856.     ## 提前处理自定义暂停标记
  857.     set_pause_sprite_pos
  858.     @contents_x = 0
  859.     if show_face? and !@show_right
  860.       @contents_x = face_width + $game_message.face_reserved
  861.     end
  862.     @contents_y += @line_maxh[@line_count]
  863.     @line_count += 1
  864.     @line_show_fast = false
  865.   end
  866.   #--------------------------------------------------------------------------
  867.   # ◎ 特殊文字变换
  868.   #--------------------------------------------------------------------------
  869.   def convert_special_characters
  870.     ## 特定字符处理
  871.     @text.gsub!(/#\[(.*?)\]/)    {@frozen_char.push($1); "\xff"}
  872.     @text.gsub!(/#\<(.*?)\>/)    {""}
  873.     ## 更改不透明度
  874.     @text.gsub!(/\\O\[(\d+)\]/i) {"\x09[#{$1}]"}
  875.     ## 显示数据库元素
  876.     @text.gsub!(/\\S\[(\d+)\]/i) {"\x0a[#{$1}]" + $data_skills[$1.to_i].name}
  877.     @text.gsub!(/\\I\[(\d+)\]/i) {"\x0b[#{$1}]" + $data_items[$1.to_i].name}
  878.     @text.gsub!(/\\W\[(\d+)\]/i) {"\x0c[#{$1}]" + $data_weapons[$1.to_i].name}
  879.     @text.gsub!(/\\A\[(\d+)\]/i) {"\x0d[#{$1}]" + $data_armors[$1.to_i].name}
  880.     ## 更改字体
  881.     @text.gsub!(/\\F\[S(\d+)\]/i){"\x0e[#{$1}]"}
  882.     @text.gsub!(/\\F\[N(.+?)\]/i){"\x0f[#{$1}]"}
  883.     @text.gsub!(/\\F\[C(\d+)\]/i){"\x01[#{$1}]"}
  884.     ## 字速控制
  885.     @text.gsub!(/\\P\[(\d+)\]/i) {"\x10[#{$1}]"}
  886.     ## 自动关闭
  887.     @text.gsub!(/\\X\[(\d+)\]/i) {"\x11[#{$1}]"}
  888.     @text.gsub!(/\\X/i)          {"\x12"}
  889.     ## 提取动画对象和 ID
  890.     @text.gsub!(/\\A\[(\S+)\,(\d+)\]/i) {"\x13[#{$1},#{$2}]"}
  891.     @text.gsub!(/\\B\[(\S+)\,(\d+)\]/i) {"\x14[#{$1},#{$2}]"}
  892.     super
  893.   end
  894.   #--------------------------------------------------------------------------
  895.   # ◎ 设置窗体背景与位置
  896.   #--------------------------------------------------------------------------
  897.   def reset_window(width = nil, height = nil)
  898.     unless width.nil? || height.nil?
  899.       self.width = width
  900.       self.height = height
  901.       font = self.contents.font.clone
  902.       self.contents.dispose
  903.       self.contents = Bitmap.new(width - 32, height - 32)
  904.       ## 修改默认字体
  905.       contents.font = font
  906.       ## 坐标
  907.       if comic_style?
  908.         if @target.x < visual_width / 2
  909.           self.x = -$game_message.skin_indent
  910.         elsif @target.x > Graphics.width - visual_width / 2
  911.           self.x = Graphics.width - visual_width - $game_message.skin_indent
  912.         else
  913.           self.x = @target.x - visual_width / 2
  914.         end
  915.         if @target.y < visual_height
  916.           self.y = @target.y - $game_message.skin_indent
  917.           type = 8
  918.         else
  919.           self.y = @target.y - @target.height - self.height + $game_message.skin_indent
  920.           type = 2
  921.         end
  922.         ## 修复名字条预留
  923.         self.y += $game_message.skin_namegauge if show_name? and type == 8
  924.       else
  925.         self.x = (Graphics.width - self.width) / 2
  926.         case $game_message.position
  927.         when 0  # 上
  928.           self.y = visual_height-self.height
  929.           @gold_window.y = 360
  930.         when 1  # 中
  931.           self.y = (Graphics.height - self.height) / 2
  932.           @gold_window.y = 0
  933.         when 2  # 下
  934.           self.y = $game_message.skin_indent + Graphics.height - self.height
  935.           @gold_window.y = 0
  936.         end
  937.       end
  938.       ## 皮肤
  939.       create_skin_sprite(width, height, type)
  940.       @skin_sprite.draw_title(self.contents.font.size) if show_name?
  941.       @skin_sprite.x = self.x + $game_message.skin_indent + @skin_sprite.ox
  942.       @skin_sprite.y = self.y + $game_message.skin_indent - 16 + @skin_sprite.oy
  943.       @skin_sprite.y -= $game_message.skin_namegauge if show_name?
  944.       @skin_sprite.opacity = @skin_opacity
  945.     end
  946.   end
  947.   #--------------------------------------------------------------------------
  948.   # ○ 更新窗体坐标
  949.   #--------------------------------------------------------------------------
  950.   def update_window_pos
  951.     return unless self.openness == 255 or Actional
  952.     return unless comic_style?
  953.     return unless @skin_sprite
  954.     ## 超出屏幕时
  955.     unless within_screen_range?(@target)
  956.       self.x = (Graphics.width - self.width) / 2
  957.       case $game_message.position
  958.       when 0  # 上
  959.         self.y = 0
  960.         @gold_window.y = 360
  961.       when 1  # 中
  962.         self.y = (Graphics.height - self.height) / 2
  963.         @gold_window.y = 0
  964.       when 2  # 下
  965.         self.y = $game_message.skin_indent + Graphics.height - self.height
  966.         @gold_window.y = 0
  967.       end
  968.       ## 取消箭头
  969.       @skin_sprite.slide(0)
  970.       return
  971.     end
  972.     ## 指定上下型
  973.     @skin_sprite.type = @fix_type if @fix_type != 0
  974.     ## 处理X
  975.     if @target.x < visual_width / 2
  976.       self.x = -$game_message.skin_indent
  977.     elsif @target.x > Graphics.width - visual_width / 2
  978.       self.x = Graphics.width - visual_width - $game_message.skin_indent
  979.     else
  980.       self.x = @target.x - visual_width / 2
  981.     end
  982.     ## 处理Y
  983.     case @skin_sprite.type
  984.     when 2
  985.       if @target.y < visual_height + @target.height
  986.         self.y = @target.y - $game_message.skin_indent
  987.         type = 8
  988.       else
  989.         self.y = @target.y - @target.height - self.height + $game_message.skin_indent
  990.       end
  991.     when 8
  992.       if @target.y < visual_height
  993.         self.y = @target.y - $game_message.skin_indent
  994.       elsif @target.y > Graphics.height - self.height - $game_message.skin_indent
  995.         self.y = @target.y - @target.height - self.height + $game_message.skin_indent
  996.         type = 2
  997.       else
  998.         self.y = @target.y - $game_message.skin_indent
  999.       end
  1000.     end
  1001.     ## 修改上下型
  1002.     @skin_sprite.type = type if @skin_sprite and type
  1003.     ## 修复名字条预留
  1004.     self.y += $game_message.skin_namegauge if show_name? and @skin_sprite.type == 8
  1005.     ## 皮肤箭头
  1006.     val = @target.x - self.x - $game_message.skin_indent
  1007.     if @skin_sprite
  1008.       @skin_sprite.slide(val)
  1009.       @skin_sprite.x = self.x + $game_message.skin_indent + @skin_sprite.ox
  1010.       @skin_sprite.y = self.y + $game_message.skin_indent - 16 + @skin_sprite.oy
  1011.       @skin_sprite.y -= $game_message.skin_namegauge if show_name?
  1012.     end
  1013.     ## 金钱窗体
  1014.     @gold_window.y = self.y > @gold_window.height ? 0 : 360
  1015.   end
  1016.   #--------------------------------------------------------------------------
  1017.   # ◎ 消息结束
  1018.   #--------------------------------------------------------------------------
  1019.   def terminate_message
  1020.     @fix_type = 0
  1021.     @custom_pause = false
  1022.     @auto_close = nil
  1023.     @name = nil
  1024.     @face_sprite.visible = false if @face_sprite
  1025.     @skin_sprite.dispose
  1026.     @skin_sprite = nil
  1027.     @comic_style = true
  1028.     @auto_name = true
  1029.     @target_id = nil
  1030.     super
  1031.     close
  1032.   end
  1033.   #--------------------------------------------------------------------------
  1034.   # ◎ 消息更新结束
  1035.   #--------------------------------------------------------------------------
  1036.   def finish_message
  1037.     if $game_message.choice_max > 0
  1038.       start_choice
  1039.     elsif $game_message.num_input_variable_id > 0
  1040.       start_number_input
  1041.     elsif @pause_skip
  1042.       terminate_message
  1043.     else
  1044.       @custom_pause = true
  1045.     end
  1046.     @wait_count = 10
  1047.     @text = nil
  1048.     @speed = nil
  1049.   end
  1050.   #--------------------------------------------------------------------------
  1051.   # ◎ 更新消息
  1052.   #--------------------------------------------------------------------------
  1053.   def update_message
  1054.     loop do
  1055.       c = @text.slice!(/./m)            # 获取下一条文字
  1056.       case c
  1057.       when nil                          # 没有可以显示的文字
  1058.         finish_message                  # 更新结束
  1059.         break
  1060.       when "\x00"                       # 换行
  1061.         new_line
  1062.         if @line_count >= Window_MaxLine# 行数为最大时
  1063.           unless @text.empty?           # 如果还有增加则继续
  1064.             ## 暂停
  1065.             @custom_pause = true        # 等待输入
  1066.             break
  1067.           end
  1068.         end
  1069.       when "\x01"                       # \C[n]  (更改文字色)
  1070.         @text.sub!(/\[([0-9]+)\]/, "")
  1071.         contents.font.color = text_color($1.to_i)
  1072.         next
  1073.       when "\x02"                       # \G  (显示所持金)
  1074.         @gold_window.refresh
  1075.         @gold_window.open
  1076.       when "\x03"                       # \.  (等待 1/4 秒)
  1077.         @wait_count = 15
  1078.         break
  1079.       when "\x04"                       # \|  (等待 1 秒)
  1080.         @wait_count = 60
  1081.         break
  1082.       when "\x05"                       # \!  (等待输入)
  1083.         @custom_pause = true
  1084.         break
  1085.       when "\x06"                       # \>  (瞬间显示 ON)
  1086.         @line_show_fast = true
  1087.       when "\x07"                       # \<  (瞬间显示 OFF)
  1088.         @line_show_fast = false
  1089.       when "\x08"                       # \^  (不等待输入)
  1090.         @pause_skip = true
  1091.       ## 更改不透明度的情况下
  1092.       when "\x09"
  1093.         @text.sub!(/\[(\d+)\]/, "")
  1094.         contents.font.color.alpha = $1.to_i
  1095.       ## 显示技能情况下
  1096.       when "\x0a"
  1097.         @text.sub!(/\[(\d+)\]/, "")
  1098.         draw_icon($data_skills[$1.to_i].icon_index, @contents_x, @contents_y)
  1099.         ## 横坐标增加图标宽度
  1100.         @contents_x += 24
  1101.       ## 显示物品情况下
  1102.       when "\x0b"
  1103.         @text.sub!(/\[(\d+)\]/, "")
  1104.         draw_icon($data_items[$1.to_i].icon_index, @contents_x, @contents_y)
  1105.         ## 横坐标增加图标宽度
  1106.         @contents_x += 24
  1107.       ## 显示武器情况下
  1108.       when "\x0c"
  1109.         @text.sub!(/\[(\d+)\]/, "")
  1110.         draw_icon($data_weapons[$1.to_i].icon_index, @contents_x, @contents_y)
  1111.         ## 横坐标增加图标宽度
  1112.         @contents_x += 24
  1113.       ## 显示防具情况下
  1114.       when "\x0d"
  1115.         @text.sub!(/\[(\d+)\]/, "")
  1116.         draw_icon($data_armors[$1.to_i].icon_index, @contents_x, @contents_y)
  1117.         ## 横坐标增加图标宽度
  1118.         @contents_x += 24
  1119.       ## 更改字体的情况下
  1120.       when "\x0e"
  1121.         @text.sub!(/\[(\d+)\]/, "")
  1122.         contents.font.size = $1.to_i
  1123.       when "\x0f"
  1124.         @text.sub!(/\[(.+?)\]/, "")
  1125.         contents.font.name = Font.exist?($1) ? $1 : Font.default_name
  1126.       ## \P[n] (字速)
  1127.       when "\x10"
  1128.         @text.sub!(/\[(\d+)\]/, "")
  1129.         ## 获取字体显示速度
  1130.         @speed = $1.to_i
  1131.       ## 自动关闭对话框的情况下
  1132.       when "\x11"
  1133.         @text.sub!(/\[(\d+)\]/, "")
  1134.         @auto_close = $1.to_i
  1135.       when "\x12"
  1136.         @auto_close = AutoClose
  1137.       ## 显示角色动画
  1138.       when "\x13"
  1139.         @text.sub!(/\[(\S+)\,(\d+)\]/, "")
  1140.         character = interpreter.get_character($1.to_i)
  1141.         character.animation_id = $2.to_i unless character.nil?
  1142.         next
  1143.       ## 显示心情动画
  1144.       when "\x14"
  1145.         @text.sub!(/\[(\S+)\,(\d+)\]/, "")
  1146.         character = interpreter.get_character($1.to_i)
  1147.         character.balloon_id = $2.to_i unless character.nil?
  1148.         next
  1149.       ## 特定字符处理
  1150.       when "\xff"
  1151.         @text.insert(0, @frozen_char.shift)
  1152.       else
  1153.         ## 字速控制
  1154.         @wait_count = TypeDelay
  1155.         @wait_count = @speed if @speed != nil
  1156.         contents.draw_text(@contents_x, @contents_y, contents.font.size, @line_maxh[@line_count], c)
  1157.         c_width = contents.text_size(c).width
  1158.         @contents_x += c_width
  1159.       end
  1160.       break unless @show_fast or @line_show_fast
  1161.     end
  1162.   end
  1163.   #--------------------------------------------------------------------------
  1164.   # ◎ 开始输入数值
  1165.   #--------------------------------------------------------------------------
  1166.   def start_number_input
  1167.     digits_max = $game_message.num_input_digits_max
  1168.     number = $game_variables[$game_message.num_input_variable_id]
  1169.     @number_input_window.digits_max = digits_max
  1170.     @number_input_window.number = number
  1171.     @number_input_window.x = x
  1172.     ## 代入头像宽度
  1173.     @number_input_window.x += face_width if show_face? and !@show_right
  1174.     @number_input_window.y = y + @contents_y
  1175.     @number_input_window.active = true
  1176.     @number_input_window.visible = true
  1177.     @number_input_window.update
  1178.   end
  1179.   #--------------------------------------------------------------------------
  1180.   # ◎ 更新光标
  1181.   #--------------------------------------------------------------------------
  1182.   def update_cursor
  1183.     if @index >= 0
  1184.       x = $game_message.skin_indent
  1185.       x += face_width + $game_message.face_reserved if show_face? and !@show_right
  1186.       y = 0
  1187.       for i in 0...$game_message.choice_start + @index
  1188.         y += @line_maxh[i]
  1189.       end
  1190.       width = contents.width - x
  1191.       height = @line_maxh[$game_message.choice_start + @index]
  1192.       self.cursor_rect.set(x, y, width, height)
  1193.     else
  1194.       self.cursor_rect.empty
  1195.     end
  1196.   end
  1197.   #--------------------------------------------------------------------------
  1198.   # ◎ 文章显示输入处理
  1199.   #--------------------------------------------------------------------------
  1200.   def input_pause
  1201.     if Input.trigger?(Input::C) or Input.trigger?(Input::B)
  1202.       ## 还原自定义暂停标记
  1203.       @custom_pause = false
  1204.       unless @text.nil? or @text.empty?
  1205.         new_page if @line_count >= Window_MaxLine
  1206.       else
  1207.         terminate_message
  1208.       end
  1209.     end
  1210.   end
  1211.   #--------------------------------------------------------------------------
  1212.   # ○ 是否启用漫画式
  1213.   #--------------------------------------------------------------------------
  1214.   def comic_style?
  1215.     return @comic_style && [email protected]?
  1216.   end
  1217.   #--------------------------------------------------------------------------
  1218.   # ○ 是否显示名字
  1219.   #--------------------------------------------------------------------------
  1220.   def show_name?
  1221.     return [email protected]?
  1222.   end
  1223.   #--------------------------------------------------------------------------
  1224.   # ○ 是否显示头像
  1225.   #--------------------------------------------------------------------------
  1226.   def show_face?
  1227.     return !$game_message.face_name.empty?
  1228.   end
  1229.   #--------------------------------------------------------------------------
  1230.   # ○ 头像宽度
  1231.   #--------------------------------------------------------------------------
  1232.   def face_width
  1233.     return 0 unless show_face?
  1234.     return @face_sprite.bitmap.width
  1235.   end
  1236.   #--------------------------------------------------------------------------
  1237.   # ○ 头像高度
  1238.   #--------------------------------------------------------------------------
  1239.   def face_height
  1240.     return 0 unless show_face?
  1241.     return @face_sprite.bitmap.height
  1242.   end
  1243.   #--------------------------------------------------------------------------
  1244.   # ○ 视觉宽度
  1245.   #--------------------------------------------------------------------------
  1246.   def visual_width
  1247.     return self.width - $game_message.skin_indent * 2
  1248.   end
  1249.   #--------------------------------------------------------------------------
  1250.   # ○ 视觉高度
  1251.   #--------------------------------------------------------------------------
  1252.   def visual_height
  1253.     if show_face? and $game_message.face_type == 1
  1254.       return face_height - $game_message.face_indenty
  1255.     else
  1256.       return self.height - $game_message.skin_indent * 2
  1257.     end
  1258.   end
  1259.   #--------------------------------------------------------------------------
  1260.   # ○ 计算窗体尺寸
  1261.   #--------------------------------------------------------------------------
  1262.   def get_window_size
  1263.     ## 非漫画式对话模式时,恢复默认尺寸
  1264.     unless comic_style? or Window_DefWidth <= 0 or Window_DefHeight <= 0
  1265.       return Window_DefWidth + $game_message.skin_indent*2, Window_DefHeight + $game_message.skin_indent
  1266.     end
  1267.     ## 计算呼出窗体
  1268.     x,y,width,height = 0,0,0,0
  1269.     ## 最后一行宽度
  1270.     width_last = 0
  1271.     text = @text.clone
  1272.     frozen_char = @frozen_char.clone
  1273.     @line_maxh.clear
  1274.     loop do
  1275.       c = text.slice!(/./m)
  1276.       case c
  1277.       when nil    ## 完结
  1278.         break
  1279.       when "\x00" ## 换行
  1280.         width = x if width < x
  1281.         y += $game_message.title_spaceh if @line_maxh.empty? and show_name?
  1282.         @line_maxh.push y + LineSpace
  1283.         width_last = x
  1284.         x,y = 0,0
  1285.       when "\x01"                       # \C[n]  (更改文字色)
  1286.         text.sub!(/\[(\d+)\]/, "")
  1287.         next
  1288.       ## 更改不透明度的情况下
  1289.       when "\x09"
  1290.         text.sub!(/\[(\d+)\]/, "")
  1291.       ## 显示技能情况下
  1292.       when "\x0a"
  1293.         text.sub!(/\[(\d+)\]/, "")
  1294.         x += 24
  1295.         y = 24 if y < 24
  1296.       ## 显示物品情况下
  1297.       when "\x0b"
  1298.         text.sub!(/\[(\d+)\]/, "")
  1299.         x += 24
  1300.         y = 24 if y < 24
  1301.       ## 显示武器情况下
  1302.       when "\x0c"
  1303.         text.sub!(/\[(\d+)\]/, "")
  1304.         x += 24
  1305.         y = 24 if y < 24
  1306.       ## 显示防具情况下
  1307.       when "\x0d"
  1308.         text.sub!(/\[(\d+)\]/, "")
  1309.         x += 24
  1310.         y = 24 if y < 24
  1311.       ## 更改字体的情况下
  1312.       when "\x0e"
  1313.         text.sub!(/\[(\d+)\]/, "")
  1314.         contents.font.size = $1.to_i
  1315.         y = $1.to_i if y < $1.to_i
  1316.       when "\x0f"
  1317.         text.sub!(/\[(.+?)\]/, "")
  1318.         contents.font.name = Font.exist?($1) ? $1 : Font.default_name
  1319.       ## \P[n] (字速)
  1320.       when "\x10"
  1321.         text.sub!(/\[(\d+)\]/, "")
  1322.       ## 自动关闭对话框的情况下
  1323.       when "\x11"
  1324.         text.sub!(/\[(\d+)\]/, "")
  1325.       ## 显示角色动画
  1326.       when "\x13"
  1327.         text.sub!(/\[(\S+)\,(\d+)\]/, "")
  1328.         next
  1329.       ## 显示心情动画
  1330.       when "\x14"
  1331.         text.sub!(/\[(\S+)\,(\d+)\]/, "")
  1332.         next
  1333.       ## 特定字符处理
  1334.       when "\xff"
  1335.         text.insert(0, frozen_char.shift)
  1336.       else
  1337.         c_rect = contents.text_size(c)
  1338.         x += c_rect.width
  1339.         y = c_rect.height if y < c_rect.height
  1340.         next
  1341.       end
  1342.     end
  1343.     ## 输入数值的情况
  1344.     if $game_message.num_input_variable_id > 0
  1345.       shift = 24 + $game_message.num_input_digits_max * ($game_message.content_fontsize + LineSpace)
  1346.       width = shift if width < shift
  1347.       ## 数值窗体高度
  1348.       shift = $game_message.content_fontsize + LineSpace
  1349.       @line_maxh.push shift
  1350.     else
  1351.       width += 16 if Pause_Custom > 1 and $game_message.choice_start > 98 and width < width_last + 16
  1352.     end
  1353.     width += 32 + 1  ## 边框+阴影
  1354.     height += 32 + 1 ## 边框+阴影
  1355.     @line_maxh.each{|h| height += h}
  1356.     ## 头像
  1357.     if show_face?
  1358.       case $game_message.face_type
  1359.       when 0 ## 小头像
  1360.         shift = face_width + $game_message.face_reserved
  1361.         width += shift
  1362.         shift = face_height + $game_message.face_indenty + 32
  1363.         height = shift if shift > height
  1364.       when 1 ## 半身像
  1365.         shift = face_width + $game_message.face_reserved
  1366.         width += shift
  1367.       end
  1368.     end
  1369.     ## 保证窗体最小值
  1370.     min = Window_MinWidth + $game_message.skin_indent * 2
  1371.     width = min if width < min
  1372.     min = Window_MinHeight + $game_message.skin_indent * 2
  1373.     height = min if height < min
  1374.     return width, height
  1375.   end
  1376.   #--------------------------------------------------------------------------
  1377.   # ○ 生成皮肤
  1378.   #--------------------------------------------------------------------------
  1379.   def create_skin_sprite(width, height, type)
  1380.     width  -= $game_message.skin_indent * 2
  1381.     height -= $game_message.skin_indent * 2
  1382.     height += $game_message.skin_namegauge if show_name?
  1383.     @skin_sprite = Spriteset_Skin.new(@skin_name, width, height, type)
  1384.     @skin_sprite.z = self.z - 1
  1385.   end
  1386.   #--------------------------------------------------------------------------
  1387.   # ○ 生成头像
  1388.   #--------------------------------------------------------------------------
  1389.   def create_face_sprite
  1390.     @face_sprite = Sprite.new
  1391.     @face_sprite.bitmap = Bitmap.new(1, 1)
  1392.     @face_sprite.visible = false
  1393.     @face_sprite.z = self.z + 1
  1394.   end
  1395.   #--------------------------------------------------------------------------
  1396.   # ○ 刷新头像
  1397.   #--------------------------------------------------------------------------
  1398.   def refresh_face_sprite
  1399.     face_name  = $game_message.face_name
  1400.     face_index = $game_message.face_index
  1401.     @face_sprite.bitmap.clear
  1402.     buff = Cache.face(face_name)
  1403.     width = buff.width / 4
  1404.     height = buff.height / 2
  1405.     rect = Rect.new(face_index%4*width, face_index/4*height, width, height)
  1406.     @face_sprite.bitmap = Bitmap.new(width, height)
  1407.     @face_sprite.bitmap.blt(0, 0, buff, rect)
  1408.     @face_sprite.mirror = @show_right
  1409.     @face_sprite.visible = true unless Actional
  1410.     ###buff.dispose
  1411.   end
  1412.   #--------------------------------------------------------------------------
  1413.   # ○ 生成暂停标记
  1414.   #--------------------------------------------------------------------------
  1415.   def create_pause_sprite
  1416.     return if Pause_Custom == 0
  1417.     if @pause_sprite
  1418.       @pause_sprite.bitmap.dispose
  1419.       @pause_sprite.dispose
  1420.     end
  1421.     @pause_sprite = Sprite.new
  1422.     @pause_sprite.visible = false
  1423.     bitmap = Cache.system(@skin_name)
  1424.     @pause_sprite.bitmap = Bitmap.new(16*$game_message.skin_pauseframe, 16)
  1425.     @pause_sprite.bitmap.blt(0, 0, bitmap, Rect.new(64, 112, 16*$game_message.skin_pauseframe, 16))
  1426.     @pause_sprite.ox = @pause_sprite.oy = 8
  1427.     @pause_sprite.z = self.z + 2
  1428.     @pause_aniindex = -1
  1429.     @pause_anidelay = 0
  1430.   end
  1431.   #--------------------------------------------------------------------------
  1432.   # ○ 更新暂停标记
  1433.   #--------------------------------------------------------------------------
  1434.   def update_pause_sprite
  1435.     return unless @pause_sprite
  1436.     @pause_sprite.visible = @custom_pause
  1437.     @pause_sprite.visible = false if @pause_aniindex == -1
  1438.     return unless @custom_pause
  1439.     if @pause_anidelay > 0
  1440.       @pause_anidelay -= 1
  1441.     else
  1442.       @pause_aniindex = (@pause_aniindex + 1) % $game_message.skin_pauseframe
  1443.       @pause_sprite.src_rect.set(@pause_aniindex*16, 0, 16, 16)
  1444.       @pause_anidelay = Pause_AniDelay
  1445.     end
  1446.   end
  1447.   #--------------------------------------------------------------------------
  1448.   # ○ 设定暂停标记坐标
  1449.   #--------------------------------------------------------------------------
  1450.   def set_pause_sprite_pos
  1451.     return if Pause_Custom == 0
  1452.     case Pause_Custom
  1453.     when 1 ## 底边居中
  1454.       @pause_sprite.x = self.x + self.width / 2
  1455.       @pause_sprite.y = self.y + self.height - $game_message.skin_indent - 8
  1456.     when 2 ## 右下角
  1457.       @pause_sprite.x = self.x + self.width - $game_message.skin_indent - 8
  1458.       @pause_sprite.y = self.y + self.height - $game_message.skin_indent - 8
  1459.       @pause_sprite.x -= face_width if @show_right
  1460.     when 3 ## 文字后
  1461.       @pause_sprite.x = self.x + @contents_x + 24
  1462.       @pause_sprite.y = self.y + @contents_y + 16 + @line_maxh.last/2
  1463.     end
  1464.     @pause_sprite.x += $game_message.skin_pausex
  1465.     @pause_sprite.y += $game_message.skin_pausey
  1466.   end
  1467.   #--------------------------------------------------------------------------
  1468.   # ○ 获取目标(Sprite_Character)
  1469.   #--------------------------------------------------------------------------
  1470.   def get_target
  1471.     @target = nil
  1472.     return unless @name or @target_id
  1473.     ## 精灵
  1474.     spriteset = $scene.instance_variable_get :@spriteset
  1475.     sprites   = spriteset.instance_variable_get :@character_sprites
  1476.     ## 主角
  1477.     if $game_party.members[0].name == @name or @target_id == 0
  1478.       @target = sprites.last
  1479.       return
  1480.     end
  1481.     ## 事件
  1482.     $game_map.events.values.each do |e|
  1483.       if @target_id == e.id or e.name == @name && e.page && !e.erased
  1484.         sprites.each do |s|
  1485.           if s.character == e
  1486.             @target = s
  1487.             return
  1488.           end
  1489.         end
  1490.       end
  1491.     end
  1492.   end
  1493.   #--------------------------------------------------------------------------
  1494.   # ○ 是否在屏幕范围内
  1495.   #--------------------------------------------------------------------------
  1496.   def within_screen_range?(sprite)
  1497.     return false if sprite.x < 0
  1498.     return false if sprite.y < 0
  1499.     return false if sprite.x > Graphics.width
  1500.     return false if sprite.y > Graphics.height
  1501.     return true
  1502.   end
  1503.   #--------------------------------------------------------------------------
  1504.   # ○ 默认字体
  1505.   #--------------------------------------------------------------------------
  1506.   def default_font
  1507.     font = Font.new($game_message.content_fontname, $game_message.content_fontsize)
  1508.     font.shadow = Font.default_shadow
  1509.     font.italic = Font.default_italic
  1510.     font.color = text_color($game_message.content_fontcolor)
  1511.     font.bold = Font.default_bold
  1512.     return font
  1513.   end
  1514.   #--------------------------------------------------------------------------
  1515.   # ○ 当前解释器
  1516.   #--------------------------------------------------------------------------
  1517.   def interpreter
  1518.     if $game_temp.in_battle
  1519.       return $game_troop.interpreter
  1520.     else
  1521.       return $game_map.interpreter
  1522.     end
  1523.   end
  1524.   #--------------------------------------------------------------------------
  1525.   # ○ 横坐标同步
  1526.   #--------------------------------------------------------------------------
  1527.   def x=(val)
  1528.     @skin_sprite.x = val + $game_message.skin_indent + @skin_sprite.ox if @skin_sprite
  1529.     @pause_sprite.x += val - self.x if @pause_sprite
  1530.     @number_input_window.x += val - self.x if @number_input_window
  1531.     if @face_sprite
  1532.       if @show_right
  1533.         @face_sprite.x = val - $game_message.face_indentx + self.width - face_width - 16
  1534.       else
  1535.         @face_sprite.x = val + $game_message.face_indentx + 16
  1536.       end
  1537.     end
  1538.     super
  1539.   end
  1540.   #--------------------------------------------------------------------------
  1541.   # ○ 纵坐标同步
  1542.   #--------------------------------------------------------------------------
  1543.   def y=(val)
  1544.     if @skin_sprite
  1545.       @skin_sprite.y = val + $game_message.skin_indent - 16 + @skin_sprite.oy
  1546.       @skin_sprite.y -= $game_message.skin_namegauge if show_name?
  1547.     end
  1548.     @pause_sprite.y += val - self.y if @pause_sprite
  1549.     @number_input_window.y += val - self.y if @number_input_window
  1550.     if @face_sprite
  1551.       case $game_message.face_type
  1552.       when 0
  1553.         @face_sprite.y = val + $game_message.face_indenty + 16 - $game_message.skin_namegauge
  1554.       when 1
  1555.         @face_sprite.y = val + $game_message.face_indenty + self.height - face_height - 16
  1556.       end
  1557.     end
  1558.     super
  1559.   end
  1560.   #--------------------------------------------------------------------------
  1561.   # ○ 开启度同步
  1562.   #--------------------------------------------------------------------------
  1563.   def openness=(val)
  1564.     super(val)
  1565.     if @skin_sprite and Actional
  1566.       @skin_sprite.action(self.openness)
  1567.       @skin_sprite.x = self.x + $game_message.skin_indent + @skin_sprite.ox
  1568.       @skin_sprite.y = self.y + $game_message.skin_indent - 16 + @skin_sprite.oy
  1569.       @skin_sprite.y -= $game_message.skin_namegauge if show_name?
  1570.       @face_sprite.visible = true if @face_sprite and self.openness == 255
  1571.     end
  1572.   end
  1573. end

  1574. #==============================================================================
  1575. # ■ Scene_Map
  1576. #==============================================================================
  1577. class Scene_Map < Scene_Base
  1578.   #--------------------------------------------------------------------------
  1579.   # ◎ 开始处理
  1580.   #--------------------------------------------------------------------------
  1581.   alias comic_style_start start
  1582.   def start
  1583.     comic_style_start
  1584.     @message_window = Window_ComicStyle.new
  1585.   end
  1586. end
复制代码
就是这个,1517行有问题

Lv1.梦旅人

梦石
0
星屑
70
在线时间
1083 小时
注册时间
2013-3-29
帖子
2394
2
发表于 2013-6-28 20:51:37 | 只看该作者
字体方面貌似有问题,LZ有改过字体的什么东西么?

坑的进度如上                                                                                                        点击↑
回复 支持 反对

使用道具 举报

Lv1.梦旅人

梦石
0
星屑
55
在线时间
55 小时
注册时间
2011-7-15
帖子
48
3
 楼主| 发表于 2013-6-28 21:49:34 | 只看该作者
黄濑凉太 发表于 2013-6-28 20:51
字体方面貌似有问题,LZ有改过字体的什么东西么?

没有啊。。我把这个放到新的工程里貌似也不行。
回复 支持 反对

使用道具 举报

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

本版积分规则

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

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

GMT+8, 2024-12-23 02:25

Powered by Discuz! X3.1

© 2001-2013 Comsenz Inc.

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