赞 | 0 |
VIP | 0 |
好人卡 | 20 |
积分 | 1 |
经验 | 9045 |
最后登录 | 2013-2-14 |
在线时间 | 320 小时 |
Lv1.梦旅人
- 梦石
- 0
- 星屑
- 50
- 在线时间
- 320 小时
- 注册时间
- 2011-6-23
- 帖子
- 260
|
本帖最后由 liuziyuan201019 于 2012-1-23 16:59 编辑
从网上看到一个NPC显名脚本,即如下:- module EventName
- Plus = [0, 20]
- String = '[No Display]'
- Font = [15, '黑体']
- class Sprite_EventName < Sprite
- attr_accessor(:name)
- attr_accessor(:size)
- attr_accessor(:event)
- def initialize(event)
- super(nil); self.z, self.event, temp = 1, event, Bitmap.new(640, 480)
- self.size, string = [], ['width', 'height']
- temp.font.size, temp.font.name = Font
- string.each {|item| eval("size.push(temp.text_size(self.event.name).#{item})") }
- self.bitmap = Bitmap.new(self.size[0] + 1, self.size[1] + 1)
- self.bitmap.font.size, self.bitmap.font.name = Font
- self.bitmap.draw_text(bitmap.rect, self.event.name)
- end
- end
- end
- class Game_Event
- define_method(:name) { eval('return @event.name') } unless method_defined?(:name)
- end
- class Spriteset_Map
- include(EventName)
- _array = ['initialize', 'update', 'dispose']
- _array.each {|item| alias_method('_' + item, item) unless $@ }
- attr_accessor(:event_names)
- def initialize
- @event_names = []
- $game_map.events.each_value {|item| @event_names.push(
- Sprite_EventName.new(item)) unless item.name.include?(String) }
- _initialize;
- @character_sprites.each {|item1| @event_names.each {|item2|
- bitmap = item2.bitmap; (item2.ox = bitmap.width / 2 + Plus[0];
- item2.oy = (item1.bitmap.height + bitmap.height) / 4 + Plus[1]
- ) if item2.event.equal?(item1.character) } }
- end
- def dispose; _dispose
- @event_names.each {|item| item.dispose }
- end
- def update; _update
- $game_map.events.each_value {|event| @event_names.each {|sprite| sprite.x,
- sprite.y = event.screen_x, event.screen_y if event.equal?(sprite.event) } }
- end
- end
复制代码 然后,发现只有这个脚本与我的游戏系统不冲突……(我的游戏简直创意无穷……啥脚本都不能用……全冲突……)
之后,开始制作游戏, 发现:
当我亲爱的NPC因为事件需要消失不见时,
名字依然显示……
作为一个年龄大技术低能力差的人,
这种问题还真是解决不了……
无奈之下上网求助……
大家谁能够告诉我一个办法,
能够在事件需要没有的时候把名字也拉进地狱去? |
|