幻想森林

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

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

[复制链接]

550

主题

9116

帖子

214748万

积分

超级版主

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

Rank: 8Rank: 8

积分
2147483647
发表于 2009-12-23 16:56:14 | 显示全部楼层
还是的出手
我就不贴图了吧。。。
点下边的 copy code
  1. class Game_Player < Game_Character
  2.   def name
  3.     return $game_party.actors[0].name
  4.   end
  5. end
  6. # 添加上面,我就是为了做一个判断,只让主角显示HPSP,如果你是ARPG等都要显示 自己省略
  7. class Sprite_Character < RPG::Sprite
  8.   attr_accessor :character                # 角色
  9.   HPSP血条长度 = 30
  10.   def initialize(viewport, character = nil)
  11.     super(viewport)
  12.     @character = character
  13.     if @character.name.include?("敌人")
  14.       id = @character.name.delete("敌人").split(/,/)[0].to_i
  15.       if id > 0 && id < 21
  16.         name = @character.name
  17.         data = name.split(/,/)  #装载数据
  18.         name = data
  19.         if  @hp != data[1].to_i or @maxhp != data[2].to_i
  20.           @hp = data[1].to_i
  21.           @maxhp = data[2].to_i
  22.           hp = HPSP血条长度/(data[2].to_f/data[1].to_f)
  23.           if $game_switches[318] == true
  24.             hp = 0
  25.           end
  26.           if @character.id > 0 && @character.id < 21
  27.             @sprite = Sprite.new
  28.             @sprite.bitmap = Bitmap.new(160, 220)
  29.             @sprite.bitmap.fill_rect(100,100, hp, 2,  Color.new(255,  0, 51))
  30.           end
  31.         end
  32.       end
  33.     end
  34.     update
  35.   end
  36.   alias :update_hp_sp :update
  37.   def update
  38.     update_hp_sp
  39.     if @character.name.include?("敌人")
  40.       id = @character.name.delete("敌人").split(/,/)[0].to_i
  41.       if id > 0 && id < 21
  42.         @sprite.x = self.x - 115
  43.         @sprite.y = self.y - 150
  44.         name = @character.name
  45.         data = name.split(/,/)  #装载数据
  46.         name = data
  47.         if  @hp != data[1].to_i or @maxhp != data[2].to_i
  48.           @hp = data[1].to_i
  49.           @maxhp = data[2].to_i
  50.           hp = HPSP血条长度/(data[2].to_f/data[1].to_f)
  51.           if $game_switches[318] == true
  52.             hp = 0
  53.           end
  54.           if @character.id > 0 && @character.id < 21 && $game_variables[5] > 0
  55.             @sprite.bitmap.clear
  56.             @sprite.bitmap.fill_rect(100,100, hp, 2,  Color.new(255,  0, 51))
  57.           end
  58.         end
  59.       end
  60.     end
  61.   end
  62. end
复制代码
我就是你们的神,庶民们,追随我吧!跟着我一起拖后腿!
回复 支持 反对

使用道具 举报

550

主题

9116

帖子

214748万

积分

超级版主

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

Rank: 8Rank: 8

积分
2147483647
发表于 2009-12-23 16:56:55 | 显示全部楼层
$game_variables[5] > 0
这个是干什么用的?
我就是你们的神,庶民们,追随我吧!跟着我一起拖后腿!
回复 支持 反对

使用道具 举报

40

主题

190

帖子

1635

积分

⑥精研

●~  ●~   ●

积分
1635
 楼主| 发表于 2009-12-23 18:11:44 | 显示全部楼层
$game_variables[5]是记录打中敌人事件编号的,打中1号事件$game_variables[5]=1,打中20号事件$game_variables[5]=20。。。这些是在处理敌人伤害的公共事件里记录的
回复 支持 反对

使用道具 举报

550

主题

9116

帖子

214748万

积分

超级版主

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

Rank: 8Rank: 8

积分
2147483647
发表于 2009-12-23 18:35:36 | 显示全部楼层
你是说 5号变量 记录的是事件的编号是吧???

if @character.id > 0 && @character.id < 21 && $game_variables[5] > 0
改成
if @character.id ==$game_variables[5]
  $game_variables[5]  = 0
我就是你们的神,庶民们,追随我吧!跟着我一起拖后腿!
回复 支持 反对

使用道具 举报

40

主题

190

帖子

1635

积分

⑥精研

●~  ●~   ●

积分
1635
 楼主| 发表于 2009-12-23 19:31:32 | 显示全部楼层
太感谢了,速度提高到30幁左右了,再减去一半事件应该可以了     
回复 支持 反对

使用道具 举报

550

主题

9116

帖子

214748万

积分

