注册会员 登录
Project1 返回首页

喵呜喵5的树洞 https://rpg.blue/?291206 [收藏] [复制] [分享] [RSS]

日志

【脚本】地图名显示美化

热度 23已有 6538 次阅读2013-9-26 11:33 |个人分类:脚本

这个脚本搭配我的基础脚本共同使用能够拥有更强大的功能:http://rm.66rpg.com/home.php?mod=space&uid=291206&do=blog&id=13513

如果你只是想要测试这个脚本的效果的话,脚本所需的素材图片可以使用这个

=begin

===============================================================================

  地图名显示美化 By喵呜喵5

===============================================================================


【说明】


  修改了默认的地图名显示方式


  地图名的显示支持基本的转义字符,因此可以做出类似:

    地图名:“\i[4]这里是\n[1]的家”

    显示效果:【图标4】这里是艾里克的家

  这样的效果


  使用脚本需要将地图名的背景命名为“mapname”放在 Graphics\System 下


  如果插入了我的基础脚本,可以通过给地图添加备注


    <地图名 地图背景图片的文件名>


  来为某张地图单独设置特定的背景图片(文件同样放在 Graphics\System 下)


=end

$m5script ||= {}; $m5script[:M5MN20150508] = 20150827

module M5MN20150508

#==============================================================================

#  设定部分

#==============================================================================


  DEAFUT = 3

  # 在这里设置地图名的显示模式

  # 1:不显示地图名,2:地图名始终显示,3:一段时间内显示地图名


    TIME = 120

    #这里设置地图名显示模式为3时,地图名停留的时间


  OPTION = 1

  # 在这里设置控制地图名的变量ID

  # 当变量的值分别为1、2、3时地图名显示模式将切换到对应的模式

  # 不需要的话,填写0就好了


  FADE = 40

  # 这里设置地图名进入和离开的时间


  SLIDE = false

  # 设置为 false 时,关闭地图名的滑动特效


  FONT = ["黑体"]

  # 地图名所使用的字体


  SIZE = 20

  # 地图名字体的大小


  COLOR = Color.new(255, 255, 255, 210)

  # 地图名的颜色,四个数值分别是R、G、B以及透明度


  BOLD = false

  # 地图名是否加粗


  ITALIC = false

  # 地图名是否斜体


  SHADOW = false

  # 地图名是否有阴影


  OUT = true

  # 地图名是否加边框


  OUT_COLOR = Color.new(255, 255, 255, 100)

  # 地图名边框的颜色,四个数值分别是R、G、B以及透明度


  X = 87

  # 这里调整地图名的X坐标


  Y = 12

  # 这里调整地图名的Y坐标


  Z = 200

  # 如果地图名被其他东西遮住或遮住其他东西了,请调整这个数值


#==============================================================================

#  设定结束

#==============================================================================

#--------------------------------------------------------------------------

# ● 新的显示地图窗口类

#--------------------------------------------------------------------------

