Project1

标题: 关于NPC头上显示名字如何去除的问题。 [打印本页]

作者: liuziyuan201019    时间: 2012-1-23 16:57
标题: 关于NPC头上显示名字如何去除的问题。
本帖最后由 liuziyuan201019 于 2012-1-23 16:59 编辑

从网上看到一个NPC显名脚本,即如下:
  1. module EventName
  2.   Plus = [0, 20]
  3.   String = '[No Display]'
  4.   Font = [15, '黑体']
  5.   class Sprite_EventName < Sprite
  6.     attr_accessor(:name)
  7.     attr_accessor(:size)
  8.     attr_accessor(:event)
  9.     def initialize(event)
  10.       super(nil);  self.z, self.event, temp = 1, event, Bitmap.new(640, 480)
  11.       self.size, string = [], ['width', 'height']
  12.       temp.font.size, temp.font.name = Font
  13.       string.each {|item| eval("size.push(temp.text_size(self.event.name).#{item})") }
  14.       self.bitmap = Bitmap.new(self.size[0] + 1, self.size[1] + 1)
  15.       self.bitmap.font.size, self.bitmap.font.name = Font
  16.       self.bitmap.draw_text(bitmap.rect, self.event.name)
  17.     end
  18.   end
  19. end

  20. class Game_Event
  21.   define_method(:name) { eval('return @event.name') } unless method_defined?(:name)
  22. end

  23. class Spriteset_Map
  24.   include(EventName)
  25.   _array = ['initialize', 'update', 'dispose']
  26.   _array.each {|item| alias_method('_' + item, item) unless $@ }
  27.   attr_accessor(:event_names)
  28.   def initialize
  29.     @event_names = []
  30.     $game_map.events.each_value {|item| @event_names.push(
  31.     Sprite_EventName.new(item)) unless item.name.include?(String) }
  32.     _initialize;  
  33.     @character_sprites.each {|item1| @event_names.each {|item2|
  34.     bitmap = item2.bitmap;  (item2.ox = bitmap.width / 2 + Plus[0];
  35.     item2.oy = (item1.bitmap.height + bitmap.height) / 4 + Plus[1]
  36.     ) if item2.event.equal?(item1.character) } }
  37.   end
  38.   def dispose;  _dispose
  39.     @event_names.each {|item| item.dispose }
  40.   end
  41.   def update;  _update
  42.     $game_map.events.each_value {|event| @event_names.each {|sprite| sprite.x,
  43.     sprite.y = event.screen_x, event.screen_y if event.equal?(sprite.event) } }
  44.   end
  45. end
复制代码
然后,发现只有这个脚本与我的游戏系统不冲突……(我的游戏简直创意无穷……啥脚本都不能用……全冲突……)
之后,开始制作游戏, 发现:
当我亲爱的NPC因为事件需要消失不见时,
名字依然显示……
作为一个年龄大技术低能力差的人,
这种问题还真是解决不了……
无奈之下上网求助……
大家谁能够告诉我一个办法,
能够在事件需要没有的时候把名字也拉进地狱去?dsu_plus_rewardpost_czw
作者: 忧雪の伤    时间: 2012-1-24 14:15
http://rpg.blue/thread-217619-1-3.html
谁再提练手我就剁手。




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