设为首页收藏本站|繁體中文

Project1

 找回密码
 注册会员
搜索
查看: 1213|回复: 1
打印 上一主题 下一主题

[已经过期] 求助为什么这个脚本一直说未定义错误

[复制链接]

Lv3.寻梦者

梦石
0
星屑
2022
在线时间
658 小时
注册时间
2014-2-15
帖子
81
跳转到指定楼层
1
发表于 2016-4-9 22:44:39 | 只看该作者 回帖奖励 |正序浏览 |阅读模式

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

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

x
#==============================================================================
# ■ Sprite_MenuPicture
#------------------------------------------------------------------------------
#  メニュー画面で衣装の状態を表すウィンドウです
#==============================================================================
class Sprite_MenuPicture #< Window_Selectable
  #--------------------------------------------------------------------------
  # ◆ 定数
  #--------------------------------------------------------------------------
  #MyGameConst::ETYPE_ID_OUTER = 1
  #MyGameConst::ETYPE_ID_INNER = 2
  #MyGameConst::ETYPE_ID_HEAD = 3
  #MyGameConst::ETYPE_ID_LEG = 4
  #MyGameConst::ITEM_ID_FANTASY_DRESS = 62
  
  #--------------------------------------------------------------------------
  # ● オブジェクト初期化
  #--------------------------------------------------------------------------
  def initialize(x, y, width, height, actor_id=1, mode="main")
    # 基本的には1番目のアクター
    @actor_id = actor_id
    @mode = mode
    @x = x
    @y = y
    do_factory_item_file_list
    do_factory_body_file_list
    draw_picture  

    actor = $game_actors[@actor_id]   
   
    # 有効な防具を取得し、それぞれに対応するピクチャを表示する
    actor.armors.each{|armor|
      target_file_name = @item_file_list[armor.id]["file_name"]
      if armor.etype_id == MyGameConst::ETYPE_ID_OUTER        
        #if armor.id == MyGameConst::ITEM_ID_FANTASY_DRESS and @body != nil
        #  set_body_picture(target_file_name)
        #  @body.z = 99999
        #else
          @outer_item_id = armor.id
        #end
      elsif armor.etype_id == MyGameConst::ETYPE_ID_INNER
        @inner_item_id = armor.id
      elsif armor.etype_id == MyGameConst::ETYPE_ID_HEAD
        @head_item_id = armor.id
      elsif armor.etype_id == MyGameConst::ETYPE_ID_LEG
        @leg_item_id = armor.id
      end
      
      #puts armor.id
      #puts armor.etype_id
      #puts @item_file_list[armor.id]["file_name"]
    }

  end
  
  #--------------------------------------------------------------------------
  # ◆ オブジェクトの解放処理
  #--------------------------------------------------------------------------  
  def dispose
    @body.dispose if @body != nil and !(@body.disposed?)
    @base_head.dispose if @base_head != nil and !(@base_head.disposed?)
    @outer.dispose if @outer != nil and !(@outer.disposed?)
    @inner.dispose if @inner != nil and !(@inner.disposed?)
    @head.dispose if @head != nil and !(@head.disposed?)
    @leg.dispose if @leg != nil and !(@leg.disposed?)
  end
  
  #--------------------------------------------------------------------------
  # ◆ オブジェクトの更新処理
  #--------------------------------------------------------------------------  
  def update
    draw_picture
   
  end
  
  
  #--------------------------------------------------------------------------
  # ◆ MenuPictureメイン処理
  #--------------------------------------------------------------------------   
  def draw_picture   
    # 基本の身体ピクチャを表示する
    # 他人と入れ替わった場合等、ここに指定するピクチャが変わる
   
    if @mode == "main"
      body_skin_id = $game_variables[MyGameConst::VARIABLE_BODY_SKIN_IDX]
    #if body_skin_id != -1
    else
      body_skin_id = @actor_id
    end
   
   
    body_file_name = @body_file_list[body_skin_id]["body_file_name"]
    set_body_picture(body_file_name)
   
    base_head_file_name = @body_file_list[body_skin_id]["head_file_name"]
    hair_order = @body_file_list[body_skin_id]["hair_order"]
    set_base_head_picture(base_head_file_name, hair_order)
   
    # 基本的には1番目のアクター
    actor = $game_actors[@actor_id]
   
   
    # 有効な防具を取得し、それぞれに対応するピクチャを表示する
    actor.armors.each{|armor|
   
   
      target_file_name = @item_file_list[armor.id]["file_name"]
      
      # キャラタイプが異なる場合、ここに「-type1」等の名前を指定する
      # それだけ素材数も増えることになるが・・・
      
      if armor.etype_id == MyGameConst::ETYPE_ID_OUTER        
        #if armor.id == MyGameConst::ITEM_ID_FANTASY_DRESS and @body != nil
        #  set_body_picture(target_file_name)
        #  @body.z = 99999
        #else
         
          if armor.id != @outer_item_id   
            set_outer_picture(target_file_name)
            @outer_item_id = armor.id
          end         
        #end
      elsif armor.etype_id == MyGameConst::ETYPE_ID_INNER and armor.id != @inner_item_id
        set_inner_picture(target_file_name)
        @inner_item_id = armor.id
      elsif armor.etype_id == MyGameConst::ETYPE_ID_HEAD and armor.id != @head_item_id
        set_head_picture(target_file_name)
        @head_item_id = armor.id
      elsif armor.etype_id == MyGameConst::ETYPE_ID_LEG and armor.id != @leg_item_id
        set_leg_picture(target_file_name)
        @leg_item_id = armor.id
      end
      
      #puts armor.id
      #puts armor.etype_id
      #puts @item_file_list[armor.id]["file_name"]
    }
   
     
    # 装備状況の確認
    outer_item = actor.get_equip_slot_status(MyGameConst::ETYPE_ID_OUTER)
    inner_item = actor.get_equip_slot_status(MyGameConst::ETYPE_ID_INNER)
    head_item = actor.get_equip_slot_status(MyGameConst::ETYPE_ID_HEAD)
    leg_item = actor.get_equip_slot_status(MyGameConst::ETYPE_ID_LEG)
   
   
    # 装備アイテムがない場合、衣服ピクチャを削除する
    if outer_item.is_nil?
      @outer.dispose if @outer != nil and [email protected]?
      @outer_item_id = -1
    end
   
    if inner_item.is_nil?
      @inner.dispose if @inner != nil and [email protected]?
      @inner_item_id = -1
    end
   
    if head_item.is_nil?
      @head.dispose if @head != nil and [email protected]?
      @head_item_id = -1
    end
   
    if leg_item.is_nil?
      @leg.dispose if @leg != nil and [email protected]?
      @leg_item_id = -1
    end

   
    #end
  end
  
  #--------------------------------------------------------------------------
  # ◆ キャラクターピクチャ用のスプライトを生成する
  #--------------------------------------------------------------------------  
  def do_factory_sprite(file_name)
    _sprite = Sprite.new
    _sprite.zoom_x = 0.5
    _sprite.zoom_y = 0.5
    _sprite.x = -74 + @x
    _sprite.y = -48
   
    _bitmap = Cache.picture(file_name)
    _sprite.bitmap = _bitmap   
    return _sprite
  end
  
  #--------------------------------------------------------------------------
  # ◆ 身体のスプライトを表示する
  #--------------------------------------------------------------------------  
  def set_body_picture(file_name)
    @body.dispose if @body != nil and [email protected]?
    @body = do_factory_sprite(file_name)
    @body.z = 9999
   
    # サキュバス化:@body.tone.set(0, 0, 130)
  end

  #--------------------------------------------------------------------------
  # ◆ 頭部のスプライトを表示する
  #--------------------------------------------------------------------------  
  def set_base_head_picture(file_name, hair_order)
    @base_head.dispose if @base_head != nil and !@base_head.disposed?
    @base_head = do_factory_sprite(file_name)
    if hair_order == "fore"
      @base_head.z = 11000
    else
      @base_head.z = 10000
    end
   
    # サキュバス化:@base_head.tone.set(0, 0, 130)
  end  
  
  #--------------------------------------------------------------------------
  # ◆ インナーのスプライトを表示する
  #--------------------------------------------------------------------------   
  def set_inner_picture(file_name)
    @inner.dispose if @inner != nil and [email protected]?
    @inner = do_factory_sprite(file_name)
    @inner.z = 10001
  end

  #--------------------------------------------------------------------------
  # ◆ 脚部のスプライトを表示する
  #--------------------------------------------------------------------------   
  def set_leg_picture(file_name)
    @leg.dispose if @leg != nil and [email protected]?
    @leg = do_factory_sprite(file_name)
    @leg.z = 10003
  end   

  #--------------------------------------------------------------------------
  # ◆ アウターのスプライトを表示する
  #--------------------------------------------------------------------------   
  def set_outer_picture(file_name)
    @outer.dispose if @outer != nil and [email protected]?
    @outer = do_factory_sprite(file_name)
    @outer.z = 10004
  end
  
  #--------------------------------------------------------------------------
  # ◆ 頭アクセサリーのスプライトを表示する
  #--------------------------------------------------------------------------   
  def set_head_picture(file_name)
    @head.dispose if @head != nil and [email protected]?
    @head = do_factory_sprite(file_name)
    #@head.z = 10004
    @head.z = 11010
  end

  def do_factory_body_file_list
    @body_file_list = {
      1 =>
      {
        "head_file_name" => "H000-主人公",
        "body_file_name" => "B999-基本ボディ",
        "type" => "big"
      },
    }
  end
  
  
  #--------------------------------------------------------------------------
  # ◆ ピクチャとファイル名のハッシュを生成する
  #--------------------------------------------------------------------------   
  def do_factory_item_file_list
    @item_file_list = {
      60 =>
      {
        "file_name" => "060-セーラー服"
      },
    }   
  end
  
  
  
  
