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

Project1

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

[已经解决] 有没有办法批量导出替换全部当前地图中的某个字或者词

[复制链接]

Lv5.捕梦者

梦石
0
星屑
35186
在线时间
4169 小时
注册时间
2007-12-15
帖子
10067
跳转到指定楼层
1
发表于 2018-4-20 18:03:04 | 只看该作者 |只看大图 回帖奖励 |倒序浏览 |阅读模式

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

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

x
刚才测试,发现因为输入法和更换系统,造成 帕秋这个词汇 很多地方都打成了 帕秋,包括素材
素材就算了,反正那个名字都能用,但是事件里面的,就必须替换了。
目前只能根据记忆一个一个找地图中可能出现这个词的事件,查了两个小时了,觉得肯定有漏的。
只能重新走一遍测试了。
我印象中,RMXP好像是能用什么方法导入和导出文本的。
有办导出或者批量替换特殊单词中的某个字吗?

Lv5.捕梦者

梦石
0
星屑
33500
在线时间
5108 小时
注册时间
2012-11-19
帖子
4878

开拓者

来自 5楼
发表于 2018-4-20 22:52:03 | 只看该作者
本帖最后由 芯☆淡茹水 于 2018-4-20 23:00 编辑
89444640 发表于 2018-4-20 22:36
新建了个工程,把干净的Scripts放进去,然后复制脚本过去运行,还是跳出
...




  1. class Bitmap
  2.   alias xr_replace_draw_text draw_text
  3.   def draw_text(*args)
  4.     index = args[0].is_a?(Rect) ? 1 : 4
  5.     args[index].gsub!(/帕秋莉/, "帕秋丽")
  6.     xr_replace_draw_text(*args)
  7.   end
  8. end
复制代码


至于对话框里面的,可以这样(这个没测试)

RUBY 代码复制
  1. class Game_Temp
  2.   def message_text=(text)
  3.     @message_text = text
  4.     @message_text && @message_text.gsub!(/帕秋莉/, "帕秋丽")
  5.   end
  6. end

点评

还是三个字靠谱,避免错换,谢谢提供了一种在不挨个纠正的情况下,修理特定名词错别字的方式。不过……强迫症发作中,正再挨个手动替换ORZ  发表于 2018-4-20 23:20
唔~,照着那个格式往下面加就可以替换所有对话里的同类型错别字  发表于 2018-4-20 23:16
要不你可以把脚本里的 帕秋 两个字删了,然后你游戏对话里面所有 莉 都是 丽 了  发表于 2018-4-20 23:14
第二个需要替换的名字里外写反了--b 我调换一下,测试有效,可以替换错别字。  发表于 2018-4-20 23:12
只有 帕秋莉 三个字写到一堆才有效。  发表于 2018-4-20 23:04

评分

参与人数 2星屑 +100 +2 收起 理由
RyanBern + 100 + 1 认可答案
89444640 + 1

查看全部评分

xp vx va mv  va mz 各类型脚本/插件定制
回复 支持 反对

使用道具 举报

Lv5.捕梦者 (版主)

梦石
1
星屑
23999
在线时间
3339 小时
注册时间
2011-7-8
帖子
3926

开拓者

来自 10楼
发表于 2018-5-3 20:07:34 | 只看该作者
复制脚本到游戏里,关掉工程正常运行,查看生成的txt文件,就知道这些事件的位置了。去掉最后 save_data 前面的注释会直接修改对应的地图文件。
请做好data文件夹的备份以防万一,使用完毕后删掉此脚本。
这个脚本只要在main前,放哪都行,反正就用一次,最好放在最前面。
因为可能出现不在同一行的情况,所以也顺便检测了帕秋和帕,这个自己去替换吧
RUBY 代码复制
  1. file = File.open('result-paqiuli.txt', 'w')
  2. Dir.glob('Data/Map*.rxdata') do |fn|
  3.   # 排除掉地图设置文件
  4.   next if fn == 'Data/MapInfos.rxdata'
  5.   # 读取地图内容
  6.   file.puts fn
  7.   data_map = load_data(fn)
  8.   data_map.events.each do |id, event|
  9.     event.pages.each do |page|
  10.       page.list.each do |cmd|
  11.         case cmd.code
  12.         when 101, 401
  13.           if cmd.parameters[0] =~ /帕秋丽/
  14.             file.puts "Event#{id}: 帕秋丽"
  15.             cmd.parameters[0].gsub!('帕秋丽', '帕秋莉')
  16.           elsif cmd.parameters[0] =~ /帕秋/
  17.             file.puts "Event#{id}: 帕秋"
  18.           elsif cmd.parameters[0] =~ /帕/
  19.             file.puts "Event#{id}: 帕"
  20.           end
  21.         end
  22.       end
  23.     end
  24.   end
  25.   # 取消下面一行的注释以修改地图文件
  26.   # save_data(data_map, fn)
  27. end
  28. file.close
  29. p '请查看txt文件!'
  30. exit

评分

参与人数 1星屑 +100 +1 收起 理由
RyanBern + 100 + 1 认可答案

查看全部评分

熟悉rgss和ruby,xp区版主~
正在填坑:《膜拜组传奇》讲述膜拜组和学霸们的故事。
已上steam:与TXBD合作的Reformers《变革者》
* 战斗调用公共事件 *
* RGSOS 网络脚本 *
回复 支持 反对

