Project1

标题: [9.21更新]切换地图,区域时显示地名,附带地区名显示 [打印本页]

作者: trentswd    时间: 2008-8-27 03:27
标题: [9.21更新]切换地图,区域时显示地名,附带地区名显示
显示地名的脚本很多……囧……<--撞车的话这个人肯定先撞死……
其实是不太满意现有脚本的效果,所以自己写了一个。
和现有的脚本不同的地方是:
1.左下角位移和渐隐显示地图名和区域名
2.右上角位移加模糊显示地区名
(囧……没看出来有啥不同……)

地区名和地图名

区域名显示

使用方法:
地图名如下格式:地图名@地区名@地区英文名
区域名如下格式:区域名
只需要在切换地区的地图设置地区名即可,详细请看范例。
占用1号2号开关,占第八用号角色名存储地区名,具体可以在脚本中修改。


9月21日更新
匈魔剑提出的切换地图时的显示问题:
现在已经改为切换地图时将上一张地图显示的窗口清除。
精灵使者提出的下列问题也已经解决:
1.现在切换地图时,将优先显示当前的区域名
2.可以直接显示,在事件中通过脚本
[quote]
$scene.map_window.d_display
$scene.zone_window.d_display

分别调出地名窗口和地区窗口
3.当切换区域时,区域同名将视为一个区域。以此解决不规则区域的问题
4.大地图可以分为不同的地图,方法是将区域名设为和地图名一样的「区域名@地区名@地区英文名」
同时,已和另一个地图增强脚本整合……【囧……那个还在写说明囧囧囧】
[/quote]
脚本已经分为两块
请将此两段脚本全部插入
通用段:【用语存储常量与公用方法】

  1. #▼▼▼通用变量、方法、模块、类▼▼▼
  2. #==============================================================================
  3. # ■ (模块)T_m
  4. #------------------------------------------------------------------------------
  5. #  用来存储常用常量
  6. #=============================================================================
  7. module T_m
  8.   #-----------------------------------------------------------------------------
  9.   # ● 地名窗口常量
  10.   #-----------------------------------------------------------------------------
  11.   #▼地名窗口
  12.   WIDTH = 150                                   # 窗口宽度最小值      
  13.   IN_TIME = 20                                  # 窗口出现时间
  14.   SHOW_TIME = 60                                # 窗口显示时间
  15.   FADE_TIME = 30                                # 窗口淡去时间
  16.   TEXT1_SIZE = 19                               # 地图名,区域名的字体大小
  17.   TEXT2_SIZE = 13                               # 地区名的字体大小
  18.   TEXT1_COLOR = Color.new(255,255,255)          # 地图名,区域名的默认颜色
  19.   TEXT2_COLOR = Color.new(255,60,60)            # 地区名的默认颜色
  20.   SKIN = "window"                             # 窗口皮肤的文件名
  21.   VX_H = 416                                    # VX窗口高度
  22.   VX_W = 544                                    # VX窗口宽度
  23.   ZONE_NUM =8                                   # 地区名占用角色名的编号
  24.   Map_W_S=1                                     # 控制是否显示的开关
  25.   #▼地区名窗口
  26.   Z_IN_TIME = 30                                 # 窗口出现时间
  27.   Z_SHOW_TIME = 70                               # 窗口显示时间
  28.   Z_FADE_TIME = 30                               # 窗口淡去时间
  29.   ZONE_W_S=2                                     # 控制是否显示开关


  30.   #▼计算
  31.   HEIGHT = TEXT1_SIZE + TEXT2_SIZE + 34         # 窗口高度
  32.   MWINDOW_Y = VX_H - HEIGHT - 16                # 窗口Y坐标
  33.   #----------------------------------------------------------------------------
  34.   # ● 路牌门牌NPC常量
  35.   #----------------------------------------------------------------------------
  36.   #▼路口窗口
  37.   RT_WIDTH=240                                    #窗口宽度的最小值
  38.   RT_Y=30                                            #窗口Y值
  39.   RT_INTIME=20                                    #窗口出现时间
  40.   RT_ONTIME=60                                    #窗口持续时间
  41.   RT_FADETIME=20                                  #窗口消失时间

  42.   RT_S=3                                          #控制开关
  43.   RT_TEXTSIZE=20                                   #字体大小
  44.   RT_TEXTCOLOR=Color.new(255,255,255)               #字体颜色
  45.   #▼NPC窗口
  46.   NPC_ICON_TALK="talk"                       #「谈话」图标名
  47.   NPC_ICON_TRADE="trade"                     #「交易」图标名
  48.   NPC_ICON_CHECK="check"                     #「调查」图标名
  49.   NPC_NAME_SIZE=16                           #「NPC」人名字号
  50.   NPC_S=4                                    #「NPC控制开关」编号
  51.   #▼门牌窗口
  52.   DOOR_NAME_SIZE=22                              #门牌「名称」字号
  53.   DOOR_TYPE_SIZE =16                             #门牌「类型」字号
  54.   DOOR_S=5                                    #「门牌」控制开关编号
  55.   #----------------------------------------------------------------------------
  56.   # ●其他
  57.   #----------------------------------------------------------------------------
  58.   def self.preview_dis
  59.     return @preview_dis
  60.   end
  61.   def self.preview_dis=(a)
  62.     return @preview_dis=a
  63.   end
  64.   @preview_dis=false
  65. end

  66.   #----------------------------------------------------------------------------
  67.   # ● 方法:读取属性
  68.   #----------------------------------------------------------------------------
  69.   def readattr(str,section,ignore_caps = false)
  70.     str="" if str.class!=String
  71.     result=''
  72.     section.upcase! if ignore_caps
  73.     s = section.to_sym
  74.     temp = str.split(/=/)
  75.     temp.each{|i|i.strip!}
  76.     temp[0].upcase! if ignore_caps
  77.     temp[0]=" " if temp[0]==nil
  78.     if temp[0].to_sym==s
  79.       unless temp[1]==nil
  80.         result=temp[1]
  81.       end
  82.     end
  83.     return result
  84.   end

  85. #==============================================================================
  86. # ■ Game_Map
  87. #------------------------------------------------------------------------------
  88. #  对Game_Map类的追加定义。
  89. #=============================================================================
  90. class Game_Map
  91.   #--------------------------------------------------------------------------
  92.   # ● 获取所在场景名称
  93.   #--------------------------------------------------------------------------
  94.   def name
  95.       load_data("Data/MapInfos.rvdata")
  96.   end
  97. end


  98. #==============================================================================
  99. # ■ Game_Character
  100. #------------------------------------------------------------------------------
  101. #  判断当前人物所在区域id(by beside)。
  102. #=============================================================================
  103. class Game_Character
  104.   def area_id
  105.     for area in $data_areas.values
  106.      if in_area?(area)
  107.        return area.id
  108.      end
  109.    end
  110. end
  111. end
  112.    
  113. #==============================================================================
  114. # ◎ GPRA_Bitmap
  115. #------------------------------------------------------------------------------
  116. # ◎ Bitmap功能加强
  117. #------------------------------------------------------------------------------
  118. # 制作者:绿梨子红苹果
  119. # 个人主页:vbgm.9126.com
  120. # E-Mail:[email protected]
  121. # QQ:42378361
  122. #==============================================================================

  123. class Bitmap
  124.   # 影子字
  125.   def draw_text_s(x, y, width, height, str, align=0)
  126.     # 保存当前颜色
  127.     r=self.font.color.red
  128.     g=self.font.color.green
  129.     b=self.font.color.blue
  130.     # 颜色更改成黑色
  131.     self.font.color.set(0, 0, 0)
  132.     # 绘制影子
  133.     self.draw_text(x+2, y+2, width, height, str, align)
  134.     # 恢复原始字色
  135.     self.font.color.set(r,g,b)
  136.     # 绘制原来的字
  137.     self.draw_text(x, y, width, height, str, align)
  138.   end
  139.   # 描边字
  140.   def draw_text_f(x, y, width, height, str, align=0)
  141.     # 保存当前颜色
  142.     r=self.font.color.red
  143.     g=self.font.color.green
  144.     b=self.font.color.blue
  145.     # 颜色更改成黑色
  146.     self.font.color.set(0, 0, 0)
  147.     # 绘制边框
  148.     self.draw_text(x-1, y-1, width, height, str, align)
  149.     self.draw_text(x-1, y+1, width, height, str, align)
  150.     self.draw_text(x+1, y-1, width, height, str, align)
  151.     self.draw_text(x+1, y+1, width, height, str, align)
  152.     self.draw_text(x, y-1, width, height, str, align)
  153.     self.draw_text(x, y+1, width, height, str, align)
  154.     self.draw_text(x-1, y, width, height, str, align)
  155.     self.draw_text(x+1, y, width, height, str, align)
  156.     # 恢复原始字色
  157.     self.font.color.set(r,g,b)
  158.     # 绘制原来的字
  159.     self.draw_text(x, y, width, height, str, align)
  160.     end
  161.   end
