Project1

标题: 我参考范例做的物品大图脚本 [打印本页]

作者: zxc3824    时间: 2011-1-2 17:12
标题: 我参考范例做的物品大图脚本
本帖最后由 zxc3824 于 2011-1-15 12:42 编辑

这是我参考着做的,但是进入游戏以后发生错误,请高手帮忙解决一下,错误部分用红字体标出
  1. #==============================================================================
  2. # 本脚本来自[url]www.66rpg.com[/url],转载和使用请保留此信息 #==============================================================================


  3. module RPG
  4.   class Weapon
  5.     def name
  6.       name = @name.split(/@/)[0]
  7.       return name != nil ? name : ''
  8.     end
  9.     def pic_name
  10.       pic_name = @name.split(/@/)[1]
  11.       return pic_name != nil ? pic_name : ""
  12.     end
  13.   end
  14.   class Armor
  15.     def name
  16.       name = @name.split(/@/)[0]
  17.       return name != nil ? name : ''
  18.     end
  19.     def pic_name
  20.       pic_name = @name.split(/@/)[1]
  21.       return pic_name != nil ? pic_name : ""
  22.     end
  23.   end
  24. end
  25. #==============================================================================
  26. # ■ Window_Equip
  27. #------------------------------------------------------------------------------
  28. #  普通物品大图标显示。
  29. #==============================================================================

  30. class Window_Item < Window_Base
  31.   #--------------------------------------------------------------------------
  32.   # ● 初始化对像
  33.   #--------------------------------------------------------------------------
  34.   def initialize
  35.     super(0, 0, 640, 480)
  36.     @item = nil
  37.     self.contents = Bitmap.new(width - 32, height - 32)
  38.     self.opacity = 0
  39.     refresh
  40.   end
  41.   #--------------------------------------------------------------------------
  42.   # ● 刷新
  43.   #--------------------------------------------------------------------------
  44.   def refresh
  45.     self.contents.clear
  46.     if @item != nil
  47.       bitmap = RPG::Cache.picture(@item.pic_name)
  48.       pic_rect = Rect.new(0, 0, bitmap.width, bitmap.height)
  49.       self.contents.blt(0, 0, bitmap, pic_rect)
  50.     end
  51.   end
  52.   def set_item(item)
  53.     @item = item
  54.   end
  55. end
  56. #==============================================================================
  57. # ■ Scene_Item
  58. #------------------------------------------------------------------------------
  59. #  处理物品画面的类。
  60. #==============================================================================

  61. class Scene_Item
  62.   #--------------------------------------------------------------------------
  63.   # ● 主处理
  64.   #--------------------------------------------------------------------------
  65.   def main
  66.     # 生成帮助窗口、物品窗口
  67.     @help_window = Window_Help2.new
  68.     @item_window = Window_Item.new
  69.     # 关联帮助窗口
  70.     @item_window.help_window = @help_window  [color=Red]就是这里,系统说我未定义[/color]
  71.     # 生成目标窗口 (设置为不可见・不活动)
  72.     @target_window = Window_Target.new
  73.     @target_window.visible = false
  74.     @target_window.active = false
  75.     # 执行过度
  76.     Graphics.transition
  77.     # 主循环
  78.     loop do
  79.       # 刷新游戏画面
  80.       Graphics.update
  81.       # 刷新输入信息
  82.       Input.update
  83.       # 刷新画面
  84.       update
  85.       # 如果画面切换就中断循环
  86.       if $scene != self
  87.         break
  88.       end
  89.     end
  90.     # 装备过渡
  91.     Graphics.freeze
  92.     # 释放窗口
  93.     @help_window.dispose
  94.     @item_window.dispose
  95.     @target_window.dispose
  96.   end
  97.   #--------------------------------------------------------------------------
  98.   # ● 刷新画面
  99.   #--------------------------------------------------------------------------
  100.   def update
  101.     # 刷新窗口
  102.     @help_window.update
  103.     @item_window.update
  104.     @target_window.update
  105.     # 物品窗口被激活的情况下: 调用 update_item
  106.     if @item_window.active
  107.       update_item
  108.       return
  109.     end
  110.     # 目标窗口被激活的情况下: 调用 update_target
  111.     if @target_window.active
  112.       update_target
  113.       return
  114.     end
  115.   end
  116. end
复制代码
这是工程

物品大图工程.rar (1.16 MB, 下载次数: 77)
作者: 白鬼    时间: 2011-1-2 20:33
Window_Item 有调用 help_window 吗?
作者: zxc3824    时间: 2011-1-4 21:14
回复 白鬼 的帖子

默认脚本那里抄过来的
作者: 白鬼    时间: 2011-1-4 21:57
回复 zxc3824 的帖子

我想我大概知道了。
Window_Item 有调用 help_window
但是并没有给help_window 定义
而装备大图的时候调用了Window_Item,却也没有定义help_window
于是出现了这个错误
解决方法:最好把你的工程拿来让大家帮你看看。因为这段脚本是没什么问题的。
让大家看看是哪里调用了Window_Item 却没有定义help_window
作者: enghao_lim    时间: 2011-1-7 00:44
其实是你得window_item是继承window_base的父类,window_base未定义help_window,window_selectable才有。
作者: zxc3824    时间: 2011-1-7 12:28
回复 enghao_lim 的帖子

那我将selectable里面的help_window复制到window_base可不可以?

现在我没时间继续研究,所以就问各位高手和大侠
作者: 银·乌尔    时间: 2011-1-8 18:56
不用,你把Window_Item < Window_Base
这句的Window_Base换成Window_Selectable就好了...
作者: zxc3824    时间: 2011-1-9 20:29
回复 银·乌尔 的帖子

还是有错啊,定义.............


zxc3824于2011-1-15 12:43补充以下内容:
工程已上,欢迎指教




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