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

Project1

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

[已经解决] 脚本问题 切换场景后人物出现分身~

[复制链接]

Lv1.梦旅人

梦石
0
星屑
50
在线时间
426 小时
注册时间
2011-2-25
帖子
126
跳转到指定楼层
1
发表于 2017-9-2 22:01:47 | 只看该作者 |只看大图 回帖奖励 |倒序浏览 |阅读模式

加入我们,或者,欢迎回来。

您需要 登录 才可以下载或查看,没有帐号?注册会员

x
切换场景后移动 事件、角色就会出现分身,如果原地等待3秒再走又正常,麻烦大佬们给看看
  1. #Particle_Sprite.new(@ground1,false)

  2. #==============================================================================
  3. # ■ Spriteset_Map
  4. #------------------------------------------------------------------------------
  5. #  处理地图画面活动块和元件的类。本类在 Scene_Map 类的内部使用。
  6. #==============================================================================

  7. $事件 = []

  8. class Spriteset_Map
  9.   #--------------------------------------------------------------------------
  10.   # ● 生成角色活动块
  11.   #--------------------------------------------------------------------------
  12.   alias qqeat_create_characters create_characters
  13.   def create_characters
  14.     qqeat_create_characters
  15.     @character_sprites = []
  16.     $事件 = []
  17.     for i in $game_map.events.keys.sort
  18.       sprite = Sprite_Character.new(@viewport1, $game_map.events[i])
  19.       @character_sprites.push(sprite)
  20.       $事件[i] = sprite
  21.     end
  22.     for vehicle in $game_map.vehicles
  23.       sprite = Sprite_Character.new(@viewport1, vehicle)
  24.       @character_sprites.push(sprite)
  25.     end
  26.     sprite = Sprite_Character.new(@viewport1, $game_player)
  27.     @character_sprites.push(sprite)
  28.     $事件[0] = sprite
  29.   end
  30. end


  31. class Particle
  32.   #人物
  33.   def self.character(character_id, wait = true)
  34.    
  35.     character = $game_map.events[character_id]
  36.     sprite = $事件[character_id]
  37.    
  38.     @spr1 = Sprite.new
  39.     @spr1.x = sprite.x - sprite.ox
  40.     @spr1.y = sprite.y - sprite.oy
  41.    
  42.     sign = character.character_name[/^[\!\$]./]
  43.     if sign != nil and sign.include?(')
  44.       cw = sprite.bitmap.width / 3
  45.       ch = sprite.bitmap.height / 4
  46.     else
  47.       cw = sprite.bitmap.width / 12
  48.       ch = sprite.bitmap.height / 8
  49.     end
  50.     sx = (character.character_index % 4 * 3 + (character.pattern < 3 ? character.pattern : 1)) * cw
  51.     sy = (character.character_index / 4 * 4 + (character.direction - 2) / 2) * ch
  52.    
  53.     @spr1.bitmap = Bitmap.new(cw,ch)
  54.     @spr1.bitmap.blt(0,0,sprite.bitmap,Rect.new(sx,sy,cw,ch))
  55.    
  56.     Dis_Bitmap.new(@spr1.x,@spr1.y,@spr1.bitmap,0,0,@spr1.bitmap.width,@spr1.bitmap.height,300,5,0.5)
  57.     return if !wait
  58.     $事件[character.id].visible = false
  59.     0.times{|i|@spr1.opacity -= 8;Graphics.update}
  60.     @spr1.dispose
  61.   end
  62. end

  63. class Dis_Bitmap
  64.   #————————————————————————————————————————
  65.   #*New Dis_Bitmap
  66.   #————————————————————————————————————————
  67.   def initialize(sx,sy,m_bitmap,x,y,w,h,n,d=4,co=0.5,type=:RU,rc=true,
  68.     clear=true,viewport=nil,&set_spr_proc)
  69.     @spr_datas = []; @viewport = viewport;jn = n;oo = 200
  70.     case n
  71.     when -1
  72.       n = w * h / d ** 2 / 2;lw = w / d;lh = h / d
  73.       sxy = Proc.new{|i|@xo = x + sx + i % lw * d ; @yo = y + sy + i % lh * d }
  74.     when 0
  75.       n = w * h / d ** 2;lw = w / d;lh = n / (h / d)
  76.       sxy = Proc.new{|i|@xo = x + sx + i % lw * d ; @yo = y + sy + i / lh * d }
  77.     else
  78.       sxy = Proc.new{ @xo = x + sx + rand(w);@yo = y + sy + rand(h) }
  79.     end
  80.     n.times{|i|sxy.call(i)
  81.     rx = rand(100) / 100.0
  82.     ry = rand(100) / 100.0
  83.     ro = co + rand(550) / 100.0
  84.     @spr_datas[i] = [Sprite.new(viewport),@xo,@yo,oo,rx,ry,ro]
  85.     spr = @spr_datas[i][0]
  86.     spr.x = @xo;spr.y = @yo;spr.z = 5000
  87.     spr.bitmap = Bitmap.new(d,d)
  88.     rc ? m_bitmap.rc(@xo-sx,@yo-sy,d,0,true,1.0,spr.bitmap,clear) :
  89.     m_bitmap.rf(@xo-sx,@yo-sy,d,d,spr.bitmap,clear)
  90.     set_spr_proc.call(spr) if set_spr_proc }
  91.     m_bitmap.clear_rect(x,y,w,h) if clear && jn < 1
  92.     case type
  93.     when :RU
  94.       @proc = Proc.new {|spr_data|
  95.       spr_data[1] += spr_data[4]
  96.       spr_data[2] -= spr_data[5]
  97.       spr_data[3] -= spr_data[6] }
  98.     when :LU
  99.       @proc = Proc.new {|spr_data|
  100.       spr_data[1] -= spr_data[4]
  101.       spr_data[2] -= spr_data[5]
  102.       spr_data[3] -= spr_data[6] }
  103.     when :RD
  104.       @proc = Proc.new {|spr_data|
  105.       spr_data[1] += spr_data[4]
  106.       spr_data[2] += spr_data[5]
  107.       spr_data[3] -= spr_data[6] }
  108.     when :LD
  109.       @proc = Proc.new {|spr_data|
  110.       spr_data[1] -= spr_data[4]
  111.       spr_data[2] += spr_data[5]
  112.       spr_data[3] -= spr_data[6] }
  113.     end
  114.     self.begin
  115.   end
  116.   #————————————————————————————————————————
  117.   #*All sprite
  118.   #————————————————————————————————————————
  119.   def get_all_spr
  120.     @spr_datas.collect {|spr_data|spr_data[0]}
  121.   end
  122.   #————————————————————————————————————————
  123.   #*Viewport
  124.   #————————————————————————————————————————
  125.   def get_viewport
  126.     @viewport
  127.   end
  128.   #————————————————————————————————————————
  129.   #*Control
  130.   #————————————————————————————————————————
  131.   def stop
  132.     Graphics.dis_bitmap_all.delete(self)
  133.   end
  134.   def begin
  135.     return if Graphics.dis_bitmap_all.include?(self)
  136.     Graphics.dis_bitmap_all << self
  137.   end
  138.   #————————————————————————————————————————
  139.   #*Update
  140.   #————————————————————————————————————————
  141.   def update
  142.     @spr_datas.each_with_index {|spr_data,index|
  143.     spr = spr_data[0]
  144.     @proc.call(spr_data)
  145.     spr.x = spr_data[1]
  146.     spr.y = spr_data[2]
  147.     spr.opacity = spr_data[3]
  148.     if spr_data[3] <= 0
  149.       spr.dispose
  150.       spr.bitmap.dispose
  151.       @spr_datas.delete_at(index)
  152.       stop if @spr_datas.empty?
  153.     end }
  154.   end
  155.   #————————————————————————————————————————
  156.   #*Dispose
  157.   #————————————————————————————————————————
  158.   def dispose
  159.     @spr_datas.each {|spr_data|
  160.     spr = spr_data[0]
  161.     spr.dispose
  162.     spr.bitmap.dispose }
  163.     @viewport.dispose if @viewport
  164.   end
  165. end
  166. #————————————————————————————————————————
  167. #*Graphics
  168. #————————————————————————————————————————
  169. module Graphics
  170.   @dis_bitmap_all = []
  171.   class << self
  172.   #————————————————————————————————————————
  173.   #*Alias
  174.   #————————————————————————————————————————
  175.     alias_method(:acc_update,:update) unless method_defined?(:acc_update)
  176.     alias_method(:acc_freeze,:freeze) unless method_defined?(:acc_freeze)
  177.     def update
  178.       acc_update;@dis_bitmap_all.each {|dis_bitmap|dis_bitmap.update}
  179.     end
  180.     def freeze
  181.       @dis_bitmap_all.each{|dis_bitmap|dis_bitmap.dispose}
  182.       @dis_bitmap_all = [];acc_freeze
  183.     end
  184.   #————————————————————————————————————————
  185.   #*All Dis_Bitmap instance
  186.   #————————————————————————————————————————
  187.     def dis_bitmap_all
  188.       @dis_bitmap_all
  189.     end
  190.   end
  191. end
  192. class Bitmap
  193.   #————————————————————————————————————————
  194.   #*Def clear_rect
  195.   #————————————————————————————————————————
  196.   unless method_defined?(:clear_rect)
  197.     OC0 = Color.new(0,0,0,0)
  198.     def clear_rect(x,y,width,height)
  199.       fill_rect(x, y, width, height, OC0)
  200.     end
  201.   end
  202.   #————————————————————————————————————————
  203.   #*RC bitmap
  204.   #————————————————————————————————————————
  205.   def rc(x,y,d,e=0,f=true,l=1.0,bitmap=self,rc_clear=true)
  206.     t = nil;d2 = d*2;d3 = d/2
  207.     d2.times {|i| xo = (Math.sin(Math::PI/d2*i)*(d3+e)).round
  208.     yo = (Math.cos(Math::PI/d2*i)*(d3)).round;t == yo ? next : t = yo;c = xo*2*l
  209.     f ? (xb,yb,w,h = x+xo-c+d3,y+yo+d3,c,1) : (xb,yb,w,h = y+yo+d3,x+xo-c+d3,1,c)  
  210.     bitmap.blt(xb-x,yb-y,self,Rect.new(xb,yb,w,h))
  211.     clear_rect(xb,yb,w,h) if rc_clear }
  212.   end
  213.   def rf(x,y,w,h,bitmap=self,rc_clear=true)
  214.     bitmap.blt(0,0,self,Rect.new(x,y,w,h))
  215.     clear_rect(x,y,w,h) if rc_clear
  216.   end
  217. end
复制代码

QQ圖片20170902213326.jpg (12.32 KB, 下载次数: 10)

QQ圖片20170902213326.jpg

Lv4.逐梦者

梦石
0
星屑
19284
在线时间
3074 小时
注册时间
2013-1-11
帖子
1288
2
发表于 2017-9-3 09:09:34 | 只看该作者
贴的脚本第48行有问题,应该是('$')
解决重图的错误:【Requiem SBABS Ultimate】脚本第3308行  requiem_sbabs_sp_map_create_characters 这句注释掉即可,位图消逝脚本放在main之前的最后面

评分

参与人数 1星屑 +30 收起 理由
怪蜀黍 + 30 认可答案

查看全部评分

回复 支持 反对

使用道具 举报

Lv1.梦旅人

梦石
0
星屑
50
在线时间
426 小时
注册时间
2011-2-25
帖子
126
3
 楼主| 发表于 2017-9-3 15:05:34 | 只看该作者
张咚咚 发表于 2017-9-3 09:09
贴的脚本第48行有问题,应该是('$')
解决重图的错误:【Requiem SBABS Ultimate】脚本第3308行  requiem_sb ...

谢谢咚咚
回复 支持 反对

使用道具 举报

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

本版积分规则

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

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

GMT+8, 2024-4-25 04:45

Powered by Discuz! X3.1

© 2001-2013 Comsenz Inc.

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