| 赞 | 3  | 
 
| VIP | 37 | 
 
| 好人卡 | 8 | 
 
| 积分 | 0 | 
 
| 经验 | 22564 | 
 
| 最后登录 | 2017-5-16 | 
 
| 在线时间 | 491 小时 | 
 
 
 
 
 
Lv1.梦旅人 
	- 梦石
 - 0 
 
        - 星屑
 - 49 
 
        - 在线时间
 - 491 小时
 
        - 注册时间
 - 2012-1-27
 
        - 帖子
 - 421
 
 
  
 
 | 
	
加入我们,或者,欢迎回来。
您需要 登录 才可以下载或查看,没有帐号?注册会员  
 
x
 
 本帖最后由 狱冥幻翼 于 2012-12-5 16:57 编辑  
 
原版的碎屏脚本计算量太大了,就自己改了改,不过连续两次战斗后会提示内存错误,求解~改了74-91行 
改后的脚本↓- class Broken_Screen
 
 -   #--------------------------------------------------------------------------
 
 -   # ● 初始化对象
 
 -   #--------------------------------------------------------------------------
 
  
-   def initialize(filename="Graphics/system/sptx.png")
 
 -     @width = Graphics.width  #获取宽高
 
 -     [url=home.php?mod=space&uid=291977]@height[/url] = Graphics.height
 
 -     #===========================
 
 -     @step_w = @width/2  #★★★★★★★★★★★#★★★★★★★★★★★
 
 -     @step_h = @height/2 #★★★★★★★★★★★#★★★★★★★★★★★
 
 -     #可以设置这两项数据,以减少可能会出现的误差,
 
 -     #因为脚本并不会检查所有的像素,所以有时候会出现误差,减少
 
 -     #步长可以减少出现误差的可能,但会增加计算量。
 
 -     #===========================
 
 -     @picture = Graphics.snap_to_bitmap #获取当前的图像
 
 -     @borken_pic = Bitmap.new(filename)#获取破碎辅助图
 
 -     @shards = {} #碎片的数组
 
 -     start #开始绘图
 
 -   end
 
 -   #--------------------------------------------------------------------------
 
 -   # ● 开始绘图
 
 -   #--------------------------------------------------------------------------
 
 -   def start
 
 -     make_shard
 
 -   end
 
 -   #--------------------------------------------------------------------------
 
 -   # ● 开始炸开
 
 -   #--------------------------------------------------------------------------
 
 -   def get_bomb
 
 -     Audio.se_play("Audio/SE/crash")
 
 -     temp = [] #将哈希表转换为数组
 
 -     @shards.each_value{|shard|
 
 -     temp.push shard
 
 -     }
 
 -     @shards = temp
 
 -     shards_v = []
 
 -     
 
 -     for i in [email protected]
 
 -       #               对象         中心位置                            转速
 
 -       @shards[i].angle=rand(2)*45
 
 -       shards_v.push [@shards[i],rand(@shards[i].x)+20-rand(40),@shards[i].y-208,rand(2)]
 
 -     end
 
 -     for t in 0..89
 
 -       for sha in shards_v
 
 -         sha[0].x+= sha[1]/10
 
 -         sha[0].y+= sha[2]/20
 
 - #~         msgbox sha[0].x
 
 -         sha[2]+=10
 
 -           sha[0].angle+=sha[3]
 
 -         if sha[3] == 0
 
 -           sha[0].zoom_x -= 0.01
 
 -           
 
 -         else
 
 -           sha[0].zoom_y -= 0.01
 
 -           
 
 -         end
 
 -           
 
 -       end 
 
 -       Graphics.update
 
  
-     end
 
 -     for sha in shards_v
 
 -       sha[0].dispose
 
 -     end
 
 -     @picture.dispose 
 
 -     @borken_pic.dispose
 
 -   end
 
  
-   #--------------------------------------------------------------------------
 
 -   # ● 制作碎片
 
 -   # area,可以被绘图的区域
 
 -   #--------------------------------------------------------------------------
 
 -   def make_shard
 
 -     area = [1,1,300,200]
 
 -     spr = Sprite.new
 
 -     spr.z = 100
 
 -     spr.bitmap = Bitmap.new(@width,@height)
 
 -     spr.ox=(area[0]+area[2])/2
 
 -     spr.oy=(area[1]+area[3])/2
 
 -     spr.x=(area[0]+area[2])/2
 
 -     spr.y=(area[1]+area[3])/2
 
 -     @shards[1] = spr
 
 -     @shards[1].bitmap.blt(area[0], area[1], @picture, Rect.new(*area)) 
 
 - #--------------------------------------------------------------------------   
 
 -     area1 = [300,100,300,200]
 
 -     spr1 = Sprite.new
 
 -     spr1.z = 100
 
 -     spr1.bitmap = Bitmap.new(@width,@height)
 
 -     spr1.ox=(area[0]+area[2])/2
 
 -     spr1.oy=(area[1]+area[3])/2
 
 -     spr1.x=(area[0]+area[2])/2
 
 -     spr1.y=(area[1]+area[3])/2
 
 -     @shards[2] = spr1
 
 -     @shards[2].bitmap.blt(area1[0], area1[1], @picture, Rect.new(*area1)) 
 
 -   end
 
 - end
 
 - #============================================================
 
 - # 本脚本由九夜神尊制作
 
 - # 欢迎任意转载修改,但请保留作者名。
 
 - #===========================================================
 
  复制代码 |   
 
 
 
 |