复制代码

地名显示段:

  1. #▼▼▼区域,地图,地区名显示▼▼▼ by trentswd
  2. #==============================================================================
  3. # ■ Map_Window
  4. #------------------------------------------------------------------------------
  5. #  游戏中显示地名的窗口。
  6. #=============================================================================
  7. class Map_Window<Window_Base
  8.   #--------------------------------------------------------------------------
  9.   # ● 初始化对象
  10.   #--------------------------------------------------------------------------
  11.   def initialize
  12.     super(-(5+T_m::WIDTH),T_m::MWINDOW_Y,T_m::WIDTH,T_m::HEIGHT)
  13.     self.windowskin = Cache.system(T_m::SKIN)
  14.     create_contents
  15.     self.opacity = 255
  16.     self.contents_opacity = 255
  17.     self.contents.font.name=["华文细黑","STXihei","黑体"]
  18.     @id=$game_map.map_id
  19.     @time=0
  20.     @a_id=$game_player.area_id
  21.     @zone_change=false
  22.     @a_name=""
  23.     @a_name=area_name if @a_id.is_a?(Numeric)
  24.     @preview_not_dis=true
  25.   end
  26.   #--------------------------------------------------------------------------
  27.   # ● 地区标记为改变
  28.   #--------------------------------------------------------------------------
  29.   def zone_change
  30.     @zone_change=true
  31.   end
  32.   #--------------------------------------------------------------------------
  33.   # ● 得到地名
  34.   #--------------------------------------------------------------------------  
  35.   def name(id=$game_map.map_id)
  36.     name=$game_map.name[id].name.split(/@/)[0]
  37.     return name
  38.   end
  39.   #--------------------------------------------------------------------------
  40.   # ● 得到区域名
  41.   #--------------------------------------------------------------------------
  42.   def area_name(id=$game_player.area_id)
  43.     name=$data_areas[id].name.split(/@/)[0]
  44.     return name
  45.   end
  46.   #--------------------------------------------------------------------------
  47.   # ● 得到地区名
  48.   #--------------------------------------------------------------------------
  49.   def zone(id=$game_map.map_id)
  50.     name=$game_map.name[id].name.split(/@/)[1]
  51.     return name
  52.   end
  53.   #--------------------------------------------------------------------------
  54.   # ● 刷新
  55.   #--------------------------------------------------------------------------
  56.   def refresh
  57.     if @a_id!=$game_player.area_id
  58.       @a_id=$game_player.area_id
  59.       if @a_id.is_a?(Numeric) && $game_switches[T_m::Map_W_S] == true && (area_name.split(/,/)[0]!="2"&&area_name.split(/,/)[0]!="6"&&area_name.split(/,/)[0]!="4"&&area_name.split(/,/)[0]!="8")&&self.area_name!=@a_name
  60.         @a_name=self.area_name
  61.         @preview_not_dis=false
  62.         T_m::preview_dis=false
  63.         self.width=[T_m::WIDTH,T_m::TEXT1_SIZE*self.name.size/3+50].max
  64.         if @time==0
  65.           self.x=-5-self.width
  66.         end
  67.         create_contents
  68.         self.contents.font.size=T_m::TEXT1_SIZE
  69.         self.contents.font.color=T_m::TEXT1_COLOR
  70.         self.contents.draw_text(0,0,self.width-32,T_m::TEXT1_SIZE,self.area_name)
  71.         self.contents.font.size=T_m::TEXT2_SIZE
  72.         self.contents.font.color=T_m::TEXT2_COLOR
  73.          self.contents.draw_text(0,T_m::TEXT1_SIZE+2,self.width-32,T_m::TEXT2_SIZE,$game_actors[T_m::ZONE_NUM].name)     
  74. #~         if @time==0
  75.           @time=T_m::IN_TIME+T_m::SHOW_TIME+T_m::FADE_TIME
  76. #~         elsif @time>T_m::SHOW_TIME+T_m::FADE_TIME
  77. #~           @time=@time
  78. #~         elsif @time>T_m::FADE_TIME
  79. #~           @time=T_m::SHOW_TIME+T_m::FADE_TIME
  80. #~         else
  81. #~           @time=T_m::IN_TIME+(-self.width-5-self.x)/(self.width/T_m::IN_TIME)+T_m::SHOW_TIME+T_m::FADE_TIME
  82. #~         end
  83.       elsif $game_switches[T_m::Map_W_S] == true && $game_player.area_id.is_a?(Numeric)==false  
  84.         @a_name=self.name
  85.         if T_m::preview_dis
  86.           T_m::preview_dis=false
  87.         else
  88.         self.width=[T_m::WIDTH,T_m::TEXT1_SIZE*self.name.size/3+50].max
  89.         if @time==0
  90.           self.x=-5-self.width
  91.         end
  92.         create_contents
  93.         self.contents.font.size=T_m::TEXT1_SIZE
  94.         self.contents.font.color=T_m::TEXT1_COLOR
  95.         self.contents.draw_text(0,0,self.width-32,T_m::TEXT1_SIZE,self.name)
  96.         self.contents.font.size=T_m::TEXT2_SIZE
  97.         self.contents.font.color=T_m::TEXT2_COLOR
  98.          self.contents.draw_text(0,T_m::TEXT1_SIZE+2,self.width-32,T_m::TEXT2_SIZE,$game_actors[T_m::ZONE_NUM].name)     
  99. #~         if @time==0
  100.           @time=T_m::IN_TIME+T_m::SHOW_TIME+T_m::FADE_TIME
  101. #~         elsif @time>T_m::SHOW_TIME+T_m::FADE_TIME
  102. #~           @time=@time
  103. #~         elsif @time>T_m::FADE_TIME
  104. #~           @time=T_m::SHOW_TIME+T_m::FADE_TIME
  105. #~         else
  106. #~           @time=T_m::IN_TIME+(-self.width-5-self.x)/(self.width/T_m::IN_TIME)+T_m::SHOW_TIME+T_m::FADE_TIME
  107. #~         end
  108.       end
  109.       end
  110.     end

  111.     if @id!=$game_map.map_id
  112.       self.contents.clear
  113.       @id=$game_map.map_id
  114.       if $game_switches[T_m::Map_W_S] == true
  115.         if @zone_change == true
  116.           if self.zone==nil || self.zone==""
  117.           else
  118.             $game_actors[T_m::ZONE_NUM].name=self.zone
  119.           end
  120.         end
  121.         self.width=[T_m::WIDTH,T_m::TEXT1_SIZE*self.name.size/3+50].max
  122.         if @time==0
  123.           self.x=-5-self.width
  124.         end
  125.         create_contents
  126.         self.contents.font.size=T_m::TEXT1_SIZE
  127.         self.contents.font.color=T_m::TEXT1_COLOR
  128.         if $game_player.area_id.is_a?(Numeric)
  129.           mapname=self.area_name if (self.area_name!= nil && self.area_name!= "")
  130.         else
  131.           mapname=self.name
  132.         end
  133.         self.contents.draw_text(0,0,self.width-32,T_m::TEXT1_SIZE,mapname)
  134.         self.contents.font.size=T_m::TEXT2_SIZE
  135.         self.contents.font.color=T_m::TEXT2_COLOR
  136.         self.contents.draw_text(0,T_m::TEXT1_SIZE+2,self.width-32,T_m::TEXT2_SIZE,$game_actors[T_m::ZONE_NUM].name)     
  137. #~         if @time==0
  138.           @time=T_m::IN_TIME+T_m::SHOW_TIME+T_m::FADE_TIME
  139. #~         elsif @time>T_m::SHOW_TIME+T_m::FADE_TIME
  140. #~           @time=@time
  141. #~         elsif @time>T_m::FADE_TIME
  142. #~           @time=T_m::SHOW_TIME+T_m::FADE_TIME
  143. #~         else  
  144. #~           @time=T_m::IN_TIME+(-self.width-5-self.x)/(self.width/T_m::IN_TIME)+T_m::SHOW_TIME+T_m::FADE_TIME
  145. #~         end
  146.       end
  147.     end
  148.     if @direct==1
  149.       self.contents.clear
  150.       self.width=[T_m::WIDTH,T_m::TEXT1_SIZE*self.name.size/3+50].max
  151.       if @time==0
  152.         self.x=-5-self.width
  153.       end
  154.       create_contents
  155.       self.contents.font.size=T_m::TEXT1_SIZE
  156.       self.contents.font.color=T_m::TEXT1_COLOR
  157.       dname=@a_name
  158.       self.contents.draw_text(0,0,self.width-32,T_m::TEXT1_SIZE,dname)
  159.       self.contents.font.size=T_m::TEXT2_SIZE
  160.       self.contents.font.color=T_m::TEXT2_COLOR
  161.       self.contents.draw_text(0,T_m::TEXT1_SIZE+2,self.width-32,T_m::TEXT2_SIZE,$game_actors[T_m::ZONE_NUM].name)     
  162.       @time=T_m::IN_TIME+T_m::SHOW_TIME+T_m::FADE_TIME
  163.       @direct=0
  164.     end
  165.     if @time>T_m::SHOW_TIME+T_m::FADE_TIME
  166.       self.opacity = 255*(T_m::IN_TIME+T_m::SHOW_TIME+T_m::FADE_TIME-@time)/(T_m::IN_TIME-1)
  167.       self.contents_opacity = 255*(T_m::IN_TIME+T_m::SHOW_TIME+T_m::FADE_TIME-@time)/(T_m::IN_TIME-1)
  168.       self.x = -self.width-5+self.width*(T_m::IN_TIME+T_m::SHOW_TIME+T_m::FADE_TIME-@time)/(T_m::IN_TIME-1)
  169.       @time-=1
  170.     elsif @time>T_m::FADE_TIME
  171.       @time-=1
  172.     elsif @time>0
  173.       self.opacity = 255*(@time-1)/(T_m::FADE_TIME-1)
  174.       self.contents_opacity = 255*(@time-1)/(T_m::FADE_TIME-1)
  175.       self.x = -self.width-5+self.width*(@time-1)/(T_m::FADE_TIME-1)
  176.       @time-=1
  177.     else
  178.       self.opacity = 0
  179.       self.contents_opacity = 0
  180.       self.x = -self.width-5
  181.     end
  182.    end
  183.   #--------------------------------------------------------------------------
  184.   # ● 直接显示
  185.   #--------------------------------------------------------------------------
  186.   def d_display
  187.     @direct=1
  188.   end
  189. end

  190. #==============================================================================
  191. # ■ Scene_Map
  192. #------------------------------------------------------------------------------
  193. #  对Scene_Map的追加定义。
  194. #==============================================================================

  195. class Scene_Map < Scene_Base  
  196.   def map_window
  197.     return @map_window
  198.   end
  199.   def zone_window
  200.     return @zone_window
  201.   end
  202.   #--------------------------------------------------------------------------
  203.   # ● 开始处理时建立对象
  204.   #--------------------------------------------------------------------------
  205.   alias _start start
  206.   def start
  207.     @map_window = Map_Window.new
  208.     @zone_window = Zone_Window.new
  209.     _start
  210.   end
  211.   #--------------------------------------------------------------------------
  212.   # ● 释放时释放对象
  213.   #--------------------------------------------------------------------------
  214.   alias _terminate terminate
  215.   def terminate
  216.     @map_window.dispose
  217.     @zone_window.dispose
  218.     _terminate
  219.   end
  220.   #--------------------------------------------------------------------------
  221.   # ● 刷新时刷新对象
  222.   #--------------------------------------------------------------------------
  223.   alias _update update
  224.   def update
  225.     @zone_window.refresh
  226.     @map_window.refresh
  227.     _update
  228.   end
  229.   #--------------------------------------------------------------------------
  230.   # ● 标记为地区已改变(这个参数传递的很囧我承认)
  231.   #--------------------------------------------------------------------------
  232.   def zone_change
  233.     @map_window.zone_change
  234.   end   
  235. end
  236. #==============================================================================
  237. # ■ Zone_Window
  238. #------------------------------------------------------------------------------
  239. #  显示地区名的类
  240. #=============================================================================
  241. class Zone_Window<Window_Base
  242.   #--------------------------------------------------------------------------
  243.   # ● 新建对象初始化
  244.   #--------------------------------------------------------------------------  
  245.   def initialize
  246.     super(0,0,50,50)
  247.     create_contents
  248.     self.opacity = 0
  249.     self.contents_opacity = 0
  250.     @time=0
  251.     self.contents.font.shadow = false
  252.   end
  253.   #--------------------------------------------------------------------------
  254.   # ● 直接显示
  255.   #--------------------------------------------------------------------------
  256.   def d_display
  257.     @direct=1
  258.   end
  259.   #--------------------------------------------------------------------------
  260.   # ● 得到地区名
  261.   #--------------------------------------------------------------------------
  262.   def zone(id=$game_map.map_id)
  263.     name=$data_areas[$game_player.area_id].name.split(/@/)[1] if $game_player.area_id.is_a?(Numeric)
  264.     if name==nil || name==""
  265.       name=$game_map.name[id].name.split(/@/)[1]
  266.     end
  267. #~     p name
  268.     return name
  269.   end
  270.   #--------------------------------------------------------------------------
  271.   # ● 得到地区英文名
  272.   #--------------------------------------------------------------------------
  273.   def zonee(id=$game_map.map_id)
  274.     name=$game_map.name[id].name.split(/@/)[2]
  275.     if $game_player.area_id.is_a?(Numeric)
  276.       if $data_areas[$game_player.area_id].name.split(/@/)[1]!=nil &&
  277.         $data_areas[$game_player.area_id].name.split(/@/)[1]!=""
  278.         name=$data_areas[$game_player.area_id].name.split(/@/)[2]
  279.       end
  280.     end
  281.     name="" if name==nil
  282.     return name
  283.   end
  284.   #--------------------------------------------------------------------------
  285.   # ● 描绘中文名
  286.   #--------------------------------------------------------------------------
  287.   def drawtext(x)
  288.     self.contents.font.name=["华文中宋","STZhongsong","宋体","黑体"]
  289.     self.contents.font.size=36
  290.     self.contents.font.shadow=false
  291.     self.contents.font.color=Color.new(255,255,255)
  292.     self.contents.draw_text_f(x,0,self.contents.width,36,@text)
  293.   end
  294.   #--------------------------------------------------------------------------
  295.   # ● 描绘英文名
  296.   #--------------------------------------------------------------------------
  297.   def drawtexten(x)
  298.     self.contents.font.name=["Copperplate Gothic Light"]
  299.     self.contents.font.size=12
  300.     self.contents.font.shadow=false
  301.     self.contents.font.color=Color.new(255,255,255)
  302.     self.contents.draw_text_f(x,49,self.contents.width,12,@texten)
  303.   end
  304.   #--------------------------------------------------------------------------
  305.   # ● 描绘横线
  306.   #--------------------------------------------------------------------------
  307.   def drawline
  308.     self.contents.fill_rect(self.contents.width-5-@textw-1, 40, @textw+2, 5, Color.new(0,0,0,255))
  309.     self.contents.fill_rect(self.contents.width-5-@textw, 41, @textw, 3, Color.new(255,255,255,255))   
  310.   end
  311.   #--------------------------------------------------------------------------
  312.   # ● 刷新
  313.   #--------------------------------------------------------------------------
  314.   def refresh
  315.     if (self.zone != $game_actors[T_m::ZONE_NUM].name && self.zone != "" && self.zone != nil)||@direct==1
  316.       $game_actors[T_m::ZONE_NUM].name=self.zone
  317.       $scene.zone_change
  318.       if ($game_switches[T_m::ZONE_W_S] == true)|| @direct==1
  319.         @text=self.zone
  320.         @texten=self.zonee
  321.         @[email protected]*36/3
  322.         @[email protected]*6
  323.         @textw=[@textl,@textenl].max+24
  324.         @l=@textw/12
  325.         self.x=T_m::VX_W-@textw-@textl-5-16
  326.         self.y=0
  327.         self.width=@textw+@textl+5+32
  328.         self.height=32+12+12+36
  329.         @time=T_m::Z_IN_TIME+T_m::Z_SHOW_TIME+T_m::Z_FADE_TIME
  330.         @direct=0
  331.         create_contents
  332.       end
  333.     end
  334.     if @time>T_m::Z_SHOW_TIME+T_m::Z_FADE_TIME
  335.       self.contents_opacity = 255*(T_m::Z_IN_TIME+T_m::Z_SHOW_TIME+T_m::Z_FADE_TIME-@time)/(T_m::Z_IN_TIME-1)
  336.       drawline
  337.       if @time%2==1
  338.         self.contents.clear
  339.         drawline
  340.         drawtext((self.contents.width-5-(@textw-@textl)/2-@textl)*(T_m::Z_IN_TIME+T_m::Z_SHOW_TIME+T_m::Z_FADE_TIME-@time)/(T_m::Z_IN_TIME-1))
  341.         drawtexten(self.contents.width-(5+(@textw-@textenl)/2+@textenl)*(T_m::Z_IN_TIME+T_m::Z_SHOW_TIME+T_m::Z_FADE_TIME-@time)/(T_m::Z_IN_TIME-1))
  342.       end
  343.       @time-=1
  344.     elsif @time>T_m::Z_FADE_TIME
  345.       @time-=1
  346.     elsif @time>0
  347.       self.contents_opacity = 255*(@time-1)/(T_m::Z_FADE_TIME-1)
  348.       if @time%2==1
  349.         self.contents.clear
  350.         drawline
  351.         drawtext(self.contents.width-(5+(@textw-@textl)/2+@textl)*(@time-1)/(T_m::Z_FADE_TIME-1))
  352.         drawtexten((self.contents.width-5-(@textw-@textenl)/2-@textenl)*(@time-1)/(T_m::Z_FADE_TIME-1))
  353.         self.contents.blur
  354.       end
  355.       @time-=1
  356.     else
  357.       self.opacity=0
  358.       self.contents_opacity=0
  359.     end
  360.   end
  361. end
