查看: 2968|回复: 5

[已经解决] 求教用此HP脚本后新游戏报错的问题

[复制链接]
梦石
0
星屑
50
在线时间
84 小时
注册时间
2011-7-8
回帖
38
发表于 2012-10-18 22:32:39 | 显示全部楼层 |阅读模式

加入我们,或者,欢迎回来。

您需要 登录 才可以下载或查看,没有账号?注册会员

×
就是下面这个HP脚本,用了之后用存档载入游戏玩没问题,但是如果开始新游戏的话就会报错。 如图


求教此脚本要如何修改才不出错,本人是脚本小白 ……我这里面用的是21号变量代入的队长的ID

[pre lang="ruby" line="1"]#----------------------------------------------------------------------------
#マップにウインドウ表示
#----------------------------------------------------------------------------

module MARU_MAP_WINDOW
  
  #★設定項目
  
  SWITCH = 1 #マップウインドウ表示に使用するスイッチ番号
             #該当スイッチONで表示、OFFで非表示
            
  ACTOR  = 21 #ステータスを表示するアクターIDを参照する変数の番号
             #変数が0の時はアクターID1番のステータスを表示
  
  NAME   =  "満腹度"     #追加ウインドウに表示する名前
  VALUE  =  191            #満腹度(仮)の値を操作する変数の番号
  ASWITCH = 1            #追加ウインドウを表示するスイッチ
                         #(上のスイッチと同じにする事で同時に管理可能)
                        
  
  #★設定終わり

end



#==============================================================================
# ■ Scene_Map
#------------------------------------------------------------------------------
#  マップ画面の処理を行うクラスです。
#==============================================================================

class Scene_Map < Scene_Base
  #--------------------------------------------------------------------------
  # ● 全ウィンドウの作成
  #--------------------------------------------------------------------------
  alias ma__create_all_windows create_all_windows
  def create_all_windows
    ma__create_all_windows
    create_status_windows
  end
  #--------------------------------------------------------------------------
  # ● 表示ウインドウの作成
  #--------------------------------------------------------------------------
  def create_status_windows
    @actorsta = $game_actors[$game_variables[MARU_MAP_WINDOW::ACTOR]]
    create_hpmp_window
    create_extra_window
  end
  #--------------------------------------------------------------------------
  # ● HP・MPウインドウの作成
  #--------------------------------------------------------------------------
  def create_hpmp_window
    @hpmp_window = Window_Status_e.new
  end
  #--------------------------------------------------------------------------
  # ● 経験値ウインドウの作成
  #--------------------------------------------------------------------------
  def create_extra_window
    @ext_window = Window_Extra.new
    @ext_window.width = @ext_window.width
  end

  #--------------------------------------------------------------------------
  # ● フレーム更新
  #--------------------------------------------------------------------------
  alias ma_update update
  def update
    ma_update
    @hpmp_window.update
    @ext_window.update
  end
end


#==============================================================================
# ■ Window_Status_e
#------------------------------------------------------------------------------
#  HPとMPを表示するウィンドウです。
#==============================================================================

class Window_Status_e < Window_Selectable
  #--------------------------------------------------------------------------
  # ● オブジェクト初期化
  #--------------------------------------------------------------------------
  def initialize
    super(96,0,148,fitting_height(2))
    refresh
  end
  #--------------------------------------------------------------------------
  # ● ウィンドウ幅の取得
  #--------------------------------------------------------------------------
  def window_width
    return 140
  end
  #--------------------------------------------------------------------------
  # ● ウインドウの更新
  #--------------------------------------------------------------------------
  def update
    super
    if $game_switches[MARU_MAP_WINDOW::SWITCH] == false
      self.visible = false
      return
    else
      self.visible = true
    end
    hpp = @actorsta.hp
    mpp = @actorsta.mp
    mhpp = @actorsta.mhp
    mmpp = @actorsta.mmp
    idd = $game_variables[MARU_MAP_WINDOW::ACTOR]
    if hpp != @last_hp or mpp != @last_mp or idd != @last_id or
       mhpp != @last_mhp or mmpp != @last_mmp
      refresh
    end
  end
  #--------------------------------------------------------------------------
  # ● リフレッシュ
  #--------------------------------------------------------------------------
  def refresh
    contents.clear
    @actorsta = $game_actors[$game_variables[MARU_MAP_WINDOW::ACTOR]]
    draw_actor_hp(@actorsta, 0, 0)
    draw_actor_mp(@actorsta, 0, 24)
    @last_hp = @actorsta.hp
    @last_mhp = @actorsta.mhp
    @last_mp = @actorsta.mp
    @last_mmp = @actorsta.mmp
    @last_id = $game_variables[MARU_MAP_WINDOW::ACTOR]
  end
end




#==============================================================================
# ■ Window_Extraa
#------------------------------------------------------------------------------
#  追加項目を表示するウィンドウです。
#==============================================================================

