關於部落格
RPG製作大師XP腳本為主要更新

RPG製作大師VX腳本為其次更新

RPG製作大師VX_Ace目前不考慮

RPG製作大師MV腳本完全沒打算

留言完建議重新整理看看是否顯示

目前不處理本舖外腳本的相關問題

其他相關事項請觀看規定注意事項

本舖未來的經營計畫與VA的支援




var _gaq = _gaq || [];
_gaq.push(['_setAccount', 'UA-37462754-1']);
_gaq.push(['_trackPageview']);

(function() {
var ga = document.createElement('script'); ga.type = 'text/javascript'; ga.async = true;
ga.src = ('https:' == document.location.protocol ? 'https://ssl' : 'http://www') + '.google-analytics.com/ga.js';
var s = document.getElementsByTagName('script')[0]; s.parentNode.insertBefore(ga, s);
})();

  • 305763

    累積人氣

  • 6

    今日人氣

    0

    追蹤人氣

RMXP錯誤訊息整理


【NoMemoryError】
若想一次佔有過大的內存時,就會觸發它。

【ScriptError】

用來表示腳本錯誤的異常。

【NotImplementedError】
若調用尚未配備的功能時就會誘發該異常。

【SyntaxError】 UP!! 
若出現語法錯誤時就會引發該異常。
a = 0
unless a == 0
  p 1
elsif a == 1 # unless 無法使用 elsif
  p 2
end