复制代码
可能需要的物件:
我预先做好的系统图。请解压在Graphics/system中。也可以自行替换。
文件名可在脚本中定义
http://rpg.blue/UP_PIC/200801/System_102597267.rar

范例工程
我懒了下……没做……

[LINE]1,#dddddd[/LINE]
历史版本
[LINE]1,#dddddd[/LINE]

8.29更新
少写一个@问题……囧
感谢小幽提出……
同时感谢他的脚本速查手册……

范例工程:
http://rpg.blue/UP_PIC/200801/地名范例.rar


感谢Beside的同类脚本,中期给了我许多参考。(获得area_id的方法就是照搬的……)
感谢绿梨子红苹果的描边字脚本
感谢胃画的地图……军训辛苦了

作者: 光郎    时间: 2008-8-27 03:56
支持……我想在我的游戏中使用……
作者: trentswd    时间: 2008-8-27 20:13
以下引用zh99998于2008-8-27 7:46:00的发言:


占第八用号角色名存储地区名
你为什么不用全局变量……

全局变量不会保存到存档里吧
我又不想改变存档的结构……
作者: 越前リョーマ    时间: 2008-8-27 20:26
效果很好,
很华丽。
作者: Beside    时间: 2008-8-27 20:49
一个脚本三个人写= =
作者: trentswd    时间: 2008-8-27 21:06
有现成的就用了……
LS的脚本给了我很多启发,拜谢(天音:囧……你好意思说)
作者: Fantasy幻想    时间: 2008-8-27 21:40
支持个……虽说我还不是很明白怎么使用……拿走自己研究去
作者: 喵喵の黄昏    时间: 2008-8-27 21:55
提示: 作者被禁止或删除 内容自动屏蔽
作者: trentswd    时间: 2008-8-30 01:47
更新一个很弱智但是很致命的错误……OTZ
作者: 剑在天涯    时间: 2008-8-30 04:06
怎样用呀,我是新手。只需要在切换地区的地图设置地区名即可,详细请看范例。
占用1号2号开关,占第八用号角色名存储地区名,具体可以在脚本中修改。
这是什么意思呀
作者: Cidolfus    时间: 2008-8-30 04:45
提示: 作者被禁止或删除 内容自动屏蔽
作者: 剑在天涯    时间: 2008-8-30 17:12
还是不明白,为什么在范例工程中把主角的初期位置弄在别的地图上,怎么没有显示了
作者: 剑在天涯    时间: 2008-8-30 17:29
貌似是我脑残了,先要开个开关。。。。
作者: 小幽的马甲    时间: 2008-9-1 00:58
@time=@time
这是何等的囧啊……
作者: trentswd    时间: 2008-9-1 05:08
在我看来比空语句好看OTZ
作者: 风雪优游    时间: 2008-9-1 19:38
这个范例做得相当好。
作者: trentswd    时间: 2008-9-1 21:26
十分感谢TAT
作者: 精灵使者    时间: 2008-9-2 08:55
收走了,以后肯定会用到。
作者: 精灵使者    时间: 2008-9-2 16:06
以下引用trentswd于2008-8-27 12:13:39的发言:


以下引用zh99998于2008-8-27 7:46:00的发言:


占第八用号角色名存储地区名
你为什么不用全局变量……


全局变量不会保存到存档里吧
我又不想改变存档的结构……

全局变量可以保存存档。
只要重新定义一下save_data部分和load_data部分就好。
作者: cheyenne    时间: 2008-9-2 17:00
拜托了精灵,猫说过了他不想改存档部分…
作者: 沉影不器    时间: 2008-9-2 21:45
提示: 作者被禁止或删除 内容自动屏蔽
作者: trentswd    时间: 2008-9-3 04:06
嗯,谢谢……下次试试看……
作者: 做游戏的新手    时间: 2008-9-5 02:19
不错NIA
我收下了
作者: 精灵使者    时间: 2008-9-5 02:32
精灵:发现一个问题,如果传送到一个区域以内的话不会显示传送的区域名,而会显示默认的区域外的名字……OTL……希望赶快修正。
另外,能不能自己定义区域的名称?据说地区名称和英文名都可以用名字定义,其他的都能用名字定义么?
还有,开关打开以后能不能立刻应用地图名显示呢?只有开关打开以后走到下个地图才显示地图名。
作者: trentswd    时间: 2008-9-5 04:21
以下引用精灵使者于2008-9-4 18:32:48的发言:

