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

Project1

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

[已经解决] 用了显示NPC姓名脚本后,设置事件位置,名字还留着

 关闭 [复制链接]

Lv1.梦旅人

梦石
0
星屑
669
在线时间
17 小时
注册时间
2011-3-21
帖子
3
跳转到指定楼层
1
发表于 2011-4-4 16:25:57 | 只看该作者 |只看大图 回帖奖励 |倒序浏览 |阅读模式
#==============================================================================
# 显示NPC名
#------------------------------------------------------------------------------
# 跟原版一样,EV开头的不显示,逗号后加颜色代码
# 修改某事件名的方法:
#   set_npc_name("新名", 事件ID, 地图ID, 是否永久生效)
#     事件ID 为空时表示当前事件
#     地图ID 为空时表示当前地图
#     是否永久生效 默认永久,否则只允许修改当前地图
#==============================================================================
# 参数设定
#==============================================================================
module NPC
  NAME_FONT = "宋体"
  NAME_SIZE = 16
  NAME_SHADOW = true
  NAME_WIDTH = 120
end
#==============================================================================
# 重定事件名
#==============================================================================
def set_npc_name(name, event_id = nil, map_id = nil, forever = true)
  # 处理事件 ID
  if event_id == nil
    event_id = $game_map.interpreter.event_id
  end
  # 处理地图 ID
  if map_id == nil
    $game_map.events[event_id].name = name
    map_id = $game_map.map_id
  else
    map_id = map_id
  end
  return unless forever
  data = load_data(sprintf("Data/Map%03d.rvdata", map_id))
  # 更改名
  data.events[event_id].name = name
  save_data(data, sprintf("Data/Map%03d.rvdata", map_id))
end
#==============================================================================
# ■ Game_Character
#==============================================================================
class Game_Character
  #--------------------------------------------------------------------------
  # ◎ 定义实例变量
  #--------------------------------------------------------------------------
  attr_accessor :name                  # 名称
  #--------------------------------------------------------------------------
  # ◎ 初始化对象
  #--------------------------------------------------------------------------
  alias character_ini initialize
  def initialize
    character_ini
    @name = ""
  end
end
#==============================================================================
# ■ Game_Event
#==============================================================================
class Game_Event < Game_Character
  #--------------------------------------------------------------------------
  # ◎ 定义实例变量
  #--------------------------------------------------------------------------
  attr_reader   :erased
  #--------------------------------------------------------------------------
  # ◎ 初始化对像
  #     map_id : 地图 ID
  #     event  : 事件 (RPG::Event)
  #--------------------------------------------------------------------------
  alias event_ini initialize
  def initialize(map_id, event)
    event_ini(map_id, event)
    @name = @event.name
  end
end
#==============================================================================
# ■ Game_Player
#==============================================================================
class Game_Player < Game_Character
  #--------------------------------------------------------------------------
  # ◎ 获取角色名
  #--------------------------------------------------------------------------
  def name
    return $game_party.members[0].name
  end
end
#==============================================================================
# ■ Game_Interpreter
#==============================================================================
class Game_Interpreter
  #--------------------------------------------------------------------------
  # ◎ 定义实例变量
  #--------------------------------------------------------------------------
  attr_reader   :event_id
