查看: 2362|回复: 6

[已经解决] 用成就腳本出現了下列錯處, 怎麼做?

[复制链接]
梦石
0
星屑
69
在线时间
22 小时
注册时间
2013-5-2
回帖
3
发表于 2013-5-15 01:14:52 | 显示全部楼层 |阅读模式

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

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

×
本帖最后由 cacya 于 2013-5-17 22:32 编辑


好奇怪哦...
不知道为什么会出了这个讯息...
请问是什么意思呢?

谢谢!!

[pre lang="ruby" line="1"]#==============================================================================
# ★ RGSS3_実績メダル Ver1.01
#==============================================================================
=begin

作者:tomoaky
webサイト:ひきも記

すごい記録を達成したときにポコンッと出るあれです。

イベントコマンド『スクリプト』を使ってメダルを獲得することができます。
  例)gain_medal(0)   # 0番のメダルを獲得する
  設定項目にて番号に対応するメダルの内容を設定してください。


2012.01.25  Ver1.01
  メダル獲得表示中のシーン切り替えにより表示がリセットされないように修正
  
2012.01.16  Ver1.0
  公開

=end

#==============================================================================
# □ 設定項目
#==============================================================================
module TMMEDAL
  COMMAND_MEDAL = "成就"     # 菜单命令名字
  
  # メダルが1枚もない状態でメダルコマンドを隠すかどうか(true で隠す)
  HIDE_COMMAND = false
  
  # 获得证件时的效果音
  SE_GAIN_MEDAL = RPG::SE.new("Powerup", 90, 140)
  
                # 证件名,图标ID,说明的设定    脚本设置:gain_medal(0)
  MEDAL_DATA = {}
  MEDAL_DATA[0] = ["主人", 187, "女仆和会话的证明"]
  MEDAL_DATA[1] = ["禁断の光魔法", 187, "光魔法オメガアツマーレを目撃した証"]
  MEDAL_DATA[2] = ["サキュバスファン", 190, "サキュバスと会話をした証"]
end

#==============================================================================
# ■ Game_Party
#==============================================================================
class Game_Party
  #--------------------------------------------------------------------------
  # ● 公开实例变量
  #--------------------------------------------------------------------------
  attr_reader   :medals                   # 已获得证件
  attr_reader   :new_medals               # 新获得证件
  attr_accessor :medal_info_count         # 证件信息显示计数
  attr_accessor :medal_info_opacity       # 证件信息显示不透明度
  #--------------------------------------------------------------------------
  # ● 对象初期化
  #--------------------------------------------------------------------------
  alias tmmedal_game_party_initialize initialize
  def initialize
    tmmedal_game_party_initialize
    @medals = []
    @new_medals = []
    @medal_info_count = 0
    @medal_info_opacity = 0
  end
  #--------------------------------------------------------------------------
  # ○ メダルの獲得
  #--------------------------------------------------------------------------
  def gain_medal(medal_id)
    return if @medals.any? {|medal| medal[0] == medal_id }
    t = Time.now.strftime(" (%Y/%m/%d %H:%M)")
    @medals.push([medal_id, t])
    @new_medals.push([medal_id, t])
  end
  #--------------------------------------------------------------------------
  # ○ 获得证件信息消去
  #--------------------------------------------------------------------------
  def delete_new_medal
    @new_medals.shift
  end
end

#==============================================================================
# ■ Game_Interpreter
#==============================================================================
class Game_Interpreter
  #--------------------------------------------------------------------------
  # ○ メダルの獲得
  #--------------------------------------------------------------------------
  def gain_medal(medal_id)
    $game_party.gain_medal(medal_id)
  end
end

#==============================================================================
# ■ Window_MenuCommand
#==============================================================================
class Window_MenuCommand
  #--------------------------------------------------------------------------
  # ● 独自指令的追加用
  #--------------------------------------------------------------------------
  alias tmmedal_window_menucommand_add_original_commands add_original_commands
  def add_original_commands
    tmmedal_window_menucommand_add_original_commands
    unless TMMEDAL::HIDE_COMMAND && !medal_enabled
      add_command(TMMEDAL::COMMAND_MEDAL, :medal, medal_enabled)
    end
  end
  #--------------------------------------------------------------------------
  # ○ メダルの有効状態を取得
  #--------------------------------------------------------------------------
  def medal_enabled
    !$game_party.medals.empty?
  end
end

