查看: 3193|回复: 0

[RMVA发布] 【转载】脚本插件:文章居中 对话水平居中

[复制链接]
梦石
0
星屑
1297
在线时间
995 小时
注册时间
2014-12-14
回帖
2939

开拓者

发表于 2016-7-15 14:52:38 | 显示全部楼层 |阅读模式

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

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

×
本帖最后由 Vortur 于 2016-11-29 18:04 编辑


  应喵大的要求,特此说明:【修改版脚本、教程等额外的内容均与喵大无关】,转载此文,请务必将喵大的【原版】一并完整地转载。
[fold=使用须知]
写在最前面
  tseyik 大曾发过一个文章居中脚本,可开关文章居中,遇到脸图,还可以智能避开。美中不足是,RM预设的控制符失效了。
tseyik转【文字居中】(见4#tseyik大的回复)
  后某友人托喵大制作了【兼容控制符】的文章居中,本想敝帚自珍,后经罗琳兄感召,才想公开。经与喵大沟通,喵大欣然同意,终于有此一帖。
  喵大的脚本兼容了控制符,取消了【遇到脸图,居中无效】的设定。
  而后在下增加了【遇到脸图,居中无效】的功能,经喵大同意,在此一并放出。转载请将【原版脚本】一并完整地转载。






[/fold] [fold=喵大【文章居中】公开版:有脸图,依旧居中][pre lang="ruby"]=begin
===============================================================================

  对话水平居中 - 公开版本 (Author:喵呜喵5)

===============================================================================

  【免责声明】

  使用本脚本即表示您已理解并将遵守以下事项

  本脚本是由 Vortur 定制并决定公开的对话水平居中脚本的公开版本

  本脚本以 CC BY-ND 3.0 CN(CC 署名-禁止演绎 3.0 中国大陆) 协议公开
  https://creativecommons.org/licenses/by-nd/3.0/cn/

  脚本的定制已经结束,作者已经完全停止针对本脚本的免费维护,包括但不仅限于:

    提供脚本的使用帮助

    解答脚本在功能上的任何问题

    修正脚本出现的 BUG

    调整脚本的兼容性

    增加脚本的功能

  任何关于本脚本使用上的不明事项,请联系脚本作者

  ——喵呜喵5(miaowm5@gmail.com) 2016年5月3日

===============================================================================

  使用说明:

  指定 ID 的开关打开时,对话文字水平居中

=end
module M5MC20160301

  ID = 1

  # 指定 ID 的开关打开时,启用本脚本

class Cal < Window_Message
  def initialize
    super
    self.visible = false
  end
  def m5_20160301_create_cal
    @m5_20160301_cal = Empty.new
  end
  def wait *args; end
  def draw_text *args; end
  def input_pause *args; end
  def create_all_windows
    @gold_window = @choice_window =
      @number_window = @item_window = Empty.new
  end
  def cal(contents, text)
    return 0 if text.empty?
    return 0 unless $game_switches[ID]
    self.contents.dispose
    self.contents = contents.clone
    text = text.lines.first.chomp
    pos = {x: 0, y: 0, new_x: 0, height: Graphics.height}
    process_character(text.slice!(0, 1), text, pos) until text.empty?
    return [(self.contents.width - pos[:x]) / 2, 0].max
  end
end
class Empty; def method_missing *args; self; end; end
end
class Window_Message
  alias m5_20160301_initialize initialize
  def initialize
    m5_20160301_initialize
    m5_20160301_create_cal
  end
  def m5_20160301_create_cal
    @m5_20160301_cal = M5MC20160301::Cal.new
  end
  alias m5_20160301_dispose_all_windows dispose_all_windows
  def dispose_all_windows
    m5_20160301_dispose_all_windows
    @m5_20160301_cal.dispose
  end
  alias m5_20160301_process_new_line process_new_line
  def process_new_line(text, pos)
    m5_20160301_process_new_line(text, pos)
    pos[:x] = @m5_20160301_cal.cal(contents, text)
  end
  alias m5_20160301_new_page new_page
  def new_page(text, pos)
    m5_20160301_new_page(text, pos)
    pos[:x] = @m5_20160301_cal.cal(contents, text)
  end
end[/pre]





[/fold][fold=喵大【文章居中】修改版:有脸图,暂不居中]
[pre lang="ruby"]=begin
===============================================================================
  对话水平居中 (Author:喵呜喵5)  # 修改版(有脸图 暂不居中)
===============================================================================
重要注意: 此版本修改自 喵呜喵5 的 对话水平居中,修改版已取得原作者同意。所有修改内容与原作者无关。

===============================================================================
  使用说明:
  指定 ID 的开关打开时,对话文字水平居中
=end
  #--------------------------------------------------------------------------
  # ●
  #--------------------------------------------------------------------------
module M5MC20160301

  ID = 1
  # 指定 ID 的开关打开时,启用本脚本
  class Cal < Window_Message
    def initialize
      super
      self.visible = false
    end
   
    def m5_20160301_create_cal
      @m5_20160301_cal = Empty.new
    end
   
    def wait *args; end
    def draw_text *args; end
    def input_pause *args; end
      
    def create_all_windows
      @gold_window = @choice_window =
        @number_window = @item_window = Empty.new
    end
      
    def cal(contents, text)  #此处判断是否居中
      return 0 if text.empty?
      return 0 unless $game_switches[ID]
      self.contents.dispose
      self.contents = contents.clone
      
      text = text.lines.first.chomp
      pos = {x: 0, y: 0, new_x: 0, height: Graphics.height}
      process_character(text.slice!(0, 1), text, pos) until text.empty?
      return [(self.contents.width - pos[:x]) / 2, 0].max
    end
  end

  class Empty
    def method_missing *args
    self
    end
  end

end
  #--------------------------------------------------------------------------
  # ● ↑模块结束  ↓显示文字信息的窗口
  #--------------------------------------------------------------------------
class Window_Message
  alias m5_20160301_initialize initialize
  def initialize
    m5_20160301_initialize
    m5_20160301_create_cal
  end
  
  def m5_20160301_create_cal
    @m5_20160301_cal = M5MC20160301::Cal.new
  end
  
  alias m5_20160301_dispose_all_windows dispose_all_windows
  def dispose_all_windows
    m5_20160301_dispose_all_windows
    @m5_20160301_cal.dispose
  end
  #  ●换行文字的处理
  alias m5_20160301_process_new_line process_new_line
  def process_new_line(text, pos)
    m5_20160301_process_new_line(text, pos)
    if $game_message.face_name.empty? #增设判断,避开脸图
    then
    pos[:x] = @m5_20160301_cal.cal(contents, text)
    else
    102
    end
  end
  #  ●翻页处理
  alias m5_20160301_new_page new_page
  def new_page(text, pos)
    draw_face($game_message.face_name, $game_message.face_index, 0, 0) #补充脸
    m5_20160301_new_page(text, pos)
    if $game_message.face_name.empty? #增设判断,避开脸图
    then
    pos[:x] = @m5_20160301_cal.cal(contents, text)
    else
    102
    end
  end

end[/pre]



[/fold][fold=·教程说明 暂缺]·教程说明 暂缺
!!!注:修改版、教程等额外的内容均与喵大无关,转载请务必将喵大原版一并完整转载!






[/fold][fold=拓展内容]拓展:
【窗口居中、选项居中、选项文字居中等】






[/fold]




评分

参与人数 1赞 +1 收起 理由
哇哇哇啊叭叭 + 1 塞糖

查看全部评分

【RMVA教程】
---------------------
欲买桂花同载酒,终不似,少年游.
您需要登录后才可以回帖 登录 | 注册会员

本版积分规则

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

在本版发帖返回顶部