幻想森林

 找回密码
 立即注册
搜索
热搜: 活动 交友 discuz
楼主: 幻耶

[已解决] 这个ARPG血条脚本对游戏速度影响很大,有办法优化么?

[复制链接]

550

主题

9116

帖子

214748万

积分

超级版主

如同神一般的存在,腿神!拖后腿的神~~

Rank: 8Rank: 8

积分
2147483647
发表于 2009-12-22 11:39:54 | 显示全部楼层
@sprite.bitmap.fill_rect(100,100, hp, 2,  Color.new(255,  0, 51))
这里面是不有个参数 hp么。。。没定义。。。

需要你自己改的啊。。。改成对应的hp。。。我也不知道你的血量是用什么表示的,只能这么写了。。。。
我就是你们的神,庶民们,追随我吧!跟着我一起拖后腿!
回复 支持 反对

使用道具 举报

40

主题

190

帖子

1635

积分

⑥精研

●~  ●~   ●

积分
1635
 楼主| 发表于 2009-12-22 12:24:36 | 显示全部楼层
那我只能改在下面了..
   if @character.name.include?("敌人20,")
       name = @character.name
       data = name.split(/,/)  #装载数据
       name = data
     if  @hp != data[1].to_i or @maxhp != data[2].to_i
       @hp = data[1].to_i
       @maxhp = data[2].to_i
       hp = HPSP血条长度/(data[2].to_f/data[1].to_f)
       if $game_switches[318] == true
         hp = 0
       end
       if @character.id > 0 && @character.id < 21 #and $game_variables[5] > 0
         @sprite = Sprite.new
         @sprite.bitmap = Bitmap.new(160, 220)
         @sprite.bitmap.clear
         @sprite.bitmap.fill_rect(100,100, hp, 2,  Color.new(255,  0, 51))
       end
     end
   end
回复 支持 反对

使用道具 举报

550

主题

9116

帖子

214748万

积分

超级版主

如同神一般的存在,腿神!拖后腿的神~~

Rank: 8Rank: 8

积分
2147483647
发表于 2009-12-22 12:28:26 | 显示全部楼层
你可以把这一段都放在初始化里的。。
我就是你们的神,庶民们,追随我吧!跟着我一起拖后腿!
回复 支持 反对

使用道具 举报

40

主题

190

帖子

1635

积分

⑥精研

●~  ●~   ●

积分
1635
 楼主| 发表于 2009-12-22 12:50:50 | 显示全部楼层
那么 hp = HPSP血条长度/(data[2].to_f/data[1].to_f) 怎么放到初始化里去呢?


比如1号事件名是这样的:敌人1,1500,1500,150,260,120,80,50,43      那么data[1]就是第一个1500,data[2]是第二个1500
。。。。。。
当中还有2号事件到19号事件
。。。。。
比如20号事件名是这样的:敌人20,2000,2000,150,260,120,80,50,43      那么data[1]就是第一个2000,data[2]是第二个2000



data[1]是血量,data[2]是最大血量
回复 支持 反对

使用道具 举报

550

主题

9116

帖子

214748万

积分

超级版主

如同神一般的存在,腿神!拖后腿的神~~

Rank: 8Rank: 8

积分
2147483647
发表于 2009-12-22 14:10:39 | 显示全部楼层
if @character.name.include?("敌人20,")
       name = @character.name
       data = name.split(/,/)  #装载数据
       name = data
你这里不是写了么
我就是你们的神,庶民们,追随我吧!跟着我一起拖后腿!
回复 支持 反对

使用道具 举报

40

主题

190

帖子

1635

积分

⑥精研

●~  ●~   ●

积分
1635
 楼主| 发表于 2009-12-22 14:47:07 | 显示全部楼层
这些全部放在初始化里?大概有二十段吧。。

   if @character.name.include?("敌人1,")
       name = @character.name
       data = name.split(/,/)  #装载数据
       name = data
     if  @hp != data[1].to_i or @maxhp != data[2].to_i
       @hp = data[1].to_i
       @maxhp = data[2].to_i
       hp = HPSP血条长度/(data[2].to_f/data[1].to_f)
       if $game_switches[318] == true
         hp = 0
       end
       if @character.id > 0 && @character.id < 21 #and $game_variables[5] > 0
         @sprite = Sprite.new
         @sprite.bitmap = Bitmap.new(160, 220)
         @sprite.bitmap.clear
         @sprite.bitmap.fill_rect(100,100, hp, 2,  Color.new(255,  0, 51))
       end
     end
   end
。。。。。。
。。。。。。。
。。。。。
。。。
。。。。。
。。。。。
。。。。。。
。。
。。。。
   if @character.name.include?("敌人20,")
       name = @character.name
       data = name.split(/,/)  #装载数据
       name = data
     if  @hp != data[1].to_i or @maxhp != data[2].to_i
       @hp = data[1].to_i
       @maxhp = data[2].to_i
       hp = HPSP血条长度/(data[2].to_f/data[1].to_f)
       if $game_switches[318] == true
         hp = 0
       end
       if @character.id > 0 && @character.id < 21 #and $game_variables[5] > 0
         @sprite = Sprite.new
         @sprite.bitmap = Bitmap.new(160, 220)
         @sprite.bitmap.clear
         @sprite.bitmap.fill_rect(100,100, hp, 2,  Color.new(255,  0, 51))
       end
     end
   end
回复 支持 反对

使用道具 举报

550

主题

9116

帖子

214748万

积分

超级版主

如同神一般的存在,腿神!拖后腿的神~~

Rank: 8Rank: 8

积分
2147483647
发表于 2009-12-22 15:17:55 | 显示全部楼层
错误解释。。屏蔽。。刚才没看明白
我就是你们的神,庶民们,追随我吧!跟着我一起拖后腿!
回复 支持 反对

使用道具 举报

550

主题

9116

帖子

214748万

积分

超级版主

如同神一般的存在,腿神!拖后腿的神~~

Rank: 8Rank: 8

积分
2147483647
发表于 2009-12-22 15:21:10 | 显示全部楼层
不对不对!
你这个是Sprite_Character啊!怎么那么多啊!不用循环用编号!

if @character.name.include?("敌人"+/([1-20]+)/i+",")

1~20 都包括进去了
我就是你们的神,庶民们,追随我吧!跟着我一起拖后腿!
回复 支持 反对

使用道具 举报

550

主题

9116

帖子

214748万

积分

超级版主

如同神一般的存在,腿神!拖后腿的神~~

Rank: 8Rank: 8

积分
2147483647
发表于 2009-12-22 15:34:14 | 显示全部楼层
if @character.name.include?("敌人20,")
       name = @character.name
       data = name.split(/,/)  #装载数据
       name = data
     if  @hp != data[1].to_i or @maxhp != data[2].to_i
       @hp = data[1].to_i
       @maxhp = data[2].to_i
       hp = HPSP血条长度/(data[2].to_f/data[1].to_f)
       if $game_switches[318] == true
         hp = 0
       end
       if @character.id > 0 && @character.id < 21 #and $game_variables[5] > 0
         @sprite = Sprite.new
         @sprite.bitmap = Bitmap.new(160, 220)
         @sprite.bitmap.clear
         @sprite.bitmap.fill_rect(100,100, hp, 2,  Color.new(255,  0, 51))
       end
     end
   end

       name = @character.name
       data = name.split(/,/)  #装载数据
       name = data
name 没用啊?除了这定义以外,你也没有再用到name,之用的data
那你就3句合成一句
data = @character.name.split(/,/)
如果你想返回事件的名字的话。你就return data[0]就可以了,还定义个name干啥。
我就是你们的神,庶民们,追随我吧!跟着我一起拖后腿!
回复 支持 反对

使用道具 举报

40

主题

190

帖子

1635

积分

⑥精研

●~  ●~   ●

积分
1635
 楼主| 发表于 2009-12-22 15:43:50 | 显示全部楼层
最后改成下面这样,先不循环,只试一个事件,结果进游戏出错

class Game_Player < Game_Character
def name
  return $game_party.actors[0].name
end
end

# 添加上面,我就是为了做一个判断,只让主角显示HPSP
class Sprite_Character < RPG::Sprite
  attr_accessor :character                # 角色
  
  def initialize(viewport, character = nil)
    super(viewport)
    @character = character
  
   if @character.name.include?("敌人20,")
       name = @character.name
       data = name.split(/,/)  #装载数据
       name = data
     if  @hp != data[1].to_i or @maxhp != data[2].to_i
       @hp = data[1].to_i
       @maxhp = data[2].to_i
       hp = HPSP血条长度/(data[2].to_f/data[1].to_f)
    @sprite = Sprite.new
    @sprite.bitmap = Bitmap.new(160, 220)
       @sprite.bitmap.clear
       @sprite.bitmap.fill_rect(100,100, hp, 2,  Color.new(255,  0, 51)) if @character.id > 0 && @character.id < 21
     end
   end

    update
  end
  HPSP血条长度 = 30
   
  alias :update_hp_sp :update
  def update
    update_hp_sp
    @sprite.x = self.x - 115
    @sprite.y = self.y - 150
   
   if @character.name.include?("敌人20,")
       name = @character.name
       data = name.split(/,/)  #装载数据
       name = data
     if  @hp != data[1].to_i or @maxhp != data[2].to_i
       @hp = data[1].to_i
       @maxhp = data[2].to_i
       hp = HPSP血条长度/(data[2].to_f/data[1].to_f)
       if $game_switches[318] == true
         hp = 0
       end
       if @character.id > 0 && @character.id < 21 and $game_variables[5] > 0
    @sprite = Sprite.new
    @sprite.bitmap = Bitmap.new(160, 220)
         @sprite.bitmap.clear
         @sprite.bitmap.fill_rect(100,100, hp, 2,  Color.new(255,  0, 51))
       end
     end
   end
   

end
end

本帖子中包含更多资源

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

x
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

Archiver|手机版|小黑屋|幻想森林

GMT+8, 2024-5-14 08:59 , Processed in 0.035750 second(s), 18 queries .

Powered by Discuz! X3.4

© 2001-2017 Comsenz Inc.

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