精灵:发现一个问题,如果传送到一个区域以内的话不会显示传送的区域名,而会显示默认的区域外的名字……OTL……希望赶快修正。
另外,能不能自己定义区域的名称?据说地区名称和英文名都可以用名字定义,其他的都能用名字定义么?
还有,开关打开以后能不能立刻应用地图名显示呢?只有开关打开以后走到下个地图才显示地图名。

第一个问题……OTL是判断的优先级问题貌似……考试完看看……
第二个问题……自定义?看着工程里面的方法就可以自定义啊……
其实就是用split切地图名返回一个字符串数组……
第三个,因为只有地图名改变的时候才会显示地名,改一下if语句就可以了,记录原来的开关的状态,如果改变,就什么什么

作者: 精灵使者    时间: 2008-9-5 05:33
以下引用trentswd于2008-9-4 20:21:47的发言:


以下引用精灵使者于2008-9-4 18:32:48的发言:

精灵:发现一个问题,如果传送到一个区域以内的话不会显示传送的区域名,而会显示默认的区域外的名字……OTL……希望赶快修正。
另外,能不能自己定义区域的名称?据说地区名称和英文名都可以用名字定义,其他的都能用名字定义么?
还有,开关打开以后能不能立刻应用地图名显示呢?只有开关打开以后走到下个地图才显示地图名。


