设为首页收藏本站|繁體中文

Project1

 找回密码
 注册会员
搜索
查看: 3229|回复: 10
打印 上一主题 下一主题

[已经解决] RMVX 地名提醒脚本求助

[复制链接]

Lv1.梦旅人

梦石
0
星屑
51
在线时间
1 小时
注册时间
2010-7-21
帖子
180
跳转到指定楼层
1
发表于 2010-7-21 20:07:49 | 只看该作者 |只看大图 回帖奖励 |倒序浏览 |阅读模式

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

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

x
  1. #▼▼▼通用变量、方法、模块、类▼▼▼
  2. #==============================================================================
  3. # ■ (模块)T_m
  4. #------------------------------------------------------------------------------
  5. #  用来存储常用常量
  6. #=============================================================================
  7. module T_m
  8.   #-----------------------------------------------------------------------------
  9.   # ● 地名窗口常量
  10.   #-----------------------------------------------------------------------------
  11.   #▼地名窗口
  12.   WIDTH = 150                                   # 窗口宽度最小值      
  13.   IN_TIME = 35                                  # 窗口出现时间
  14.   SHOW_TIME = 180                                # 窗口显示时间
  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
复制代码

Lv1.梦旅人

梦石
0
星屑
51
在线时间
1 小时
注册时间
2010-7-21
帖子
180
2
 楼主| 发表于 2010-7-21 20:10:07 | 只看该作者
额,我只有开头的时候可以用!有效一次之后就无效了,还有右上角的不行。

我是用“场所移动”命令的。

就这一次有效,之后都不行了!

论坛君不要傲娇,我爱你~
回复 支持 反对

使用道具 举报

Lv1.梦旅人

梦石
0
星屑
65
在线时间
433 小时
注册时间
2007-5-1
帖子
993
3
发表于 2010-7-21 20:48:13 | 只看该作者
本帖最后由 水镜风生 于 2010-7-21 20:50 编辑

24行地名显示:
Map_W_S=1                                     # 控制是否显示的开关


29行地区名显示:
ZONE_W_S=2                                     # 控制是否显示开关


1、2号开关不要随便用好了……


嗯,不能浪费签名了,打广告。本人的悲剧作品:
坑化游戏《龙之影》      R剧《星空》     小游戏《剑与拳头》
回复 支持 反对

使用道具 举报

Lv1.梦旅人

梦石
0
星屑
51
在线时间
1 小时
注册时间
2010-7-21
帖子
180
4
 楼主| 发表于 2010-7-21 21:26:47 | 只看该作者
OK。我试试~
回复 支持 反对

使用道具 举报

Lv1.梦旅人

梦石
0
星屑
51
在线时间
1 小时
注册时间
2010-7-21
帖子
180
5
 楼主| 发表于 2010-7-21 21:30:23 | 只看该作者
本帖最后由 wingtang5 于 2010-7-21 21:37 编辑

回复 水镜风生 的帖子

不行呵,还是没有用~求DX指引.
http://rpg.blue/forum.php?mod=viewthread&tid=100870

   
回复 支持 反对

使用道具 举报

Lv1.梦旅人

梦石
0
星屑
51
在线时间
1 小时
注册时间
2010-7-21
帖子
180
6
 楼主| 发表于 2010-7-21 21:39:53 | 只看该作者
  1. #▼▼▼区域,地图,地区名显示▼▼▼ by trentswd
  2. #-----------------------------------------------------------------------------
  3. # ● 常量
  4. #-----------------------------------------------------------------------------
  5. #▼地名窗口
  6. WIDTH = 150                                   # 窗口宽度最小值      
  7. IN_TIME = 20                                  # 窗口出现时间
  8. SHOW_TIME = 60                                # 窗口显示时间
  9. FADE_TIME = 30                                # 窗口淡去时间
  10. TEXT1_SIZE = 19                               # 地图名,区域名的字体大小
  11. TEXT2_SIZE = 13                               # 地区名的字体大小
  12. TEXT1_COLOR = Color.new(255,255,255)          # 地图名,区域名的默认颜色
  13. TEXT2_COLOR = Color.new(255,60,60)            # 地区名的默认颜色
  14. SKIN = "red-grey"                             # 窗口皮肤的文件名
  15. VX_H = 416                                    # VX窗口高度
  16. VX_W = 544                                    # VX窗口宽度
  17. ZONE_NUM =8                                   # 地区名占用角色名的编号
  18. Map_W_S=1                                     # 控制是否显示的开关
  19. #▼地区名窗口
  20. Z_IN_TIME = 30                                 # 窗口出现时间
  21. Z_SHOW_TIME = 70                               # 窗口显示时间
  22. Z_FADE_TIME = 30                               # 窗口淡去时间
  23. ZONE_W_S=2                                     # 控制是否显示开关


  24. #▼计算
  25. HEIGHT = TEXT1_SIZE + TEXT2_SIZE + 34         # 窗口高度
  26. MWINDOW_Y = VX_H - HEIGHT - 16                # 窗口Y坐标


  27. #==============================================================================
  28. # ■ Game_Map
  29. #------------------------------------------------------------------------------
  30. #  对Game_Map类的追加定义。
  31. #=============================================================================
  32. class Game_Map
  33.   #--------------------------------------------------------------------------
  34.   # ● 获取所在场景名称
  35.   #--------------------------------------------------------------------------
  36.   def name
  37.       load_data("Data/MapInfos.rvdata")
  38.   end
  39. end

  40. #==============================================================================
  41. # ■ Map_Window
  42. #------------------------------------------------------------------------------
  43. #  游戏中显示地名的窗口。
  44. #=============================================================================
  45. class Map_Window<Window_Base
  46.   #--------------------------------------------------------------------------
  47.   # ● 初始化对象
  48.   #--------------------------------------------------------------------------
  49.   def initialize
  50.     super(-(5+WIDTH),MWINDOW_Y,WIDTH,HEIGHT)
  51.     self.windowskin = Cache.system(SKIN)
  52.     create_contents
  53.     self.opacity = 255
  54.     self.contents_opacity = 255
  55.     self.contents.font.name=["华文细黑","STXihei","黑体"]
  56.     @id=$game_map.map_id
  57.     @time=0
  58.     @a_id=$game_player.area_id
  59.     @zone_change=false
  60.   end
  61.   #--------------------------------------------------------------------------
  62.   # ● 覆盖定义contents(其实没有用囧)
  63.   #--------------------------------------------------------------------------
  64.   def create_contents
  65.     self.contents.dispose
  66.     self.contents = Bitmap.new(width-32, height-32)
  67.   end
  68.   #--------------------------------------------------------------------------
  69.   # ● 地区标记为改变
  70.   #--------------------------------------------------------------------------
  71.   def zone_change
  72.     @zone_change=true
  73.   end
  74.   #--------------------------------------------------------------------------
  75.   # ● 得到地名
  76.   #--------------------------------------------------------------------------  
  77.   def name(id=$game_map.map_id)
  78.     name=$game_map.name[id].name.split(/@/)[0]
  79.     return name
  80.   end
  81.   #--------------------------------------------------------------------------
  82.   # ● 得到区域名
  83.   #--------------------------------------------------------------------------
  84.   def area_name(id=$game_player.area_id)
  85.     name=$data_areas[id].name
  86.     return name
  87.   end
  88.   #--------------------------------------------------------------------------
  89.   # ● 得到地区名
  90.   #--------------------------------------------------------------------------
  91.   def zone(id=$game_map.map_id)
  92.     name=$game_map.name[id].name.split(/@/)[1]
  93.     return name
  94.   end
  95.   #--------------------------------------------------------------------------
  96.   # ● 刷新
  97.   #--------------------------------------------------------------------------
  98.   def refresh
  99.     if @a_id!=$game_player.area_id
  100.       @a_id=$game_player.area_id
  101.       if @a_id.is_a?(Numeric) && $game_switches[Map_W_S] == true
  102.         self.width=[WIDTH,TEXT1_SIZE*self.name.size/3+50].max
  103.         if @time==0
  104.           self.x=-5-self.width
  105.         end
  106.         create_contents
  107.         self.contents.font.size=TEXT1_SIZE
  108.         self.contents.font.color=TEXT1_COLOR
  109.         self.contents.draw_text(0,0,self.width-32,TEXT1_SIZE,self.area_name)
  110.         self.contents.font.size=TEXT2_SIZE
  111.         self.contents.font.color=TEXT2_COLOR
  112.          self.contents.draw_text(0,TEXT1_SIZE+2,self.width-32,TEXT2_SIZE,$game_actors[ZONE_NUM].name)     
  113.         if @time==0
  114.           @time=IN_TIME+SHOW_TIME+FADE_TIME
  115.         elsif @time>SHOW_TIME+FADE_TIME
  116.           @time=@time
  117.         elsif @time>FADE_TIME
  118.           @time=SHOW_TIME+FADE_TIME
  119.         else
  120.           @time=IN_TIME+(-self.width-5-self.x)/(self.width/IN_TIME)+SHOW_TIME+FADE_TIME
  121.         end
  122.       elsif $game_switches[Map_W_S] == true
  123.         self.width=[WIDTH,TEXT1_SIZE*self.name.size/3+50].max
  124.         if @time==0
  125.           self.x=-5-self.width
  126.         end
  127.         create_contents
  128.         self.contents.font.size=TEXT1_SIZE
  129.         self.contents.font.color=TEXT1_COLOR
  130.         self.contents.draw_text(0,0,self.width-32,TEXT1_SIZE,self.name)
  131.         self.contents.font.size=TEXT2_SIZE
  132.         self.contents.font.color=TEXT2_COLOR
  133.          self.contents.draw_text(0,TEXT1_SIZE+2,self.width-32,TEXT2_SIZE,$game_actors[ZONE_NUM].name)     
  134.         if @time==0
  135.           @time=IN_TIME+SHOW_TIME+FADE_TIME
  136.         elsif @time>SHOW_TIME+FADE_TIME
  137.           @time=time
  138.         elsif @time>FADE_TIME
  139.           @time=SHOW_TIME+FADE_TIME
  140.         else
  141.           @time=IN_TIME+(-self.width-5-self.x)/(self.width/IN_TIME)+SHOW_TIME+FADE_TIME
  142.         end
  143.       end
  144.     end

  145.     if @id!=$game_map.map_id
  146.       self.contents.clear
  147.       @id=$game_map.map_id
  148.       if $game_switches[Map_W_S] == true
  149.         if @zone_change == true
  150.           if self.zone==nil
  151.           else
  152.             $game_actors[ZONE_NUM].name=self.zone
  153.           end
  154.         end
  155.         self.width=[WIDTH,TEXT1_SIZE*self.name.size/3+50].max
  156.         if @time==0
  157.           self.x=-5-self.width
  158.         end
  159.         create_contents
  160.         self.contents.font.size=TEXT1_SIZE
  161.         self.contents.font.color=TEXT1_COLOR
  162.         self.contents.draw_text(0,0,self.width-32,TEXT1_SIZE,self.name)
  163.         self.contents.font.size=TEXT2_SIZE
  164.         self.contents.font.color=TEXT2_COLOR
  165.         self.contents.draw_text(0,TEXT1_SIZE+2,self.width-32,TEXT2_SIZE,$game_actors[ZONE_NUM].name)     
  166.         if @time==0
  167.           @time=IN_TIME+SHOW_TIME+FADE_TIME
  168.         elsif @time>SHOW_TIME+FADE_TIME
  169.           @time=@time
  170.         elsif @time>FADE_TIME
  171.           @time=SHOW_TIME+FADE_TIME
  172.         else  
  173.           @time=IN_TIME+(-self.width-5-self.x)/(self.width/IN_TIME)+SHOW_TIME+FADE_TIME
  174.         end
  175.       end
  176.     end
  177.     if @time>SHOW_TIME+FADE_TIME
  178.       self.opacity = 255*(IN_TIME+SHOW_TIME+FADE_TIME-@time)/(IN_TIME-1)
  179.       self.contents_opacity = 255*(IN_TIME+SHOW_TIME+FADE_TIME-@time)/(IN_TIME-1)
  180.       self.x = -self.width-5+self.width*(IN_TIME+SHOW_TIME+FADE_TIME-@time)/(IN_TIME-1)
  181.       @time-=1
  182.     elsif @time>FADE_TIME
  183.       @time-=1
  184.     elsif @time>0
  185.       self.opacity = 255*(@time-1)/(FADE_TIME-1)
  186.       self.contents_opacity = 255*(@time-1)/(FADE_TIME-1)
  187.       self.x = -self.width-5+self.width*(@time-1)/(FADE_TIME-1)
  188.       @time-=1
  189.     else
  190.       self.opacity = 0
  191.       self.contents_opacity = 0
  192.       self.x = -self.width-5
  193.     end
  194.    end
  195.   #--------------------------------------------------------------------------
  196.   # ● 直接显示
  197.   #--------------------------------------------------------------------------
  198.   def d_display
  199.     @time=IN_TIME+SHOW_TIME+FADE_TIME
  200.     self.opacity = 0
  201.     self.contents_opacity = 0
  202.     self.x = -self.width-5
  203.   end
  204. end

  205. #==============================================================================
  206. # ■ Game_Character
  207. #------------------------------------------------------------------------------
  208. #  判断当前人物所在区域id(by beside)。
  209. #=============================================================================
  210. class Game_Character
  211.   def area_id
  212.     for area in $data_areas.values
  213.      if in_area?(area)
  214.      return area.id
  215.      end
  216.     end
  217.   end
  218. end
  219. #==============================================================================
  220. # ■ Scene_Map
  221. #------------------------------------------------------------------------------
  222. #  对Scene_Map的追加定义。
  223. #==============================================================================

  224. class Scene_Map < Scene_Base  
  225.   #--------------------------------------------------------------------------
  226.   # ● 开始处理时建立对象
  227.   #--------------------------------------------------------------------------
  228.   alias _start start
  229.   def start
  230.     @map_window = Map_Window.new
  231.     @zone_window = Zone_Window.new
  232.     _start
  233.   end
  234.   #--------------------------------------------------------------------------
  235.   # ● 释放时释放对象
  236.   #--------------------------------------------------------------------------
  237.   alias _terminate terminate
  238.   def terminate
  239.     @map_window.dispose
  240.     @zone_window.dispose
  241.     _terminate
  242.   end
  243.   #--------------------------------------------------------------------------
  244.   # ● 刷新时刷新对象
  245.   #--------------------------------------------------------------------------
  246.   alias _update update
  247.   def update
  248.     @zone_window.refresh
  249.     @map_window.refresh
  250.     _update
  251.   end
  252.   #--------------------------------------------------------------------------
  253.   # ● 标记为地区已改变(这个参数传递的很囧我承认)
  254.   #--------------------------------------------------------------------------
  255.   def zone_change
  256.     @map_window.zone_change
  257.   end   
  258. end
  259. #==============================================================================
  260. # ■ Zone_Window
  261. #------------------------------------------------------------------------------
  262. #  显示地区名的类
  263. #=============================================================================
  264. class Zone_Window<Window_Base
  265.   #--------------------------------------------------------------------------
  266.   # ● 新建对象初始化
  267.   #--------------------------------------------------------------------------  
  268.   def initialize
  269.     super(0,0,50,50)
  270.     create_contents
  271.     self.opacity = 0
  272.     self.contents_opacity = 0
  273.     @time=0
  274.     self.contents.font.shadow = false
  275.   end
  276.   #--------------------------------------------------------------------------
  277.   # ● 直接显示
  278.   #--------------------------------------------------------------------------
  279.   def d_display
  280.     @time=Z_IN_TIME+Z_SHOW_TIME+Z_FADE_TIME
  281.     self.opacity = 0
  282.     self.contents_opacity = 0
  283.     self.x = -self.width-5
  284.   end
  285.   #--------------------------------------------------------------------------
  286.   # ● 得到地区名
  287.   #--------------------------------------------------------------------------
  288.   def zone(id=$game_map.map_id)
  289.     name=$game_map.name[id].name.split(/@/)[1]
  290.     return name
  291.   end
  292.   #--------------------------------------------------------------------------
  293.   # ● 得到地区英文名
  294.   #--------------------------------------------------------------------------
  295.   def zonee(id=$game_map.map_id)
  296.     name=$game_map.name[id].name.split(/@/)[2]
  297.     return name
  298.   end
  299.   #--------------------------------------------------------------------------
  300.   # ● 描绘中文名
  301.   #--------------------------------------------------------------------------
  302.   def drawtext(x)
  303.     self.contents.font.name=["华文中宋","STZhongsong","宋体","黑体"]
  304.     self.contents.font.size=36
  305.     self.contents.font.color=Color.new(255,255,255)
  306.     self.contents.draw_text_f(x,0,self.contents.width,36,@text)
  307.   end
  308.   #--------------------------------------------------------------------------
  309.   # ● 描绘英文名
  310.   #--------------------------------------------------------------------------
  311.   def drawtexten(x)
  312.     self.contents.font.name=["Copperplate Gothic Light"]
  313.     self.contents.font.size=12
  314.     self.contents.font.color=Color.new(255,255,255)
  315.     self.contents.draw_text_f(x,49,self.contents.width,12,@texten)
  316.   end
  317.   #--------------------------------------------------------------------------
  318.   # ● 描绘横线
  319.   #--------------------------------------------------------------------------
  320.   def drawline
  321.     self.contents.fill_rect(self.contents.width-5-@textw-1, 40, @textw+2, 5, Color.new(0,0,0,255))
  322.     self.contents.fill_rect(self.contents.width-5-@textw, 41, @textw, 3, Color.new(255,255,255,255))   
  323.   end
  324.   #--------------------------------------------------------------------------
  325.   # ● 刷新
  326.   #--------------------------------------------------------------------------
  327.   def refresh
  328.     if self.zone != $game_actors[ZONE_NUM].name && self.zone != "" && self.zone != nil
  329.       $game_actors[ZONE_NUM].name=self.zone
  330.       $scene.zone_change
  331.       if $game_switches[ZONE_W_S] == true
  332.         @text=self.zone
  333.         @texten=self.zonee
  334.         @[email protected]*36/3
  335.         @[email protected]*6
  336.         @textw=[@textl,@textenl].max+24
  337.         @l=@textw/12
  338.         self.x=VX_W-@textw-@textl-5-16
  339.         self.y=0
  340.         self.width=@textw+@textl+5+32
  341.         self.height=32+12+12+36
  342.         @time=Z_IN_TIME+Z_SHOW_TIME+Z_FADE_TIME
  343.         create_contents
  344.       end
  345.     end
  346.     if @time>Z_SHOW_TIME+Z_FADE_TIME
  347.       self.contents_opacity = 255*(Z_IN_TIME+Z_SHOW_TIME+Z_FADE_TIME-@time)/(Z_IN_TIME-1)
  348.       drawline
  349.       if @time%2==1
  350.         self.contents.clear
  351.         drawline
  352.         drawtext((self.contents.width-5-(@textw-@textl)/2-@textl)*(Z_IN_TIME+Z_SHOW_TIME+Z_FADE_TIME-@time)/(Z_IN_TIME-1))
  353.         drawtexten(self.contents.width-(5+(@textw-@textenl)/2+@textenl)*(Z_IN_TIME+Z_SHOW_TIME+Z_FADE_TIME-@time)/(Z_IN_TIME-1))
  354.       end
  355.       @time-=1
  356.     elsif @time>Z_FADE_TIME
  357.       @time-=1
  358.     elsif @time>0
  359.       self.contents_opacity = 255*(@time-1)/(Z_FADE_TIME-1)
  360.       if @time%2==1
  361.         self.contents.clear
  362.         drawline
  363.         drawtext(self.contents.width-(5+(@textw-@textl)/2+@textl)*(@time-1)/(Z_FADE_TIME-1))
  364.         drawtexten((self.contents.width-5-(@textw-@textenl)/2-@textenl)*(@time-1)/(Z_FADE_TIME-1))
  365.         self.contents.blur
  366.       end
  367.       @time-=1
  368.     else
  369.       self.opacity=0
  370.       self.contents_opacity=0
  371.     end
  372.   end
  373. end
  374. #==============================================================================
  375. # ◎ GPRA_Bitmap
  376. #------------------------------------------------------------------------------
  377. # ◎ Bitmap功能加强
  378. #------------------------------------------------------------------------------
  379. # 制作者:绿梨子红苹果
  380. # 个人主页:vbgm.9126.com
  381. # E-Mail:[email protected]
  382. # QQ:42378361
  383. #==============================================================================

  384. class Bitmap
  385.   # 影子字
  386.   def draw_text_s(x, y, width, height, str, align=0)
  387.     # 保存当前颜色
  388.     r=self.font.color.red
  389.     g=self.font.color.green
  390.     b=self.font.color.blue
  391.     # 颜色更改成黑色
  392.     self.font.color.set(0, 0, 0)
  393.     # 绘制影子
  394.     self.draw_text(x+2, y+2, width, height, str, align)
  395.     # 恢复原始字色
  396.     self.font.color.set(r,g,b)
  397.     # 绘制原来的字
  398.     self.draw_text(x, y, width, height, str, align)
  399.   end
  400.   # 描边字
  401.   def draw_text_f(x, y, width, height, str, align=0)
  402.     # 保存当前颜色
  403.     r=self.font.color.red
  404.     g=self.font.color.green
  405.     b=self.font.color.blue
  406.     # 颜色更改成黑色
  407.     self.font.color.set(0, 0, 0)
  408.     # 绘制边框
  409.     self.draw_text(x-1, y-1, width, height, str, align)
  410.     self.draw_text(x-1, y+1, width, height, str, align)
  411.     self.draw_text(x+1, y-1, width, height, str, align)
  412.     self.draw_text(x+1, y+1, width, height, str, align)
  413.     self.draw_text(x, y-1, width, height, str, align)
  414.     self.draw_text(x, y+1, width, height, str, align)
  415.     self.draw_text(x-1, y, width, height, str, align)
  416.     self.draw_text(x+1, y, width, height, str, align)
  417.     # 恢复原始字色
  418.     self.font.color.set(r,g,b)
  419.     # 绘制原来的字
  420.     self.draw_text(x, y, width, height, str, align)
  421.   end
  422. end
