Project1

标题: 关于简单地图角色头上显示HP #by 66rpg学习 [打印本页]

作者: stella    时间: 2009-6-1 04:49
标题: 关于简单地图角色头上显示HP #by 66rpg学习
以下脚本是在敌人事件头上只显示血条,敌人1的HP值为变量501,敌人1的MAXHP值为变量476,进入地图时我用一自动执行事件给两个变量赋值各=1000,赋值后打开独立开关。结果一进游戏就出错如下图,后来把自动执行换成并行处理就可以正常进游戏,别的都没改。这是为什么??





。。。。。。

class Sprite_Character < RPG::Sprite
attr_accessor :character                # 角色
def initialize(viewport, character = nil)
   super(viewport)
   @character = character
   @sprite = Sprite.new
   @sprite.bitmap = Bitmap.new(160, 220)
   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 == "敌人1"
       #是敌人1的情况下,显示敌人1的HP
     if  @hp != $game_variables[501] or
         @maxhp != $game_variables[476]
       @hp = $game_variables[501]
       @maxhp = $game_variables[476]
       hp = HPSP血条长度/($game_variables[476].to_f/$game_variables[501].to_f)
       @sprite.bitmap.clear
       @sprite.bitmap.fill_rect(100,100, hp, 2,  Color.new(255,  0, 51))
     end
   end
end
end [LINE]1,#dddddd[/LINE]版务信息:本贴由楼主自主结贴~
作者: 66rpg学习    时间: 2009-6-1 05:37
提示: 作者被禁止或删除 内容自动屏蔽
作者: stella    时间: 2009-6-1 05:43
我发个工程吧,敌人1事件设置为自动执行一进游戏就出错,改为并行处理就不出错。奇怪
下载
http://rpg.blue/upload_program/d/stella_ENEMY_124235894.rar


p  $game_variables[476].to_f 显示1000.0,直接 p hp 出错,显示:NameError
undefined local variable or method hp for #<Interpreter:0x10a5d48>

作者: 66rpg学习    时间: 2009-6-1 16:47
提示: 作者被禁止或删除 内容自动屏蔽
作者: stella    时间: 2009-6-1 16:57
那么并行处理就是在进入地图的前面?我试了一下,似乎把变量先在Scene_Title里赋值再用自动执行就不会出错了
作者: 66rpg学习    时间: 2009-6-1 16:59
提示: 作者被禁止或删除 内容自动屏蔽




欢迎光临 Project1 (https://rpg.blue/) Powered by Discuz! X3.1