Project1

标题: 【VX & VA】事件name显示……好像已经很多了吧 [打印本页]

作者: iisnow    时间: 2011-12-16 14:02
标题: 【VX & VA】事件name显示……好像已经很多了吧
本帖最后由 iisnow 于 2012-3-25 22:52 编辑

不多说了:
这个是雪大的脚本
我的脚本,比雪大的脚本浅显一些(浅显多了
具体效果:

于是很容易就发现我的脚本的一些特点了:
1.支持“\n”换行
2.支持复杂图形(包括元件图)的事件
3.自动居中于事件头顶

另外:
1.可以自定义需要显示的事件名称(前缀判据)
2.可以用开关全局控制(详见脚本)
脚本也很短啦,虽然没有雪大的47行,也只有53行:(不过,只能在VX中使用哦~VA也应该可以)
  1. class Game_Event
  2.   attr_reader   :event
  3. end

  4. class Sprite_Name < Sprite_Base
  5.   
  6.   FLAG = "显示"  #姓名前缀,只有拥有该前缀的name才会显示,设为空,则全部都会显示,
  7.   #KEY = 10   #全局开关ID,去掉改行以及17行的#即可使用
  8.   
  9.   def initialize(viewport, character = nil)
  10.     super(viewport)
  11.     @cha = character
  12.   end
  13.   
  14.   def update
  15.     super
  16.     return unless @cha.event.name =~ /^#{FLAG}/ #&& $game_switches[KEY]
  17.     if @cha.event.name.split(FLAG,2)[1] != @name
  18.       @name = FLAG.empty? ? @cha.event.name : @cha.event.name.split(FLAG,2)[1]
  19.       name_pa = @name.split(/\\n/i)
  20.       name_pa.delete_if {|x| x.downcase == '\n'}
  21.       @wid = []
  22.       name_pa.each{|s| @wid << Bitmap.new(100,100).text_size(s).width}
  23.       self.bitmap = Bitmap.new(@wid.max,16 * name_pa.size)
  24.       self.bitmap.font.size = 14
  25.       name_pa.each_with_index{|s,x| self.bitmap.draw_text(0,x * 16,@wid.max,16,s,1)}
  26.     end
  27.     if @cha.character_name == ""
  28.       self.y = @cha.screen_y - 16 * (@wid.size + 2)
  29.     else
  30.       temp_flag = @cha.character_name =~ /^\!?\$.*/
  31.       temp_pic = Cache.character(@cha.character_name)
  32.       self.y = temp_flag ? @cha.screen_y - temp_pic.height / 4 - 16 * @wid.size : @cha.screen_y - temp_pic.height / 8 - 16 * @wid.size
  33.     end
  34.     self.x = @cha.screen_x - @wid.max / 2
  35.     self.z = @cha.screen_z + 100
  36.   end
  37.   
  38. end

  39. class Spriteset_Map
  40.   
  41.   alias :iisnow_create_characters :create_characters
  42.   
  43.   def create_characters
  44.     iisnow_create_characters
  45.     $game_map.events.values.each do |event|
  46.       @character_sprites.push(Sprite_Name.new(@viewport1, event))
  47.     end
  48.   end
  49.   
  50. end
复制代码
以上,完了,自习去的




作者: 忧雪の伤    时间: 2012-1-11 21:23
http://rpg.blue/thread-217619-1-1.html
哎呀,换行……又要更新了……今天才看到这个帖子啊喵……话说别老是提到我好久以前的练手物嘛,早就有正式版了。
作者: 木各洛林    时间: 2014-12-13 23:07
赞!!!




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