當前位置:編程學習大全網 - 編程語言 - 像DBM這種插件是怎麽制作的?

像DBM這種插件是怎麽制作的?

1.  準備開始 A.  可以選用的工具 第壹步必須明白將要做些什麽,但是為了能夠正確的開始,我們必須選擇壹些編寫腳本的工具。我想首先重要的壹點是編輯器(用專業術語來說就是IDE-integrated development evironment), 這可能有許多種選擇。由於我們編寫腳本的語言是LUA(譯註:壹種腳本語言,參見:www.lua.org),我們需要的編輯器應當是針對這種語言的,以下十供選擇的列表:  blua.sourceforge.net/ (譯註:sourceforge.net是壹個著名的開源項目網站) B:Lua – 這是首當其充的腳本編輯工具之壹,它提供了強大的IDE所提供的功能,足夠用來編輯WOW的UI。而且它是用Java語言編寫的,不論在何種操作系統中尼都能運行它。 www.ideais.com.br/luaeclipse/ (譯註:壹個運用於Eclipse IDE下的插件,建議使用過Java語言的專業人士使用。)  Lua Eclipse – 這是另外壹個Java環境的IDE,我沒有用過這個IDE(譯註:本文中的我不代表譯者),它基於Eclipse 平臺(譯註:請參見www.eclipse.org),它是壹個有著多種功能的插件,我確信這是壹個很好的工具。  editplus.com/ (譯註:editPlus是類似於UltraEdit的文本編輯器) EditPlus – 這是替代記事本程序的有效工具,這也是我編輯LUA的工具。它有著多種妳所需的功能,而且它有著LUA語言的Schema(譯註:Schema可以理解為壹種模板,它規定者文件如何定義等內容)。但是它有著30天的評估期,妳得註冊擁有它。 這只是3種建議,我認為壹旦掌握了B:Lua後,妳就能夠更好地使用其它工具了。 B.目標:WOW文件 妳擁有了編輯器後,壹切只是剛剛開始,我們需要壹些工具來編輯WOW。首選的工具是WinMPQ,下載地址:shadowflare.gameproc.com/dwnload.html#WinMPQ 妳需要運行庫(VB4運行庫)來運行它(譯註:壹般windows都安裝了),有了它妳就可以打開遊戲目錄中的MPQ文件或者MoPaO 文件。MPQ是暴雪公司存儲遊戲資料的文件格式,如果妳有興趣研究的話,請參閱:www.campaigncreations.org/starcraft/inside_mopaq/index.htm  有了WinMPQ,妳就可以解開文件內容,並且打包到遊戲安裝目錄。 了WinMPQ,妳就可以解開文件內容,並且打包到遊戲安裝目錄,裏面就是妳所需的所有內容。Interface.mpq文件裏面有基本的界面數據,並且有著大量柯作為例子的文件。Patch.mpq文件裏有著所有的補丁內容,在遊戲運行時將覆蓋所有基礎的文件。打開WinMpq,我們將所有基礎界面文件作為例子來使用。下面還將示範如何保證數據與最新的補丁保持壹致。使用“Open”選項打開interface.mpq文件(該文件在遊戲安裝目錄下),找到壹個叫FrameXML的文件夾(還有壹個叫glueXML的文件夾,不去管它),選中目錄下所有文件並且解壓到遊戲安裝以外的目錄下。同樣,打開Patch.mpq,其中不僅僅有界面文件,還有許多更新文件。打開Interface\FrameXML目錄,將其中的內容解壓到剛才interface.mpq文件的解壓目錄中,並覆蓋已有的文件。這樣我們就有了壹份最新的遊戲界面FrameXML目錄數據作為參考。(妳也可以用WinMPQ 解壓其他的文件,例如音樂文件等)。 2.有了目標之後 壹切準備就緒,讓我們開始制作第壹個插件吧! 首先妳的知道具體文件的安排,哪個文件是做什麽的。讓我們看以下魔獸世界的安裝吧。其中有許多目錄,我們將要操作的目錄是Interface目錄(若不存在請創建)。在該目錄下有3個主要的目錄: FrameXML: 有所有暴雪提供的界面,妳將打交道的文件都在這。 GlueXML: 包含“遊戲之外”的界面,例如登入界面,服務器選擇,角色創建等。妳不太需要關心這些文件。 AddOns: 所有遊戲角色的模型。 在AddOns目錄下每個角色都有其所有的目錄並且有壹個內容表。 3.開動! A.  初始化 我們要開始創建“Hello world”啦!(譯註:“Hello world”常指第壹個程序),創建1個叫hello_world的目錄在AddOns下,即Warcraft/Interface/AddOns/hello_world。在目錄中建立1個叫hello_world.toc的文件,這就是內容表了,它定義了WOW該如何裝載插件內容。例如以下就是文件內容: ## Interface: 4114 ## Title: Hello World ## Notes: The obligatory hello world script – WoW-style! ## OptionalDeps: ## Dependencies: hello_world.xml 作壹下解釋,第壹行表示新的代碼段的開始。事實上每次暴雪更新補丁後,當前的版本號都會更新。如果妳的腳本沒有最新的版本號,那麽這段腳本將“不會”裝載入遊戲。這就是為什麽版本更新導致插件無法使用的原因。妳可以通過打開Interface\FrameXML\FrameXML.toc文件來知道當前的版本號。接下來兩行的Title和Nodes就不必解釋了吧(譯註:分別為標題和註解,可選)。在下壹行,OptionalDeps中妳可以列出所有妳的插件的名稱(妳可以列出其他插件,用空格分隔)。Dependencies也是同樣的,但它不是可選的,我不太確定如果沒有這壹行妳的插件是否會裝載。最好所有的都寫,不管它是不是可選的,這樣所有人都能更好閱讀妳的代碼。 在開始的聲明之後,妳將寫入壹些XML文件的名稱(次序未定),壹行寫壹個文件的名稱。妳也可以將XML文件寫在子目錄中,例如“core/hello_world.xml”,這樣能使文件夾裏看起來更簡潔。    註意裏面的值必須在整個文件裏是唯壹的。建議妳用妳的插件模塊名稱作為前綴開始,後接下劃線,再接上Frame真正意義的名稱。在上面的例子裏,我們把它叫做core,因而組成了上述名字。 在標簽裏有個  (譯註: 真的是要了解編程的了哦。 這裏處理事件就類似Win32處理事件的代碼模式,可以用if(event=事件名稱){操作代碼}else if(event=事件名稱2){操作代碼}…..或者 switch case的方式來完成。) 現在,暴雪提供了存儲變量的方法,妳可以用RegisterForSave(“variable_name”)的方法來定義壹個變量在遊戲過程中。 在我們的例子中,當VARIABLES_LOADED發生後,將調用hello_world_initialize()函數來處理。對啦,這個hello_world_initialize()函數還沒定義呢,下面就介紹如何定義函數。  B.加入內容 下面將是最有意思的部分,讓我們從簡單的開始。在目錄中創建hello_world.xml文件(該文件名應寫在了FrameXML.toc中),內容如下(譯註:XML文件格式請尋找有關文檔): (沒法加XML內容,請看wow.nevir.net/tutorial/hello_world/hello_world.xml) 哦。有些復雜了是麽?其他不用管先看這壹行,它告訴遊戲 hello_world.lua 是腳本文件,也就是插件運行的腳本所在。每個界面都用的標簽(Tag)擴起來。這裏我們使用了壹個Frame標簽來簡單地把所有事件腳本包進來,妳也可以將所有的界面上的按鈕,窗口等定義在Frame標簽裏面。在標簽裏,可以定義其壹個叫name的屬性(如:) 註意裏面的值必須在整個文件裏是唯壹的。建議妳用妳的插件模塊名稱作為前綴開始,後接下劃線,再接上Frame真正意義的名稱。在上面的例子裏,我們把它叫做core,因而組成了上述名字。 在標簽裏有個  (譯註: 真的是要了解編程的了哦。 這裏處理事件就類似Win32處理事件的代碼模式,可以用if(event=事件名稱){操作代碼}else if(event=事件名稱2){操作代碼}…..或者 switch case的方式來完成。) 現在,暴雪提供了存儲變量的方法,妳可以用RegisterForSave(“variable_name”)的方法來定義壹個變量在遊戲過程中。 在我們的例子中,當VARIABLES_LOADED發生後,將調用hello_world_initialize()函數來處理。對啦,這個hello_world_initialize()函數還沒定義呢,下面就介紹如何定義函數。  C. 補完 (譯註:寫代碼的部分,會寫腳本的人壹定看得懂,不會寫的需要學習:<) 好了,現在是真正要寫代碼的時候了。創建1個叫作hello_world.lua的文件。內容如下: function hello_world_initialize() -- add our very first chat command! SlashCmdList["HELLOW"] = hello_world_command; SLASH_HELLOW1 = "/hellow"; SLASH_HELLOW2 = "/hw"; end function hello_world_command(msg) -- this function handles our chat command message(msg); end 這裏我不想對語法做出解釋,如果不懂請看LUA的文檔,那裏會詳細地介紹。參見:www.lua.org/manual/5.0/  註意這裏系統的I/O 庫文件,操作系統的庫文件沒有包含在魔獸世界UI的PATH路徑之中。至於暴雪定義的函數(內置的)和事件,妳可以在Cosmos網站上找到,參閱:www.cosmosui.org/texts/BlizzardCommands.xml  回到代碼,在我們的函數中,我們定義了1個聊天用的命令。似乎我們的代碼看起來挺怪的,是的,我們是直接修改了SlashCmdList這個表,其作用是當我們輸入宏“/hellow 消息” 或者“/hw 消息”是會調用hello_world_command()函數,(至於遊戲內部如何這種關系做映射不在本文討論範圍內)然後玩家看到打出“消息”的聊天信息的窗口(譯註:事實上是msg()函數創建的窗口)。可以看到“消息”作為參數傳遞給了hello_world_command()函數。 以上所有做的就是壹個簡單的插件,它加入了兩條命令(宏)。如果妳想測試它,進入遊戲,輸入/console reloadui(重新加載UI),在登入遊戲後的聊天框中輸入“/hellow Why hello there!”,妳會看到遊戲中彈出壹個消息框,消息是“Why hello there!”。 4.完成 這就是我們基本的例子,以後我可能抽空給出壹些其它的例子。 如果妳已經完成了以上這個例子,我真是要為妳鼓掌了呀!(那花了妳不少時間來閱讀吧。) 如果妳感興趣的話,以下還有不少資料:LUA (www.lua.org/manual/5.0/),暴雪定義的函數(www.cosmosui.org/texts/BlizzardCommands.xml)。另外,試著看看Interface/FrameXML/BasicControls.xml文件,裏面有不少操控語句;還有Font.xml文件,妳可以定義自己的字體,顏色等。  到此為止了,希望它有所幫助!

>>>點擊查看新浪魔獸世界論壇原帖鏈接

火爆論壇 網友投稿

  • 上一篇:漫威裏最強英雄是誰?以及各英雄的能力值?
  • 下一篇:幼兒園大班英語教案五篇
  • copyright 2024編程學習大全網