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

Project1

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

[难以理解的脚本]设定每一个地图的提示信息

[复制链接]
梦石
0
星屑
105
在线时间
297 小时
注册时间
2009-1-7
帖子
216
跳转到指定楼层
1
发表于 2014-7-6 19:20:39 | 只看该作者 |只看大图 回帖奖励 |倒序浏览 |阅读模式

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

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

x
本帖最后由 timiesea 于 2014-9-17 00:55 编辑

  在《RMVA传》中,每一张地图都有对应的提示信息提示玩家该怎么攻略这张地图。这一些提示信息我把他们放在专门的文件里,以地图ID为规则进行命名。当玩家在地图中按下“R”键时,游戏将从文件中读取内容并通过显示文字的方式提示给玩家。

  事实上,完全可以把这些信息存放在地图对应的备注里面,不过本例采用这一种方法一样可以达到效果。

  文件的格式:
地图ID:


对应的文件名:


文件的内容举例说明(首行弃用):文件的内容必须手动换行,不能打开自动换行。


脚本:
  1. #encoding:utf-8
  2. #==============================================================================
  3. # ■ Scene_Map
  4. #------------------------------------------------------------------------------
  5. #  地图画面
  6. #==============================================================================

  7. class Scene_Map < Scene_Base
  8.   
  9.   #--------------------------------------------------------------------------
  10.   # ● 更新画面
  11.   #--------------------------------------------------------------------------
  12.   def update
  13.     super
  14.     $game_map.update(true)
  15.     $game_player.update
  16.     $game_timer.update
  17.     @spriteset.update
  18.     check_r#检测R键是否被按下
  19.     update_scene if scene_change_ok?
  20.   end
  21.   #--------------------------------------------------------------------------
  22.   # ● 检测R是否被按下
  23.   # ● 如果被按下,则根据地图的不同显示不同的提示内容
  24.   #--------------------------------------------------------------------------
  25.   def check_r
  26.     if Input.press?(:R)#如果按下了R键
  27.       #如果没有信息正准备显示则开始处理,防止用户一直按住按键时不断加入信息
  28.       if $game_message.texts == []
  29.         map_name = "Map" + $game_map.map_id.to_s;#利用当前地图的ID拼凑出文件名
  30.         #继续拼凑文件名并打开文件,注:文件的编码须是utf-8
  31.         file = File.open("Data/" + map_name + ".txt");
  32.         strs = file.readlines();#逐行扫描,存入一个数组
  33.         file.close();#文件打开后要关闭
  34.         #第一行的第一个字符非常奇怪,在控制台显示为空格,在游戏显示一个方框,不知道
  35.         #到底是什么字符,因此在文件中第一行弃置不用,从第二行开始。
  36.         strs = strs[1, strs.length() - 1];
  37.         i = 1;#一个计数器
  38.         strs.each do |str|#开始逐个扫描数组
  39.           if i == 1#如果计数器为1则插入固定文本
  40.             $game_message.add("\\C[9]【提示】\\C[0]");
  41.           end
  42.           #txt格式下,每一行最后一个字符为\n,需要扔掉,否则在游戏中会出现连续换行
  43.           #的现象
  44.           str = str[0, str.length() - 1];
  45.           $game_message.add(str);#将处理好的文字插入信息准备显示
  46.           #由于一页信息只能显示4行,去掉固定文本的一行,实际能显示的内容只有3行
  47.           #超过3行就要换页
  48.           if i == 3
  49.             i = 1;
  50.           end
  51.           i = i + 1;#计数器进行累加
  52.         end
  53.       end
  54.     end
  55.   end
  56. end
复制代码
效果:
游戏群组:https://rpg.blue/forum.php?mod=group&fid=565在这里你可以看到我在制作游戏过程中分享的内容。
拿上你的纸笔,建造一个属于你的梦想世界,加入吧。
 注册会员
找回密码

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

GMT+8, 2024-4-29 16:10

Powered by Discuz! X3.1

© 2001-2013 Comsenz Inc.

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