超级版主

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

Rank: 8Rank: 8

积分
2147483647
发表于 2009-12-23 19:41:11 | 显示全部楼层
if $game_switches[318] == true
            hp = 0
          end


这个的意思是318号的开关打开的话。。就不显示血条么?
首先if $game_switches[318] 就可以了
其次。。你放错地方了
  1. class Game_Player < Game_Character
  2.   def name
  3.     return $game_party.actors[0].name
  4.   end
  5. end
  6. # 添加上面,我就是为了做一个判断,只让主角显示HPSP,如果你是ARPG等都要显示 自己省略
  7. class Sprite_Character < RPG::Sprite
  8.   attr_accessor :character                # 角色
  9.   HPSP血条长度 = 30
  10.   def initialize(viewport, character = nil)
  11.     super(viewport)
  12.     @character = character
  13.     if @character.name.include?("敌人")
  14.       id = @character.name.delete("敌人").split(/,/)[0].to_i
  15.       if id > 0 && id < 21
  16.         name = @character.name
  17.         data = name.split(/,/)  #装载数据
  18.         name = data
  19.         if  @hp != data[1].to_i or @maxhp != data[2].to_i
  20.           @hp = data[1].to_i
  21.           @maxhp = data[2].to_i
  22.           hp = HPSP血条长度/(data[2].to_f/data[1].to_f)
  23.           if @character.id > 0 && @character.id < 21
  24.             @sprite = Sprite.new
  25.             @sprite.bitmap = Bitmap.new(160, 220)
  26.             @sprite.bitmap.fill_rect(100,100, hp, 2,  Color.new(255,  0, 51))
  27.           end
  28.         end
  29.       end
  30.     end
  31.     update
  32.   end
  33.   alias :update_hp_sp :update
  34.   def update
  35.     update_hp_sp
  36.     if $game_switches[318]
  37.       @sprite.opacity = 0
  38.     else
  39.       if @character.name.include?("敌人")
  40.         id = @character.name.delete("敌人").split(/,/)[0].to_i
  41.         if id > 0 && id < 21
  42.           @sprite.x = self.x - 115
  43.           @sprite.y = self.y - 150
  44.           name = @character.name
  45.           data = name.split(/,/)  #装载数据
  46.           name = data
  47.           if  @hp != data[1].to_i or @maxhp != data[2].to_i
  48.             @hp = data[1].to_i
  49.             @maxhp = data[2].to_i
  50.             hp = HPSP血条长度/(data[2].to_f/data[1].to_f)
  51.             if @character.id > 0 && @character.id < 21 && $game_variables[5] > 0
  52.               @sprite.bitmap.clear
  53.               @sprite.bitmap.fill_rect(100,100, hp, 2,  Color.new(255,  0, 51))
  54.             end
  55.           end
  56.         end
  57.       end
  58.     end
  59.   end
  60. end
复制代码
我就是你们的神,庶民们,追随我吧!跟着我一起拖后腿!
回复 支持 反对

使用道具 举报

550

主题

9116

帖子

214748万

积分

超级版主

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

Rank: 8Rank: 8

积分
2147483647
发表于 2009-12-23 19:45:29 | 显示全部楼层
name = @character.name
          data = name.split(/,/)  #装载数据
          name = data
改成 data = @character.name.split(/,/)  #装载数据
就可以了。。。name这个局部变量你也没用上啊

还有。。别人事件做的ARPG都不卡的。。。你脚本怎么会卡。。。
我就是你们的神,庶民们,追随我吧!跟着我一起拖后腿!
回复 支持 反对

使用道具 举报

40

主题

190

帖子

1635

积分

⑥精研

●~  ●~   ●

积分
1635
 楼主| 发表于 2009-12-23 19:48:05 | 显示全部楼层
318开关就是20号敌人挂了。。。
回复 支持 反对

使用道具 举报

550

主题

9116

帖子

214748万

积分

超级版主

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

Rank: 8Rank: 8

积分
2147483647
发表于 2009-12-23 19:49:41 | 显示全部楼层
那1号~20号都是什么开关?
我就是你们的神,庶民们,追随我吧!跟着我一起拖后腿!
回复 支持 反对

使用道具 举报

40

主题

190

帖子

1635

积分

⑥精研

●~  ●~   ●

积分
1635
 楼主| 发表于 2009-12-23 19:51:09 | 显示全部楼层
并行事件多吧,而且主角还带宠物打。。。还有,用了二十几个脚本

本帖子中包含更多资源

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

x
回复 支持 反对

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-5-14 18:27 , Processed in 0.027144 second(s), 18 queries .

Powered by Discuz! X3.4

© 2001-2017 Comsenz Inc.

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