① DSP的MAP文件做什麼的
MAP文件是dsp開發軟體編譯後產生游大的有關DSP用到所有程序、數據及IO空間的一種映射文件盯滲。
有時候,僅僅根據ide提供的調試信息不足以找到錯誤的發生地,可以通過看map文件的神則豎信息進行查找,找到自己程序崩潰地的地址。
詳細資料看鏈接: http://www.360doc.com/content/090407/15/799_3050668.html
② map文件是什麼文件
MAP文件是CCS軟體編譯後產生的有關DSP用到所有程殲型序、數據及IO空間的一種映射文件,游戲中往往把一些游戲地圖保存為擴展名為map文件,map是一種圖像數據調用文件,可以模擬場景。
MAP文件大概分為文件派改喚頭、內存配置、段映射、全局符號四部分,內存配置與CMD文件中塵凱的MEMORY指令關聯,在CMD文件中定義的程序與數據區間定義,在該部分均可以找到對應,與CMD文件不同的時,在MAP文件中加入了一個實際使用的區間,即在程序中實際用到的空間長度。
③ cs1.5的地圖編輯器怎麼用
製作一個地圖所需要的最基本的步驟有1、對World Craft進行正確的設置(做完這一步你就有半步踏進成功之門了) 2、把所有實體的用法弄明白3、了解一個地圖要工作起來需要做些什麼
設置好World Craft是一個能讓大多數人振作起來的步驟。如果你不能編譯一個地圖,那你就不可能繼續你的製作。你除了調整一些設置之外,你還需要兩個文件。
一個是WC要用的counter-strike.fdg。裡麵包含了所有CS要使用的實體。你不要說你喜歡一個沒有購買區域、沒有爆破點或者甚至連敵人都沒有的地圖吧。如果你只想殺掉幾個手無寸鐵的人質來玩弄你的對手的話,CS並不適合你。你可以在fileplanet上得到這個問題(這是對外國玩家說的。fileplanet是一個外國著名的下載站點。其實.fdg文件在CS目錄下就有。
另一個文件是ZHLT,全稱是Zoner的半條命編輯工具。你可以在這里下載他們。這個程序能把WC的文件編譯成為CS能玩的地圖格式。就是把.map文件編譯成能玩的.bsp文件。ZHLT是用來代替半條命里附帶的編譯器的,因為他用起來更好些,文件也小些。如果沒有告訴你有這樣一個好工具,你肯定又得為半條命那個破爛的編譯程序而罵罵咧咧了。
你找到這兩個文件後,把Counter-Strike.fdg解壓到你的WC目錄里(如C:program filesworldcraft)。並且把ZHLT放到同一個目錄。完成後你的WC目錄里應該多了5個文件:half-life_cs-expert.fdg, hlcsg.exe, hlbsp.exe, hlvis.exe, and hlrad.exe。
至此所有的重要文件已經就位了。下一步你將要勇探鬼窩,用正確的設置來搞定他。這只鬼的名字叫World Craft。如果你搞不定它,你就得不到你最想要的東西——一幅製作精良的CS地圖。如果你的行動有任何失誤,並且又霸王硬上弓的話,估計你會被它整的團團轉,甚至導致——系統崩潰。
首先打開WC,然後單擊「Tools」菜單下的「Options」,這樣我們就打開了一個很重要的設置窗口。目前這個窗口默認打開的是「General」選項卡。目前我們不需要對這個選臘租瞎項卡的選項進行設置。單擊切換到「Game Configurations」選項卡。
「Game Configurations」選項卡應該這樣設置:
這個選項卡里的設置控制著WC編譯地圖所需要的文件等重要的細節。如果你沒有載入相應的.fdg文件,你就不可能看到同上圖一樣的屏幕顯示。因此找到並添加(Add)正確的.fdg文件是很重要的。然後你就可以按照上圖所示填寫剩餘的文件信息。注意,文件的路徑應該隨你CS的實際安裝路徑的不同而更改。
接下來,就要設置「Build Programs」選項卡了:
最後是「textures」選型慶項卡。WC使用zeditor.wad作為它的默認貼圖文件,ZHLT則使用zhlt.wad。你可以在你的CS目錄下的cstrike子目錄下找到不少貼圖文件(.wad)。如果你找不到這些貼圖文件,你可以使用WINDOWS的查找功能,然後再將他們加入WC的貼圖文件列表(你可以加入很多貼圖文件,以備不時之輪空需)。我推薦的貼圖文件有:liquids.wad(不錯的液體類貼圖)和cstrike.wad——裡面有不少好東西。你可以從你喜歡的地圖的貼圖文件里找到不少你熟悉的貼圖,而且如果你夠COOL的話,可以運用Wally這個軟體來創建自己的貼圖庫文件!(我近期會翻譯一些關於Wally的使用——譯者注)。
現在我們終於可以開始製作一些實體了(實體,英文叫「entity」,是所有CS所有有有特殊用途的物體的通稱,一般物體稱做固體「brush」——譯者注)。製作這些實體的同時,你就會了解一個真正的CS地圖是怎樣製作出來的。在第一個CS地圖里,我們將製作一個挖空的房間(挖空,英文「hollow」,就是將一個立方體實體挖空成一個中空的房間,是製作所有房間的基礎和重要手段,包括Quake的房間也是這樣製作出來的。——譯者著)、一個光源、一個警察出生地和一個匪徒出生地。就這些了。雖然一個只有一個空盪盪的房間的地圖不可能成為一個精彩的地圖,但我們注重的不是這個。我們是要教會你如何製作一個地圖。
實際上,World Craft的造型工具需要一些時間來熟悉,而且用起來並不很方便。因此我將一步步教下去:
首先,打開WC,單擊「File」菜單下雜「new map」選項,在跳出的對話框中選擇「Counter-Strike」一項。初始界面應該如下:
首先必須製作一個房間。點擊屏幕左邊工具條中的block tool(塊狀物體造型工具)按鍵,在屏幕上任意一個視圖中單擊並拖動滑鼠(拖動的時候不要松開滑鼠左鍵),然後你就可以看見屏幕上出現了一個白色的虛線框。這樣你就可以在這幾個視圖中調整方塊大小,或者移動方塊的位置(就和在Word中插入並調整圖片一樣,調整的時候要點住圍在虛線框周圍的白色小方塊)。
當方塊的大小和位置調整完畢以後,將滑鼠移到虛線框上,按一下回車,虛線框就變成了帶顏色的實線框。這樣,一個方塊就真正製作完畢了,這也是你製作的第一個固體。Congratulations!
下面要挖空這一方塊。在左邊的工具欄中單擊selection tool(選擇工具),然後選中這個方塊。選中一個固體/實體的時候,該物體會變成紅色。然後選擇菜單中的「Tools」然後是「Make Hollow」(也可以用快捷鍵ctrl-H),這時就會彈出一個對話框詢問你所要的牆壁的厚度。一般填12就可以了。如果你用一個負數,比如-12,就會給這個房間加厚而不是在裡面挖空這個方塊。然後你的屏幕應該如下所示:
Yeah!你已經為你的CS地圖做出了大體的環境框架了。下一步我們還要放盞燈,還有警匪出生地,還有購買武器的區域。
另外做CS的環境框架的時候要注意,作為環境框架的空心方塊是一定要完全封閉,不能有漏洞的。否則你的地圖會在編譯時出錯。一般裂口漏洞都出現在兩個房間或通道銜接的地方。
下一個步驟就是放入我們想要放的東西。目前我們這個地圖只有5個物品,十分簡單。
首先放一盞燈。沒有燈的話,地圖就會漆黑一片,更談不上什麼打仗了。燈在WC中是一種實體。因此在左邊工具欄中選擇entity tool(實體創建工具),然後在任何一個視圖中你想要放燈的地方點一下。然後屏幕上就出現了縱橫兩條綠直線。這兩條直線的交點就是你的實體所在的位置。如果你覺得看不清楚,可以放大該視圖(D鍵放大/C鍵縮小)再進行調整。在各視圖中單擊兩線交點並拖動到你想要放置的地方,最後,還是按一下回車。這樣,一盞燈就做好了。選中一個實體,然後在其上點擊右鍵,在彈出的菜單中選擇Properties可以更改它的屬性,Tie to Entities可以把它更為另一種實體。如果你選錯了物品,單擊一下空白的地方就可以取消選擇。
在上圖中,在下拉菜單中選中light就表示當前實體是一盞燈。列表框中是該實體的一些屬性。如,目標,名字等。我們想更改一下它的brightness(亮度)屬性。單擊該屬性,我們發現該屬性由4個數字組成,如'255 255 128 200'。前三個代表該燈的顏色(用16進製表示),最後一個則是亮度。把最後一個數字改成900,因為我們需要一個十分亮的燈,也因為我們的這個地圖中只有一盞燈。改完後點叉關閉對話框。燈就做好了。
下面是CT和T的出生點了。出生點在WC中也是實體。在左邊工具欄中選擇entity tool(實體創建工具),象創建燈一樣在方塊的對角創建兩個實體(注意不要嵌入任何牆壁中),然後更改他們的實體類型。"info_player_start"是警出生點。"info_player_deathmatch"則是匪出生點。說是話,出生點這個東西在我剛開始製作地圖時困擾了我好一會兒。
確認一切正常後,點擊go!,然後就開始編譯了。然後就開始祈禱一切順利吧。正常情況下,CS會在編譯完畢後自動啟動,自動讀入你的新地圖!!
④ c++程序編譯後自動生成的文件有什麼用,分別解釋下
1, PCH文件
預編譯頭文件(一般擴展名為.PCH),是把一個工程中較穩定的代碼預先編譯好放在一個文件(.PCH)里.這些預先編譯好的代碼可以是任何的C/C++代碼--甚至可以是inline函數,只它們在整個工程中是較為穩定的,即在工程開發過程中不會經常被修改的代碼.
為什麼需要預編譯頭文件?一言以蔽之:提高編譯速度.一般地,編譯器以文件為單位編譯,如果修改了一工程中的一個文件則所有文件都要重新編譯,包括頭文件里的所有東西(eg.Macro宏,Preprocessor預處理),而VC程序中,這些頭文件中所包括的東西往往是非常大的,編譯之將占很長的時間.但它們又不常被修改,是較穩定的,為單獨的一個小文件而重新編譯整個工程的所有文件導致編譯效率下降,因此引入了.PCH文件.
如何使用預編譯頭文件以提高編譯速度?要使用預編譯頭文件,必須指定一個頭文件(.H),它包含我們不會經常修改的代碼和其他的頭文件,然後用這個頭文件(.H)來生成一個預編譯頭文件(.PCH)VC默認的頭文件就是StdAfx.h,因為頭文件是不能編譯的,所以我們還需要一個.CPP文件來作橋梁,VC默認的文件為StdAfx.cpp,這個文件里只有一句代碼就是:#include "StdAfx.h".接下來要用它生成.PCH文件,涉及到幾個重要的預編譯指令:/Yu,/Yc,/Yx,/Fp.簡單地說,/Yc是用來生成.PCH文件的編譯開關.在Project->setting->C/C++的Category里的Precompiled Header,然後在左邊的樹形視圖中選擇用來編譯生成.PCH文件的.CPP文件(默認即StdAfx.cpp)你就可以看到/Yc這個開關,它表示這個文件編譯了以後是否生成.PCH文件(可能/Yc的c表示create)./Fp指令指定生成的.PCH文件的名字及路徑(可能/Fp的p代表path)./Yu的u即use使用,工程中只要包括了.H文件的文件都會有這個/Yu指令.如果選擇自動Automatic...的話則原來為/Yc的地方就換成了/Yx指令.如果選擇自動,則每次編譯時編譯器會看以前有沒有生成過.PCH文件,有則不現生成否則就再次編譯產生.PCH文件.
注意:
A,實際上,由Appzard項目向導生成的默認的頭文件及CPP文件StdAfx.h和StdAfx.cpp可以是任何名字的.原因很簡單.但如果你要這樣做就要記得修改相應的Project->setting...下的幾個預編譯指令(/Yc,/Yu,/Yx,/Fp)的參數.
B.在任何一個包括了將要預編譯的頭文件而使用了.PCH文件的工程文件的開頭,一定必須要是在最開頭,你要包含那個指定生成.PCH文件的.H文件(通過.CPP文件包括,默認為StdAfx.cpp),如果沒包括將產生我最開頭產生的錯誤.如果不是在最開頭包括將產生讓你意想不到的莫名其妙錯誤,如若不信,盍為試之?
C.預編譯文件.PCH生成之很耗時間,而且生成之後它也很占磁碟空間,常在5-6M,注意項目完成之後及時清理無用的.PCH文件以節約磁碟空間.
D.如果丟了或刪了.PCH文件而以後要再修改工程文件時,可將指定的/Yc的.CPP文件(默認為StdAfx.cpp)重新編譯一次即可再次生成.PCH文件,不用傻傻的按F7或Rebuild All
2, NCB文件
.ncb 無編譯瀏覽文件(no compile browser)。當自動完成功能出問題時可以刪除此文件。build後會自動生成
3, OBJ文件
目標文件,一般是程序編譯後的二進制文件,再通過鏈接器和資源文件鏈接就成exe文件了。
OBJ只給出了程序的相對地址,而EXE是絕對地址。
4, PDB文件
程序資料庫 (PDB) 文件保存著調試和項目狀態信息,使用這些信息可以對程序的調試配置進行增量鏈接。當以 /ZI 或 /Zi(用於 C/C++)生成時,將創建一個 PDB 文件。
在 Visual C++ 中,/Fd 選項用於命名由編譯器創建的PDB 文件。當使用向導在Visual Studio 中創建項目時,/Fd 選項被設置為創建一個名為 project.PDB 的 PDB。
如果使用生成文件創建 C/C++ 應用程序,並指定 /ZI 或 /Zi 而不指定 /Fd 時,則最終將生成兩個 PDB 文件:
*VC80.PDB (更籠統地說就是 VCx0.PDB,其中 x 表示 Visual C++ 的版本。)該文件存儲各個 OBJ 文件的所有調試信息並與項目生成文件駐留在同一個目錄中。
*project.PDB 該文件存儲 .exe 文件的所有調試信息。對於C/C++,它駐留在 \debug 子目錄中。
每當創建 OBJ 文件時,C/C++ 編譯器都將調試信息合並到 VCx0.PDB 中。插入的信息包括類型信息,但不包括函數定義等符號信息。因此,即使每個源文件都包含公共頭文件(如 <windows.h>),這些頭文件中的 typedef 也只存儲一次,而不是在每個 OBJ 文件中都存在。
鏈接器將創建 project.PDB,它包含項目的 EXE 文件的調試信息。project.PDB文件包含完整的調試信息(包括函數原型),而不僅僅是在 VCx0.PDB 中找到的類型信息。這兩個 PDB 文件都允許增量更新。鏈接器還在其創建的 .exe 或 .dll 文件中嵌入 .pdb 文件的路徑。
Visual Studio 調試器使用 EXE 或 DLL 文件中的PDB 路徑查找 project.PDB 文件。如果調試器在該位置無法找到 PDB 文件或者如果路徑無效(例如,如果項目被移動到了另一台計算機上),調試器將搜索包含 EXE 的路徑,即在「選項」對話框(「調試」文件夾,「符號」節點)中指定的符號路徑。調試器不會載入與所調試的二進制不匹配的 PDB。
5, ILK文件
在增量鏈接時,LINK 更新在第一次增量鏈接期間創建的 .ilk 狀態文件。該文件和 .exe文件或 .dll 文件具有相同的基名稱,並具有擴展名 .ilk。在後面的增量鏈接期間,LINK 更新 .ilk 文件。如果缺少 .ilk 文件,則 LINK 執行完全鏈接並創建新的 .ilk 文件。如果 .ilk 文件無法使用,則 LINK 執行非增量鏈接。有關增量鏈接的詳細信息,請參見漸進式鏈接(/INCREMENTAL) 選項。
6, MAP文件
Windows和linux系統下都有map文件,map文件一般是用來保存符號的地址信息。這里的符號一般是指函數名及變數(局部、全局)。根據這個地址信息,便可以把地址翻譯成相應的符號,很多系統工具、debug方法都要用到這種信息。
(一)一個程序編譯完以後內容會分成兩大類保存,一類是code,一類是data:
(1)code指程序代碼,常存在.text section
(2)data指存程序中聲明的變數,常存在.data section,未初始化的變數會被存在.bss section。
(二)Windows
(1)單個模塊的map文件
在Windows下每一個模塊(dll/exe)對應一個map文件,只需編譯時打開相應的選項即可。
visual studio中方法:右擊工程,選擇Properties,然後選擇 Configuration Properties -Linker - Debugging,將Generate Map File項改成Yes。
編譯後在debug/release目錄里便可以找到與應用程序同名的map文件。
如下為map文件內容:
Timestamp is4b9603e2 (Tue Mar 09 16:16:34 2010) //這個是時間戳,每次編譯都不同,後面符號對應的地址一般也不同。
Preferred loadaddress is 00010000 //這是編譯時的預裝載地址,實際上模塊被載入的地址可能跟這個不同,所以來確定某個地址對應哪個符號信息的時候,還需要知道該模塊載入在內存的真正起始地址,然後根據偏移量來確定。
Start Length Name Class
0001:00000000 001c3950H .text CODE ==》存放程序代碼
0003:000008b8000af67cH .data DATA ==》初始化的變數
0003:000aff40003930b1H .bss DATA ==》未初始化的變數
(2)操作系統總的map文件:不知道有沒有。
(3)mpbin
mpbin是一個反匯編工具,可以輸出exe/dll文件的許多信息。
mpbin /allyourmolename > a.txt 可以把所有的信息保存在一個a.txt中,裡面可以找到時間戳、原debug路徑信息及函數列表等。
如下:
FILE HEADERVALUES
1C2 machine (Thumb)
6 number of sections
49EC0BAE time date stamp Mon Apr 2013:44:14 2009 //時間戳
0 file pointer to symbol table
0 number of symbols
E0 size of optional header
2102 characteristics
Executable
32 bit word machine
DLL
OPTIONAL HEADERVALUES
10B magic # (PE32)
9.00 linker version
53E00 size of code
76A00size of initialized data
0 size of uninitialized data
502ACentry point (100502AC)
1000 base of code
55000 base of data
10000000 image base (10000000 to100CDFFF)
1000 section alignment
200 file alignment
5.01 operating system version
0.00 image version
5.01 subsystem version
0 Win32 version
CE000 size of image
400 size of headers
其中 10000000 image base (10000000 to 100CDFFF)是重要的信息,與map file中的 Preferred load address is10000000 意義相同。
DebugDirectories
Time Type Size RVA Pointer
-------- ------ -------- -------- --------
49EC0BAE cv 81 000020FC CFC Format: RSDS, {A5C699F0-C26D-427E-BC54-3504731BA9B8}, 1,d:\Projects\Final\MyUsbToPc_CPL\MyUsbToPc\Windows Mobile 6 Professional SDK(ARMV4I)\Debug\MyUsbToPc.pdb //原編譯路徑
Begin End Prolog Excpt 32bit Fixup 【Function Name】
0000000010001000 10001040 10001010 N Y Y DllMain
0000000810001040 10001064 10001050 N Y Y ?InitApplet@@YAHPAUHWND__@@@Z (int __cdecl InitApplet(struct HWND__*))
0000001010001064 10001068 10001064 N Y Y ?TermApplet@@YAXXZ (void __cdecl TermApplet(void))
0000001810001068 100013DC 10001078 N Y Y CPlApplet
00000020 1000141C 100014B4 10001420 N Y Y _DllMainCRTStartup
00000028100014B4 100014BC 100014B4 N Y Y GetCurrentProcess
00000030100014BC 100014F0 100014C0 N Y Y
00000038 100014F0 1000155C 100014F4 N Y Y _cinit
00000040 1000155C 10001660 10001560 N Y Y
0000004810001660 10001678 10001664 N Y Y exit
0000005010001678 10001690 1000167C N Y Y _exit
0000005810001690 100016AC10001694 N Y Y _cexit
00000060 100016AC 100016F8 100016B0 N Y Y _c_exit
begin欄對應的地址與map里的地址是一致的,非常類似於map文件。
【注意:很多exe或dll在編譯時時將此信息隱藏的,Function Name會變成空的】
(三)Linux
(1)單個模塊的map文件
暫還不清楚,大家知道的請告知。
(2)操作系統總的map文件
linux系統編譯Image後會生成一個system.map,裡面存了被編譯進內核的符號信息,不同次的編譯生成的system.map會有差異。
因為是操作系統的符號信息,裝載的地址都是固定的,所以不像windows單個模塊那樣靠偏移量定位,直接通過地址就可以直接找到對應的符號。
其內容的重要的幾個符號如下:
_stext//代碼段開始
_etext//代碼段結束
__data_start//初始化的數據開始
_edata//初始化的數據結束
__bss_start//未初始化數據開始
_end//全部結束
Linux相對windows有個很重要的不同是,linux啟動後在proc\kallsyms里也有一份類似Map文件的信息,cat命令可看到其內容,有了這個就可以得到任何一個內核的符號(變數及函數名)的地址信息,而不需要在編譯完內核後特意保存map文件,這真是一個巨大的寶藏。
而且,proc\kallsym的信息比system.map多,在最後會有mole部分的符號信息,這些信息會隨著系統的變化而變化。
(3)nm命令
nm命令用來顯示某個可執行文件的符號信息。符號信息中會包含全局變數(比如下面的xyz)和函數名(比如下面的main),還有一些編譯器插入的符號(比如下面的__data_start,__bss_start)
第二列表示符號的屬性,其中大寫代表global,小寫代表local
Usage: nm[option(s)] [file(s)]
List symbols in[file(s)] (a.out by default).
示例:
nm helo
08049f20 d_DYNAMIC
08049ff4 d_GLOBAL_OFFSET_TABLE_
080484ec R_IO_stdin_used
w _Jv_RegisterClasses
08049f10 d__CTOR_END__
08049f0c d__CTOR_LIST__
08049f18 D__DTOR_END__
08049f14 d__DTOR_LIST__
08048500 r__FRAME_END__
08049f1c d__JCR_END__
08049f1c d__JCR_LIST__
0804a020 A__bss_start
0804a00c D__data_start
080484a0 t __do_global_ctors_aux
08048340 t__do_global_dtors_aux
0804a010 D__dso_handle
w __gmon_start__
0804849a T __i686.get_pc_thunk.bx
08049f0c d__init_array_end
08049f0c d__init_array_start
08048430 T__libc_csu_fini
08048440 T__libc_csu_init
U __libc_start_main@@GLIBC_2.0
0804a020 A _edata
0804a028 A _end
080484cc T _fini
080484e8 R_fp_hw
08048298 T _init
08048310 T_start
0804a020 bcompleted.6635
0804a00c Wdata_start
0804a024 bdtor_idx.6637
080483a0 t frame_mmy
080483c4 T main
U printf@@GLIBC_2.0
0804a014 D x
0804a018 D y
0804a01c D z
helo.c如下:
#include<stdio.h>
int x = 10;
int y = 20;
int z = 30;
extern int__data_start;//這里引用了編譯器插入的符號
int main(void)
{
int *ds = &__data_start;
printf("%p\n", ds);
printf("now x = %d\n", x);
ds+=3;
*ds = 100;
printf("now x = %d\n", x);
}
7, IDB文件
The compiler savesstate information from the first compile in the project』s .IDB file (the default name is project.IDB or VC60.IDBfor files compiled without a project).
The compiler usesthis state information to speed subsequent compiles.
8, SLN文件
Visual Studio.Solution 通過為環境提供對項目、項目項和解決方案項在磁碟上位置的引用,可將它們組織到解決方案中。
⑤ C語言編譯產生的Map文件是什麼
MAP文件主要有兩種生成方法,一種是由系統自動生成,默認文件名為所建立的項目名(如XXX為項目名)加上.map後綴xxx.map,另一種在CMD文件中指定生成MAP文冊運源件,操作方法為在MEMORY指令前面加上州態"-m abc.map",文件名可以任意。
MAP文件是CCS軟體編譯後產生的有關DSP用到所有程序、數據及IO空間的一種悄中映射文件。
⑥ map文件的MAP文件在調試中的應用
畢竟有些時候IDE提示的信息不夠明白,使用MAP文件是一個調試的好幫手。通過map文件可以查找崩潰地址,然後就可以精確地定位到源代碼中出錯滲猜的代碼行
什麼是 MAP 文件?簡單地講, MAP 文件是程序的全局符號、源文件和代碼行號信息的唯一的文本表示方法,它可以在任何地方、任何時候使用,不需要有額外的叢差型程序進行支持。而且,這是唯一能找出程序崩潰的地方的救星。 在 VC 中,我們可以按下 Alt+F7 ,打開慶脊「Project Settings」選項頁,選擇 C/C++ 選項卡,並在最下面的 Project Options 裡面輸入:/Zd ,然後要選擇 Link 選項卡,在最下面的 Project Options 裡面輸入: /mapinfo:lines 和 /map:PROJECT_NAME.map 。最後按下 F7 來編譯生成 EXE 可執行文件和 MAP 文件。
加入的參數的含義:
/Zd 表示在編譯的時候生成行信息
/map[:filename] 表示生成 MAP 文件的路徑和文件名
/mapinfo:lines 表示生成 MAP 文件時,加入行信息
/mapinfo:exports 表示生成 MAP 文件時,加入 exported functions (如果生成的是 DLL 文件,這個選項就要加上)
⑦ cs1.6 map文件反編譯問題
你也看到了。。。反編譯會出現很多錯誤。因為反編譯的作用主要是讓你了解地圖實體的。固體和貼圖肯定會有很多錯誤的。沒辦法~
⑧ PIC工程中的MAP,MAP, MCS,MCW, COF的文件後綴都是什麼意思,有什麼作用
Map文件里放置的是編譯連接後的信息,供編程者查看參考。
MCP是項目文件,包含項目的信息,例如源代碼頭文件等的路徑慶仔、編譯設置等
MCW是workspace文件,不僅包含當前項目信並稿息,還包含譽蔽汪當前窗口開了幾個,放在什麼位置等信息,打開MCW文件幾乎可以還原你保存時的所有狀態。
COF文件包含標志代碼信息和目標代碼以及調試信息,在硬體調試時,其實使用的就是COF文件。
另外,你說的這些都是老版本的MPLAB IDE的文件,現在不推薦使用了,推薦使用MPLAB X IDE,官網上可免費下載安裝。
⑨ cs 地圖編輯器
製作一個地圖所需要的最基本的步驟有1、對World Craft進行正確的設置(做完這一步你就有半步踏進成功之門了) 2、把所有實體的用法弄明白3、了解一個地圖要工作起來需要做些什麼
設置好World Craft是一個能讓大多數人振作起來的步驟。如果你不能編譯一個地圖,那你就不可能繼續你的製作。你除了調整一些設置之外,你還需要兩個文件。
一個是WC要用的counter-strike.fdg。裡麵包含了所有CS要使用的實體。你不要說你喜歡一個沒有購買區域、沒有爆破點或者甚至連敵人都沒有的地圖吧。如果你只想殺掉幾個手無寸鐵的人質來玩弄你的對手的話,CS並不適合你。你可以在fileplanet上得到這個問題(這是對外國玩家說的。fileplanet是一個外國著名的下載站點。其實.fdg文件在CS目錄下就有。
另一個文件是ZHLT,全稱是Zoner的半條命編輯工具。你可以在這里下載他們。這個程序能把WC的文件編譯成為CS能玩的地圖格式。就是把.map文件編譯成能玩的.bsp文件。ZHLT是用來代替半條命里附帶的編譯器的,因為他用起來更好些,文件也小些。如果沒有告訴你有這樣一個好工具,你肯定又得為半條命那個破爛的編譯程序而罵罵咧咧了。
你找到這兩個文件後,把Counter-Strike.fdg解壓到你的WC目錄里(如C:program filesworldcraft)。並且把ZHLT放到同一個目錄。完成後你的WC目錄里應該多了5個文件:half-life_cs-expert.fdg, hlcsg.exe, hlbsp.exe, hlvis.exe, and hlrad.exe。
至此所有的重要文件已經就位了。下一步你將要勇探鬼窩,用正確的設置來搞定他。這只鬼的名字叫World Craft。如果你搞不定它,你就得不到你最想要的東西——一幅製作精良的CS地圖。如果你的行動有任何失誤,並且又霸王硬上弓的話,估計你會被它整的團團轉,甚至導致——系統崩潰。
首先打開WC,然後單擊「Tools」菜單下的「Options」,這樣我們就打開了一個很重要的設置窗口。目前這個窗口默認打開的是「General」選項卡。目前我們不需要對這個選項卡的選項進行設置。單擊切換到「Game Configurations」選項卡。
「Game Configurations」選項卡應該這樣設置:
這個選項卡里的設置控制著WC編譯地圖所需要的文件等重要的細節。如果你沒有載入相應的.fdg文件,你就不可能看到同上圖一樣的屏幕顯示。因此找到並添加(Add)正確的.fdg文件是很重要的。然後你就可以按照上圖所示填寫剩餘的文件信息。注意,文件的路徑應該隨你CS的實際安裝路徑的不同而更改。
接下來,就要設置「Build Programs」選項卡了:
最後是「textures」選項卡。WC使用zeditor.wad作為它的默認貼圖文件,ZHLT則使用zhlt.wad。你可以在你的CS目錄下的cstrike子目錄下找到不少貼圖文件(.wad)。如果你找不到這些貼圖文件,你可以使用WINDOWS的查找功能,然後再將他們加入WC的貼圖文件列表(你可以加入很多貼圖文件,以備不時之需)。我推薦的貼圖文件有:liquids.wad(不錯的液體類貼圖)和cstrike.wad——裡面有不少好東西。你可以從你喜歡的地圖的貼圖文件里找到不少你熟悉的貼圖,而且如果你夠COOL的話,可以運用Wally這個軟體來創建自己的貼圖庫文件!(我近期會翻譯一些關於Wally的使用——譯者注)。
現在我們終於可以開始製作一些實體了(實體,英文叫「entity」,是所有CS所有有有特殊用途的物體的通稱,一般物體稱做固體「brush」——譯者注)。製作這些實體的同時,你就會了解一個真正的CS地圖是怎樣製作出來的。在第一個CS地圖里,我們將製作一個挖空的房間(挖空,英文「hollow」,就是將一個立方體實體挖空成一個中空的房間,是製作所有房間的基礎和重要手段,包括Quake的房間也是這樣製作出來的。——譯者著)、一個光源、一個警察出生地和一個匪徒出生地。就這些了。雖然一個只有一個空盪盪的房間的地圖不可能成為一個精彩的地圖,但我們注重的不是這個。我們是要教會你如何製作一個地圖。
實際上,World Craft的造型工具需要一些時間來熟悉,而且用起來並不很方便。因此我將一步步教下去:
首先,打開WC,單擊「File」菜單下雜「new map」選項,在跳出的對話框中選擇「Counter-Strike」一項。初始界面應該如下:
首先必須製作一個房間。點擊屏幕左邊工具條中的block tool(塊狀物體造型工具)按鍵,在屏幕上任意一個視圖中單擊並拖動滑鼠(拖動的時候不要松開滑鼠左鍵),然後你就可以看見屏幕上出現了一個白色的虛線框。這樣你就可以在這幾個視圖中調整方塊大小,或者移動方塊的位置(就和在Word中插入並調整圖片一樣,調整的時候要點住圍在虛線框周圍的白色小方塊)。
當方塊的大小和位置調整完畢以後,將滑鼠移到虛線框上,按一下回車,虛線框就變成了帶顏色的實線框。這樣,一個方塊就真正製作完畢了,這也是你製作的第一個固體。Congratulations!
下面要挖空這一方塊。在左邊的工具欄中單擊selection tool(選擇工具),然後選中這個方塊。選中一個固體/實體的時候,該物體會變成紅色。然後選擇菜單中的「Tools」然後是「Make Hollow」(也可以用快捷鍵ctrl-H),這時就會彈出一個對話框詢問你所要的牆壁的厚度。一般填12就可以了。如果你用一個負數,比如-12,就會給這個房間加厚而不是在裡面挖空這個方塊。然後你的屏幕應該如下所示:
Yeah!你已經為你的CS地圖做出了大體的環境框架了。下一步我們還要放盞燈,還有警匪出生地,還有購買武器的區域。
另外做CS的環境框架的時候要注意,作為環境框架的空心方塊是一定要完全封閉,不能有漏洞的。否則你的地圖會在編譯時出錯。一般裂口漏洞都出現在兩個房間或通道銜接的地方。
下一個步驟就是放入我們想要放的東西。目前我們這個地圖只有5個物品,十分簡單。
首先放一盞燈。沒有燈的話,地圖就會漆黑一片,更談不上什麼打仗了。燈在WC中是一種實體。因此在左邊工具欄中選擇entity tool(實體創建工具),然後在任何一個視圖中你想要放燈的地方點一下。然後屏幕上就出現了縱橫兩條綠直線。這兩條直線的交點就是你的實體所在的位置。如果你覺得看不清楚,可以放大該視圖(D鍵放大/C鍵縮小)再進行調整。在各視圖中單擊兩線交點並拖動到你想要放置的地方,最後,還是按一下回車。這樣,一盞燈就做好了。選中一個實體,然後在其上點擊右鍵,在彈出的菜單中選擇Properties可以更改它的屬性,Tie to Entities可以把它更為另一種實體。如果你選錯了物品,單擊一下空白的地方就可以取消選擇。
在上圖中,在下拉菜單中選中light就表示當前實體是一盞燈。列表框中是該實體的一些屬性。如,目標,名字等。我們想更改一下它的brightness(亮度)屬性。單擊該屬性,我們發現該屬性由4個數字組成,如'255 255 128 200'。前三個代表該燈的顏色(用16進製表示),最後一個則是亮度。把最後一個數字改成900,因為我們需要一個十分亮的燈,也因為我們的這個地圖中只有一盞燈。改完後點叉關閉對話框。燈就做好了。
下面是CT和T的出生點了。出生點在WC中也是實體。在左邊工具欄中選擇entity tool(實體創建工具),象創建燈一樣在方塊的對角創建兩個實體(注意不要嵌入任何牆壁中),然後更改他們的實體類型。"info_player_start"是警出生點。"info_player_deathmatch"則是匪出生點。說是話,出生點這個東西在我剛開始製作地圖時困擾了我好一會兒。
確認一切正常後,點擊go!,然後就開始編譯了。然後就開始祈禱一切順利吧。正常情況下,CS會在編譯完畢後自動啟動,自動讀入你的新地圖!!