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

Project1

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

[交流讨论] 歪门邪道事件心得[2]:文字格式与魔法

[复制链接]

Lv5.捕梦者 (版主)

梦石
28
星屑
10170
在线时间
4673 小时
注册时间
2011-8-22
帖子
1279

开拓者

跳转到指定楼层
1
发表于 2018-4-11 22:00:03 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式

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

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

x
本帖最后由 ⑨姐姐 于 2018-4-11 22:00 编辑

第一期地址:https://rpg.blue/thread-406532-1-1.html

-------------------------------------------------------------


经过两个月的跋涉,艾里克、娜塔丽和新加入队伍的魔法剑士阿奈斯特来到一片废墟。在这里,他们遭遇了第一场战斗。就像这样。

骷髅怪面目狰狞,对着勇者一行人张牙舞爪:




“该死的骷髅,竟敢用彩色字体在我面前炫耀,你等着,本大爷下一句话就用大红色,压过你的气势……”

“咳咳。”阿奈斯特看了一眼上蹿下跳的艾里克,“你不觉得,有失……勇者的风度?”

“是啊,就用红色怎么够呢,还要用 \{ 控制符来放大字号,那样才带劲嘛。”娜塔丽接道。

阿奈斯特看着手中的魔法剑,仿佛拿着这把高贵武器的自己和另外两个家伙并肩而站就是一种耻辱。过了好久,他才叹息道:“你们啊,怪物都倒面前了,就不会多放点心思在战斗上吗。”

听到这话,艾里克突然像是被打开了新世界的大门:“战斗?我们在战斗的时候,也能用红色大字体?太棒了!”

娜塔丽也激动起来:“快使出魔法吧,阿奈斯特,我迫不及待想看着战斗的时候用超大号的字体砸到敌人头上了!”

“真拿你们没办法。你们要的是这个?”




一边说着,阿奈斯特发出了一次(字体意味上的)会心一击。

“哇,炫酷!是如何做到的?”

“等一下。”娜塔丽比艾里克先回复平静,“阿奈斯特,你根本没有使用魔法吧,也就是说,游戏的脚本你完全没有改……”

“没错,我根本没有使用魔法。瞧!”




“哎,我堂堂勇者,竟然在这里疏忽了。没想到对话中的特殊格式符号,也能用在这里……”

控制符号



娜塔丽却陷入了思考之中:“整个RPG Maker有那么多可以输入文字的地方,要是每个地方都可以随意使用这些符号,那该多棒啊……不对,有些地方就无效,比如:”




“究竟什么地方能用,什么地方不能用,有什么准则吗?先声明哦,我自己也是能找到的,不过艾里克那个大笨蛋,得好好教他才行。”

阿奈斯特打开脚本编辑器:“罢了,那我就尽量简单地介绍一下,自己对这个世界法则(RPGMaker世界)的领悟吧。”




“首先,学习魔法最重要的,是不要被这些符号吓到了。这里面只有少数几个蓝色的,才是魔法文字;大部分黑色的,都是人类普通的文字罢了。”

“都是人类文字,那不就可以随意乱写了?”艾里克不禁问道。

阿奈斯特点头:“对,当然可以乱写,唯一的要求是前面和后面的名字要保持一致。就像她的父母给她起名叫娜塔丽,如果有人用别的名字称呼她,她就不知道是在叫谁了……”

看到娜塔丽的神色微微变化,阿奈斯特才停下。

“娜塔丽是牧师大人起的,我小时候开始就没见过父母。”

“抱歉,娜塔丽。请你不要放在心上,其实有了父母,或许也不是什么好事吧……”

拿出魔剑在空中挥舞两下,逼退面前蠢蠢欲动的骷髅后,阿奈斯特才继续开口。

“上面的convert_escape_characters是处理对话过程中的特殊字符的,其中$game_variables是变量的意思你们都知道,再看前面的V,你们就能猜到这里是把\V[n]替换成变量的地方了吧。”

艾里克点头:“虽然那一串复杂的紫红色魔法我看不懂,但你的意思我理解了。这段代码一定和对话的文字描绘有关。” [紫红色的魔法是“正则表达式”,可以看这里了解更多。]

“你看到蓝色的def了吗?它的意思是‘定义’,也就是起名字。从此,convert_escape_characters就变成了某个东西的名字,在别处就能用这个名字去问候某个东西了。”

娜塔丽点了点头:“我能明白。这里的‘某个东西’,就是从def到end的一块代码吧。def实际上的作用是给方法起了一个名字,让我们可以用名字一下子问候这么多行符文。喂,笨蛋艾里克,你在不在听啊。”

“我在想上次你说的内容呢。既然知道了名字,那就可以顺着这个名字使用搜索去寻找……”

经过一番寻找,艾里克找到了下面的地方:




当艾里克找到答案的一刻,阿奈斯特也露出了赞赏的微笑:“果然是勇者,还是有点才智的。没错,这里就是使用特殊格式来绘制文字的入口。”

一边说着,阿奈斯特在左边点击右键,使用“全局搜索”功能,找到了更多 draw_text_ex 出现的地方:










看着列出的所有draw_text_ex,娜塔丽也受到了启发:“除了第一个Window_Base的def draw_text_ex是我们刚才看到的,其他地方的都是draw_text_ex的实际运用吧。下面几个地方,都可以享受到‘高级’的画文字功能,可以用符号来达成特殊效果了。”

艾里克翻着字典,猜出了这些地点在游戏中的位置:

“帮助窗口、状态窗口、选项窗口、滚动文字窗口、战斗信息窗口以及debug模式的开关变量列表……对了!我想到新玩法了!


在娜塔丽和阿奈斯特鄙视的目光中,艾里克打开自己的角色介绍,进行了一番修改。










就在这时,娜塔丽又一次敏锐地发现了异样:“这里竟然没有对话窗口!虽然前面我们是从对话窗口一层层找到这里的,但总觉得缺了什么。好像刚才只看到了一半,却没看到另一半那样。”


阿奈斯特解释道:“其实我们最先发现的是convert_escape_characters,而另一个重要部分process_character也在对话窗口中额外处理了。为了让我们的勇者先生容易理解一些,可以这样想:高级的绘制文字是由两部分组成的,每一部分分别处理一些特殊字符。但在对话窗口中,为了打字效果,文字必须一个一个画,所以就不能使用预先‘拼装’好的高级文字绘制功能了,而是先使用其中一个零件整体处理一下文字,在绘制的过程中再使用另一个零件。最终效果依然是两个零件都被用上了。


阿奈斯特沉浸在自己的解释之中,完全没有注意到艾里克再次打开了脚本编辑器,在里面搞起事来。直到那群骷髅实在看不下去勇者一行人对它们的无视,猛攻过来时,众人才发现战斗过程被艾里克改得奇怪无比:我方角色受到的伤害变成了黑色的小字,敌人受到的攻击却用巨大的文字描绘出来;勇者的关键一击发出了金光,敌人的痛恨一击却是惨淡得连一点痛恨都感觉不到。骷髅终于无法忍受艾里克的杀马特审美,败下阵来,灰溜溜地逃跑了。


那么,今天的课后习题就是,艾里克修改的是什么地方呢?为什么他的修改能起作用呢?

评分

参与人数 8+8 收起 理由
Mayaru + 1 精品文章
匿名RM爱好者 + 1 精品文章
MireniamuYuki + 1 精品文章
W.Q.C. + 1 精品文章
百里_飞柳 + 1 精品文章
2256538860 + 1 精品文章
fux2 + 1 精品文章
人民卫戍部队 + 1 精品文章

查看全部评分

Lv5.捕梦者 (管理员)

老黄鸡

梦石
0
星屑
42387
在线时间
7601 小时
注册时间
2009-7-6
帖子
13506

开拓者贵宾

2
发表于 2018-4-11 22:51:08 | 只看该作者
没有事件,只有魔法!

点评

数据库也算是事件党的领域了(大概  发表于 2018-4-11 22:57
RGDirect - DirectX驱动的RGSS,点我了解.
RM全系列成套系统定制请联系QQ1213237796
不接受对其他插件维护的委托
回复 支持 反对

使用道具 举报

Lv6.析梦学徒

老鹰

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

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

3
发表于 2018-4-12 10:56:35 | 只看该作者
本帖最后由 百里_飞柳 于 2018-4-12 10:59 编辑

都没啥人回复的
之前才自己造过一个精灵类用的draw_text_ex、一个对话框转义符扩展、还一个极其简易的自动换行绘制,都是抄的默认的draw_text_ex,所以只有当自己写时,才发现它这个转义符的处理是多么精妙(?)

最后,我怀疑是改了……Vocab模块里的常量,因为Window_BattleLog类里绘制战斗日志内容也是用的draw_text_ex,但是萨比帮助里都不说的,默认也没有给出例子表示(逃)

点评

以后要加上正确答案请等老鹰的回复了233 确实是Vocab里的那一堆东西,因为也是在BattleLog里用,所以也享受特殊解析加成……  发表于 2018-4-12 11:06

评分

参与人数 2+2 收起 理由
W.Q.C. + 1 课代表!!
⑨姐姐 + 1 正确答案~

查看全部评分

回复 支持 反对

使用道具 举报

Lv4.逐梦者

梦石
5
星屑
3038
在线时间
612 小时
注册时间
2012-11-12
帖子
482

开拓者

4
发表于 2018-4-12 12:02:02 | 只看该作者
去battle相关的脚本里面翻了一下
找到
display_damage
display_hp_damage
应该是和显示伤害的方法,
顺着add_text方法找到battlelog的@line变量
发现draw_line这个方法也有用到draw_text_ex这个方法

猜想是在哪儿调用了make_font_bigger的方法?
可是勇者是如何做到区分敌人和自己的伤害,目前尚未有思路
有时间再思考思考。

点评

控制字符里有一个字符就是能让字体变大的  发表于 2018-4-12 12:37
回复 支持 反对

使用道具 举报

Lv3.寻梦者

梦石
0
星屑
3646
在线时间
899 小时
注册时间
2017-10-30
帖子
347
5
发表于 2018-4-12 18:11:15 | 只看该作者
超喜欢这个教学模式!
然而咱还在慢慢学基础……

点评

没事没事,一个核心的想法其实就是不要怕那些看上去很复杂的脚本,就算不懂也能看出一些有助事件党的信息。非常感谢能喜欢~  发表于 2018-4-12 20:45
啥都会,啥都不擅长
一个VA群:679174724 欢迎来玩
回复 支持 反对

使用道具 举报

Lv1.梦旅人

梦石
0
星屑
36
在线时间
4 小时
注册时间
2018-3-19
帖子
3
6
发表于 2019-2-20 15:20:18 | 只看该作者
学到了好多好多 谢谢!
回复 支持 反对

使用道具 举报

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

本版积分规则

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

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

GMT+8, 2024-11-21 22:23

Powered by Discuz! X3.1

© 2001-2013 Comsenz Inc.

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