Project1

标题: 怎么在大地图上显示各个城市的名字 [打印本页]

作者: mj42000    时间: 2013-8-23 15:16
标题: 怎么在大地图上显示各个城市的名字
如题,我想在世界地图上每个城市旁边显示城市的名字,怎么弄呀,求解答
作者: balloon80391    时间: 2013-8-23 15:26
可以用事件...
但是如果你是要用腳本的話我就幫不了你了
作者: mj42000    时间: 2013-8-23 15:28
balloon80391 发表于 2013-8-23 15:26
可以用事件...
但是如果你是要用腳本的話我就幫不了你了

事件的话怎么弄呀,就比如说世界地图上城市旁别写上伦敦,塞维利亚这些名字什么的
作者: balloon80391    时间: 2013-8-23 15:33
嗯...先作城市名稱的素材文件
可以做成Character或是Picture
如果是Character就直接當成事件...
Picture就設置一個事件管理全部的圖片檔...
(VX的圖片格式我還不太熟悉說...2K3簡單多了= .=)
作者: mj42000    时间: 2013-8-23 15:41
balloon80391 发表于 2013-8-23 15:33
嗯...先作城市名稱的素材文件
可以做成Character或是Picture
如果是Character就直接當成事件...

原来如此,谢谢啦,虽然有点麻烦。。我去试试看{:2_275:}
作者: mj42000    时间: 2013-8-23 15:58
balloon80391 发表于 2013-8-23 15:33
嗯...先作城市名稱的素材文件
可以做成Character或是Picture
如果是Character就直接當成事件...

我试了一下,Character的话选中不全,不会弄
Picture的话,因为世界地图很大,一移动,名字的位置就窜位了
作者: 1587937102    时间: 2013-8-23 16:19
可以画在地图上。
作者: mj42000    时间: 2013-8-23 16:33
1587937102 发表于 2013-8-23 16:19
可以画在地图上。