使用道具 举报

Lv5.捕梦者

梦石
0
星屑
33500
在线时间
5108 小时
注册时间
2012-11-19
帖子
4878

开拓者

2
发表于 2018-4-20 19:42:53 | 只看该作者
本帖最后由 芯☆淡茹水 于 2018-4-20 22:17 编辑

如果我遇到你那种情况,我会偷懒的这样做:


  1. class Bitmap
  2.   alias xr_replace_draw_text draw_text
  3.   def draw_text(*args)
  4.     index = args[0].is_a?(Rect) ? 1 : 4
  5.     args[index].gsub!(/帕秋莉/, "帕秋丽")
  6.     xr_replace_draw_text(args)
  7.   end
  8. end
复制代码

点评

唔~,失误。 没测试的就是那样。 现在已经改过。  发表于 2018-4-20 22:18
还是程序好啊……我挨个修吧,刚才试了一下,被别的脚本干扰了。  发表于 2018-4-20 20:17
但是逐个描绘文字的地方,比如对话窗口,不起作用。但可以在对话窗口的文字处理里把它替换掉。  发表于 2018-4-20 19:45
xp vx va mv  va mz 各类型脚本/插件定制
回复 支持 反对

使用道具 举报

Lv6.析梦学徒

老鹰

梦石
40
星屑
34755
在线时间
6741 小时
注册时间
2012-5-26
帖子
3259

极短24评委极短23参与极短22参与极短21评委老司机慢点开短篇十吟唱者组别冠军开拓者剧作品鉴家

3
发表于 2018-4-20 22:10:13 | 只看该作者
https://github.com/Solistra/rvpacker 一个程序邪教操作,把数据解包成json,再用文本编辑器全局替换了,再打包回原文件

点评

感谢提供,但是,感觉操作不当可能会把工程废了,似乎是VXACE版本的?还是手动吧,毕竟自己做的能记得住大多数出现该人物名字的事位置。  发表于 2018-4-20 22:22
回复 支持 反对

使用道具 举报

Lv5.捕梦者

梦石
0
星屑
35186
在线时间
4169 小时
注册时间
2007-12-15
帖子
10067
4
 楼主| 发表于 2018-4-20 22:36:49 | 只看该作者
芯☆淡茹水 发表于 2018-4-20 19:42
如果我遇到你那种情况,我会偷懒的这样做:

新建了个工程,把干净的Scripts放进去,然后复制脚本过去运行,还是跳出
回复 支持 反对

使用道具 举报

Lv5.捕梦者 (版主)

梦石
1
星屑
23999
在线时间
3339 小时
注册时间
2011-7-8
帖子
3926

开拓者

6
发表于 2018-4-21 02:20:45 | 只看该作者
去看看sailcat的工具包,这个应该直接对数据下手,前面提到的方法不对。
data_map.events.pages.list类似的……判断一下code = 401或者101

评分

参与人数 1+1 收起 理由
ikki + 1 sailcat是超级大佬的说,各种工具特别多。.

查看全部评分

熟悉rgss和ruby,xp区版主~
正在填坑:《膜拜组传奇》讲述膜拜组和学霸们的故事。
已上steam:与TXBD合作的Reformers《变革者》
* 战斗调用公共事件 *
* RGSOS 网络脚本 *
回复 支持 反对

使用道具 举报

Lv5.捕梦者

梦石
0
星屑
39034
在线时间
5725 小时
注册时间
2006-11-10
帖子
6622
7
发表于 2018-4-21 14:12:33 | 只看该作者
我觉得,你让新脚本和你的那一大群老住户搞好邻里关系的时间,足够你一个字一个字修回来了吧......

点评

所以我手动修,顺道改错字,这不就发现了上午那个脚本有问题,多测试没坏处。XD  发表于 2018-4-21 14:19
回复 支持 反对

使用道具 举报

Lv4.逐梦者

梦石
0
星屑
9280
在线时间
2504 小时
注册时间
2011-5-20
帖子
15389

开拓者

8
发表于 2018-4-21 17:58:32 | 只看该作者
在实际显示文本的脚本加替换就行了,然后你原来错误的也不需要改
这个应该是最保险的了当然坏处是你两个词只有一个可以用了(因为另一个会被换掉)
[img]http://service.t.sina.com.cn/widget/qmd/5339802982/c02e16bd/7.png
回复 支持 反对

使用道具 举报

Lv4.逐梦者

梦石
0
星屑
12157
在线时间
4435 小时
注册时间
2014-4-11
帖子
5955

开拓者

9
发表于 2018-4-21 18:11:21 | 只看该作者
本帖最后由 yang1zhi 于 2018-4-21 18:13 编辑

因为你人名没有采用数据库里面的人名。
如果你是调用数据库里的人名,或者脚本里的变量
那只要修改一处就全改过来了


-----------
自从吃亏后。我现在都是把文字写在脚本里。事件的对话框里什么也没写。
回复 支持 反对

使用道具 举报

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

本版积分规则

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

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

GMT+8, 2024-11-30 19:31

Powered by Discuz! X3.1

© 2001-2013 Comsenz Inc.

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