class Window_MapName < Window_Base

  #--------------------------------------------------------------------------

  # ● 类实例变量

  #--------------------------------------------------------------------------

  class << self; attr_accessor :show_end; end

  #--------------------------------------------------------------------------

  # ● 载入

  #--------------------------------------------------------------------------

  def initialize

    super(Graphics.width, Y, Graphics.width, Graphics.height)

    self.z = Z

    self.opacity = 0

    creat_background_sprite

    update_mode_setting

    clear_all_flag

    if self.class.show_end

      show_final

    else

      open unless @mode == 1

    end

  end

  #--------------------------------------------------------------------------

  # ● 生成背景

  #--------------------------------------------------------------------------

  def creat_background_sprite

    file = get_background_bitmap

    if @background_file != file

      @background_file = file

      @background.dispose if @background

      @background = Sprite.new

      @background.bitmap = Cache.system(file)

      @background.opacity = 0

      @background.z = self.z - 1

    end

  end

  #--------------------------------------------------------------------------

  # ● 获取背景图片文件名

  #--------------------------------------------------------------------------

  def get_background_bitmap

    if $m5script[:M5Base] && $m5script[:M5Base] >= 20150224

      file = M5script.read_map_note($game_map.map_id, "地图名", nil)

    end

    file ||= "Mapname"

    return file

  end

  #--------------------------------------------------------------------------

  # ● 显示效果遭到意外中断时,直接显示最终画面

  #--------------------------------------------------------------------------

  def show_final

    if @mode == 2

      refresh

      @background.opacity = self.contents_opacity = 255

      self.x = X

      @state = :showing

    else

      close

    end

  end

  #--------------------------------------------------------------------------

  # ● 更新

  #--------------------------------------------------------------------------

  def update

    super

    return if $game_map.display_name == ""

    update_mode_setting

    return update_disappear if @state == :disappear

    update_coming if @state == :coming

    @next_time -= 1 if @next_time > 0

    return if @next_time > 0

    update_leaving if @state == :showing

  end

  #--------------------------------------------------------------------------

  # ● 更新显示模式

  #--------------------------------------------------------------------------

  def update_mode_setting

    if !$game_map.name_display then mode = 1

    else

      if OPTION != 0

        mode = $game_variables[OPTION]

        mode = nil unless mode.between?(1,3)

      end

      mode ||= DEAFUT

    end

    if @mode != mode

      @state = :disappear if mode == 1

      refresh if @state == :ready

      @state = :coming if mode != 1

      @mode = mode

    end

  end

  #--------------------------------------------------------------------------

  # ● 更新窗口的消失效果

  #--------------------------------------------------------------------------

  def update_disappear

    @background.opacity -= (255 / FADE) * 2

    self.contents_opacity = @background.opacity

    close if @background.opacity == 0

  end

  #--------------------------------------------------------------------------

  # ● 更新窗口的进入效果

  #--------------------------------------------------------------------------

  def update_coming

    @background.opacity += 255/FADE

    return unless @background.opacity > 170

    @background.opacity += 255/FADE

    self.contents_opacity += 255/FADE

    self.x = [self.x - Graphics.width/FADE, X].max

    return unless self.x == X && @background.opacity ==255 &&

      self.contents_opacity == 255

    @next_time = TIME

    @state = :showing

  end

  #--------------------------------------------------------------------------

  # ● 窗口的初位置

  #--------------------------------------------------------------------------

  def origin_position

    return SLIDE ? Graphics.width : X

  end

  #--------------------------------------------------------------------------

  # ● 更新窗口的离开效果

  #--------------------------------------------------------------------------

  def update_leaving

    return unless @mode == 3

    @background.opacity -= ( 255 / FADE )/2

    self.contents_opacity -= 255 / FADE

    self.x = [self.x + Graphics.width/FADE , origin_position].min

    @state = :ready if @background.opacity <= 0

  end

  #--------------------------------------------------------------------------

  # ● 设置字体

  #--------------------------------------------------------------------------

  def reset_font_settings

    super

    contents.font.name = FONT

    contents.font.size = SIZE

    contents.font.bold = BOLD

    contents.font.italic = ITALIC

    contents.font.outline = OUT

    contents.font.shadow = SHADOW

    contents.font.color = COLOR

    contents.font.out_color = OUT_COLOR

  end

  #--------------------------------------------------------------------------

  # ● 描绘窗口内容

  #--------------------------------------------------------------------------

  def refresh

    contents.clear

    return if $game_map.display_name == ""

    creat_background_sprite

    draw_text_ex(0,0, $game_map.display_name)

  end

  #--------------------------------------------------------------------------

  # ● 打开窗口

  #--------------------------------------------------------------------------

  def open

    refresh

    self.x = origin_position

    self.class.show_end = false

    @mode = nil

    self

  end

  #--------------------------------------------------------------------------

  # ● 关闭窗口

  #--------------------------------------------------------------------------

  def close

    clear_all_flag

    self

  end

  #--------------------------------------------------------------------------

  # ● 清除窗口的设置

  #--------------------------------------------------------------------------

  def clear_all_flag

    self.x = origin_position

    @state = :ready

    @next_time = 0

    self.contents_opacity = @background.opacity = 0

  end

  #--------------------------------------------------------------------------

  # ● 释放

  #--------------------------------------------------------------------------

  def dispose

    super

    @background.dispose

  end

end

end # M5MN20150508

class Scene_Map

  #--------------------------------------------------------------------------

  # ● 生成地图窗口(※覆盖了原生窗口)

  #--------------------------------------------------------------------------

  alias m5_20150508_create_location_window create_location_window

  def create_location_window

    m5_20150508_create_location_window

    @map_name_window.dispose

    @map_name_window = M5MN20150508::Window_MapName.new

  end

  #--------------------------------------------------------------------------

  # ● 窗口意外中断时的处理

  #--------------------------------------------------------------------------

  alias m5_20131130_terminate terminate

  def terminate

    m5_20131130_terminate

    M5MN20150508::Window_MapName.show_end = true

  end

end