#==============================================================================
# □ Window_MedalInfo
#==============================================================================
class Window_MedalInfo < Window_Base
  #--------------------------------------------------------------------------
  # ● オブジェクト初期化
  #--------------------------------------------------------------------------
  def initialize
    super(Graphics.width - window_width, 0, window_width, fitting_height(1))
    self.opacity = 0
    self.contents_opacity = $game_party.medal_info_opacity
    refresh
  end
  #--------------------------------------------------------------------------
  # ● ウィンドウ幅の取得
  #--------------------------------------------------------------------------
  def window_width
    return 240
  end
  #--------------------------------------------------------------------------
  # ● フレーム更新
  #--------------------------------------------------------------------------
  def update
    super
    if $game_party.medal_info_count > 0
      self.contents_opacity += 16
      $game_party.medal_info_count -= 1
      $game_party.delete_new_medal if $game_party.medal_info_count == 0
    else
      self.contents_opacity -= 16
      if self.contents_opacity == 0
        open unless $game_party.new_medals.empty?
      end
    end
    $game_party.medal_info_opacity = self.contents_opacity
  end
  #--------------------------------------------------------------------------
  # ● ウィンドウを開く
  #--------------------------------------------------------------------------
  def open
    refresh
    TMMEDAL::SE_GAIN_MEDAL.play
    $game_party.medal_info_count = 150
    self.contents_opacity = 0
    self
  end
  #--------------------------------------------------------------------------
  # ○ リフレッシュ
  #--------------------------------------------------------------------------
  def refresh
    contents.clear
    unless $game_party.new_medals.empty?
      draw_background(contents.rect)
      medal = TMMEDAL::MEDAL_DATA[$game_party.new_medals[0][0]]
      rect = contents.rect.clone
      draw_icon(medal[1], rect.x, rect.y)
      rect.x += 24
      rect.width -= 24
      draw_text(rect, medal[0])
    end
  end
  #--------------------------------------------------------------------------
  # ○ 背景の描画
  #--------------------------------------------------------------------------
  def draw_background(rect)
    temp_rect = rect.clone
    temp_rect.width /= 2
    contents.gradient_fill_rect(temp_rect, back_color2, back_color1)
    temp_rect.x = temp_rect.width
    contents.gradient_fill_rect(temp_rect, back_color1, back_color2)
  end
  #--------------------------------------------------------------------------
  # ○ 背景色 1 の取得
  #--------------------------------------------------------------------------
  def back_color1
    Color.new(0, 0, 0, 192)
  end
  #--------------------------------------------------------------------------
  # ○ 背景色 2 の取得
  #--------------------------------------------------------------------------
  def back_color2
    Color.new(0, 0, 0, 0)
  end
end

#==============================================================================
# □ Window_Medal
#==============================================================================
class Window_Medal < Window_Selectable
  #--------------------------------------------------------------------------
  # ● オブジェクト初期化
  #--------------------------------------------------------------------------
  def initialize(x, y, width, height)
    super
    refresh
    select(0)
    activate
  end
  #--------------------------------------------------------------------------
  # ● 桁数の取得
  #--------------------------------------------------------------------------
  def col_max
    return 1
  end
  #--------------------------------------------------------------------------
  # ● 項目数の取得
  #--------------------------------------------------------------------------
  def item_max
    @data ? @data.size : 1
  end
  #--------------------------------------------------------------------------
  # ● アイテムの取得
  #--------------------------------------------------------------------------
  def item
    @data && index >= 0 ? @data[index] : nil
  end
  #--------------------------------------------------------------------------
  # ● アイテムリストの作成
  #--------------------------------------------------------------------------
  def make_item_list
    @data = $game_party.medals
  end
  #--------------------------------------------------------------------------
  # ● 項目の描画
  #--------------------------------------------------------------------------
  def draw_item(index)
    item = @data[index]
    medal = TMMEDAL::MEDAL_DATA[item[0]]
    rect = item_rect(index)
    draw_icon(medal[1], rect.x, rect.y)
    rect.x += 24
    rect.width -= 216
    draw_text(rect, medal[0])
    rect.x = contents.width - 192
    rect.width = 192
    draw_text(rect, item[1], 2)
  end
  #--------------------------------------------------------------------------
  # ● ヘルプテキスト更新
  #--------------------------------------------------------------------------
  def update_help
    if item
      medal = TMMEDAL::MEDAL_DATA[item[0]]
      text = medal[2]
      @help_window.set_text(text)
    end
  end
  #--------------------------------------------------------------------------
  # ● リフレッシュ
  #--------------------------------------------------------------------------
  def refresh
    make_item_list
    create_contents
    draw_all_items
  end
end

#==============================================================================
# ■ Scene_Map
#==============================================================================
class Scene_Map
  #--------------------------------------------------------------------------
  # ● 全ウィンドウの作成
  #--------------------------------------------------------------------------
  alias tmmedal_scene_map_create_all_windows create_all_windows
  def create_all_windows
    tmmedal_scene_map_create_all_windows
    create_medal_window
  end
  #--------------------------------------------------------------------------
  # ○ メダルウィンドウの作成
  #--------------------------------------------------------------------------
  def create_medal_window
    @medal_window = Window_MedalInfo.new
  end
end

