Project1

标题: 如何判断地图名字是否带# [打印本页]

作者: 阮声悠悠    时间: 2018-9-11 15:51
标题: 如何判断地图名字是否带#
想法源于论坛搜到的一个地图名显示脚本,感觉不错

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

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

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



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

作者: soulsaga    时间: 2018-9-11 16:29
本帖最后由 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 =~ "#"
作者: guoxiaomi    时间: 2018-9-11 16:30
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:24
。。。经过搜索,自己也发现了一个方法
  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
复制代码

作者: ppspssss    时间: 2018-9-13 11:03
本帖最后由 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/ )
#功能應該一样吧没試过





欢迎光临 Project1 (https://rpg.blue/) Powered by Discuz! X3.1