赞 | 0 |
VIP | 6 |
好人卡 | 0 |
积分 | 1 |
经验 | 63789 |
最后登录 | 2017-9-7 |
在线时间 | 12 小时 |
Lv1.梦旅人
- 梦石
- 0
- 星屑
- 50
- 在线时间
- 12 小时
- 注册时间
- 2006-5-21
- 帖子
- 773
|
加入我们,或者,欢迎回来。
您需要 登录 才可以下载或查看,没有帐号?注册会员
x
注意:遇到缺少方法'name'报错的
Script'main'line 36:NoMethoderror occurred.
undefined method'name'for#<Game_Map:0 188af08> 请把第43行改成locationname = load_data("Data/MapInfos.rvdata")[@map_id].name
(下面贴的脚本已经修正,但是范例没有修正)
编辑 by zh99998 2009-5-2
区域名及地图名自动显示
脚本功能:
自动显示玩家所在的地图名,淡入淡出,全程时间可控制。
如果玩家在区域内,则同时显示地图名和区域名。
如果玩家在同一张地图内所在区域发生变化,则只显示区域名。
【区域】即是VX地图里可以设置的矩形范围,通过本脚本可以满足大地图、ARPG的需求
范例演示:
看地图:
如图所示,当玩家到达没有设置区域的地方的时候,显示地图名:
当玩家首先【场所移动】到达的是设置了区域的地方的时候,同时显示地图名和区域名:
当玩家在从一个区域移动到另一个区域的时候,只显示区域变化:
当玩家从有区域设置的地方移动到无区域的地方的时候,显示地图名,反向则显示区域名。
使用方法:
将脚本插入到Main前。
- #==============================================================================
- # 地图名及区域名显示 by Beside
- #------------------------------------------------------------------------------
- # 功能: 动态显示玩家所在区域及地图名。
- #==============================================================================
- class Window_Map < Window_Base
- #--------------------------------------------------------------------------
- # ● 以下是窗口的相关设置
- #--------------------------------------------------------------------------
- MWINDOW_X = 240 # 窗口X坐标
- MWINDOW_Y = 25 # 窗口Y坐标
- WEIGH = 160 # 窗口宽度
- START_TIME = 30 # 窗口出现时间
- COUN_TIME = 30 # 窗口持续时间
- FADE_TIME = 30 # 窗口淡去时间
- TEXT1_SIZE = 20 # 地图名的字体大小
- TEXT2_SIZE = 18 # 区域名的字体大小
- TEXT3_SIZE = 18 # 附加名的字体大小
- TEXT1_COLOR = Color.new(255,60,60) # 地图名的默认颜色
- TEXT2_COLOR = 3 # 区域名的默认颜色代码(0-31)
- TEXT3_COLOR = 5 # 附加名的默认颜色代码(0-31)
- SKIN = "window" # 窗口皮肤的文件名
- HEIGHT = TEXT1_SIZE + TEXT2_SIZE + TEXT3_SIZE + 32
- #--------------------------------------------------------------------------
- # ● 初始化对像
- #--------------------------------------------------------------------------
- def initialize
- @id = 0
- @a_id = 0
- super(MWINDOW_X, MWINDOW_Y, WEIGH, HEIGHT)
- self.opacity = 0
- self.contents_opacity = 0
- self.windowskin = Cache.system(SKIN)
- refresh
- end
- #--------------------------------------------------------------------------
- # ● 刷新
- #--------------------------------------------------------------------------
- def refresh
- @map_id = $game_map.map_id
- locationname = load_data("Data/MapInfos.rvdata")[@map_id].name
- if $game_player.area_id.is_a?(Numeric)
- if $game_player.area_id != @a_id or @map_id != @id
- self.contents.clear
- if @map_id != @id
- @id = @map_id
- @time_count = START_TIME + COUN_TIME + FADE_TIME
- self.contents.font.color = TEXT1_COLOR
- self.contents.font.size = TEXT1_SIZE
- self.contents.draw_text(0, 0, WEIGH-32, TEXT1_SIZE, locationname, 1)
- end
- @time_count = START_TIME + COUN_TIME + FADE_TIME
- @a_id = $game_player.area_id
- area_name = $data_areas[@a_id].name_p1
- other_name = $data_areas[@a_id].name_p2
- self.contents.font.size = TEXT2_SIZE
- self.contents.font.color = text_color($data_areas[@a_id].color_1)
- self.contents.draw_text(0, TEXT1_SIZE, WEIGH-32, TEXT2_SIZE, area_name, 1)
- self.contents.font.size = TEXT3_SIZE
- self.contents.font.color = text_color($data_areas[@a_id].color_2)
- self.contents.draw_text(0, TEXT1_SIZE+TEXT2_SIZE, WEIGH-32, TEXT3_SIZE, other_name, 1)
- end
- elsif @map_id != @id
- @id = @map_id
- @time_count = START_TIME + COUN_TIME + FADE_TIME
- self.contents.clear
- self.contents.font.color = TEXT1_COLOR
- self.contents.font.size = TEXT1_SIZE
- self.contents.draw_text(0, (HEIGHT-TEXT1_SIZE)/2-16, WEIGH-32, TEXT1_SIZE, locationname, 1)
- elsif @a_id != 0
- @a_id = 0
- @time_count = START_TIME + COUN_TIME + FADE_TIME
- self.contents.clear
- self.contents.font.color = TEXT1_COLOR
- self.contents.font.size = TEXT1_SIZE
- self.contents.draw_text(0, (HEIGHT-TEXT1_SIZE)/2-16, WEIGH-32, TEXT1_SIZE, locationname, 1)
- end
- if @time_count > COUN_TIME + FADE_TIME
- self.opacity += 255 / START_TIME
- self.contents_opacity += 255 / START_TIME
- @time_count -= 1
- elsif @time_count > FADE_TIME
- self.opacity = 255
- self.contents_opacity = 255
- @time_count -= 1
- elsif @time_count > 0
- self.opacity -= 255 / FADE_TIME
- self.contents_opacity -= 255 / FADE_TIME
- @time_count -= 1
- else
- @time_count = 0
- self.opacity = 0
- self.contents_opacity = 0
- end
- end
- end
- #==============================================================================
- # ■ Scene_Map
- #------------------------------------------------------------------------------
- # 处理地图画面的类。
- #==============================================================================
- class Scene_Map < Scene_Base
- alias _start start
- #--------------------------------------------------------------------------
- # ● 开始处理
- #--------------------------------------------------------------------------
- def start
- @map_window = Window_Map.new
- _start
- end
-
- alias _terminate terminate
- def terminate
- @map_window.dispose
- _terminate
- end
-
- alias _update update
- def update
- @map_window.refresh
- _update
- end
- end
- module RPG
- class Area
- def name_p1
- name = @name.split(/#/)[0]
- return name != nil ? name : ""
- end
- def name_p2
- name = @name.split(/#/)[1]
- return name != nil ? name : ""
- end
- def color_1
- color = @name.split(/#/)[2]
- return color != nil ? color.to_i : TEXT2_COLOR
- end
- def color_2
- color = @name.split(/#/)[3]
- return color != nil ? color.to_i : TEXT3_COLOR
- end
- end
- end
- class Game_Character
- def area_id
- for area in $data_areas.values
- if in_area?(area)
- return area.id
- end
- end
- end
- end
复制代码
地图设置方法:
地图名不用说了,关于区域名——区域名又四个部分组成,标准的写法是:
区域名#附加名#区域名色码#附加名色码
区域名:区域的主名字 描绘在地图名下面
附加名:附加的名字,随便你写什么,比如对这个区域的附加属性介绍,描绘在区域名下面
区域名色码/附加名色码:前面两个项目的文字颜色,跟显示文章一样(0-31可用)
范例:草地#联盟领地#1#2
注意!如果只设定一部分是可以的,但是在中间的项目如果不填写一定要记得写#隔开!因为四个部分是又#负责识别区分的。
比如:沙漠##4 (两个#之间相当于附加名 为空字符)
脚本设置:
MWINDOW_X = 240 # 窗口X坐标
MWINDOW_Y = 25 # 窗口Y坐标
WEIGH = 160 # 窗口宽度
START_TIME = 30 # 窗口出现时间
COUN_TIME = 30 # 窗口持续时间
FADE_TIME = 30 # 窗口淡去时间
TEXT1_SIZE = 20 # 地图名的字体大小
TEXT2_SIZE = 18 # 区域名的字体大小
TEXT3_SIZE = 18 # 附加名的字体大小
TEXT1_COLOR = Color.new(255,60,60) # 地图名的默认颜色
TEXT2_COLOR = 3 # 区域名的默认颜色代码(0-31)
TEXT3_COLOR = 5 # 附加名的默认颜色代码(0-31)
SKIN = "window" # 窗口皮肤的文件名
前面几个不说了,注意最后4项:
TEXT1_COLOR=====>地图名默认颜色,RGB代码
TEXT2_COLOR/TEXT3_COLOR======>区域名默认颜色,0-31
↑↑↑以上两项是地图区域设置的时候部分项不填的时候使用的缺省设置。
SKIN是窗口皮肤的文件名,这里使用了默认的window,需要替换则放自己的窗口皮肤进去,SKIN这里改成自己的窗口皮肤文件名就可以了。
范例下载:
http://rpg.blue/upload_program/files/区域显地名_99587764.rar
结语:
本脚本方便实用,可自定义所有内容,颜色和皮肤根据自己需要改改好了。比较不好意思的是和沉影前辈的脚本撞车了,抱歉{/hx} |
|