地图是素材绘制的,怎么画上去呀
作者: syjtc1234697899    时间: 2013-8-23 16:50
  1. #==============================================================================
  2. # 显示NPC名
  3. #------------------------------------------------------------------------------
  4. # 跟原版一样,EV开头的不显示,逗号后加颜色代码
  5. # 修改某事件名的方法:
  6. #   set_npc_name("新名", 事件ID, 地图ID, 是否永久生效)
  7. #     事件ID 为空时表示当前事件
  8. #     地图ID 为空时表示当前地图
  9. #     是否永久生效 默认永久,否则只允许修改当前地图
  10. #==============================================================================
  11. # 参数设定
  12. #==============================================================================
  13. module NPC
  14.   NAME_FONT = "黑体"
  15.   NAME_SIZE = 16
  16.   NAME_SHADOW = false
  17.   NAME_WIDTH = 120
  18. end
  19. #==============================================================================
  20. # 重定事件名
  21. #==============================================================================
  22. def set_npc_name(name, event_id = nil, map_id = nil, forever = true)
  23.   # 处理事件 ID
  24.   if event_id == nil
  25.     event_id = $game_map.interpreter.event_id
  26.   end
  27.   # 处理地图 ID
  28.   if map_id == nil
  29.     $game_map.events[event_id].name = name
  30.     map_id = $game_map.map_id
  31.   else
  32.     map_id = map_id
  33.   end
  34.   return unless forever
  35.   data = load_data(sprintf("Data/Map%03d.rvdata", map_id))
  36.   # 更改名
  37.   data.events[event_id].name = name
  38.   save_data(data, sprintf("Data/Map%03d.rvdata", map_id))
  39. end
  40. #==============================================================================
  41. # ■ Game_Character
  42. #==============================================================================
  43. class Game_Character
  44.   #--------------------------------------------------------------------------
  45.   # ◎ 定义实例变量
  46.   #--------------------------------------------------------------------------
  47.   attr_accessor :name                  # 名称
  48.   #--------------------------------------------------------------------------
  49.   # ◎ 初始化对象
  50.   #--------------------------------------------------------------------------
  51.   alias character_ini initialize
  52.   def initialize
  53.     character_ini
  54.     @name = ""
  55.   end
  56. end
  57. #==============================================================================
  58. # ■ Game_Event
  59. #==============================================================================
  60. class Game_Event < Game_Character
  61.   #--------------------------------------------------------------------------
  62.   # ◎ 定义实例变量
  63.   #--------------------------------------------------------------------------
  64.   attr_reader   :erased
  65.   #--------------------------------------------------------------------------
  66.   # ◎ 初始化对像
  67.   #     map_id : 地图 ID
  68.   #     event  : 事件 (RPG::Event)
  69.   #--------------------------------------------------------------------------
  70.   alias event_ini initialize
  71.   def initialize(map_id, event)
  72.     event_ini(map_id, event)
  73.     @name = @event.name
  74.   end
  75. end
  76. #==============================================================================
  77. # ■ Game_Player
  78. #==============================================================================
  79. class Game_Player < Game_Character
  80.   #--------------------------------------------------------------------------
  81.   # ◎ 获取角色名
  82.   #--------------------------------------------------------------------------
  83.   def name
  84.     return $game_party.members[0].name
  85.   end
  86. end
  87. #==============================================================================
  88. # ■ Game_Interpreter
  89. #==============================================================================
  90. class Game_Interpreter
  91.   #--------------------------------------------------------------------------
  92.   # ◎ 定义实例变量
  93.   #--------------------------------------------------------------------------
  94.   attr_reader   :event_id
  95. end
  96. #==============================================================================
  97. # ■ Sprite_Character
  98. #==============================================================================
  99. class Sprite_Character < Sprite_Base
  100.   #--------------------------------------------------------------------------
  101.   # ◎ 初始化对象
  102.   #     viewport  : 视区
  103.   #     character : 角色 (Game_Character)
  104.   #--------------------------------------------------------------------------
  105.   def initialize(viewport, character = nil)
  106.     super(viewport)
  107.     @character = character
  108.     @balloon_duration = 0
  109.     ## 名称
  110.     @name = @character.name
  111.     set_name_sprite
  112.     update
  113.   end
  114.   #--------------------------------------------------------------------------
  115.   # ◎ 释放
  116.   #--------------------------------------------------------------------------
  117.   def dispose
  118.     dispose_balloon
  119.     super
  120.     ##
  121.     return if @name_sprite == nil
  122.     @name_sprite.bitmap.dispose
  123.     @name_sprite.dispose
  124.   end
  125.   #--------------------------------------------------------------------------
  126.   # ● 更新画面
  127.   #--------------------------------------------------------------------------
  128.   def update
  129.     super
  130.     update_bitmap
  131.     self.visible = (not @character.transparent)
  132.     update_src_rect
  133.     self.x = @character.screen_x
  134.     self.y = @character.screen_y
  135.     self.z = @character.screen_z
  136.     self.opacity = @character.opacity
  137.     self.blend_type = @character.blend_type
  138.     self.bush_depth = @character.bush_depth
  139.     update_balloon
  140.     if @character.animation_id != 0
  141.       animation = $data_animations[@character.animation_id]
  142.       start_animation(animation)
  143.       @character.animation_id = 0
  144.     end
  145.     if @character.balloon_id != 0
  146.       @balloon_id = @character.balloon_id
  147.       start_balloon
  148.       @character.balloon_id = 0
  149.     end
  150.     ## 名称可视和跟随
  151.     unless @name_sprite == nil or @name_sprite.disposed?
  152.       if @character.is_a?(Game_Event) and @character.erased
  153.         @name_sprite.visible = false
  154.         return
  155.       else
  156.         @name_sprite.visible = true
  157.       end
  158.       if @character.is_a?(Game_Player) and @character.in_vehicle?
  159.         @name_sprite.visible = false
  160.         return
  161.       else
  162.         @name_sprite.visible = true
  163.       end
  164.       if @name != @character.name
  165.         @name = @character.name
  166.         refresh_name_sprite
  167.       end
  168.       @name_sprite.x = self.x - 80
  169.       @name_sprite.y = self.y - self.height - NPC::NAME_SIZE+2
  170.       @name_sprite.z = self.z+1
  171.     end
  172.   end
  173.   #--------------------------------------------------------------------------
  174.   # ○ 设定 NPC 名称
  175.   #--------------------------------------------------------------------------
  176.   def set_name_sprite
  177.     return if @character.name[0, 2] == "EV"
  178.     return if @character.name == ""
  179.     return if @character.character_name == ""
  180.     return if @character.is_a?(Game_Event) and @character.erased
  181.     @color_board = Window_Base.new(0,0,33,33)
  182.     @color_board.visible = false
  183.     @name_sprite = Sprite.new
  184.     @name_sprite.bitmap = Bitmap.new(NPC::NAME_WIDTH, NPC::NAME_SIZE+2)
  185.     @name_sprite.bitmap.font.name = NPC::NAME_FONT
  186.     @name_sprite.bitmap.font.size = NPC::NAME_SIZE
  187.     @name_sprite.bitmap.font.shadow = NPC::NAME_SHADOW
  188.     refresh_name_sprite
  189.   end
  190.   #--------------------------------------------------------------------------
  191.   # ○ 更新 NPC 名称
  192.   #--------------------------------------------------------------------------
  193.   def refresh_name_sprite
  194.     name,color_index = @name.split(/,/)
  195.     color_index = 0 if color_index == ""
  196.     @name_sprite.bitmap.font.color = @color_board.text_color(color_index.to_i)
  197.     @name_sprite.bitmap.clear
  198.     @name_sprite.bitmap.draw_text(0,0,160,NPC::NAME_SIZE+2,name,1)
  199.   end
  200. end