self = 1 # 不可以直接將 self 代入任何東西
def sword?? # 函數名稱最多只能有1個問號
end
def sword!! # 函數名稱最多只能有1個驚嘆號
end
def sword(a = 0, b) # 當指定默認參數時,則後面的參數也必須是默認參數
end
a = true
if a # 少一個end(錯誤行數可能會出現在最後1行)
a = true
if a
end
end # 多一個end(錯誤行數可能會出現在最後1行)
# 沒有結尾(錯誤行數可能出現在任何一個end中或是結尾)
a = [ # 數組無結尾
( #框號無結尾
a = { # 哈希表無結尾
# 框到了非值的東西(通常是在 沒有結尾 時不小心框到的比較多)
a = [end]
a = {end}
(end)

【StandardError】
在 rescue 部分中,即使沒有給出具體的錯誤類,也可以利用該異常類及其子類來捕捉異常。

【ArgumentError】
若參數個數不對或者參數值錯誤時,就會引發該異常。 
 
wrong number of arguments(x for y)
指定的參數只要輸入y個參數,你卻輸入了x個參數
class Sword
  def main
    update # 錯誤內容:wrong number of arguments(0 for 3)
    update(10) # 錯誤內容:wrong number of arguments(1 for 3)
    update(10, 30) # 錯誤內容:wrong number of arguments(2 for 3)
    update(10, 30, 50) # 不會錯誤(成功執行update方法的內容)
    update(10, 30, 50, 80) # 錯誤內容:wrong number of arguments(4 for 3)
    update(10, 30, 50, 80, 100) # 錯誤內容:wrong number of arguments(5 for 3)
  end
  def update(a, b, c) # 指定該方法需要3個參數(分別代入變量a、b、c之中)
    p a
    p b
    p c
    $scene = Scene_Title.new
  end
end
 
wrong # of arguments (x for y)
只需要輸入y個參數,你卻輸入了x個(此錯誤可能出現在參數給內部類的可能)
self.contents.fill_rect(1,1, 90, 119, 2, Color.new(255, 255, 0, 255))
 
comparison of String with 數值 failed
可能是拿字符串和 [數值] 進行比較
p "Miss" > 0
 
negative array size (or size too big)
用【.first(單元數目)】獲取數組開頭的單元數目,其指定的單元數目為負數
a = [1, 2, 3]
a.first(-1)
 
NULL pointer given
可能是調用API時,返回值設定的不正確
 
bad value for range
可能是範圍指定的開始值或結束值類型錯誤,也就是範圍使用非數值的情況下發生
1..5 # 正確使用方式
1..[5]
 
comparison of Fixnum with false failed
未知,@input_number_window存入的是事件 [數值輸入處理] 的類
錯誤行數出現在腳本「Interpreter 7」第272行的【result = eval(script)
@input_number_window = Window_InputNumber.new(6)
@input_number_window.number = 10 < 0 ? @negative = true : @negative = false
# 錯誤行數不再這裡

【IndexError】
若索引超出範圍就會引發該異常。
 
index 數值 out of sting
可能是該 [數值] 位置的字符串為空雸觸發
a = ''
a[5] = '' #  index 5 out of sting
 
regexp not matched NEW
直接指定字符串的正則表達式方式,無法找到正則表達式能匹配的內容而觸發
'121'[/12/] # 不會錯誤
'121'[/122/]
# 會錯誤

【IOError】
若 I/O 發生錯誤時就會引發該異常。
 
not opened for writing
嘗試在讀取模式中修改指定的檔案發生(很類似定義實例變數的異常)
# 假設1235.txt存在的場合
file = File.open('1235.txt')
# 沒指定第2個參數,第2個參數預設為"r",也就是讀取模式
Marshal.dump($data_weapons, file)
file.close

【EOFError】
若到達 EOF(End Of File)時就會引發該異常。
 
End of file reached UP!!  
1:拿沒有存入到存檔裡的變量來代入存檔資料,由於存檔沒有該變量的資料而出錯
2:可能是在存檔畫面或是讀檔畫面中,腳本嘗試獲取已經損壞的存檔或是空白存檔後發生
  請檢查看看你的遊戲資料夾中的存檔(存檔的檔案名稱開頭為Save)
  將有問題的存檔刪除看看(如:0KB大小的存檔)
  並檢查看看存檔腳本有沒有編寫錯誤或是在其他的地方中進行存檔
  (例如:腳本是否在標題畫面嘗試存檔,或是其他不合理的位置...等等)
  或是在存檔的時候有沒有發生什麼錯誤之類的
# 讀取檔案時觸發
class Scene_Load < Scene_File
  alias sword_error_read_save_data read_save_data
  def read_save_data(file)
    sword_error_read_save_data(file)
    $sword = Marshal.load(file) # 並沒有將變量$sword存到存檔裡過,所以出錯
  end
end

【LocalJumpError】
控制結構的跳轉點沒有發現時會引發該異常。
 
no block given UP!! 
該方法需要使用選代器(代塊)來使用,如果沒代塊就觸發此異常
所謂的代塊方法,簡單來說就是要加 do 表示開始,在用 end 結束
或是使用 {} 框起來也可以表示(也可以說是一種循環)
# 正確寫法
10.times do |i|
  p i
end
10.times {|i| p i} # 正確寫法 
10.times |i| p i # 錯誤寫法
 
unexpected next NEW
沒在循環中使用【next】腳本而觸發
但某些情況下,似乎會引發NilClass異常(目前不明)
5.times do |i|
  p i
  next # 不會錯誤
end
next # 會錯誤(如果是NilClass異常,錯誤行數是第1個腳本的第1行)
 
unexpected break NEW
沒在循環中使用【break】腳本而觸發
loop do
  break # 不會錯誤
end
break # 會錯誤

【NameError】
若使用未定義的變量或常量時就會觸發該異常。

uninitialized constant 類1::類2
在 [類1] 中代入了 [類2] ,但 [類2] 卻不存在
 
uninitialized constant 類1::常量
在 [類1] 中代入了沒有定義的 [常量]
 
undefined method‵方法' for class‵'
1.在[類]中找不到指定的[方法]
2.使用alias替換[方法]名稱,但[類]繼承了其他的類,而繼承的類中找不到指定的方法
 
uninitialized constant Interpreter::
可能是呼叫了不存在的[類]
 
undefined local variable or method‵ 方法' for #<:0xXXXXXXX>
在 [類] 中呼叫了不存在的 [方法]

【NoMethodError】
若調用了未定義的方法時,就會引發該異常。
 
undefined method‵ 數學符號' for nil:NilClass
nil(Nil類)中沒有定義這些符號的使用
nil - 0
nil * 0
nil < 0

nil == 0 # 不會錯誤:拿來比較是否和nil值相同是可行的
 
undefined method‵[]=' for nil:NilClass
將nil當成數組去讀取或是修改指定的單位
a = nil
a[0] = 1

b = []
b[0][0] = 1 # b[0]由於未定義所以視為nil
 
undefined method‵[]' for nil:NilClasundefined method‵方法' for #<:0xXXXXXXX>
在[類]中呼叫了未定義的[方法]
 
super: no superclass method‵方法
可能是使用【super(參數)】腳本傳送參數給父親腳本同名的 [方法]
但是該類的父類同名的 [方法] 沒有指定要參數
 
undefined method‵方法' for 模塊:Module
可能是呼叫了不存在的 [模塊] 中的 [方法]
 
undefined method‵ new' for :Module
可能是用呼叫類的方式來呼叫模塊
(通常不可能分辨是類還是模塊來進行呼叫,因為類和模塊同名可能會出現錯誤)
module Sword
end
Sword.new

【RangeError】
與範圍有關的異常。在進行超出範圍的數值變換(從 Bignum 變為 Fixnum)等操作時就會引發該異常。
  
bignum too big to convert into‵int' UP!!
可能是嘗試在多維數組中的任一個單元中存入大量的數值發生
(感覺上多維數組的儲存空間有點像是固定宣告的類型,並非Ruby本身無需宣告變數的特性)
a = Table.new(3)
a[2] = 999999
# 不會錯誤
a[2] = 999999999999999999 # 會錯誤
 
數值 out of char range NEW
可能是使用【數值.chr】腳本,指定不數值不是0~255任一個數而觸發

【FloatDomainError】
若想將正負無窮或 NaN(Not a Number)變為 Bignum,或與 NaN 進行比較時就會引發該異常。

【RegexpError】
若未能成功編譯正則表達式,則引發該異常。
 
empty char-class: 正則表達式 NEW
正則表達式編寫錯誤觸發(如:正則表達式中,[]內是空的就會錯誤)
通常情況下內容寫錯會觸發SyntaxError異常,但是如果在遊戲運行途中發生這種錯誤時
就會引發該RegexpError異常
a = '[]'
/#{a}/ # empty char-class: /[]/
 
target of repeat operator is not specified: 正則表達式 NEW
正則表達式的開頭,某些有特殊功能的內容左邊需要文字(像是:+、?、{}、{0,}、{0,0}...等)
如果該特殊功能的內容左邊的字是空的話就會錯誤
通常情況下內容寫錯會觸發SyntaxError異常,但是如果在遊戲運行途中發生這種錯誤時
就會引發該RegexpError異常
a = '?'
/#{a}/ # target of repeat operator is not specified: /?/

【RuntimeError】
運行時異常。當調用了 raise 卻未指定異常時,就會引發該異常。
 
Wrong number of parameters: expected x, got y.
可能是呼叫API時,需要y個參數,你卻輸入x個(其實我不知道為啥不是ArgumentError異常)
GetKeyState = Win32API.new("user32","GetAsyncKeyState",%w(l),"l")
a = GetKeyState.call # 錯誤內容:Wrong number of parameters: expected 1, got 0.
b = GetKeyState.call(65) # 不會錯誤

 
沒有錯誤說明 NEW
使用【raise】腳本而引發該異常(故意觸發異常)
 
自定的錯誤說明 NEW
使用【raise('錯誤說明')】腳本而引發異常(故意觸發異常)

 

【SystemCallError】
若系統調用失敗的話,就會引發該異常。

【Errno::E2BIG】
參數列表過長。

【Errno::EACCES】
訪問被拒絕。

【Errno::EAGAIN】
除此之外不能再生成進程。

【Errno::EBADF】
非法文件編號。
 
Bad file descriptor
未知
gets # 也許是F1幫助說明沒教的內部函數的可能...

【Errno::ECHILD】
子進程不存在。

【Errno::EDEADLOCK】
有可能發生資源的死鎖。


【Errno::EDOM】
數字運算函數的參數是超出函數域的值。
 
Domain error - acos
使用【acos(數值)】時,數值使用了未滿-1或超過1的數值時發生
 
Domain error - asin
使用【asin(數值)】時,數值使用了未滿-1或超過1的數值時發生


【Errno::EEXIST】
文件已存在。

【Errno::EINVAL】
非法參數。

【Errno::EMFILE】
打開的文件過多。

【Errno::ENOENT】
沒有文件或目錄。
 
No such file or directory - 檔案路徑 UP!!
沒有發現檔案 檔案路徑
1:找尋不到指定的檔案或是圖片,因腳本「Main」第20~24行的設計而改成中文內容
2:用命令輸出(被 ` 包圍住的內容)指定時,找不到指定的命令而觸發
 
Exec format error - 內容 NEW
用命令輸出(被 ` 包圍住的內容)指定路徑時,該路徑的檔案類型不適用時觸發(大概)

【Errno::ENOEXEC】
可執行文件錯誤。

【Errno::ENOMEM】
內存不足。

【Errno::ENOSPC】
設備剩餘空間不足。

【Errno::ERANGE】
結果過大。

【Errno::EXDEV】
設備間連結。

【SystemStackError】
若棧深度過深的話就會引發該異常。
 
stack level too deep UP!!
可能是無限循環呼叫同個方法時發生
通常發生這個情況比較多都是用保留字「alias」重定義內部的方法名稱後
按下F12鍵重新開始時觸發的情況較多,由於F12重新只重置腳本編輯器定義的內容
內部已經被修改的定義不會重置(全局變量也不重置),導致執行「alias」2次而發生!!
要避免這種事情的發生,可以善用全局變量也不重置的特性,用條件分歧判斷是否執行
(這也是為什麼有些腳本有F12除錯標誌的原因)
class Sword
  def a
   a
  end
end
Sword.new.a
class Array # 數組類(內部)
  alias sword_clear clear
  def clear
    sword_clear # 按下F12執行這個方法後會出錯
  end
end
解決方法
class Array
  alias sword_clear clear if $ass == nil # 如果$ass是nil(默認值)就執行
  def clear
    sword_clear
  end
end
$ass = true
# 將$ass改為true,防止F12重新時又再次被「alias」重定義

【TypeError】
若使用了錯誤的類型時,就會引發該異常。
 
cannot convert 值1 into 值2 UP!!
該參數必須為 [值2] 的類型,但卻給出了 [值1] 的類型
# ★以窗口文字框為例,窗口的文字都必須設置字除串才可以
# cannot convert nil into String(需要字符串卻給nil)

self.contents.draw_text(0, 0, 180, 32, nil, 0) 
# cannot convert true into String(需要字符串卻給true)
self.contents.draw_text(0, 0, 180, 32, true, 0) 
# cannot convert false into String(需要字符串卻給false)
self.contents.draw_text(0, 0, 180, 32, false, 0) 
# cannot convert Fixnum into String(需要字符串卻給數值)
self.contents.draw_text(0, 0, 180, 32, 111, 0) 
self.contents.draw_text(0, 0, 180, 32, 111.to_s, 0) # 要顯示數值請加【.to_s】
# cannot convert Bitmap into String(需要字符串卻給位圖)
self.contents.draw_text(0, 0, 600, 32, RPG::Cache.icon("001-Weapon01"), 1)
#如要顯示圖片可以使用blt方法
self.contents.blt(0, 0, RPG::Cache.icon("001-Weapon01"), Rect.new(0, 0, 640, 480))
# cannot convert Array into String(需要字符串卻給數組)
self.contents.draw_text(0, 0, 180, 32, ["1","2"], 0)
 
no implicit conversion from nil to integer

可能是指定了數組中第nil個單元所致
a = [1, 2]
p a[nil]

 
no marshal_dump is defined for calss Sprite
未知
 
already 方法 class
不會解釋,我是在嘗試用【include 模塊名】,誤認成左邊為指定的 [方法]
來繼承該模塊的變量,就跑出這樣的錯誤訊息了...

module Sword_a
  A = 1

end
class Sword
  initialize Sword_a # 錯誤內容:already initialized class
  include Sword_a # 正確使用方法
end
 
is not a class
可能是你創建了1個 [類] ,但這個 [類] 的名稱和現有的模塊名稱同名
module Sword
end
class Sword
end
 
exception class/object expeced
不會解釋,總之就是規定只能使用字符串(請看以下橘色字內容)
raise ('SwordError',"必須是字符串")
 
superclass must be a Class (Module given)
可能是讓某個類繼承了模塊
module Sword
end
class Sword2 < Sword
end

【ZeroDivisionError】
若將某值除以 0 時,就會引發該異常。 
 
divided by 0
用任意數值除0發生,畢竟任何數值除0跟無限是沒有什麼區別的
30 / 0
a %= 0
# 用%符號求餘數,計算方式和除法一樣,所以會錯誤

【LoadError】 UP!!
附加庫加載失敗觸發的異常
 
No such file to load -- 字串內容
路徑中找不到指定的附加庫而觸發(也有可能是RM某些不支援...)
關於附加庫,請去Ruby官方網站下載源碼檔來使用
require("Sword") #Error: No such file to load -- Sword
load("Sword") #Error: No such file to load -- Sword

【SystemExit】
結束程序的運行。請參考 exit。 (通常此錯誤名稱視為exit)
 
exit
使用了腳本【exit】或是按遊戲窗口最右上方的X來觸發這個不算錯誤的錯誤!!通常不會有錯誤訊息的窗口出現就直接關閉遊戲

【fatal】
當解釋器內部發生致命性錯誤(內部錯誤)時, 就會引發該異常。通常情況下,在程序中無法看到 fatal對象。

【NilClass】 NEW
nil 的類,不知道是不是RM的BUG,通常錯誤行數會在第1個腳本的第一行
redo #  錯誤行數會在第1個腳本的第一行(循環外使用)
next # 錯誤行數會在第1個腳本的第一行(循環外使用)

【RGSSError】
通知 RGSS 內部錯誤的異常類。
在 Bitmap 類和 Sprite 類中,訪問已釋放對像等情況下就會發生。

 

disposed window UP!!
1:釋放(關閉)了不存在的窗口
2:對已經釋放的窗口進行窗口上的操作
  假設你將某變量存了窗口進去,你使用釋放的瞬間,該變量的值還是該窗口
  必須過一段時間,變量的值才會變成nil(大概)
 
failed to create bitmap UP!!
產生的位圖大小寬度或是高度在0以下時觸發,通常是在窗口寬度或是高度沒32以上觸發...

【其他】
スクリプトがハングアップしました
腳本已經被備份。

XP獨有,遊戲運行時,經過10秒沒使用【Graphics.update】腳本就會出現此訊息
 
呼叫公用事件超過了限制。
當連續呼叫公共事件達到101以上發生,因腳本「Interpreter 1」第18~21行的設計才顯示
 
主角初始位置未設定。
VX獨有,當未設定主角初始位置而發生,因腳本「Scene_Title」203~206行而發生
 
DirectX Audio初始化失敗
可能是沒音效卡或是音效卡的驅動程式不存在,不然就是音效卡或驅動程式出了問題(大概)
 
相簿設定
標籤設定
相簿狀態