Project1

标题: 从XP移植到VA的显示地图坐标,能否取代RM默认显示地图名? [打印本页]

作者: eve592370698    时间: 2012-3-28 00:01
标题: 从XP移植到VA的显示地图坐标,能否取代RM默认显示地图名?
本帖最后由 eve592370698 于 2012-3-28 00:03 编辑

代码先拿出来给大家看看
  1. =begin  ===========================================
  2. # 本脚本来自www.66rpg.com,用于任何游戏请保留此信息。别以为加密就可以del哦
  3. #===================================

  4. # 本脚本来自www.66rpg.com,用于任何游戏请保留此信息。别以为加密就可以del哦
  5. # 鉴定为古老脚本,作者不明。 By 絮语 2011.2
  6. # 改订 By 絮语 2011.4
  7. =end #=========================================================================

  8. XY_SWITCH = 28 # 当3号开关关闭,本脚本才开始工作。
  9. #BACK_PNG = RPG::Cache.system('游戏边框右下.png') #背景
  10. =begin   #============================================================
  11.   □ 交通工具添加一点内容不解释
  12. =end #===================================================
  13. class Game_Vehicle < Game_Character
  14.   # 预读交通工具所在的地图位置!
  15.   attr_reader   :map_id            
  16.   attr_reader   :name_display
  17. end
  18. #==============================================================================
  19. # ■ Window_XY
  20. #------------------------------------------------------------------------------
  21. #  显示坐标的窗口。
  22. #==============================================================================
  23. class Window_xy < Window_Base#注意前面那个window_xy是文件名   
  24.   #--------------------------------------------------------------------------
  25.   # ● 初始化窗口
  26.   #--------------------------------------------------------------------------
  27.   def initialize
  28. =begin ==============
  29. 其实说真的,真不愿意用在默认分辨率上,
  30. 因为VX这种可怜的分辨率,最好把分辨率扩展一下
  31. =end  #==============  
  32.     super(0, Graphics.height - 99, 820, 696)#最后面那个数字是宽要显示多个需要改大,前面一个是长~
  33.     self.contents = Bitmap.new(width - 32, height - 32)
  34.     self.back_opacity = 255  # 这个是背景透明
  35.     self.opacity = 255       # 这个是边框和背景都透明
  36.     self.contents_opacity = 255       # 这个是内容透明
  37.     self.visible = false
  38.     self.z = 1000
  39.     refresh
  40.     @x = $game_player.x
  41.     @y = $game_player.y
  42.     @id = $game_map.map_id
  43.   end
  44.   def main_color
  45.     return Color.new(-210, -210, -210, 255)
  46.   end
  47.   def main2_color
  48.     return Color.new(-180, -170, -170, 255)
  49.   end
  50.   def else_color
  51.     return Color.new(-140, -140, -140, 255)
  52.   end
  53.   #---------------------------------
  54.   def get_map_name
  55.     #这个是从XP移植过来的用法
  56.     $mapnames = load_data("Data/MapInfos.rvdata2") #读取地图名文件
  57.     #获取玩家所在地图的信息
  58.     @x = $game_player.x #获取角色X坐标
  59.     @y = $game_player.y #获取角色Y坐标
  60.     @id = $game_map.map_id  #获取地图编号
  61.       
  62.       
  63.       @player_map = load_data(sprintf("Data/Map%03d.rvdata2", @id))
  64.       #获得地图名
  65.       unless @player_map.display_name == nil
  66.         @for_player = @player_map.display_name
  67.       else
  68.         @for_player = $mapnames[@id].name  #←玩家角色所在地图
  69.       end
  70.       
  71.       
  72.     #获取飞船所在地图的信息  
  73.     @airship_x = $game_map.airship.x
  74.       @airship_y = $game_map.airship.y
  75.       @airship_map_id  = $game_map.airship.map_id
  76.       @airship_map = load_data(sprintf("Data/Map%03d.rvdata2", @airship_map_id))
  77.       if @airship_map.display_name == nil
  78.         @for_airship = $mapnames[@airship_map_id].name
  79.       else
  80.         @for_airship = @airship_map.display_name
  81.       end
  82.    
  83.   end
  84. =begin --------------------------------------------------------
  85. # ● 刷新
  86. =end #-----------------------------------------------------------
  87.   def refresh   
  88.     #确定开关是否打开,可以自己改变开关
  89.     unless $game_switches[XY_SWITCH]
  90.       
  91.       self.contents.clear #清除以前的东西
  92.       if @back != nil
  93.         if @back.visible
  94.           @back.dispose
  95.         end   
  96.       end
  97.       get_map_name
  98.       self.contents.font.size = 20
  99.       self.contents.font.color = text_color(0)#颜色
  100.       self.contents.draw_text(0, 0, 160, 32, @for_player)
  101.       self.contents.font.color = text_color(0)
  102.       self.contents.draw_text(10, 32, 120, 32, "X:")#显示X这个字的位置,引号里面的内容随便改,比如"X坐标地址"
  103.       self.contents.font.color = main2_color
  104.       self.contents.draw_text(10, 32, 52, 32, @x.to_s,2)
  105.       self.contents.font.color = text_color(0)#上面那个是X坐标的变量,可以自己更改变量名~
  106.       self.contents.draw_text(74, 32, 128, 32, "Y:")#显示Y这个字~
  107.       self.contents.font.color = main2_color
  108.       self.contents.draw_text(10, 32, 116, 32, @y.to_s,2)
  109.       #添加交通工具的坐标
  110.       self.contents.font.size = 20
  111.       self.contents.font.color = text_color(1)#颜色
  112.       self.contents.draw_text(100, 00, 160, 32, "飞船在:" +  @for_airship ,2)
  113.       self.contents.font.color = text_color(0)
  114.       self.contents.draw_text(140, 32, 120, 32, "X:")#显示X这个字的位置,引号里面的内容随便改,比如"X坐标地址"
  115.       self.contents.font.color = main2_color
  116.       self.contents.draw_text(140, 32, 52, 32, @airship_x.to_s,2)
  117.       #上面那个是X坐标的变量,可以自己更改变量名~
  118.       self.contents.font.color = text_color(0)
  119.       self.contents.draw_text(204, 32, 128, 32, "Y:")#显示Y这个字~
  120.       self.contents.font.color = main2_color
  121.       self.contents.draw_text(140, 32, 116, 32, @airship_y.to_s,2)
  122.       
  123.     end
  124.   end
  125. #--------------------------------------------------------------------------
  126. # ● 判断文字刷新。节约内存用
  127. #--------------------------------------------------------------------------
  128.   def judge
  129.     return true if @x != $game_player.x
  130.     return true if @y != $game_player.y
  131.     return true if @id != $game_map.map_id
  132.     return true if @airship_x != $game_map.airship.x
  133.     return true if @airship_y != $game_map.airship.y
  134.     return false
  135.   end
  136. end
  137. ###########################################################################
  138. #                           下面的东西不需要掌握~                         #
  139. ###########################################################################

  140. class Scene_Map
  141.   alias xy_66rpg_main main
  142.   def main
  143.     @xy_window = Window_xy.new
  144.     #原来这里是设置坐标的啊,不过下面两个是内容
  145.     #@xy_window.x = 800 - 190
  146.     #@xy_window.y = 600 - 96
  147.     @xy_window.opacity = 0
  148.     xy_66rpg_main
  149.     @xy_window.dispose
  150.   end
  151. #--------------------------------------------------------------------------
  152. # ● 刷新画面
  153. #--------------------------------------------------------------------------
  154.   alias xy_66rpg_update update
  155.   def update
  156.     xy_66rpg_update
  157.     unless $game_switches[XY_SWITCH]
  158.       @xy_window.visible = true
  159.       if @边框右下 != nil and @边框右下.visible
  160.           @边框右下.dispose
  161.         
  162.       end
  163.       if @边框左上 != nil and @边框左上.visible
  164.         @边框左上.dispose
  165.       end
  166.       @边框右下 = Sprite.new
  167.       @边框右下.x = 0 #- 256
  168.       @边框右下.y = 0
  169.       #@边框右下.bitmap = RPG::Cache.system('游戏边框.png')
  170.       @xy_window.refresh if @xy_window.judge
  171.     else
  172.       @xy_window.visible = false
  173.     end
  174.   end
  175. end
  176. #==========================================================================
  177. # 本脚本来自www.66rpg.com,用于任何游戏请保留此信息。别以为加密就可以del哦
  178. #==========================================================================
复制代码
可以识别VA特有的地图游戏中显示名称了,如果地图设置了VA专用的名称就显示,如果那里空白就显示通用的地图名称,效果凑合吧,自己把飞船的坐标和地图名称也加进来了,这样也方便玩家能快速找到自己的交通工具。小船和大船自己因为时间和精力有限暂时搁置。

但是,仔细想想,VA自己自带的切换地图短暂显示地图名称那个功能还是有限,怎么办呢?
作者: 无双sxa    时间: 2012-3-28 00:11
保持中立,取不取代,它都存在,存在就有意义,具体用途按照自己需要的效果进行选择,有时显示地图名不一定重要,有时又很有必要,按需分配吧。
作者: orzfly    时间: 2012-3-28 08:16
那个事件开启就一直显示(用这个
关闭就用原来的…
如果都不要就连续两次执行事件关闭…
作者: 仲秋启明    时间: 2012-3-28 12:25
都差不多嘛
作者: feizhaodan    时间: 2012-3-28 13:24
这就跟横板可不可以代替默认战斗似的,感觉没有讨论的意义= =
作者: 精灵使者    时间: 2012-4-9 09:50
显示地图名和XY脚本里面有效率很低的地方,需要进行改进。




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