Support OpenKore:
Learn about
the Fund Pool

OpenKore 待辦事項

English | Filipino(Tagalog) | 正體中文


Contents


OpenKore 是因許多為其投注心力的人而得以繼續活躍的。沒有他們為 OpenKore 所做的偉大貢獻,OpenKore 不會是現在這個樣子。我們非常歡迎大家為 OpenKore 貢獻心力,哪怕只有一點技術技巧的人都很歡迎!

這個 wiki 頁面將提供一些對於未來該做的指示說明之類的概述。假如你有興趣對 OpenKore 做出貢獻,本頁將會提供一個不錯的導覽指南以供開始。

難度等級

每一個待辦事項都會以一個 "難度等級" 做標記:

請記住,假如你有問題,你可以在 論壇或 IRC 問我們。我們將會很高興與你互相切磋。:)

訣竅


修正 bug

等級: 變動

就像任何一支程式一樣,OpenKore 也有一些 bug。Bug 能被修正總是很感激的。請參見 OpenKore 的 bug 資料庫

資料表檔案的更新

npcs.txt

等級: 容易

在 OpenKore 資料夾底下不用一個單一的 npcs.txt,取代而之的是產生一個以伺服器名為根據而分開來的 npcs.txt(在同一伺服器中的 npc 不會變更他們位置的假設下;即在特定的伺服器之中的卡普拉維持站在同樣一個地方,不論你用的是哪一隻角色)。

portals.txt

等級: 非常容易

仍有一些傳點遺失了。舉例來說:

  • from the PVP inn at Payon to Payon
  • 從艾爾貝塔到龜洞二樓

文件的更新

我們需要更多且更好的文件。具體來說,我們需要以下文件:

非技術性的文件

等級: 非常容易

  • 寫一個如何記錄新的傳點的簡介。這個簡介必須有足夠的截圖以便使用者能看得懂。
  • 寫一個如何產生 .fld 檔案 的簡介。雖然寫一個產生此種檔案的工具程式可能會好些。

技術層面的文件與文件工具

  • 開發者緒論導覽指南 應該要移動至 Wiki。
    等級: 非常容易
  • 我們需要一個描述 OpenKore 整體設計的文件。
    等級:容易/中等
  • 我們應該要為我們所有的 hook 來撰寫說明文件。目前的 hook 幾乎都還未有說明。為此,我們將需要擴展我們的 comments-to-HTML 程式,makedoc.pl(位於 src/doc/)。
    等級:中等

維護手冊用的網路應用程式

等級:容易/中等

我們需要一個新的網路應用程式來維護手冊。Wiki 限制太多了。這個網路應用程式必須支援多國語言翻譯以及多人編輯。假如對於一個存在的物件沒有適當的翻譯,那麼翻譯必須得體地回歸至英文。此外,這個網路應用程式必須能夠支援多人編輯/維護。

