赞 | 6 |
VIP | 4 |
好人卡 | 58 |
积分 | 5 |
经验 | 58579 |
最后登录 | 2024-6-30 |
在线时间 | 1478 小时 |
Lv2.观梦者
- 梦石
- 0
- 星屑
- 508
- 在线时间
- 1478 小时
- 注册时间
- 2011-9-17
- 帖子
- 1316
|
加入我们,或者,欢迎回来。
您需要 登录 才可以下载或查看,没有帐号?注册会员
x
本帖最后由 iisnow 于 2012-3-25 22:52 编辑
不多说了:
这个是雪大的脚本
我的脚本,比雪大的脚本浅显一些(浅显多了)
具体效果:
于是很容易就发现我的脚本的一些特点了:
1.支持“\n”换行
2.支持复杂图形(包括元件图)的事件
3.自动居中于事件头顶
另外:
1.可以自定义需要显示的事件名称(前缀判据)
2.可以用开关全局控制(详见脚本)
脚本也很短啦,虽然没有雪大的47行,也只有53行:(不过,只能在VX中使用哦~VA也应该可以)- class Game_Event
- attr_reader :event
- end
- class Sprite_Name < Sprite_Base
-
- FLAG = "显示" #姓名前缀,只有拥有该前缀的name才会显示,设为空,则全部都会显示,
- #KEY = 10 #全局开关ID,去掉改行以及17行的#即可使用
-
- def initialize(viewport, character = nil)
- super(viewport)
- @cha = character
- end
-
- def update
- super
- return unless @cha.event.name =~ /^#{FLAG}/ #&& $game_switches[KEY]
- if @cha.event.name.split(FLAG,2)[1] != @name
- @name = FLAG.empty? ? @cha.event.name : @cha.event.name.split(FLAG,2)[1]
- name_pa = @name.split(/\\n/i)
- name_pa.delete_if {|x| x.downcase == '\n'}
- @wid = []
- name_pa.each{|s| @wid << Bitmap.new(100,100).text_size(s).width}
- self.bitmap = Bitmap.new(@wid.max,16 * name_pa.size)
- self.bitmap.font.size = 14
- name_pa.each_with_index{|s,x| self.bitmap.draw_text(0,x * 16,@wid.max,16,s,1)}
- end
- if @cha.character_name == ""
- self.y = @cha.screen_y - 16 * (@wid.size + 2)
- else
- temp_flag = @cha.character_name =~ /^\!?\$.*/
- temp_pic = Cache.character(@cha.character_name)
- self.y = temp_flag ? @cha.screen_y - temp_pic.height / 4 - 16 * @wid.size : @cha.screen_y - temp_pic.height / 8 - 16 * @wid.size
- end
- self.x = @cha.screen_x - @wid.max / 2
- self.z = @cha.screen_z + 100
- end
-
- end
- class Spriteset_Map
-
- alias :iisnow_create_characters :create_characters
-
- def create_characters
- iisnow_create_characters
- $game_map.events.values.each do |event|
- @character_sprites.push(Sprite_Name.new(@viewport1, event))
- end
- end
-
- end
复制代码 以上,完了,自习去的
|
|