在NPCDATA.TXT文件下對應的每一個NPC都有其相應的屬性,其中有一項npc_ai={}的屬性(對於編成的來説,這可以看成一個函數) 現在對這個屬性進行一些研究
如 npc_ai={[grandmaster_ramos];{[fnHi] = [grandmaster_ramos001.htm]};{[fnClassMismatch] = [grandmaster_ramos002.htm]};
{[fnClassList1] = [grandmaster_ramos003h.htm]};{[fnClassList2] = [grandmaster_ramos003e.htm]};{[fnYouAreSecondClass] =
[grandmaster_ramos004.htm]};{[fnYouAreThirdClass] = [grandmaster_ramos005.htm]};{[fnLowLevelNoProof11] =
[grandmaster_ramos008ha.htm]};{[fnLowLevelNoProof12] = [grandmaster_ramos008hb.htm]};{[fnLowLevelNoProof13] =
[grandmaster_ramos008hc.htm]};{[fnLowLevelNoProof21] = [grandmaster_ramos008ea.htm]};{[fnLowLevelNoProof22] =
[grandmaster_ramos008eb.htm]};{[fnLowLevelNoProof23] = [grandmaster_ramos008ec.htm]};{[fnLowLevel11] =
[grandmaster_ramos009ha.htm]};{[fnLowLevel12] = [grandmaster_ramos009hb.htm]};{[fnLowLevel13] =
[grandmaster_ramos009hc.htm]};{[fnLowLevel21] = [grandmaster_ramos009ea.htm]};{[fnLowLevel22] =
[grandmaster_ramos009eb.htm]};{[fnLowLevel23] = [grandmaster_ramos009ec.htm]};{[fnNoProof11] =
[grandmaster_ramos010ha.htm]};{[fnNoProof12] = [grandmaster_ramos010hb.htm]};{[fnNoProof13] = [grandmaster_ramos010hc.htm]};
{[fnNoProof21] = [grandmaster_ramos010ea.htm]};{[fnNoProof22] = [grandmaster_ramos010eb.htm]};{[fnNoProof23] =
[grandmaster_ramos010ec.htm]};{[fnAfterClassChange11] = [grandmaster_ramos011ha.htm]};{[fnAfterClassChange12] =
[grandmaster_ramos011hb.htm]};{[fnAfterClassChange13] = [grandmaster_ramos011hc.htm]};{[fnAfterClassChange21] =
[grandmaster_ramos011ea.htm]};{[fnAfterClassChange22] = [grandmaster_ramos011eb.htm]};{[fnAfterClassChange23] =
[grandmaster_ramos011ec.htm]}} corpse_time=7
首先[grandmaster_ramos]是對應的NPC名字,遊戲中叫大師拉莫斯,就是為每個騎士專職的那個NPC,{[fnHi]=?????}就是對應智能的參數
在這裡fnHi可以理解為大家第一次和他打招呼,他要做的動作,如這裡要顯示grandmaster_ramos001.htm這個葉面,後面的[fnClassMismatch]都
是一樣的,而對於爲什麽是[fnHi] [fnClassMismatch]等標誌呢?下面我們就要研究script下面的 ai.obj 這個文件
還好 ai.obj 不是加密的,或者16進制文件 用普通文本工具就能打開。 ai.obj這個文件就是定義了所有npc的智能(包括怪物),其中都是面向對象(oo)的方法構造了大量的類 default_npc 這個類是所有類的父
類,其他的類都是這個類的子類,子子類 之類的,對於這些類中的對象,和其他的參數先不做深入研究,我們就介紹繼承關係。
default_npc 這個是最高的類 接著下來是 citizen guard guard_stand warrior等都是default的子類,這裡和NPCDATA裏面的 citizen guard guard_stand
warrior都是一樣的 再接著下來我們找到grandmaster_ramos,這也是一個類,通過多層的繼承關係,但它下面沒有定義其它的方法,找到他的次高級父類就是 guild_master,
找到下面parameter_define_begin 和parameter_define_end中間的參數,就有 fnHi fnClassMismatch 這就是他的方法,npc_ai{}中調
用的也就是這些方法
研究發現,對於NPCDATA中的每一個NPC在 ai.obj中都有定義,對於NPC進行新的AI設定也要在ai.obj中修改,如要實現二轉,要對二轉的
條件進行判斷、執行等等,不過如果要自己完全修改這是一個很龐大的工程,並且要準備足夠的資料
免责声明:57sf.com登载此文出于传递更多信息之目的,并不意味着57sf.com赞同其观点或证实其描述
|