end
#==============================================================================
# ■ Sprite_Character
#==============================================================================
class Sprite_Character < Sprite_Base
  #--------------------------------------------------------------------------
  # ◎ 初始化对象
  #     viewport  : 视区
  #     character : 角色 (Game_Character)
  #--------------------------------------------------------------------------
  def initialize(viewport, character = nil)
    super(viewport)
    @character = character
    @balloon_duration = 0
    ## 名称
    @name = @character.name
    set_name_sprite
    update
  end
  #--------------------------------------------------------------------------
  # ◎ 释放
  #--------------------------------------------------------------------------
  def dispose
    dispose_balloon
    super
    ##
    return if @name_sprite == nil
    @name_sprite.bitmap.dispose
    @name_sprite.dispose
  end
  #--------------------------------------------------------------------------
  # ● 更新画面
  #--------------------------------------------------------------------------
  def update
    super
    update_bitmap
    self.visible = (not @character.transparent)
    update_src_rect
    self.x = @character.screen_x
    self.y = @character.screen_y
    self.z = @character.screen_z
    self.opacity = @character.opacity
    self.blend_type = @character.blend_type
    self.bush_depth = @character.bush_depth
    update_balloon
    if @character.animation_id != 0
      animation = $data_animations[@character.animation_id]
      start_animation(animation)
      @character.animation_id = 0
    end
    if @character.balloon_id != 0
      @balloon_id = @character.balloon_id
      start_balloon
      @character.balloon_id = 0
    end
    ## 名称可视和跟随
    unless @name_sprite == nil or @name_sprite.disposed?
      if @character.is_a?(Game_Event) and @character.erased
        @name_sprite.visible = false
        return
      else
        @name_sprite.visible = true
      end
      if @character.is_a?(Game_Player) and @character.in_vehicle?
        @name_sprite.visible = false
        return
      else
        @name_sprite.visible = true
      end
      if @name != @character.name
        @name = @character.name
        refresh_name_sprite
      end
      @name_sprite.x = self.x - 80
      @name_sprite.y = self.y - self.height - NPC::NAME_SIZE+2
      @name_sprite.z = self.z+1
    end
  end
  #--------------------------------------------------------------------------
  # ○ 设定 NPC 名称
  #--------------------------------------------------------------------------
  def set_name_sprite
    return if @character.name[0, 2] == "EV"
    return if @character.name == ""
    return if @character.character_name == ""
    return if @character.is_a?(Game_Event) and @character.erased
    @color_board = Window_Base.new(0,0,33,33)
    @color_board.visible = false
    @name_sprite = Sprite.new
    @name_sprite.bitmap = Bitmap.new(NPC::NAME_WIDTH, NPC::NAME_SIZE+2)
    @name_sprite.bitmap.font.name = NPC::NAME_FONT
    @name_sprite.bitmap.font.size = NPC::NAME_SIZE
    @name_sprite.bitmap.font.shadow = NPC::NAME_SHADOW
    refresh_name_sprite
  end
  #--------------------------------------------------------------------------
  # ○ 更新 NPC 名称
  #--------------------------------------------------------------------------
  def refresh_name_sprite
    name,color_index = @name.split(/,/)
    color_index = 0 if color_index == ""
    @name_sprite.bitmap.font.color = @color_board.text_color(color_index.to_i)
    @name_sprite.bitmap.clear
    @name_sprite.bitmap.draw_text(0,0,160,NPC::NAME_SIZE+2,name,1)
  end
end




=========

球高手帮忙修改啊啊啊啊
NPC消失了名字还在怎么办T T

Lv1.梦旅人

梦石
0
星屑
50
在线时间
142 小时
注册时间
2011-4-1
帖子
74
2
发表于 2011-4-4 20:35:39 | 只看该作者
回复 Semeko 的帖子

一个简单办法是“事件点暂时消除”取代“自用开关”
只需在当前事件页最后添加“事件点暂时消除”即可
无需“自用开关”那样新增一个事件页
不过这样在一些判断上与“自用开关”有所区别,具体会有什么问题我也不清楚(至少在不牵扯变量、开关、公共事件的时候应该都没事)

点评

可能我用的繁体版,名字不太一样,”自用开关“就是左边条件那里的,人物对话、开箱子经常用,”事件点暂时消除“在事件指令第二页人物那栏  发表于 2011-4-4 22:08
请问VX中有“事件点暂时消除”、“自用开关”这两样东西在哪……  发表于 2011-4-4 20:39
回复

使用道具 举报

Lv1.梦旅人

梦石
0
星屑
669
在线时间
17 小时
注册时间
2011-3-21
帖子
3
3
 楼主| 发表于 2011-4-5 17:52:09 | 只看该作者
回复 Lenneth 的帖子

不行啊TTOTT
用了暂时消除事件之后虽然行走图没了,但是NPC的名字还是显示着= =

点评

我这里测试是可以消除的,要不你把工程发上来看看  发表于 2011-4-5 18:08
回复

使用道具 举报

Lv1.梦旅人

梦石
0
星屑
50
在线时间
142 小时
注册时间
2011-4-1
帖子
74
4
发表于 2011-4-5 18:29:05 | 只看该作者
第一次发图看看行不行
测试事件如图,只有这些,开关、新建事件页什么的都不用

123.JPG (44.41 KB, 下载次数: 16)

123.JPG
回复

使用道具 举报

Lv1.梦旅人

梦石
0
星屑
239
在线时间
2399 小时
注册时间
2008-4-11
帖子
12326

贵宾第6届短篇游戏比赛季军

5
发表于 2011-4-5 19:22:51 | 只看该作者
其实,你这样说一点都不明了,最好能把工程放上来,这样才能找到问题
目前建议你删除事件,再依照脚本注释新建一个
回复

使用道具 举报

Lv1.梦旅人

梦石
0
星屑
669
在线时间
17 小时
注册时间
2011-3-21
帖子
3
6
 楼主| 发表于 2011-4-6 20:04:41 | 只看该作者
恩删了重做之后竟然好了= =【啥情况

谢谢LS两位TUT
回复

使用道具 举报

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

本版积分规则

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

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

GMT+8, 2025-1-11 22:59

Powered by Discuz! X3.1

© 2001-2013 Comsenz Inc.

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