幻想森林

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

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

[复制链接]

40

主题

190

帖子

1635

积分

⑥精研

●~  ●~   ●

积分
1635
 楼主| 发表于 2009-12-21 13:22:37 | 显示全部楼层
attack不是一个数,只是作为被公共事件调用属性伤害的名字,在Scene_Map里通过一些计算得出31~39号变量的数值作为属性伤害。
每打中敌人一次就调用一次attack。。

  def attack
    $game_variables[31] = XXX
    $game_variables[32] = XX
    $game_variables[33] = XXX
    。。。
    。。。。。
    。。。。
  end
    
回复 支持 反对

使用道具 举报

550

主题

9116

帖子

214748万

积分

超级版主

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

Rank: 8Rank: 8

积分
2147483647
发表于 2009-12-21 13:26:19 | 显示全部楼层
那么 attack 返回的是什么。。。

要根据 attack 的返回值类型 才能决定 if attack 有没有作用啊。。
如果没有返回值的话。。就
$scene.attack
@sprite.bitmap.clear
@sprite.bitmap.fill_rect(XXX)就可以了
我就是你们的神,庶民们,追随我吧!跟着我一起拖后腿!
回复 支持 反对

使用道具 举报

40

主题

190

帖子

1635

积分

⑥精研

●~  ●~   ●

积分
1635
 楼主| 发表于 2009-12-21 13:30:39 | 显示全部楼层
我还是命中时搞个开关判断算了。。
回复 支持 反对

使用道具 举报

40

主题

190

帖子

1635

积分

⑥精研

●~  ●~   ●

积分
1635
 楼主| 发表于 2009-12-21 13:32:32 | 显示全部楼层
引用第11楼secondsen于2009-12-21 13:26发表的  :
那么 attack 返回的是什么。。。

要根据 attack 的返回值类型 才能决定 if attack 有没有作用啊。。
如果没有返回值的话。。就
$scene.attack
.......


没有返回值,还要写 if 吗?

if $scene.attack
       @sprite.bitmap.clear
       @sprite.bitmap.fill_rect(100,100, hp, 2,  Color.new(255,  0, 51))
end
回复 支持 反对

使用道具 举报

550

主题

9116

帖子

214748万

积分

超级版主

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

Rank: 8Rank: 8

积分
2147483647
发表于 2009-12-21 13:39:35 | 显示全部楼层
没有返回值就不需要 if $scene.attack了。
$scene.attack
@sprite.bitmap.clear
@sprite.bitmap.fill_rect(XXX)
就行了。。原来你是事件版的ARPG。。。
我就是你们的神,庶民们,追随我吧!跟着我一起拖后腿!
回复 支持 反对

使用道具 举报

40

主题

190

帖子

1635

积分

⑥精研

●~  ●~   ●

积分
1635
 楼主| 发表于 2009-12-21 14:07:47 | 显示全部楼层
这样一来的效果就是敌人被打中了才显示血条?平时都是不显示的。。?
回复 支持 反对

使用道具 举报

550

主题

9116

帖子

214748万

积分

超级版主

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

Rank: 8Rank: 8

积分
2147483647
发表于 2009-12-21 14:27:33 | 显示全部楼层
这不可能啊。。。。只是操作sprite.bitmap...而没有操作sprite.opacity怎么可能显示不出来呢
我就是你们的神,庶民们,追随我吧!跟着我一起拖后腿!
回复 支持 反对

使用道具 举报

40

主题

190

帖子

1635

积分

⑥精研

●~  ●~   ●

积分
1635
 楼主| 发表于 2009-12-21 14:37:47 | 显示全部楼层
平时不显示血条,就砍中了才显示。
我只加了两个变量的判断,公共事件里当命中几号敌人,5号变量的值就等于那个事件的编号
  1. #简单地图角色头上显示HP,SP
  2. #以下是简单的主角HP显示,其他怪物或NPC显示同此意
  3. class Game_Player < Game_Character
  4. def name
  5.   return $game_party.actors[0].name
  6. end
  7. end
  8. # 添加上面,我就是为了做一个判断,只让主角显示HPSP,如果你是ARPG等都要显示 自己省略
  9. class Sprite_Character < RPG::Sprite
  10.   attr_accessor :character                # 角色
  11.   def initialize(viewport, character = nil)
  12.     super(viewport)
  13.     @character = character
  14.     @sprite = Sprite.new
  15.     @sprite.bitmap = Bitmap.new(160, 220)
  16.     update
  17.   end
  18.   HPSP血条长度 = 30
  19.   alias :update_hp_sp :update
  20.   def update
  21.     update_hp_sp
  22.     @sprite.x = self.x - 115
  23.     @sprite.y = self.y - 150
  24.     
  25.   
  26.    if @character.name.include?("敌人1,")
  27.        name = @character.name
  28.        data = name.split(/,/)  #装载数据
  29.        name = data
  30.      if  @hp != data[1].to_i or @maxhp != data[2].to_i
  31.        @hp = data[1].to_i
  32.        @maxhp = data[2].to_i
  33.        hp = HPSP血条长度/(data[2].to_f/data[1].to_f)
  34.        if $game_switches[204] == true
  35.          hp = 0
  36.        end
  37.        if $game_variables[5] > 0
  38.          @sprite.bitmap.clear
  39.          @sprite.bitmap.fill_rect(100,100, hp, 2,  Color.new(255,  0, 51))
  40.        end
  41.      end
  42.    end
  43.    。。。。。
  44.    。。。
  45.    。。。。。
  46.    。。。。。。。
  47.    。。。
  48.    if @character.name.include?("敌人20,")
  49.        name = @character.name
  50.        data = name.split(/,/)  #装载数据
  51.        name = data
  52.      if  @hp != data[1].to_i or @maxhp != data[2].to_i
  53.        @hp = data[1].to_i
  54.        @maxhp = data[2].to_i
  55.        hp = HPSP血条长度/(data[2].to_f/data[1].to_f)
  56.        if $game_switches[318] == true
  57.          hp = 0
  58.        end
  59.        if $game_variables[5] > 0
  60.          @sprite.bitmap.clear
  61.          @sprite.bitmap.fill_rect(100,100, hp, 2,  Color.new(255,  0, 51))
  62.        end
  63.      end
  64.    end
  65. end
  66. end
复制代码
回复 支持 反对

使用道具 举报

550

主题

9116

帖子

214748万

积分

超级版主

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

Rank: 8Rank: 8

积分
2147483647
发表于 2009-12-21 14:43:16 | 显示全部楼层
是不是刚开始游戏的时候没有显示血条??
我就是你们的神,庶民们,追随我吧!跟着我一起拖后腿!
回复 支持 反对

使用道具 举报

40

主题

190

帖子

1635

积分

⑥精研

●~  ●~   ●

积分
1635
 楼主| 发表于 2009-12-21 14:47:35 | 显示全部楼层
刚开始游戏不显示,存盘读取也不显示啊,砍中了谁才显示谁的
回复 支持 反对

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-5-14 16:00 , Processed in 0.022111 second(s), 18 queries .

Powered by Discuz! X3.4

© 2001-2017 Comsenz Inc.

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