插件脚本 【原创】【20.1+21.1】中文文本处理(1.3.6)

小栾钓到鱼了

馆主
成员
2022-08-10
35
1
23
625
21
湖南长沙
本插件正式更名为“中文文本处理”(Chinese Language Text Processing)。
本插件旨在帮助汉化人员和开发人员在进行文本的显示时无需注意英文与中文之间的差异。
主要实现了以下功能:
1.编写在 pbs 文件中的文本可以自动换行展示,无需人为使用空格手动控制。
2.在脚本中的文本,除特殊情况外,无需再考虑替换占位符后文本是否可以正常显示,可直接进行文本翻译与编写。
3.在 RMXP 的事件中使用 Show Text 显示的文本也可以直接输入。
实现效果可以在附件中查看。

别问我版本号为什么变这么多,我规范了一下
使用方法:
下载中文文本处理.zip放到 Plugins 文件夹中编译游戏即可,在 Tool.rb 的最上面 module 中可以定义想要的偏移和字体名。

注意!!!!!!!
默认是没有填写字体名的,记得填写!!!


特别感谢楠楠楠小鸟提供的帮助。

碎碎念:
v20.1和v21.1都测试了,但是任然不排除还存在 bug 的可能性,如发现 bug 请在下方留言,我会尽快修复。


1.0.0:
- 解决了 PBS 中的文本自动换行显示的问题
1.1.0:
- 引入楠楠楠小鸟的修改增加脚本文本换行功能
1.1.1:
- 修复了v20.1与v21.1之间的兼容问题
1.1.2:
- 修复个别文本显示为方块问题
1.1.3:
- 对事件中的文本会自动添加空格的问题进行了解决
1.1.4:
- 修复了事件中的部分文本仍然有空格的问题
1.2.4:
- 提取出了字体的替换,使其更加便捷
- 能够对文本上下方向的显示进行统一的调整,解决字体问题导致的文字显示不全问题
- 对v20.1中翻译了的 PBS 文件进行了去空格处理
1.2.5:
- 修复了部分已包含换行符的文本不换行的问题
- 简化部分代码运行逻辑
1.2.6:
- 完成了同一段文本中英文的兼容
- 删除精简了控制文字上下偏移部分的代码
- 简化部分代码运行逻辑
1.3.6:
- 引入新变量控制命令等偏移,更加便于控制
 

附件

  • PBS.gif
    PBS.gif
    7.8 MB · 查看: 67
  • 脚本文本.gif
    脚本文本.gif
    1.3 MB · 查看: 63
  • 事件.gif
    事件.gif
    638.4 KB · 查看: 60
  • record.gif
    record.gif
    1.4 MB · 查看: 50
  • 中文文本处理.zip
    6 KB · 查看: 77
最后编辑:

小栾钓到鱼了

馆主
成员
2022-08-10
35
1
23
625
21
湖南长沙
事件里的文本可以用吗
不行的,因为我只对它脚本里面的 drawTextEx (在007_Objects and windows/010_DrawText.rb)函数做了处理,这个函数有关的绘制文本都可以换行,它事件中的文本也是用的"\n"换行,应该是没法改的,可能能改,但我没找到它事件中显示文本的函数
 
  • 支持
反馈: 蔚然成风

楠楠楠小鸟

馆主
成员
2022-12-21
10
12
620
大佬,关于脚本换行的地方我找到了,在DrawText.rb的
Ruby:
def getFormattedText
def getFormattedTextFast
两个函数,有这样一段
Ruby:
    isspace = (textchars[position][/\s/] || isWaitChar(textchars[position])) ? true : false
    if hadspace && !isspace
      # set last word to here
      lastword[0] = characters.length
      lastword[1] = x
      hadspace = false
      hadnonspace = true
    elsif isspace
      hadspace = true
    end
把他修改成
Ruby:
lastword[0] = characters.length
lastword[1] = x
就可以实现中文自动换行,不过英文可能会导致在单词中换行。大佬有空的时候可以做一下英语的兼容,然后整合到插件中吗?
(Tips:我在溯源的时候只溯源到了getFormattedText,不过我看到getFormattedTextFast也有那段代码所以就一并改了)
 
由版主最后编辑:

小栾钓到鱼了

馆主
成员
2022-08-10
35
1
23
625
21
湖南长沙
大佬,关于脚本换行的地方我找到了,在DrawText.rb的
Ruby:
def getFormattedText
def getFormattedTextFast
两个函数,有这样一段
Ruby:
    isspace = (textchars[position][/\s/] || isWaitChar(textchars[position])) ? true : false
    if hadspace && !isspace
      # set last word to here
      lastword[0] = characters.length
      lastword[1] = x
      hadspace = false
      hadnonspace = true
    elsif isspace
      hadspace = true
    end
把他修改成
Ruby:
lastword[0] = characters.length
lastword[1] = x
就可以实现中文自动换行,不过英文可能会导致在单词中换行。大佬有空的时候可以做一下英语的兼容,然后整合到插件中吗?
(Tips:我在溯源的时候只溯源到了getFormattedText,不过我看到getFormattedTextFast也有那段代码所以就一并改了)
nice~~兄弟,我原先找的头疼,然后直接把_INTL改了😂,但是问题很多,这个要好得多,我研究研究的
 

小栾钓到鱼了

馆主
成员
2022-08-10
35
1
23
625
21
湖南长沙
因本人懒惰导致未在v20.1上进行测试,所以在v20.1中使用会报错,紧急修正方法为在Tools.rb文件中插入以下代码
Ruby:
def fmtReplaceEscapes(text)
  text.gsub!(/&lt;/, "<")
  text.gsub!(/&gt;/, ">")
  text.gsub!(/&apos;/, "'")
  text.gsub!(/&quot;/, "\"")
  text.gsub!(/&amp;/, "&")
  text.gsub!(/&m;/, "♂")
  text.gsub!(/&f;/, "♀")
end

class Color
  def self.new_from_rgb(param)
    return Font.default_color if !param
    base_int = param.to_i(16)
    case param.length
    when 8   # 32-bit hex
      return Color.new(
        (base_int >> 24) & 0xFF,
        (base_int >> 16) & 0xFF,
        (base_int >> 8) & 0xFF,
        (base_int) & 0xFF
      )
    when 6   # 24-bit hex
      return Color.new(
        (base_int >> 16) & 0xFF,
        (base_int >> 8) & 0xFF,
        (base_int) & 0xFF
      )
    when 4   # 15-bit hex
      return Color.new(
        ((base_int) & 0x1F) << 3,
        ((base_int >> 5) & 0x1F) << 3,
        ((base_int >> 10) & 0x1F) << 3
      )
    when 1, 2   # Color number
      case base_int
      when 0 then return Color.white
      when 1 then return Color.blue
      when 2 then return Color.red
      when 3 then return Color.green
      when 4 then return Color.cyan
      when 5 then return Color.pink
      when 6 then return Color.yellow
      when 7 then return Color.gray
      else        return Font.default_color
      end
    end
    return Font.default_color
  end
end

过几天我会尽快修复,给大家造成的不便敬请谅解
 

在线成员

现在没有会员在线。

论坛统计

主题
344
消息
1,582
会员
2,329
最新会员
伊斯坦布尔高坚果

关于我们

  • 宝可梦以及其他相关名称是任天堂的商标,版权归宝可梦公司所有。宝可饭堂是一个同人游戏中文社区,不隶属于宝可梦公司。在宝可饭堂上的粉丝游戏亦未获得其授权,请支持正版游戏。
© 2022- pokefans.cn
点此延长宝可饭堂生命