查看: 3054|回复: 9

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

[复制链接]
梦石
0
星屑
4017
在线时间
604 小时
注册时间
2017-4-21
回帖
177
发表于 2018-9-11 15:51:53 | 显示全部楼层 |阅读模式

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

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

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

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

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

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

QQ截图20180911154624.png

[pre lang="ruby"]# ————————————————————————————————————
# 本脚本来自http://www.66rpg.com/,转载自http://www.phylomortis.com/,转载请保留此信息
# ————————————————————————————————————

#==============================================================================
# ■ Window_MapName
#------------------------------------------------------------------------------
#  显示地图名字的窗口。
#==============================================================================

class Window_MapName < Window_Base
  #--------------------------------------------------------------------------
  # ● 类常量定义
  #--------------------------------------------------------------------------

  # 窗口位置设定
  NAME_X = 210                  # 矩形左上顶点X坐标
  NAME_Y = 180             # 矩形左上顶点Y坐标
  NAME_W = 220          # 矩形宽
  NAME_H = 80           # 矩形高
  
  # 显示时间设置
  SHOW_TIME_0 = 10  # 地图名出现前等待的帧数
  SHOW_TIME_1 = 10  # 地图名从不可见变成可见的帧数
  SHOW_TIME_2 = 34  # 地图名完全可见的帧数
  SHOW_TIME_3 = 16  # 地图名从可见变成不可见的帧数
  
  # 完全可见时的透明度设置
  OPACITY_1 = 0   # 边框
  OPACITY_2 = 0   # 背景
  OPACITY_3 = 255   # 文字
  
  # 地图名字的颜色
  TEXT_COLOR = Color.new(255, 255, 255, 255)
   
  #--------------------------------------------------------------------------
  # ● 初始化状态
  #--------------------------------------------------------------------------
  def initialize
    super(NAME_X , NAME_Y, NAME_W, NAME_H)
    # 初始化窗口透明度
    self.opacity = 0
    self.back_opacity = 0
    self.contents_opacity = 0
    self.contents = Bitmap.new(width - 32, height - 32)
    # 剩余帧数初始化
    @show_time = 0
  end
  #--------------------------------------------------------------------------
  # ● 输出文字
  #--------------------------------------------------------------------------
  def setname

    # 获取地图ID
    newid = $game_map.map_id
    time = SHOW_TIME_1 + SHOW_TIME_2 + SHOW_TIME_3

    # 如果现在的地图的ID不是刚才显示的地图ID则开始显示
    if newid != @id
      @id = newid
      @show_time = SHOW_TIME_0 + SHOW_TIME_1 + SHOW_TIME_2 + SHOW_TIME_3
    # 剩余帧数为0是时,全部窗口透明
    elsif @show_time < 1
      self.opacity = 0
      self.back_opacity = 0
      self.contents_opacity = 0
      return
    end
   
    self.contents.clear
    self.contents.font.color = TEXT_COLOR
    # 描绘地图名

   
    self.contents.font.size = 22
    self.contents.draw_text(4, 0 , width - 40, 32, $data_mapinfos[@id].name.split(/#/)[0], 1)
    self.contents.font.size = 15
    self.contents.draw_text(4, 0 , width - 40, 62, "------------------------", 1)
    self.contents.draw_text(4, 0 , width - 40, 81, $data_mapinfos[@id].name.split(/#/)[1], 1)
   
    # 根本帧数设定窗口透明度
    if @show_time > (SHOW_TIME_2 + SHOW_TIME_3)
      self.opacity = @show_time < time ? (((OPACITY_1 / SHOW_TIME_1) * (time - @show_time)).to_i) : 0
      self.back_opacity = @show_time < time ? (((OPACITY_2 / SHOW_TIME_1 )* (time - @show_time)).to_i) : 0
      self.contents_opacity = @show_time < time ? (((OPACITY_3 / SHOW_TIME_1) * (time - @show_time)).to_i) : 0
    else
      self.opacity = @show_time < (SHOW_TIME_3 / 16 * 14) ? ((OPACITY_1 / SHOW_TIME_3) * @show_time).to_i : OPACITY_1
      self.back_opacity = @show_time < (SHOW_TIME_3 / 16 * 9) ? ((OPACITY_2 / SHOW_TIME_3) * @show_time).to_i : OPACITY_2
      self.contents_opacity = @show_time < SHOW_TIME_3 ? ((OPACITY_3 / SHOW_TIME_3)* @show_time).to_i : OPACITY_3
    end
   
    @show_time -= 1
  end
end

#==============================================================================
# ■ Scene_Map
#------------------------------------------------------------------------------
#  处理地图画面的类。(追加定义)
#==============================================================================

class Scene_Map
  alias smn_main main
  def main
    @mapname = Window_MapName.new
    smn_main
    @mapname.dispose
  end
  
  alias smn_update update
  def update
    @mapname.setname
    smn_update
  end
end

#==============================================================================
# ■ Scene_Title
#------------------------------------------------------------------------------
#  处理标题画面的类。(追加定义)
#==============================================================================

class Scene_Title
  alias smn_main main
  def main
    # 读取地图信息文件
    $data_mapinfos = load_data("Data/MapInfos.rxdata")
    smn_main
  end
end
[/pre]
梦石
0
星屑
39236
在线时间
11155 小时
注册时间
2009-3-15
回帖
4768
发表于 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
回复

使用道具 举报

梦石
1
星屑
24088
在线时间
3339 小时
注册时间
2011-7-8
回帖
3862

开拓者

发表于 2018-9-11 16:30:23 | 显示全部楼层
[pre lang="ruby"]name1, name2 = $data_mapinfos[@id].name.split('#', 2)
if name2
    self.contents.font.size = 22
    self.contents.draw_text(4, 0 , width - 40, 32, name1, 1)
    self.contents.font.size = 15
    self.contents.draw_text(4, 0 , width - 40, 62, "------------------------", 1)
    self.contents.draw_text(4, 0 , width - 40, 81, name2, 1)
end[/pre]

点评

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

使用道具 举报

梦石
0
星屑
4017
在线时间
604 小时
注册时间
2017-4-21
回帖
177
 楼主| 发表于 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
复制代码
回复

使用道具 举报

梦石
0
星屑
14720
在线时间
2175 小时
注册时间
2016-9-20
回帖
777
发表于 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/ )
#功能應該一样吧没試过
贴子只供参考我贴子内容有很多只是我自己标识的内容代指不是原来意思,偏向发贴当时的想法(后来回看贴发现有很多错误,会造成误导 ),如果想靠谱点应 找相关正确的文章   -- 2025/4/19
回复

使用道具 举报

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

本版积分规则

Powered by Discuz! X5.0 © 2001-2026 Discuz! Team.

在本版发帖返回顶部