第一个问题……OTL是判断的优先级问题貌似……考试完看看……
第二个问题……自定义?看着工程里面的方法就可以自定义啊……
其实就是用split切地图名返回一个字符串数组……
第三个,因为只有地图名改变的时候才会显示地名,改一下if语句就可以了,记录原来的开关的状态,如果改变,就什么什么



[本贴由作者于 2008-9-4 20:26:27 最后编辑]

我说的意思是,能不能不用区域名称,自己定义显示的位置(有的时候这个还挺重要),或者使用某些角色的名字?这样可以直接代入名称或者使用文字输出
作者: trentswd    时间: 2008-9-5 06:20
我说的意思是,能不能不用区域名称,自己定义显示的位置(有的时候这个还挺重要),或者使用某些角色的名字?这样可以直接代入名称或者使用文字输出
=====
直接改属性就可以了。@XXX=XXX
作者: 精灵使者    时间: 2008-9-5 06:42
可否具体的给一个例子呢?
例如,如果把这个地图的显示属性改为某个名字,在事件里应该写什么脚本?
作者: trentswd    时间: 2008-9-5 06:54
事件里直接写大概是不行……
要改脚本……
把@map_window
    @zone_window
都改成$
然后在类里面设定属性为可写……
然后就直接$map_window.xxx=xxx
还是太麻烦了……
下次有时间改进一下……
作者: 精灵使者    时间: 2008-9-5 07:19
地区名可以直接用更改8号名称就可以办到,我已经实现了……给你提示。
作者: trentswd    时间: 2008-9-5 07:37
地区名确实直接改名就能实现,我是说地图名OTZ
作者: 精灵使者    时间: 2008-9-5 07:39
以下引用trentswd于2008-9-4 23:37:31的发言:

地区名确实直接改名就能实现,我是说地图名OTZ

嗯嗯。我仅仅是给你抛砖引玉。
如果地图名能设置成和地区名一样可以这样命名就可以了。
这样不止可以用于改名,也可以用于文章中用/n[8]输出。
作者: 浩气青天    时间: 2008-9-11 05:48
很华丽的说。
作者: 匈魔剑    时间: 2008-9-18 04:20
啊,作为这个脚本的第一批试验者,我居然都没来回帖支持,真是不厚道。
这个脚本真是超·华丽。满足了许多懒得用事件和图片做地名显示的人~~
添补了VX在这方面的一个空白,
实在是天地之精华,道德之奇葩。
……
如果哪天我也懒了,就会把楼主……我是说楼主写的这个脚本给抱走赏玩之~~~{/hx}
支持TT~~~
作者: trentswd    时间: 2008-9-18 05:17
你咋不说省了很多空间和时间= =+

我看了LS的回复后整个人都OTZ……

不过马上就要更新了……解决了些隐形bug和精灵说的问题……还要几天吧……
(喂!这么简单的东西你都要几天!)
作者: 精灵使者    时间: 2008-9-18 23:28
如果有更新的话就太好了……
其实我正需要这类的脚本呢。
如果更新的更好的话我游戏里就可能要用
作者: MH穷奇    时间: 2008-9-19 00:25
提示: 作者被禁止或删除 内容自动屏蔽
作者: 轮回者    时间: 2008-9-19 15:48
可以的话,换一下窗口Skin和字体吧
作者: drgdrg    时间: 2008-9-19 17:11
这效果看着蛮舒服的!{/qiang}


