LV. 36
GP 160

【工具分享】rpgmaker-plugin-conflict-finder 自動尋找插件之間的衝突

樓主 muli

我討厭很會抓BUG的小鬼

moonyoulove
GP19 BP-

Hi,這是我開發的新工具,能夠幫助查找插件衝突。
最新版本的下載連結在Github上。下載完後雙擊打開conflict-finder即可使用。

本工具是利用分析插件的執行順序及寫法來判斷衝突,加密混淆過或寫法比較特別的插件無法正確的被判斷。找到插件之間的衝突後,本工具能夠建議插件的擺放位置,藉由調換順序來解決某些部分的衝突。
然而,不是所有的插件衝突都可以藉由調換順序來解決,RPG Maker常見的幾種插件衝突有:

覆蓋(Overwrite)

A插件


B插件


A插件的作用完全被覆蓋而失效了。如果是不小心覆蓋的,就可能會導致錯誤發生。當A插件使用了別名(Alias)進行了補丁(Patching),而B插件是直接覆蓋時,藉由調換兩者順序,可能可以讓兩個插件都能有作用。但是如果兩者都是覆蓋的寫法,那則無法簡單進行調換來解決。

另一種是:

過時(Outdated)

原始


A插件


B插件


因為Game_Player本身沒有searchLimit方法,而是繼承自Game_Character,所以A插件的searchLimit儲存著的是Game_CharactersearchLimit。當B插件後來再修改了searchLimit,A插件的searchLimit仍然是舊的,調換兩者的順序也能解決此問題。

利用一種函數式的別名補丁方法,可以避免發生此問題:



改成

即可自動判斷當前類別有沒有此方法,沒有的話,則會在調用時自動呼叫父類的方法來獲取最新的狀態。
19
-
未登入的勇者,要加入討論嗎?
板務人員: