广场
工具/教程/素材
超评测活动结果
第29届极短篇游戏制作比赛
优秀游戏推荐
非官方运行时(20250730)
登录
RPGMaker工具集[20250416]
基础教程
授权素材推广
优秀原创游戏区
精品推荐贴
【RGD】DirectX驱动的RMVA
RGSS3 - runtime by Lanza
【RGM】RGModern - RMXP新runtime
【URGE】兼容 XP/VX/Ace 三系通用跨平台游戏引擎
Project1
»
广场
›
›
游戏制作组
›
RMVA
›
《RMVA传》相关
›
[难以理解的脚本]设定每一个地图的提示信息 ...
返回列表
发新帖
查看:
1339
|
回复:
0
[难以理解的脚本]设定每一个地图的提示信息
[复制链接]
timiesea
timiesea
当前离线
赞
0
VIP
好人卡
积分
1
经验
最后登录
2021-6-21
在线时间
297 小时
写轮眼
梦石
0
星屑
105
在线时间
297 小时
注册时间
2009-1-7
回帖
155
发消息
发表于 2014-7-6 19:20:39
|
显示全部楼层
|
阅读模式
加入我们,或者,欢迎回来。
您需要
登录
才可以下载或查看,没有账号?
注册会员
×
本帖最后由 timiesea 于 2014-9-17 00:55 编辑
在《RMVA传》中,每一张地图都有对应的提示信息提示玩家该怎么攻略这张地图。这一些提示信息我把他们放在专门的文件里,以地图ID为规则进行命名。当玩家在地图中按下“R”键时,游戏将从文件中读取内容并通过显示文字的方式提示给玩家。
事实上,完全可以把这些信息存放在地图对应的备注里面,不过本例采用这一种方法一样可以达到效果。
文件的格式:
地图ID:
对应的文件名:
文件的内容举例说明(首行弃用):文件的内容必须手动换行,不能打开自动换行。
脚本:
#encoding:utf-8
#==============================================================================
# ■ Scene_Map
#------------------------------------------------------------------------------
# 地图画面
#==============================================================================
class Scene_Map < Scene_Base
#--------------------------------------------------------------------------
# ● 更新画面
#--------------------------------------------------------------------------
def update
super
$game_map.update(true)
$game_player.update
$game_timer.update
@spriteset.update
check_r#检测R键是否被按下
update_scene if scene_change_ok?
end
#--------------------------------------------------------------------------
# ● 检测R是否被按下
# ● 如果被按下,则根据地图的不同显示不同的提示内容
#--------------------------------------------------------------------------
def check_r
if Input.press?(:R)#如果按下了R键
#如果没有信息正准备显示则开始处理,防止用户一直按住按键时不断加入信息
if $game_message.texts == []
map_name = "Map" + $game_map.map_id.to_s;#利用当前地图的ID拼凑出文件名
#继续拼凑文件名并打开文件,注:文件的编码须是utf-8
file = File.open("Data/" + map_name + ".txt");
strs = file.readlines();#逐行扫描,存入一个数组
file.close();#文件打开后要关闭
#第一行的第一个字符非常奇怪,在控制台显示为空格,在游戏显示一个方框,不知道
#到底是什么字符,因此在文件中第一行弃置不用,从第二行开始。
strs = strs[1, strs.length() - 1];
i = 1;#一个计数器
strs.each do |str|#开始逐个扫描数组
if i == 1#如果计数器为1则插入固定文本
$game_message.add("\\C[9]【提示】\\C[0]");
end
#txt格式下,每一行最后一个字符为\n,需要扔掉,否则在游戏中会出现连续换行
#的现象
str = str[0, str.length() - 1];
$game_message.add(str);#将处理好的文字插入信息准备显示
#由于一页信息只能显示4行,去掉固定文本的一行,实际能显示的内容只有3行
#超过3行就要换页
if i == 3
i = 1;
end
i = i + 1;#计数器进行累加
end
end
end
end
end
复制代码
效果:
游戏群组:
https://rpg.blue/forum.php?mod=group&fid=565
在这里你可以看到我在制作游戏过程中分享的内容。
回复
使用道具
举报
提升卡
沉默号角
喧嚣号角
变色卡
升龙剑
返回列表
发新帖
Archiver
|
手机版
|
小黑屋
|
Project1游戏制作
Powered by
Discuz!
X5.0
© 2001-2026
Discuz! Team
.
在本发帖
返回顶部
快速回复
返回顶部
返回列表