class << DataManager

  #--------------------------------------------------------------------------

  # ● 关闭窗口意外中断的标志

  #--------------------------------------------------------------------------

  alias m5_20131130_setup_new_game setup_new_game

  def setup_new_game

    m5_20131130_setup_new_game

    M5MN20150508::Window_MapName.show_end = false

  end

  alias m5_20131130_load_game load_game

  def load_game(index)

    result = m5_20131130_load_game(index)

    M5MN20150508::Window_MapName.show_end = false

    return result

  end

end

4

鸡蛋
1

鲜花

刚表态过的朋友 (5 人)

发表评论 评论 (45 个评论)

回复 绿坝 2013-10-9 12:26
   很华丽的地图名显示,和默认的是两个极端。
回复 stars小星 2014-1-4 14:15
204行的  alias m5_20131130_update_scene update_scene  这个出现了问题是怎么回事?
回复 闇·貘良 2014-1-5 13:31
喵呜,回复一下,alias m5_20131130_update_scene update_scene  这个出现了问题是怎么回事?
回复 喵呜喵5 2014-1-5 15:24
stars小星: 204行的  alias m5_20131130_update_scene update_scene  这个出现了问题是怎么回事?
报错内容是什么?
在全新的工程里面也会报错么?
alias 这五个字是蓝色的么?
是不是重复插入了好多遍这个脚本?
回复 喵呜喵5 2014-1-5 15:25
闇·貘良: 喵呜,回复一下,alias m5_20131130_update_scene update_scene  这个出现了问题是怎么回事?
报错内容是什么?
在全新的工程里面也会报错么?
alias 这五个字是蓝色的么?
是不是重复插入了好多遍这个脚本?
回复 闇·貘良 2014-1-5 15:28
解决了,貌似我们把脚本放错位置了sorry
回复 喵呜喵5 2014-1-5 15:30
stars小星: 204行的  alias m5_20131130_update_scene update_scene  这个出现了问题是怎么回事?
请参考楼上闇·貘良的回复修改这个脚本的摆放位置
回复 stars小星 2014-1-9 16:13
喵呜喵5: 请参考楼上闇·貘良的回复修改这个脚本的摆放位置
我是放在main里,那正确应该放在哪,新添加一个脚本吗?
回复 喵呜喵5 2014-1-9 17:03
stars小星: 我是放在main里,那正确应该放在哪,新添加一个脚本吗?
放在main里么.........

新的工程也会出现这个问题吗?
回复 stars小星 2014-1-14 10:11
喵呜喵5: 放在main里么.........

新的工程也会出现这个问题吗?
我刚刚试了下,会。这个脚本是不是vx的?
回复 喵呜喵5 2014-1-14 10:28
stars小星: 我刚刚试了下,会。这个脚本是不是vx的?
把你出错的新工程做个范例发上来我看看,这个脚本就是va的
回复 stars小星 2014-1-14 12:48
喵呜喵5: 把你出错的新工程做个范例发上来我看看,这个脚本就是va的
原来这个是va的,我还以为是vx的,抱歉
回复 chehoucheng1997 2014-2-19 22:43
如果弄了光源,就看不到背景圖了,怎么辦?
回复 喵呜喵5 2014-2-19 23:50
chehoucheng1997: 如果弄了光源,就看不到背景圖了,怎么辦?
调整光源的Z值
回复 chehoucheng1997 2014-2-19 23:55
喵呜喵5: 调整光源的Z值
怎么弄Z值= =我不是用腳本弄的,只是圖片弄的....我是個新手>.<
回复 喵呜喵5 2014-2-19 23:58
chehoucheng1997: 怎么弄Z值= =我不是用腳本弄的,只是圖片弄的....我是個新手>.<
好的,那之后有时间了我修正一下这个脚本
回复 喵呜喵5 2014-2-20 16:38
chehoucheng1997: 怎么弄Z值= =我不是用腳本弄的,只是圖片弄的....我是個新手>.<
脚本已修正
回复 chehoucheng1997 2014-2-20 19:23
喵呜喵5: 脚本已修正
thank you~
回复 永燃的狂炎 2014-8-10 22:59
该如何显示’mapname‘这个素材图片
PS:已导入
回复 喵呜喵5 2014-8-11 11:43
永燃的狂炎: 该如何显示’mapname‘这个素材图片
PS:已导入
已经导入的话这个背景图片就会正常显示出来啊
123下一页

facelist doodle 涂鸦笔

您需要登录后才可以评论 登录 | 注册会员

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

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

GMT+8, 2024-5-6 08:07

Powered by Discuz! X3.1

© 2001-2013 Comsenz Inc.

返回顶部