复制代码
然后直接改事件名称
作者: mj42000    时间: 2013-8-23 17:30
syjtc1234697899 发表于 2013-8-23 16:50
然后直接改事件名称

插入进去不好使呀,显示177行发生了NoMethodError,怎么弄呀
作者: mj42000    时间: 2013-8-23 17:36
syjtc1234697899 发表于 2013-8-23 16:50
然后直接改事件名称

好使了。。但是NPC头上的名称可以显示,但是我在地图上新建一个空白的事件点,输入了城市名字之后怎么不显示了 。另外怎么把玩家头上的名字去掉。谢谢啦
作者: syjtc1234697899    时间: 2013-8-23 17:51
mj42000 发表于 2013-8-23 17:36
好使了。。但是NPC头上的名称可以显示,但是我在地图上新建一个空白的事件点,输入了城市名字之后怎么不 ...

空白事件页必须有图片
角色头上把脚本删去
作者: mj42000    时间: 2013-8-23 17:56
syjtc1234697899 发表于 2013-8-23 17:51
空白事件页必须有图片
角色头上把脚本删去

原来如此呀。还得麻烦问你一下,脚本删去哪里呀,另外这个跟我显示地图名称的脚本冲突,插入这个之后那个不好使了,怎么解决呢
作者: syjtc1234697899    时间: 2013-8-23 17:57