和沉影的那个各有千秋
作者: trentswd    时间: 2008-9-19 22:28
以下引用轮回者于2008-9-19 7:48:29的发言:

可以的话,换一下窗口Skin和字体吧

skin不可以自己换么……
作者: 精灵使者    时间: 2008-9-19 22:38
很多情况下地区名有的时候在不同风格的地图里会用到,但是不规则形的地区必须分解为多个不同的地区,相同的地区名。里面最好不显示,建议楼主也好好的修改下。
作者: trentswd    时间: 2008-9-22 02:27
已经更新……感谢各位支持和建议……
作者: 精灵使者    时间: 2008-9-22 04:23
谢谢~其实这个脚本比沉影的脚本好得多了~恩恩。
作者: 穗草芽    时间: 2008-9-22 21:06
提示: 作者被禁止或删除 内容自动屏蔽
作者: 御灵    时间: 2008-9-28 07:48
发布页面:
http://rpg.blue/web/htm/news1168.htm
vip+3
作者: 我想被发卡    时间: 2008-9-30 03:02
提示: 作者被禁止或删除 内容自动屏蔽
作者: 仙剑乐逍遥    时间: 2008-9-30 22:26
提示: 作者被禁止或删除 内容自动屏蔽
作者: 天地苍穹    时间: 2008-10-9 21:15
老板。。。。小弟有一个问题。。。

我的地图名(右上角那个)只会在第一次显示。。。
过后再也不会出现。。。
为什么会这样???


我解决了= =|||
果然是地图@区域@英文
这个没有设定好的关系。。。
抱歉抱歉= =
作者: 天地苍穹    时间: 2008-10-9 21:26
问题解决了= =
原来是自己没有照着公式排列好。。。。


这回发现了地图显示的功能出错了= =|||
作者: trentswd    时间: 2008-10-10 02:16
嗯?哪里出错了?截个图……
作者: zhanghao    时间: 2008-11-8 18:39
放了脚本进去了,但没出现???
作者: 涛怒    时间: 2008-12-5 01:25
做的真不错~ [LINE]1,#dddddd[/LINE]版主对此帖的评论:『请不要挖坟』,积分『-10』。这些被扣积分的一半会用于对本帖正确答案的悬赏。
作者: trentswd    时间: 2008-12-5 08:40
浮上来了囧……
话说没有效果请打开相关开关
作者: diablo2x    时间: 2009-5-27 22:54
關於這個腳本
敝人覺得做的不錯
不過這邊還有個問題

在切換地圖、要顯示地圖名的時候
遊戲會lag
這個問題有沒有得解= =??
作者: trentswd    时间: 2009-6-11 05:50
lag?这是啥?
如果会卡的话……{/pz}我也没啥办法,只能找个好点的电脑囧
作者: 精灵使者    时间: 2009-6-11 06:12
以下引用trentswd于2009-6-10 21:50:42的发言:

lag?这是啥?
如果会卡的话……我也没啥办法,只能找个好点的电脑囧

lag就是游戏延迟非常严重,也就是我们说的卡
作者: zh99998    时间: 2009-6-12 08:00
占第八用号角色名存储地区名
你为什么不用全局变量……
作者: trentswd    时间: 2009-6-13 05:11
话说为何几天没来论坛变成了Discuz了……囧囧囧
你为什么不用全局变量……
zh99998 发表于 2009-6-12 08:00

当初是因为不想改变存档的格式。不过这还是去年写的,具体的都忘了= =~
作者: 蔚蓝的海洋    时间: 2009-7-2 19:31
请问使用该脚本时出现“No Method Error”,“Undefined method “name”  for nil:nilclass”这个错误该如何解决?我使用了其他的不少的脚本,会不会有冲突?(有“新菜单样式”、“迷你地图”、“游戏结束字幕”、“No Bush Depth”、“(新)显示NPC名和图标(沉影)”、“vx呼出对话框”、“VX默认CP战斗”、“趙雲血条”、“详尽任务系统”、“多定时器”、“商店系统强化版”,拜托给个解决办法啦,拜托了555······)
作者: bao9053    时间: 2009-7-12 08:09
提示: 作者被禁止或删除 内容自动屏蔽
作者: bao9053    时间: 2009-7-16 08:58
提示: 作者被禁止或删除 内容自动屏蔽
作者: 魔法师沃特    时间: 2009-8-6 10:09
提示: 作者被禁止或删除 内容自动屏蔽
作者: DeathKing    时间: 2009-8-22 10:20
哦,既然更新了,就华丽的抱走
作者: death_loong    时间: 2010-4-17 23:03
hoho  很不错的东西啊
作者: s554187203    时间: 2010-8-10 14:23
就是好用,为了测试功能,我 用了很长时间的说~
作者: 不是马甲    时间: 2010-8-12 08:17
顶  好东西




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