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

Project1

 找回密码
 注册会员
搜索
查看: 2303|回复: 9

[已经解决] 如何判断地图名字是否带#

[复制链接]

Lv3.寻梦者

梦石
0
星屑
3981
在线时间
603 小时
注册时间
2017-4-21
帖子
228
发表于 2018-9-11 15:51:53 | 显示全部楼层 |阅读模式

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

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

x
想法源于论坛搜到的一个地图名显示脚本,感觉不错

但想修改一些,应该在79行
自己脚本很差,所以来请教下。。

这个我想加一个判断,如果地图名字有#,就显示横线和英文部分,否则不显示这部分

(如果不做修改,地图名字没有加#的话会报错)

QQ截图20180911154624.png

RUBY 代码复制
  1. # ————————————————————————————————————
  2. # 本脚本来自[url]http://www.66rpg.com/[/url],转载自[url]http://www.phylomortis.com/[/url],转载请保留此信息
  3. # ————————————————————————————————————
  4.  
  5. #==============================================================================
  6. # ■ Window_MapName
  7. #------------------------------------------------------------------------------
  8. #  显示地图名字的窗口。
  9. #==============================================================================
  10.  
  11. class Window_MapName < Window_Base
  12.   #--------------------------------------------------------------------------
  13.   # ● 类常量定义
  14.   #--------------------------------------------------------------------------
  15.  
  16.   # 窗口位置设定
  17.   NAME_X = 210                  # 矩形左上顶点X坐标
  18.   NAME_Y = 180             # 矩形左上顶点Y坐标
  19.   NAME_W = 220          # 矩形宽
  20.   NAME_H = 80           # 矩形高
  21.  
  22.   # 显示时间设置
  23.   SHOW_TIME_0 = 10  # 地图名出现前等待的帧数
  24.   SHOW_TIME_1 = 10  # 地图名从不可见变成可见的帧数
  25.   SHOW_TIME_2 = 34  # 地图名完全可见的帧数
  26.   SHOW_TIME_3 = 16  # 地图名从可见变成不可见的帧数
  27.  
  28.   # 完全可见时的透明度设置
  29.   OPACITY_1 = 0   # 边框
  30.   OPACITY_2 = 0   # 背景
  31.   OPACITY_3 = 255   # 文字
  32.  
  33.   # 地图名字的颜色
  34.   TEXT_COLOR = Color.new(255, 255, 255, 255)
  35.  
  36.   #--------------------------------------------------------------------------
  37.   # ● 初始化状态
  38.   #--------------------------------------------------------------------------
  39.   def initialize
  40.     super(NAME_X , NAME_Y, NAME_W, NAME_H)
  41.     # 初始化窗口透明度
  42.     self.opacity = 0
  43.     self.back_opacity = 0
  44.     self.contents_opacity = 0
  45.     self.contents = Bitmap.new(width - 32, height - 32)
  46.     # 剩余帧数初始化
  47.     @show_time = 0
  48.   end
  49.   #--------------------------------------------------------------------------
  50.   # ● 输出文字
  51.   #--------------------------------------------------------------------------
  52.   def setname
  53.  
  54.     # 获取地图ID
  55.     newid = $game_map.map_id
  56.     time = SHOW_TIME_1 + SHOW_TIME_2 + SHOW_TIME_3
  57.  
  58.     # 如果现在的地图的ID不是刚才显示的地图ID则开始显示
  59.     if newid != @id
  60.       @id = newid
  61.       @show_time = SHOW_TIME_0 + SHOW_TIME_1 + SHOW_TIME_2 + SHOW_TIME_3
  62.     # 剩余帧数为0是时,全部窗口透明
  63.     elsif @show_time < 1
  64.       self.opacity = 0
  65.       self.back_opacity = 0
  66.       self.contents_opacity = 0
  67.       return
  68.     end
  69.  
  70.     self.contents.clear
  71.     self.contents.font.color = TEXT_COLOR
  72.     # 描绘地图名
  73.  
  74.  
  75.     self.contents.font.size = 22
  76.     self.contents.draw_text(4, 0 , width - 40, 32, $data_mapinfos[@id].name.split(/#/)[0], 1)
  77.     self.contents.font.size = 15
  78.     self.contents.draw_text(4, 0 , width - 40, 62, "------------------------", 1)
  79.     self.contents.draw_text(4, 0 , width - 40, 81, $data_mapinfos[@id].name.split(/#/)[1], 1)
  80.  
  81.     # 根本帧数设定窗口透明度
  82.     if @show_time > (SHOW_TIME_2 + SHOW_TIME_3)
  83.       self.opacity = @show_time < time ? (((OPACITY_1 / SHOW_TIME_1) * (time - @show_time)).to_i) : 0
  84.       self.back_opacity = @show_time < time ? (((OPACITY_2 / SHOW_TIME_1 )* (time - @show_time)).to_i) : 0
  85.       self.contents_opacity = @show_time < time ? (((OPACITY_3 / SHOW_TIME_1) * (time - @show_time)).to_i) : 0
  86.     else
  87.       self.opacity = @show_time < (SHOW_TIME_3 / 16 * 14) ? ((OPACITY_1 / SHOW_TIME_3) * @show_time).to_i : OPACITY_1
  88.       self.back_opacity = @show_time < (SHOW_TIME_3 / 16 * 9) ? ((OPACITY_2 / SHOW_TIME_3) * @show_time).to_i : OPACITY_2
  89.       self.contents_opacity = @show_time < SHOW_TIME_3 ? ((OPACITY_3 / SHOW_TIME_3)* @show_time).to_i : OPACITY_3
  90.     end
  91.  
  92.     @show_time -= 1
  93.   end
  94. end
  95.  
  96. #==============================================================================
  97. # ■ Scene_Map
  98. #------------------------------------------------------------------------------
  99. #  处理地图画面的类。(追加定义)
  100. #==============================================================================
  101.  
  102. class Scene_Map
  103.   alias smn_main main
  104.   def main
  105.     @mapname = Window_MapName.new
  106.     smn_main
  107.     @mapname.dispose
  108.   end
  109.  
  110.   alias smn_update update
  111.   def update
  112.     @mapname.setname
  113.     smn_update
  114.   end
  115. end
  116.  
  117. #==============================================================================
  118. # ■ Scene_Title
  119. #------------------------------------------------------------------------------
  120. #  处理标题画面的类。(追加定义)
  121. #==============================================================================
  122.  
  123. class Scene_Title
  124.   alias smn_main main
  125.   def main
  126.     # 读取地图信息文件
  127.     $data_mapinfos = load_data("Data/MapInfos.rxdata")
  128.     smn_main
  129.   end
  130. end

Lv5.捕梦者

梦石
0
星屑
33043
在线时间
10470 小时
注册时间
2009-3-15
帖子
4756
发表于 2018-9-11 16:29:40 | 显示全部楼层
本帖最后由 soulsaga 于 2018-9-11 16:33 编辑

self.contents.draw_text(4, 0 , width - 40, 81, $data_mapinfos[@id].name.split(/#/)[1], 1) if $data_mapinfos[@id].name =~ "#"

点评

OK,可能是之后的版本移除了吧……  发表于 2018-9-12 00:19
测试过..字符串没问题..  发表于 2018-9-11 16:36
但我就是这样用的..  发表于 2018-9-11 16:34
=~ 应该不能接普通的字符串,后面要是正则表达式 /\#/  发表于 2018-9-11 16:31
回复 支持 反对

使用道具 举报

Lv5.捕梦者 (版主)

梦石
1
星屑
23963
在线时间
3338 小时
注册时间
2011-7-8
帖子
3925

开拓者

发表于 2018-9-11 16:30:23 | 显示全部楼层
RUBY 代码复制
  1. name1, name2 = $data_mapinfos[@id].name.split('#', 2)
  2. if name2
  3.     self.contents.font.size = 22
  4.     self.contents.draw_text(4, 0 , width - 40, 32, name1, 1)
  5.     self.contents.font.size = 15
  6.     self.contents.draw_text(4, 0 , width - 40, 62, "------------------------", 1)
  7.     self.contents.draw_text(4, 0 , width - 40, 81, name2, 1)
  8. end

点评

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

使用道具 举报

Lv3.寻梦者

梦石
0
星屑
3981
在线时间
603 小时
注册时间
2017-4-21
帖子
228
 楼主| 发表于 2018-9-11 19:24:30 | 显示全部楼层
。。。经过搜索,自己也发现了一个方法
  1. if $data_mapinfos[@id].name.include?("#") == false
  2.     self.contents.font.size = 15
  3.     self.contents.draw_text(4, 0 , width - 40, 10, "------------------------", 1)
  4.     self.contents.font.size = 22
  5.     self.contents.draw_text(4, 0 , width - 40, 42, $data_mapinfos[@id].name.split(/#/)[0], 1)
  6.     self.contents.font.size = 15
  7.     self.contents.draw_text(4, 0 , width - 40, 72, "------------------------", 1)
  8. else
  9.     self.contents.font.size = 22
  10.     self.contents.draw_text(4, 0 , width - 40, 32, $data_mapinfos[@id].name.split(/#/)[0], 1)
  11.     self.contents.font.size = 15
  12.     self.contents.draw_text(4, 0 , width - 40, 62, "------------------------", 1)
  13.     self.contents.draw_text(4, 0 , width - 40, 81, $data_mapinfos[@id].name.split(/#/)[1], 1)
  14. end
复制代码
回复 支持 反对

使用道具 举报

Lv4.逐梦者

梦石
0
星屑
14038
在线时间
2069 小时
注册时间
2016-9-20
帖子
844
发表于 2018-9-13 11:03:58 | 显示全部楼层
本帖最后由 ppspssss 于 2018-9-13 11:09 编辑

$mapnames = load_data("Data/MapInfos.rxdata") #读取地图名文件
if  ( $mapnames[@id].name =~ /^game_variables/ ) #匹配game_variables , "^"开头开始算

#def版
def map_name
   return load_data('Data/MapInfos.rxdata')[@map_id].name
end


if  ( $game_map.map_name =~ /^game_variables/ )
#功能應該一样吧没試过
内容仅供参考,
回复 支持 反对

使用道具 举报

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

本版积分规则

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

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

GMT+8, 2024-3-29 21:50

Powered by Discuz! X3.1

© 2001-2013 Comsenz Inc.

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