复制代码
这是范例的代码,我搬过去不行~
回复 支持 反对

使用道具 举报

Lv1.梦旅人

梦石
0
星屑
65
在线时间
433 小时
注册时间
2007-5-1
帖子
993
7
发表于 2010-7-21 21:41:01 | 只看该作者
没道理不行……你把那两行脚本的数字都改成999试试。

嗯,不能浪费签名了,打广告。本人的悲剧作品:
坑化游戏《龙之影》      R剧《星空》     小游戏《剑与拳头》
回复 支持 反对

使用道具 举报

Lv1.梦旅人

梦石
0
星屑
51
在线时间
1 小时
注册时间
2010-7-21
帖子
180
8
 楼主| 发表于 2010-7-21 21:42:05 | 只看该作者
我新建了一个空白project也不行?
回复 支持 反对

使用道具 举报

Lv1.梦旅人

梦石
0
星屑
51
在线时间
1 小时
注册时间
2010-7-21
帖子
180
9
 楼主| 发表于 2010-7-21 21:43:41 | 只看该作者
我新建了一个空白project也不行?

但是范例的可以?
回复 支持 反对

使用道具 举报

Lv1.梦旅人

梦石
0
星屑
65
在线时间
433 小时
注册时间
2007-5-1
帖子
993
10
发表于 2010-7-21 21:57:11 | 只看该作者
ORZ……下工程研究了,竟然是要把开关打开才有效,把1、2号开关全开了吧。

评分

参与人数 1星屑 +700 收起 理由
木葬枫 + 700 认可答案,66RPG感谢您的热情解答 ...

查看全部评分


嗯,不能浪费签名了,打广告。本人的悲剧作品:
坑化游戏《龙之影》      R剧《星空》     小游戏《剑与拳头》
回复 支持 反对

使用道具 举报

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

本版积分规则

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

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

GMT+8, 2025-1-12 20:05

Powered by Discuz! X3.1

© 2001-2013 Comsenz Inc.

快速回复 返回顶部 返回列表