在哪里冲突?
换成这个试试
  1. #===============================================================================
  2. # MOG_Location_Name_VX V1.0
  3. #===============================================================================
  4. # By Moghunter 汉化:火鸡三毛老大
  5. #===============================================================================
  6. module MOG
  7. #地图名字体.
  8. MPFONT = "幼圆"
  9. #------------------------------------------------
  10. #消失 ON/OFF(True - False).
  11. MPNMFD = true
  12. #------------------------------------------------
  13. #窗口消失时间.
  14. MPNMTM = 10
  15. #------------------------------------------------
  16. #窗口提示位置.
  17. # 0 = 左上角.
  18. # 1 = 左下角.
  19. # 2 = 右上角.
  20. # 3 = 右下角.
  21. MPNMPS = 1
  22. #------------------------------------------------
  23. # 关闭开启显示提示(ID).
  24. WM_SWITCH_VIS_DISABLE = 1
  25. end
  26. #------------------------------------------------
  27. ###############
  28. # Game_System #
  29. ###############
  30. class Game_System
  31. attr_accessor :fdtm
  32. attr_accessor :mpnm_x
  33. attr_accessor :mpnm_y
  34. alias mog_vx06_initialize initialize
  35. def initialize
  36. mog_vx06_initialize
  37. @fdtm = 255 + 40 * MOG::MPNMTM
  38. if MOG::MPNMPS == 0
  39. @mpnm_x = -300
  40. @mpnm_y = 0
  41. elsif MOG::MPNMPS == 1
  42. @mpnm_x = -300
  43. @mpnm_y = 320
  44. elsif MOG::MPNMPS == 2
  45. @mpnm_x = 640
  46. @mpnm_y = 0
  47. else
  48. @mpnm_x = 640
  49. @mpnm_y = 320
  50. end
  51. end
  52. def mpnm_x
  53. return @mpnm_x
  54. end
  55. def mpnm_y
  56. return @mpnm_y
  57. end
  58. def fdtm
  59. if @fdtm <= 0
  60. @fdtm = 0
  61. end
  62. return @fdtm
  63. end
  64. end
  65. ############
  66. # Game_Map #
  67. ############
  68. class Game_Map
  69. attr_reader :map_id
  70. def mpname
  71. $mpname = load_data("Data/MapInfos.rvdata")
  72. $mpname[@map_id].name
  73. end
  74. end
  75. ###############
  76. # Window Base #
  77. ###############
  78. class Window_Base < Window
  79. def nd_mapic
  80. mapic = Cache.system("")
  81. end
  82. def draw_mpname(x,y)
  83. mapic = Cache.system("Mpname") rescue nd_mapic
  84. cw = mapic.width
  85. ch = mapic.height
  86. src_rect = Rect.new(0, 0, cw, ch)
  87. self.contents.blt(x , y - ch + 65, mapic, src_rect)
  88. self.contents.font.name = MOG::MPFONT
  89. self.contents.font.size = 22
  90. self.contents.font.bold = true
  91. self.contents.font.shadow = true
  92. self.contents.font.color = Color.new(0,0,0,255)
  93. self.contents.draw_text(x + 76, y + 27, 110, 32, $game_map.mpname.to_s,1)
  94. self.contents.font.color = Color.new(255,255,255,255)
  95. self.contents.draw_text(x + 75, y + 26, 110, 32, $game_map.mpname.to_s,1)
  96. end
  97. end
  98. ##########
  99. # Mpname #
  100. ##########
  101. class Mpname < Window_Base
  102. def initialize(x , y)
  103. super($game_system.mpnm_x, $game_system.mpnm_y, 250, WLH + 70)
  104. self.opacity = 0
  105. refresh
  106. end
  107. def refresh
  108. self.contents.clear
  109. draw_mpname(10,0)
  110. end
  111. end
  112. #############
  113. # Scene_Map #
  114. #############
  115. class Scene_Map
  116. alias mog_vx06_start start
  117. def start
  118. @mpnm = Mpname.new($game_system.mpnm_x, $game_system.mpnm_y)
  119. @mpnm.contents_opacity = $game_system.fdtm
  120. if $game_switches[MOG::WM_SWITCH_VIS_DISABLE] == false
  121. @mpnm.visible = true
  122. else
  123. @mpnm.visible = false
  124. end
  125. mog_vx06_start
  126. end
  127. alias mog_vx06_terminate terminate
  128. def terminate
  129. mog_vx06_terminate
  130. @mpnm.dispose
  131. end
  132. alias mog_vx06_update update
  133. def update
  134. mog_vx06_update
  135. location_name_update
  136. end
  137. def location_name_update
  138. $game_system.mpnm_x = @mpnm.x
  139. $game_system.mpnm_y = @mpnm.y
  140. if $game_switches[MOG::WM_SWITCH_VIS_DISABLE] == true or $game_system.fdtm <= 0
  141. @mpnm.visible = false
  142. else
  143. @mpnm.visible = true
  144. end
  145. if MOG::MPNMPS == 0 or MOG::MPNMPS == 1
  146. if @mpnm.x < 0
  147. @mpnm.x += 5
  148. elsif @mpnm.x >= 0
  149. @mpnm.x = 0
  150. end
  151. else
  152. if @mpnm.x > 300
  153. @mpnm.x -= 5
  154. elsif @mpnm.x <= 300
  155. @mpnm.x = 300
  156. end
  157. end
  158. @mpnm.contents_opacity = $game_system.fdtm
  159. if MOG::MPNMFD == true
  160. $game_system.fdtm -= 3
  161. end
  162. end
  163. alias mog_vx06_update_transfer_player update_transfer_player
  164. def update_transfer_player
  165. return unless $game_player.transfer?
  166. @mpnm.contents_opacity = 0
  167. mog_vx06_update_transfer_player
  168. if MOG::MPNMPS == 0
  169. $game_system.mpnm_x = -340
  170. $game_system.mpnm_y = 0
  171. elsif MOG::MPNMPS == 1
  172. $game_system.mpnm_x = -340
  173. $game_system.mpnm_y = 320
  174. elsif MOG::MPNMPS == 2
  175. $game_system.mpnm_x = 640
  176. $game_system.mpnm_y = 0
  177. else
  178. $game_system.mpnm_x = 640
  179. $game_system.mpnm_y = 320
  180. end
  181. @mpnm.y = $game_system.mpnm_y
  182. @mpnm.x = $game_system.mpnm_x
  183. $game_system.fdtm = 255 + 60 * MOG::MPNMTM
  184. @mpnm.refresh
  185. end
  186. end
  187. $mogscript = {} if $mogscript == nil
  188. $mogscript["location_name_vx"] = true