這些程式碼應該清楚地被說明與維護。先前的企圖導致了難以維護錯綜複雜的程式碼。:(

對 Aegis 10.2 "padded 封包" 做支援(這個會影響到 pRO 與私服)

等級: 中等
緊急度:

一些私服使用我們稱之為 "padded 封包"(以前也稱為 "突變封包")的 Aegis 10.2 做為伺服器軟體。它們影響了 OpenKore 攻擊與使用技能的能力。這將會影響到:

  • 當未來許多私服遷至 Aegis 10.2 的版本時。
  • euRO 的使用者(as of 2006 年 8 月 31 日)。
  • 短期內所有的 pRO 使用者(將在 2006 年 6 月 20 日實施 Lighthalzen 的更新),與包含我們的使用者群中 60%-70% 的 pRO 使用者。2006 年 7 月 5 日更新:pRO已實施 Lighthalzen 的更新,但他們並沒有轉成使用 padded 封包。不過,相信在未來的某個時間點上,pRO 將會全面被 padded 封包影響到,所以能儘快有解決的方法仍然很重要。

解決的方法必須儘快地被找到。請參見 本論壇的主題 以獲得更多資訊與討論。

Refactoring

新的 AI

新的 AI 的設計

等級: 困難

目前的 AI 設計有點舊了而且顯示出它的極限。請見 New_AI_design 以了解新的 AI 設計提議的討論。

自動存倉、賣物與買物的順序

等級: 中等

目前的順序是:買物、存倉、賣物。有時候這種順序並不合理,因為卡普拉與商人NPC可能在不同的位置(甚至在分開的地圖上)。

改寫 functions.pl

等級: 中等

functions.pl 會存在是有歷史原因的。它並不真的具有良好定義的用途,而只是包含各式各樣功能的集合。我們需要做的是移動這些功能至其它的模組,使它們可被了解。我們也需要一些 "Core" 之類的模組來仿製 OpenKore 的 "core",這東西可把所有東西黏合在一起。(Also, we need some kind of "Core" module which will model OpenKore's "core", the thing that glues everything together.)

為了幫助那些想要仿製 OpenKore 的人,這裡有 functions.pl 包含的東西:

  • 所有連線狀態特定物件(程式碼中與 constates 有關連的)
  • IPC 連線的初始化與維護
  • 剖析 RO 客戶端送出的訊息(經由 XKore 模式)
  • 一些接收的封包的處理(那些無法單純由封包剖析器處理的封包)
  • 內部管理

XML config 檔案

等級: 容易

VCL 的註解:你們真的想要這樣做嗎?現在的處理格式有什麼不好?

讓 OpenKore 使用現在的文字處理格式或新的,以 XML 為基礎的格式。 Template:範例: 這個概念並不局限在只有 Config.txt 上。而也可以用在一些資料表檔案像是 npcs.txt 或任何其它不依賴由 RO 的 data.grf 解開的文字檔(例如 items.txt)的表格檔案。

除此之外,一個額外用來解析以上文字格式的解析器也會被開發,甚至可能是一個內建的 config 編輯器。

Plugins

架構

等級: 容易

OpenKore 應該要能選擇性地載入 plugin 的列表。舉例來說:

 autoLoad 2
 # 0:不自動載入 plugin
 # 1:自動載入所有的 plugin
 # 2:選擇性載入 plugin
 loadPlugins locationSkill, macro, arrowCraft

武僧連技的 plugin

目前自動連技似乎有許多關於成功發動速率的問題。從封包的型式來看,它看起來像是你接收了六合拳的延遲狀態不止一次。舉例來說,假如你使用六合拳後準備接連環全身掌,你將會接收到六合拳的延遲封包一次,然後再接收到連環全身掌的(然後假如你連環全身掌成功使出來,你還會接收到另一個關於 Raging Thrust(猛龍跨強?)的延遲封包)。

這個問題似乎是因為 OpenKore 是由*第一個*連技封包來計算連技延遲時間的。然而,由上段敘述可以推斷事實上應該要由第二個連技封包開始做計算。由第一個連技封包來開始做計算的話是非常不精確的,因為兩端的網路跟伺服器一樣會 lag 而導致失敗。

相較於顯示 您再度成為: 六合拳延遲狀態,把它們堆起來然後接收到第一個封包時顯示 您現在為: 六合拳延遲狀態 (1),然後再顯示 您現在為: 六合拳延遲狀態 (2),依此類推...也許是比較好的做法。要達成這個方法我們可以設定與 whenStatusActive 六合拳延遲狀態 (2) 在一起的一個 waitBeforeUse $char->{combo_delay}。

以下是在 XKore 模式下使用連環全身掌熱鍵的訊息記錄:

 技能 連環全身掌 失敗 (Requirement)
 技能 連環全身掌 失敗 (Requirement)
 你現在為: 六合拳延遲
 您有連技的延遲 884
 [ 95/ 64] 您施展 六合拳 (lvl 5) 於怪物 *** (0) - 傷害: 270 (延遲 29.7)
 技能 連環全身掌 失敗 (Requirement)
 技能 連環全身掌 失敗 (Requirement)
 [ 95/ 64] 怪物 艾吉歐蜈蚣 (0) 攻擊您 - 傷害: Miss! (延遲 79.2)
 技能 連環全身掌 失敗 (Requirement)
 技能 連環全身掌 失敗 (Requirement)
 您再度為: 六合拳延遲
 您不再為: 六合拳延遲
 您現在為: 六合拳延遲
 您有連技的延遲 584
 [ 95/ 62] 您施展連環全身掌 (lvl 3) 於怪物 *** (0) - 傷害: 332 (延遲 29.7)
 技能 連環全身掌 失敗 (Requirement)
 技能 連環全身掌 失敗 (Requirement)

由上可知,連環全身掌只有在第二個六合拳延遲封包收到後才會發動成功。

關於這個的一個其它方法是去 spam 連技的封包 ...但這樣做的話效能差且手法不是很漂亮。

其它

人工生命體的分類

等級: 中等

人工生命體目前是被分類為寵物(以致於 Kore 不會去攻擊它)。然而,當人工生命體變得越來越特別時,把它們分類至一個分開的類別中顯得越來越重要。以下這些事需要去完成:

  • Actor 物件(monsters, players, pets, NPCs 等等)是 Actor 類別的子類別。目前有一個 Actor::Homunculus 類別可用來代表人工生命體,但它未被利用。也就是,沒有 $homunculusList ActorList 物件可用來保持人物視野中列出的的人工生命體。此刻人工生命體是被偵測為玩家的(為了避免搶怪發生)。
  • 攻擊的 AI 與傷害表的更新功能必須被修改以正確地處理人工生命體的攻擊。