Project1

标题: 求VX显示地图名脚本 [打印本页]

作者: 哥是传说    时间: 2012-2-25 08:09
标题: 求VX显示地图名脚本
小弟想做一个游戏,在窗口右上角显示地图名,要一直显示
Ps:本人是脚本盲dsu_plus_rewardpost_czw
作者: 狂人狂者    时间: 2012-2-25 08:56
  1. #==============================================================================

  2. # 地图名及区域名显示 by Beside

  3. #------------------------------------------------------------------------------

  4. # 功能: 动态显示玩家所在区域及地图名。

  5. #==============================================================================

  6. MWINDOW_X = 20                                # 窗口X坐标

  7. MWINDOW_Y = 20                                # 窗口Y坐标

  8. WEIGH = 200                                   # 窗口宽度      
  9. START_TIME = 30                               # 窗口出现时间

  10. COUN_TIME = 50                                # 窗口持续时间

  11. FADE_TIME = 30                                # 窗口淡去时间

  12. TEXT1_SIZE = 20                               # 地图名的字体大小

  13. TEXT2_SIZE = 18                               # 区域名的字体大小

  14. TEXT3_SIZE = 18                               # 附加名的字体大小

  15. TEXT1_COLOR = Color.new(255,255,255)          # 地图名的默认颜色

  16. TEXT2_COLOR = 0                               # 区域名的默认颜色代码(0-31)

  17. TEXT3_COLOR = 0                               # 附加名的默认颜色代码(0-31)

  18. SKIN = "window"                               # 窗口皮肤的文件名

  19. HEIGHT = TEXT1_SIZE + TEXT2_SIZE + TEXT3_SIZE + 32                             

  20. #==============================================================================

  21. # ■ Window_Map

  22. #------------------------------------------------------------------------------

  23. #   显示当前进度中的所在场景名称的窗口。

  24. #==============================================================================

  25. class Window_Map < Window_Base

  26.   #--------------------------------------------------------------------------

  27.   # ● 初始化对像

  28.   #--------------------------------------------------------------------------

  29.   def initialize

  30.     @id = 0

  31.     @a_id = 0

  32.     super(MWINDOW_X, MWINDOW_Y, WEIGH, HEIGHT)

  33.     self.opacity = 0

  34.     self.contents_opacity = 0

  35.     self.windowskin = Cache.system(SKIN)

  36.     refresh

  37.   end

  38.   #--------------------------------------------------------------------------

  39.   # ● 刷新

  40.   #--------------------------------------------------------------------------

  41.   def refresh

  42.     @map_id = $game_map.map_id

  43.     locationname = load_data("Data/MapInfos.rvdata")[@map_id].name

  44.     if $game_player.area_id.is_a?(Numeric)

  45.       if $game_player.area_id != @a_id or @map_id != @id

  46.         self.contents.clear

  47.         if @map_id != @id

  48.          @id = @map_id

  49.          @time_count = START_TIME + COUN_TIME + FADE_TIME  

  50.          self.contents.font.color = TEXT1_COLOR

  51.          self.contents.font.size = TEXT1_SIZE

  52.          self.contents.draw_text(0, 0, WEIGH-32, TEXT1_SIZE, locationname, 1)

  53.         end

  54.         @time_count = START_TIME + COUN_TIME + FADE_TIME

  55.         @a_id = $game_player.area_id
  56.         area_name = $data_areas[@a_id].name_p1

  57.         other_name = $data_areas[@a_id].name_p2

  58.         self.contents.font.size = TEXT2_SIZE

  59.         self.contents.font.color = text_color($data_areas[@a_id].color_1)

  60.         self.contents.draw_text(0, TEXT1_SIZE, WEIGH-32, TEXT2_SIZE, area_name, 1)

  61.         self.contents.font.size = TEXT3_SIZE

  62.         self.contents.font.color = text_color($data_areas[@a_id].color_2)

  63.         self.contents.draw_text(0, TEXT1_SIZE+TEXT2_SIZE, WEIGH-32, TEXT3_SIZE, other_name, 1)

  64.       end

  65.     elsif @map_id != @id

  66.       @id = @map_id

  67.       @time_count = START_TIME + COUN_TIME + FADE_TIME  

  68.       self.contents.clear

  69.       self.contents.font.color = TEXT1_COLOR

  70.       self.contents.font.size = TEXT1_SIZE

  71.       self.contents.draw_text(0, (HEIGHT-TEXT1_SIZE)/2-16, WEIGH-32, TEXT1_SIZE, locationname, 1)

  72.     elsif @a_id != 0

  73.       @a_id = 0

  74.       @time_count = START_TIME + COUN_TIME + FADE_TIME  

  75.       self.contents.clear

  76.       self.contents.font.color = TEXT1_COLOR

  77.       self.contents.font.size = TEXT1_SIZE

  78.       self.contents.draw_text(0, (HEIGHT-TEXT1_SIZE)/2-16, WEIGH-32, TEXT1_SIZE, locationname, 1)

  79.     end

  80.     if @time_count > COUN_TIME + FADE_TIME
  81.       self.opacity += 255 / START_TIME

  82.       self.contents_opacity += 255 / START_TIME

  83.       @time_count -= 1

  84.     elsif @time_count > FADE_TIME

  85.       self.opacity = 255

  86.       self.contents_opacity = 255

  87.       @time_count -= 1

  88.     elsif @time_count > 0

  89.       self.opacity -= 255 / FADE_TIME

  90.       self.contents_opacity -= 255 / FADE_TIME

  91.       @time_count -= 1

  92.     else

  93.       @time_count = 0

  94.       self.opacity = 0

  95.       self.contents_opacity = 0

  96.     end

  97.   end

  98. end


  99. #==============================================================================

  100. # ■ Scene_Map

  101. #------------------------------------------------------------------------------

  102. #  处理地图画面的类。

  103. #==============================================================================


  104. class Scene_Map < Scene_Base

  105.   alias _start start

  106.   #--------------------------------------------------------------------------

  107.   # ● 开始处理

  108.   #--------------------------------------------------------------------------

  109.   def start

  110.     @map_window = Window_Map.new

  111.     _start

  112.   end

  113.   

  114.   alias _terminate terminate

  115.   def terminate

  116.     @map_window.dispose

  117.     _terminate

  118.   end

  119.   

  120.   alias _update update

  121.   def update

  122.     @map_window.refresh

  123.     _update

  124.   end

  125. end


  126. module RPG

  127.   class Area

  128.     def name_p1

  129.       name = @name.split(/#/)[0]

  130.       return name != nil ? name : ""

  131.     end

  132.     def name_p2

  133.       name = @name.split(/#/)[1]

  134.       return name != nil ? name : ""

  135.     end
  136.     def color_1

  137.       color = @name.split(/#/)[2]

  138.       return color != nil ? color.to_i : TEXT2_COLOR

  139.     end
  140.     def color_2

  141.       color = @name.split(/#/)[3]

  142.       return color != nil ? color.to_i : TEXT3_COLOR

  143.     end
  144.   end

  145. end


  146. class Game_Character

  147.   def area_id

  148.     for area in $data_areas.values

  149.      if in_area?(area)

  150.      return area.id

  151.      end

  152.     end

  153.   end

  154. end
复制代码
不过是在左上角,也不能一直持续...
作者: iisnow    时间: 2012-2-25 11:34
补充说明:要想实现名称一直显示,
要对沙发的脚本进行一点改变:

1.调整66行,0改为255,
   64行的0也可以调整(0~255之间,LZ自己看看效果吧,也可以不改,让它是0)
2.157行到188行全部注释掉;
3.对11行、13行、15行的数值进行修改,使名称的位置到你想要的位置
(例如,MWINDOW_X = 0,MWINDOW_Y = 0,  WEIGH = 100)




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