① 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会在编译完毕后自动启动,自动读入你的新地图!!