#==============================================================================
# ■ Scene_Menu
#==============================================================================
class Scene_Menu
  #--------------------------------------------------------------------------
  # ● コマンドウィンドウの作成
  #--------------------------------------------------------------------------
  alias tmmedal_scene_menu_create_command_window create_command_window
  def create_command_window
    tmmedal_scene_menu_create_command_window
    @command_window.set_handler(:medal, method(:command_medal))
  end
  #--------------------------------------------------------------------------
  # ○ コマンド[メダル]
  #--------------------------------------------------------------------------
  def command_medal
    SceneManager.call(Scene_Medal)
  end
end

#==============================================================================
# □ Scene_Medal
#==============================================================================
class Scene_Medal < Scene_MenuBase
  #--------------------------------------------------------------------------
  # ● 開始処理
  #--------------------------------------------------------------------------
  def start
    super
    create_help_window
    create_item_window
  end
  #--------------------------------------------------------------------------
  # ○ アイテムウィンドウの作成
  #--------------------------------------------------------------------------
  def create_item_window
    wy = @help_window.height
    wh = Graphics.height - wy
    @item_window = Window_Medal.new(0, wy, Graphics.width, wh)
    @item_window.viewport = @viewport
    @item_window.help_window = @help_window
    @item_window.set_handler(:cancel, method(:return_scene))
  end
end[/pre]
a2.png
梦石
0
星屑
50
在线时间
687 小时
注册时间
2012-10-29
回帖
1526
发表于 2013-5-15 01:22:27 | 显示全部楼层
不能转换 nil 为整数。

应该是 $game_party.medal_info_opacity 的值为 nil 了
修改劇本中,仔細審查原來的劇情大綱,覺得有點不太滿意,嘗試編寫不同主角不同主線的劇情,希望能寫得出來。
回复

使用道具 举报

梦石
0
星屑
69
在线时间
22 小时
注册时间
2013-5-2
回帖
3
 楼主| 发表于 2013-5-15 01:32:41 | 显示全部楼层
j433463 发表于 2013-5-15 01:22
不能转换 nil 为整数。

应该是 $game_party.medal_info_opacity 的值为 nil 了

对不起...
我是新手.... 请问可以说得详细一点吗? ><"
回复

使用道具 举报

梦石
0
星屑
50
在线时间
46 小时
注册时间
2011-2-18
回帖
28
发表于 2013-5-15 01:54:36 | 显示全部楼层
cacya 发表于 2013-5-15 01:32
对不起...
我是新手.... 请问可以说得详细一点吗? >

我也不是很懂代码 感觉他指的是

def update
    super
    if $game_party.medal_info_count > 0
      self.contents_opacity += 16
      $game_party.medal_info_count -= 1
      $game_party.delete_new_medal if $game_party.medal_info_count == 0
    else
      self.contents_opacity -= 16
      if self.contents_opacity == 0
        open unless $game_party.new_medals.empty?
      end
    end
    $game_party.medal_info_opacity = self.contents_opacity
  end

这段代码当中
   self.contents_opacity -= 16
      if self.contents_opacity == 0

2次相等后 就变成了整数了  你试试把  $game_party.medal_info_opacity = self.contents_opacity 改成  $game_party.medal_info_opacity =nil

评分

参与人数 1星屑 +50 收起 理由
Sion + 50 感谢帮忙

查看全部评分

回复

使用道具 举报

梦石
0
星屑
69
在线时间
22 小时
注册时间
2013-5-2
回帖
3
 楼主| 发表于 2013-5-15 02:11:16 | 显示全部楼层
cccjjjcui 发表于 2013-5-15 01:54
我也不是很懂代码 感觉他指的是

def update

谢谢你! 但还是不行啊.... ><""
这个我也是直接复印过来的...
所以不知道是为什么.....
回复

使用道具 举报

梦石
0
星屑
50
在线时间
687 小时
注册时间
2012-10-29
回帖
1526
发表于 2013-5-15 06:04:21 | 显示全部楼层
不清楚您的情况,脚本复制测试没有出现错误讯息,您给的错误讯息却是说第 126 行取得的值是 nil 不符合整数值的要求,但那个明明有初始化为 0 的,除非另外设定了 $game_party.medal_info_opacity 为 nil,否则不应该如此,怀疑是否有脚本与它冲突了。

评分

参与人数 1星屑 +50 收起 理由
Sion + 50 感谢帮忙

查看全部评分

修改劇本中,仔細審查原來的劇情大綱,覺得有點不太滿意,嘗試編寫不同主角不同主線的劇情,希望能寫得出來。
回复

使用道具 举报

梦石
0
星屑
103
在线时间
156 小时
注册时间
2013-8-6
回帖
55
发表于 2015-8-21 12:05:45 | 显示全部楼层
不对!这是因为读取了旧的存档,开新档就行了。
笑尽天下可笑之事。
回复

使用道具 举报

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

本版积分规则

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

在本版发帖返回顶部