复制代码

作者: mj42000    时间: 2013-8-23 17:58
# ————————————————————————————————————
# 本脚本来自www.66rpg.com,转载和使用请保留此信息
# ————————————————————————————————————

#==============================================================================
# ■ 地图名显示脚本
#     by Yuee
#------------------------------------------------------------------------------
# 在Main的上方插入一个页,将本脚本复制到那页中即可
#==============================================================================

#==============================================================================
# ■ Window_MapName
#------------------------------------------------------------------------------
#  显示地图名字的窗口。
#==============================================================================

class Window_MapName < Window_Base
  #--------------------------------------------------------------------------
  # ● 类常量定义
  #--------------------------------------------------------------------------

  # 暂时屏蔽用的开关
  SWITCH = 6
  
  # 窗口位置设定
  NAME_X = 544-220      # 矩形左上顶点X坐标
  NAME_Y = 0       # 矩形左上顶点Y坐标
  NAME_W = 220      # 矩形宽
  NAME_H = 60       # 矩形高
   
  # 显示时间设置
  SHOW_TIME_0 = 10  # 地图名出现前等待的帧数
  SHOW_TIME_1 = 10  # 地图名从不可见变成可见的帧数
  SHOW_TIME_2 = 34  # 地图名完全可见的帧数
  SHOW_TIME_3 = 16  # 地图名从可见变成不可见的帧数
  
  # 完全可见时的透明度设置
  OPACITY_1 = 244   # 边框
  OPACITY_2 = 100   # 背景
  OPACITY_3 = 255   # 文字
  
  # 地图名字的颜色
  TEXT_COLOR = Color.new(255, 255, 255, 255)
   
  #--------------------------------------------------------------------------
  # ● 初始化状态
  #--------------------------------------------------------------------------
  def initialize
    super(NAME_X , NAME_Y, NAME_W, NAME_H)
    # 初始化窗口透明度
    self.opacity = 0
    self.back_opacity = 0
    self.z = 9999
    self.contents_opacity = 0
    self.contents = Bitmap.new(width - 32, height - 32)
    # 剩余帧数初始化
    @show_time = 0
  end
  #--------------------------------------------------------------------------
  # ● 输出文字
  #--------------------------------------------------------------------------
  def setname
    if $game_switches[SWITCH]
      # 获取地图ID
      newid = $game_map.map_id
      time = SHOW_TIME_1 + SHOW_TIME_2 + SHOW_TIME_3  
      # 如果现在的地图的ID不是刚才显示的地图ID则开始显示
      if newid != @id
        @id = newid
        @show_time = SHOW_TIME_0 + SHOW_TIME_1 + SHOW_TIME_2 + SHOW_TIME_3
      # 剩余帧数为0是时,全部窗口透明
      elsif @show_time < 1
        self.opacity = 0
        self.back_opacity = 0
        self.contents_opacity = 0
        return
      end      
      self.contents.clear
      self.contents.font.color = TEXT_COLOR
      # 描绘地图名
      self.contents.draw_text(4, 0 , width - 40, 32, $data_mapinfos[@id].name, 1)
      # 根本帧数设定窗口透明度
      if @show_time > (SHOW_TIME_2 + SHOW_TIME_3)
        self.opacity = @show_time < time ? (((OPACITY_1 / SHOW_TIME_1) * (time - @show_time)).to_i) : 0
        self.back_opacity = @show_time < time ? (((OPACITY_2 / SHOW_TIME_1 )* (time - @show_time)).to_i) : 0
        self.contents_opacity = @show_time < time ? (((OPACITY_3 / SHOW_TIME_1) * (time - @show_time)).to_i) : 0
      else
        self.opacity = @show_time < (SHOW_TIME_3 / 16 * 14) ? ((OPACITY_1 / SHOW_TIME_3) * @show_time).to_i : OPACITY_1
        self.back_opacity = @show_time < (SHOW_TIME_3 / 16 * 9) ? ((OPACITY_2 / SHOW_TIME_3) * @show_time).to_i : OPACITY_2
        self.contents_opacity = @show_time < SHOW_TIME_3 ? ((OPACITY_3 / SHOW_TIME_3)* @show_time).to_i : OPACITY_3
      end
      @show_time -= 1
      $game_switches[SWITCH] = false if @show_time < 0
    end
  end