end

Lv3.寻梦者

梦石
0
星屑
1297
在线时间
995 小时
注册时间
2014-12-14
帖子
3016

开拓者

2
发表于 2016-4-17 23:58:17 | 只看该作者
本帖最后由 Vortur 于 2016-4-18 00:03 编辑

你好!
  能否再给出进一步的说明,例如脚本来源、脚本使用说明、是否有范例工程、是否在纯净的工程中报错?
  一般这种错误很可能因为“未能事先设置好脚本需要的设置”,在下也是个脚本渣,过几日有时间的时候,或可与阁下一起参悟...

PS:
脚本可以使用“脚本框”框起来。这样可以使它在一定程度上被折叠,并且方便复制。不过会有一些bug,例如“@”后面通常会被论坛错误理解,导致自动增加一些字段,进而使脚本失效(或者其他未知bug),此类信息可参考论坛使用说明。因此使用一个可以“保存格式”的txt文本编辑软件是十分重要的,推荐notepad++与UltraEdit,或者GeminiRelease。对于脚本的入门,推荐使用这个教程:https://rpg.blue/thread-315743-1-1.html


点评

好主意  发表于 2016-4-18 16:20
我已经放弃了这个脚本  发表于 2016-4-18 13:17
【RMVA教程】
---------------------
欲买桂花同载酒,终不似,少年游.
回复 支持 反对

使用道具 举报

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

本版积分规则

拿上你的纸笔,建造一个属于你的梦想世界,加入吧。
 注册会员
找回密码

站长信箱:[email protected]|手机版|小黑屋|无图版|Project1游戏制作

GMT+8, 2025-7-21 11:36

Powered by Discuz! X3.1

© 2001-2013 Comsenz Inc.

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