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

Project1

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

[有事请教] RPG Maker MV 能把对话放在TXT里面读取吗?

[复制链接]

Lv3.寻梦者

梦石
0
星屑
1854
在线时间
841 小时
注册时间
2008-7-26
帖子
265
跳转到指定楼层
1
发表于 2018-8-9 11:44:47 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式

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

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

x
我现在想做个AVG黄油,但是不想每次都要打字啊,能不能建个TXT文本,把所有对话都排列好,然后游戏里面自动读取对话啊,那样就不用那么麻烦了吧!,有可能实现吗?最好就是能自动读取头像,那样就哪个头像说什么话就一目了然啊

Lv5.捕梦者

梦石
0
星屑
29245
在线时间
604 小时
注册时间
2014-7-18
帖子
729

开拓者

2
发表于 2018-8-9 12:53:49 | 只看该作者
本帖最后由 xjzsq 于 2018-8-9 12:56 编辑

人物的对话实际上都是储存在所在地图中的json中,格式是:
会被包在"list"这一项中。之后会有更换人物图像的记录:{"code":101,"indent":0,"parameters":["L",0,0,2]}
这句话的意思就是下面的所有对话的头像都是图片"L.png"中0,0位置的脸图,code:101的意思是这条记录用来改变脸图,其他的不用管(实际上是我不知道);之后就会跟着一些对话。{"code":401,"indent":0,"parameters":["text"]},401的意思是这条记录是用来表示对话的,然后会显示text对话,而脸图用最后一次设置的脸图(也就是上面的L,0,0,2)。搞明白了这个就可以随便找个语言写个程序,把写好的对话转换成标准的json格式,这样应该还是比复制粘贴到MV快的。
大概这个程序珂以像下面这样写:(cpp)
  1. #include<bits/stdc++.h>
  2. using namespace std;
  3. const int maxn=100000001;
  4. char name[maxn],text[maxn];
  5. int main()
  6. {
  7.         freopen("a.txt","r",stdin);
  8.         freopen("solution.json","w",stdout);
  9.         while(1)
  10.         {
  11.                 int top=0;
  12.                 while(name[top-1]!=':')name[top++]=getchar();
  13.                 //cout<<name<<endl;
  14.                 name[top-1]=0;top=0;
  15.                 while(text[top-1]!='\n')text[top++]=getchar();
  16.                 text[top-1]=0;
  17.                 printf("{\"code\":101,\"indent\":0,\"parameters\":[\"%s\",0,0,2]},{\"code\":401,\"indent\":0,\"parameters\":[\"%s\"]},",name,text);
  18.         }
  19. }
复制代码



这个就珂以读取a.txt中的剧本,然后输出到solution.json中,要求a.txt中的文本格式是
人物脸图文件名:人物对话,注意冒号必须是英文冒号(这个珂以用替换功能替换),之后每行一句人物对话,最后复制到地图的json文件中就好




评分

参与人数 1+1 收起 理由
若得 + 1 我很赞同

查看全部评分

回复 支持 1 反对 0

使用道具 举报

Lv2.观梦者

梦石
0
星屑
425
在线时间
78 小时
注册时间
2018-8-4
帖子
187
3
发表于 2018-8-9 14:01:58 | 只看该作者
本帖最后由 若得 于 2018-8-9 14:08 编辑

补充楼上,indent是缩进,2是对话框位置。楼上写的脚本是默认不透明,下方的。如果想要改变其他参数就改这两个数值了。
嘛,c加加太难了,其实感觉用vb简单点。。。
不过有更简单方法,用excel表格,第一列是
{"code":101,"indent":0,"parameters":
第二列自己写,第三列等于第一列加第二列。说不太明白,有不懂的再问我。
@xjzsq 楼上应该能听懂,我和你思想是一样的,帮解释下。

点评

太强了!我只会C++不会VB,所以...不过用VB确实有优势。  发表于 2018-8-9 19:00

评分

参与人数 1+1 收起 理由
xjzsq + 1 我很赞同

查看全部评分

对不起。是我拿刀捅了你。只是,只是……
回复 支持 1 反对 0

使用道具 举报

Lv3.寻梦者

梦石
0
星屑
1854
在线时间
841 小时
注册时间
2008-7-26
帖子
265
4
 楼主| 发表于 2018-8-9 14:51:22 | 只看该作者
若得 发表于 2018-8-9 14:01
补充楼上,indent是缩进,2是对话框位置。楼上写的脚本是默认不透明,下方的。如果想要改变其他参数就改这 ...

我也觉得C++太难了,你的那个简单点的是如何操作啊,用excel如何能实现呢,求指教啊!
回复 支持 反对

使用道具 举报

Lv2.观梦者

梦石
0
星屑
425
在线时间
78 小时
注册时间
2018-8-4
帖子
187
5
发表于 2018-8-9 16:34:17 | 只看该作者
本帖最后由 若得 于 2018-8-9 16:50 编辑

新建 WinRAR 压缩文件.rar (2.5 KB, 下载次数: 93)
直接把excel给你了,拿到手里就看懂了。记住粘贴到list里
对话框如果不要face,直接""就可以
还有,每一行都是一个code101,code401是换一个对话框。我给你的excel只支持一个对话框一行。。。
这个略复杂,但绝对好用。此问题很有价值,我认为甚至可以到发布区发布。
举例:没有face,显示两次两行字。实际情况不是三行,为了方便看写成了三行。
{"code":101,"indent":0,"parameters":["",0,0,2]},                      //该对话框的属性,包括脸图等
{"code":401,"indent":0,"parameters":["床前明月光"]},             //第一行是一段
{"code":401,"indent":0,"parameters":["疑是地上霜"]}              //第二行是一段
{"code":101,"indent":0,"parameters":["",0,0,2]},                      //这是第二个对话框
{"code":401,"indent":0,"parameters":["床前明月光"]},             //第一行是一段
{"code":401,"indent":0,"parameters":["疑是地上霜"]}              //第二行是一段

点评

瞎用的黑科技而已,只是更方便新手  发表于 2018-8-9 19:11
excel还能这样用,触瞎XD...  发表于 2018-8-9 19:04
对不起。是我拿刀捅了你。只是,只是……
回复 支持 反对

使用道具 举报

Lv3.寻梦者

梦石
0
星屑
3460
在线时间
1160 小时
注册时间
2016-8-9
帖子
2391

开拓者

6
发表于 2018-8-9 22:37:47 | 只看该作者
可能回答不怎么贴切,但是这个帖子里的工具你应该用得到

对白提取器
酸酸甜甜就④哇噢
回复 支持 反对

使用道具 举报

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

本版积分规则

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

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

GMT+8, 2024-5-3 16:27

Powered by Discuz! X3.1

© 2001-2013 Comsenz Inc.

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