end

#==============================================================================
# ■ Scene_Map
#------------------------------------------------------------------------------
#  处理地图画面的类。(追加定义)
#==============================================================================

class Scene_Map
  alias smn_start start
  def start
    @mapname = Window_MapName.new
    smn_start
  end
  
  alias smn_dispose terminate
  def terminate
    smn_dispose
    @mapname.dispose
  end
  
  alias smn_update update
  def update
    smn_update
    @mapname.setname
  end
end

#==============================================================================
# ■ Scene_Title
#------------------------------------------------------------------------------
#  处理标题画面的类。(追加定义)
#==============================================================================

class Scene_Title
  alias smn_load load_database
  def load_database
    # 读取地图信息文件
    $data_mapinfos = load_data("Data/MapInfos.rvdata")
    smn_load
  end
end
这个是我那个地图名称脚本,怎么插入你给我那个之后这个就不好使了,如何解决呀
作者: mj42000    时间: 2013-8-23 18:04
syjtc1234697899 发表于 2013-8-23 17:57
在哪里冲突?
换成这个试试

你帮我看下我贴的那个跟你那个哪里冲突了好吗,你新贴的这个脚本一开始可以显示两个,再之后换地图都不显示了,是不是跟我开关撞上了
作者: mj42000    时间: 2013-8-23 18:10
mj42000 发表于 2013-8-23 18:04
你帮我看下我贴的那个跟你那个哪里冲突了好吗,你新贴的这个脚本一开始可以显示两个,再之后换地图都不显 ...

谢谢你啦,我先去吃个饭,晚点回来看{:2_280:}  好人呀
作者: 蠕虫    时间: 2013-8-23 18:49
现把地名p在地图上,再用文字选项,应该也可以吧
作者: syjtc1234697899    时间: 2013-8-25 12:28
mj42000 发表于 2013-8-23 18:10
谢谢你啦,我先去吃个饭,晚点回来看  好人呀

对脚本什么的搞不大懂 觉得你还是在远景图 或者 图块 上改吧。。
作者: 咕噜    时间: 2013-8-25 16:31
=。=我这里有个傻逼的方法,就是用行走图显示,也就是说自己弄几张写有字的行走图(格式要规范,要么单张就用$好了),然后用事件显示就好= =……
作者: 上贺茂润    时间: 2013-8-25 16:57
mj42000 发表于 2013-8-23 16:33
地图是素材绘制的,怎么画上去呀

PS,新建一个图层,文字工具
作者: mj42000    时间: 2013-8-27 17:51
谢谢大家啦,终于会了




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