class Window_Extra < Window_Base
  #--------------------------------------------------------------------------
  # ● オブジェクト初期化
  #--------------------------------------------------------------------------
  def initialize
    super(0, 72, window_width, fitting_height(1))
    refresh
  end
  #--------------------------------------------------------------------------
  # ● ウィンドウ幅の取得
  #--------------------------------------------------------------------------
  def window_width
    return 140
  end
  #--------------------------------------------------------------------------
  # ● 経験値ウインドウの作成
  #--------------------------------------------------------------------------
  def refresh
    contents.clear
    o_text = MARU_MAP_WINDOW::NAME
    value = $game_variables[MARU_MAP_WINDOW::VALUE]
    change_color(system_color)
    draw_text(0, 0, 140, line_height, o_text)
    change_color(normal_color)
    draw_text(0, 0, window_width - 24, line_height, value.to_s, 2)
    @last_value = $game_variables[MARU_MAP_WINDOW::VALUE]
  end
  #--------------------------------------------------------------------------
  # ● ウインドウの更新
  #--------------------------------------------------------------------------
  def update
    super
    if $game_switches[MARU_MAP_WINDOW::ASWITCH] == false
      self.visible = false
      return
    else
      self.visible = true
    end
    val = $game_variables[MARU_MAP_WINDOW::VALUE]
    if val != @last_value
       refresh
    end
  end
end[/pre]


‘‘──PIA于2012-10-18 22:34补充以下内容:

一楼图忘发了,补上……
[attachimg]139341[/attachimg]
’’
某军事控翻译的脑残版CLANNAD
点击进入http://tieba.baidu.com/%E4%FE%BB ... 8f8e952ce6c4e1374d0
梦石
0
星屑
50
在线时间
84 小时
注册时间
2011-7-8
回帖
38
 楼主| 发表于 2012-10-18 22:36:38 | 显示全部楼层

报错

报错
怎么发了好几次图都显示不出来……
某军事控翻译的脑残版CLANNAD
点击进入http://tieba.baidu.com/%E4%FE%BB ... 8f8e952ce6c4e1374d0
回复

使用道具 举报

梦石
0
星屑
1394
在线时间
989 小时
注册时间
2011-5-11
回帖
418
发表于 2012-10-19 07:45:15 | 显示全部楼层
你能看一下 $game_variables[MARU_MAP_WINDOW::ACTOR]也就是 $game_variables[21]的值在角色数据库中是否存在?
http://rpg.blue/static/image/smiley/yct/A059.gif中国字认识都不到一半,哪的心情学英语呀!
回复

使用道具 举报

梦石
0
星屑
50
在线时间
84 小时
注册时间
2011-7-8
回帖
38
 楼主| 发表于 2012-10-19 12:05:27 | 显示全部楼层
345912390 发表于 2012-10-19 07:45
你能看一下 $game_variables[MARU_MAP_WINDOW::ACTOR]也就是 $game_variables[21]的值在角色数据库中是否存 ...

我是在公共事件用变量21号带入的第一个队员的角色ID,并行处理的……
某军事控翻译的脑残版CLANNAD
点击进入http://tieba.baidu.com/%E4%FE%BB ... 8f8e952ce6c4e1374d0
回复

使用道具 举报

梦石
0
星屑
1394
在线时间
989 小时
注册时间
2011-5-11
回帖
418
发表于 2012-10-19 21:02:10 | 显示全部楼层
PIA 发表于 2012-10-19 12:05
我是在公共事件用变量21号带入的第一个队员的角色ID,并行处理的……

改第121行
  1. @actorsta = $game_actors[$game_variables[MARU_MAP_WINDOW::ACTOR]]#原行为角色库成员
  2. #改为下面的
  3. @actorsta = $game_party.members[$game_variables[MARU_MAP_WINDOW::ACTOR]]#修改为队伍成员
复制代码
虽然不知道这是什么作用的脚本,但用上面改法不会出错

评分

参与人数 1梦石 +2 收起 理由
迷糊的安安 + 2 认可答案 附赠66RPG提供的精美好人卡一张^^.

查看全部评分

http://rpg.blue/static/image/smiley/yct/A059.gif中国字认识都不到一半,哪的心情学英语呀!
回复

使用道具 举报

梦石
0
星屑
50
在线时间
84 小时
注册时间
2011-7-8
回帖
38
 楼主| 发表于 2012-10-19 23:33:38 | 显示全部楼层
345912390 发表于 2012-10-19 21:02
改第121行虽然不知道这是什么作用的脚本,但用上面改法不会出错

{:2_275:}非常感谢,已经解决了。其实这个脚本是在地图上显示HP的……
某军事控翻译的脑残版CLANNAD
点击进入http://tieba.baidu.com/%E4%FE%BB ... 8f8e952ce6c4e1374d0
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 注册会员

本版积分规则

Powered by Discuz! X5.0 © 2001-2026 Discuz! Team.

在本版发帖返回顶部