|
|
发表于 2007-8-25 01:23:29
|
显示全部楼层
你们为什么都不去看置顶帖呢!!!!!!0 m7 B' [6 R8 a& i4 _7 S
3 _5 w* `) O' p9 A4 X! A
--------------------------------
p; u L5 k" E6 E n2 z
7 j. L U7 q: g- c; c1 y战地2单机更改BOT数量方法
4 P; j6 V" Z( H: `9 Y4 w
* J! l' k. t! T3 n+ ?4 |: q
) m, ~' k9 z+ k方法1:
4 v6 h% L' V3 z k+ t. n首先要做的是在单人模式中开启32和64人地图。我们用Dalian plant地图为例。首先打开mods/Bf2/Levels。 你会看到一些子目录,每个子目录对应这样或那样的地图(到底是哪个地图可以从目录名判断出来)。 我们现在关心的是Dalian_plant这个目录。如果你想加大某一个地图, 你就要在另外一个相对应的目录里找到所需的文件。不论你选择哪个管卡,都一定会看到一个叫做Info的子目录(这里面有地图的一般信息和它所对应的图片), 和client.zip以及server.zip这两个文件。 client.zip里面充满了各种仅对这一关卡有效的图片(地图、特殊的纹理以及其它类似的东西)。Server.zip包含有各种地图的配置信息。 这就是我们首先要处理的文件。在这里找到GameModes 目录 – 所有在该地图上允许使用的游戏模式。这个目录本身又包括两个子目录: gpm_cq (对应多人模式)和sp1(单人模式)。 由于多人模式地图有三种(于游戏人数有关), gpm_cq目录下面又有三个子目录 (16, 32和64)。 而sp1只有一个子目录(16)。每个子目录下有ai目录 (你可以看到指导电脑控制的玩家在本地图上行为模式的StrategicAreas.ai)和文件GamePlayObjects.con。在新的mod里面bot的数量可以随便定。这个图里面每一方是32个。除此以外可以看到他们中有些人的名字是很眼熟的。" Y+ j5 D# D9 n$ Z3 X
GamePlayObjects.con这个文件可以看作是四个部分。前三个都有相应的名字(左右两边都有星号)Object Spawner, Spawn Points和Control Points。第一部分表示物体在地图上的位置(固定武器,车辆,雷达等等)。 第二部分 — 再生位置 (士兵“出生”的位置)。 第三部分 — 检查点位置(控制该点的队伍可以获得积分)。最后,第四部分 — 无名部分 (以CombatAreaManager.use 1这一行开始) — 决定战斗在什么地方进行(这一点也就是不同尺寸地图的主要区别)。请注意,要是在某一行的开头写着rem, 那就是说这一行只是注释,是不会影响游戏进的)。要说明的是,第一和第三部分各包括两大块。第二块以if v_arg1 == host 开头并包括这一文件中所有的物体的坐标(不管它是装备还是检查点). 这两大块又分成几个小块(每一小块对应某个物体), 在方括号内对物体进行命名和描述。
. N4 x% @% H5 v7 q现在我们来修改GameModessp116里面的GamePlayObjects.con。 它是适用于单人模式下的16人地图。 让我们从最后面开始改 — 也就是从第四部分 — 扩大战场区域。 为此我们需要子目录GameModesgpm_cq下面的同名地图文件和与之相对应的server.zip文件(在我们的例子里,别忘了,Dalian plant, mods/Bf2/Levels/Dalian_plant目录)。 要是你想把地图扩到到32人,就选择32, 64 — 要是你想要64人地图。我们来选择64来做一个最大的地图。: [' t7 }' H7 J0 h3 y3 r p
打开64目录下的GamePlayObjects.con文件。 把第四部分复制到剪贴板(从CombatAreaManager.use 1这一行开始一直到最后),然后替换GameModessp116下同名文件的对应部分。现在单人模式16人的地图从大小上来讲就已经等同于多人模式64人的地图了。 但是这只是万里长征的第一步 – 地图上还没有武器和检查点呢。5 N* W) g. O; m* }3 C4 m
现在来看看GamePlayObjects.con的第三部分, 它以Control Points开头。通过借鉴64人的文件来修改它我们就可以在单人地图上得到新的检查点。GameModesgpm_cq64目录下的GamePlayObjects.con文件可以帮我们做到这一点。对比一下它的第三部分和单人模式文件的第三部分,你会发现它们之间的区别: 多人文件的两个块要比单人的长的多。不过也有一样的地方(准确地讲,不完全一样,但是那些差别可以忽略不计)— 开头两行的结尾的写法是一样的。8 e, V! ?; I4 S7 Q: d+ u% v
在单人模式下50余名战士参战也是可能的了。
; P+ z8 B( H5 {$ x! A P5 E你需要把多人模式文件的第三部分,不是全部,只是比单人模式文件的第三部分多出来的那些文字,通过剪贴板复制到单人模式文件中去(即包括第一部分,也包括第二部分)。以 Dalian plant为例就是ControlPointTemplate: CPNAME_DP_64_uscarrier (为了简洁以下只写出名称的结尾,他们是不会重复的), northdocks, southdocks, airfield, warehouse, maintenancebuilding. 这样,一共需要在文件的第三部分中添加12个小块 — 每个大块中6小块. 同时要把每个小块复制到单人文件的相应位置去这样我们的单人地图就多出来了6个检查点。下一步 – 把武器和再生点从多人大地图搬到单人地图去。这就需要把GameModessp116里面的GamePlayObjects.con文件的前两个部分用GameModesgpm_cq64例的同名文件的相应部分替换。也就是说需要复制Control Points之前的所有代码。地图就做好了。上述原则适用于所有关卡。所以建议把所有的单人地图都扩大,因为在小地图上打实在是没意思。2 F+ \" C+ b( m
地图扩大之后自然要添加bot的数量(请见下一章)。既然把地图放到最大了,那么电脑控制的玩家最好也放到最大 – 64 (或者更多)。这样在大地图上打起来才有意思。
; P ]+ Q1 ?7 v! F- e# f4 n9 gBattlefield 2里的bot是另一个话题了。有关他们毛病的讨论已经很多了。我们就要解决这些问题 我们首先要做的是就是增加他们的数量并且提高他们的战斗本领。有多种装备参加的大型战斗。Bot的参数可以在mods/Bf2Ai中找到。敌人的基本ai由AIDefault.ai设定。文件很小,可是意义重大。文件中有几个参数对电脑控制的角色是很重要的:比如aiSettings.setMaxNBots (控制数量)和 aiSettings.setBotSkill (AI水平)。 每个参数的数值卸载其名称后面,由空格分开,因此很容易改变。
: s* G* y9 _, O6 f& Q首先写下你希望的bot的数量。在aiSettings.maxBotsIncludeHumans的后面把0也改成你希望的数字。 Bot的数量可以比原始设定少,也可以比原始设定多。 我们当然是希望多一点。比方说,如果你设定了32或是64个bot,游戏就会更有挑战性。要是你选了,比方说,128个,那就保证是血肉横飞了。不过这样一来,如果你没有超级的配置的话,游戏就会经常停顿了。: q: \) p4 @& o( }
第二个文件aiSettings.setBotSkill也是用得着的。改变它的值会影响游戏的难度。0.4对应的是简单(Easy), 0.7 — 中等 (Veteran), 1.0 — 难 (Expert). 不过没有人规定你不可以写上别的数字。这个数字可以在这个区间之内(比方说, 0.5—0.6, 如果你已经打过了简单,但是对付中等还不太行), а也可以设的比1.0还要高。 0.4以下的数值 可以给那些刚拿起枪的新手用。 高于1.0的数值对那些能轻杀死bot的职业军人再合适不过了。自己选一个可以和电脑控制的对手公平厮杀的数字吧!要想使这些设定都生效,要在aiSettings.setMaxNBots前面加上aiSettings.overrideMenuSettings 1这样一行字。还是bot,建议你不妨看看BotNames.ai这个文件(同样在mods/Bf2Ai目录里)。 这个文件里含有电脑控制的人物的名字。文件的结构是这样的:每一行的格式是aiSettings.addBotName X, 对应一个可能的电脑战士的名字(在X这个位置上)。 修改X位置上的文字,你就给以给bot一个新的名字。 可以把所有的bot (或是其中一些)的名字换成你认识的人, 或是你喜欢的电影主人公。和认识的人并肩作战或是与他们为敌可是很好玩啊。# x' M) w2 c0 e$ v3 Z5 X
我们加强了单人模式。Bot变多了,也聪明了,而且地图也完整了。现在你面前已经是另一个游戏了 – 单人模式和多人游戏一样的值得玩!1 V" L3 F8 M+ i: L }
方法2:
8 W8 n, G% B& g" \( f最近很多人说寻找不到如何加bot和兵力,至于地图大小尺寸暂时没有方法修改(bf2正式版都可以用)
1 E8 U1 `. P8 B6 {
$ Y$ N1 j% f, J' q. C! k' }& w) c- S& p1 r1 E
, l& v" L; R$ K4 `: y8 a0 S
增加Bots的方法:2 g. b7 c$ m9 V2 q8 L3 x% }" ~
$ V0 S) ?9 Y! S& \
" N i, q8 k$ G
8 O# N3 M/ r- A a8 e
打开 Program FilesEA GamesBattlefield 2 Demomodsbf2AI
* H! l) Q2 \7 E/ X" m5 f! G 找到并用写字板打开aidefault.ai/ I8 e2 z1 p3 x2 K- ? Y% Q
搜索 aiSettings.setMaxNBots 328 e( I* M0 H1 d% ]
% D4 W' {9 `9 M5 K6 _" Z! U! O+ I
& ~7 S' E3 O( t. k) N7 E$ W. h6 U0 A2 W
- j% k2 [$ [$ \+ C8 u$ v
下列句子原本
. Y. c: z; P0 R0 a/ b rem aiSettings.overrideMenuSettings 1 k0 U( [5 c4 s) j& C: t
rem aiSettings.setMaxNBots 31
' V( Z: t9 ]) h0 c& v" b! } rem aiSettings.maxBotsIncludeHumans 0% M. v- @6 g! }& }+ T# Y! R) x
rem aiSettings.setBotSkill 1.0 G+ P5 j7 J) K1 v" `
改成 T( N6 `+ ^$ Z
, o5 _8 b1 l5 e$ K6 l, L2 h5 [
& i+ L6 r2 b) J# S9 p) x
7 q. N6 f# c4 F: z' X T6 i aiSettings.overrideMenuSettings 10 y! {5 G0 Z# x W& N+ N
aiSettings.setMaxNBots 310 j# _6 J' s: K1 \3 e. Z9 j
aiSettings.maxBotsIncludeHumans 06 q' g" j3 b$ Q% S9 d4 Y
aiSettings.setBotSkill 1.0% \& D0 B- d5 C6 b& r
4 I0 v4 I6 a+ P9 B. c
: Q: ]+ O; X w& x, b% |, I7 N/ T0 z3 A4 M- _, P
setMaxNBots 31 中的31是电脑数目. z" J# X+ @% }7 q# M% G
调整最后的数字,32为31个Bots,调64也可以3 k7 g: c3 i; z4 r( q/ E$ }( v
当然愈多电脑愈卡,据说最多支援256个bot.....
8 {$ G; ]! m4 g4 P 多谢3楼提点,语法rem是禁止的意思,setBotSkill 1.05 v. g, Y& [" Y$ \ ^* h! ~5 X5 |
意思是电脑技巧(简单来说就是难度)1.0=100%,初级玩家还是这句上加rem ; }% [* s M# @. `. |& N- V4 _
8 r% m, T/ B3 B) K. b
1 M9 I- x: I# c o$ d ~0 N
( t% @ e$ h/ E! V, A
加兵力值
5 |6 e( `; Y0 |4 C$ c4 ~
) {+ V$ L! z4 U+ \/ n* f4 f4 g+ _! b- j- Z* \: h
5 J6 s' s" r' u2 C2 X& { [+ t0 j. e
BF2单机试玩可以修改BOT人数和破解时间限制,各位应该都知道.# D3 k M1 V+ _! G4 p$ r
不过预设的双方兵力值只有200,如果你的BOT人数有调100或是50,那一下子就结束战役了.在此提供修改BF2单机试玩MAP的兵力值..
& J7 K+ a5 y* X/ {- l& E0 m
2 t1 Y+ Z9 A6 u+ O1 m+ [
* m9 u! L* O2 F& X6 E" }3 e9 a+ j
+ i+ Q5 O2 L( x: i8 Y 到以下路径:
$ T+ Q1 C1 p# F7 Q( c Battlefield 2 Demomodsbf2pythongamegamemodes, K0 t3 j7 V( `# u1 _+ B
先备份gpm_cq.py这个档,再开始修改:- j0 F% m* Y/ m5 a+ V( r
+ z% ^2 |- T' ~/ K# O# H9 e2 ^
! y0 h8 r% d' h: _' _! \ z0 w3 g6 B+ z" v! X2 k
编辑gpm_cq.py后,用寻找功能搜寻"TicketRatio"字符串) K5 }: K+ A1 t6 \% d
应该会找到这一行:3 O( X. ]& h; o! H' \7 [+ e
# J2 ]" C: f' ^0 B$ o6 G' ?/ J5 M) ?0 @& A" K3 r! A8 ?" \
# `5 X! f; a' F: @) q return int(mapDefaultTickets * (bf2.serverSettings.getTicketRatio() / 100.0))$ U' z0 N2 s. b* l
其中100的数值就是要调整的选项,数字愈大,双方阵营的兵力值愈少,数字小则是愈多.! E* o& I$ s6 j K R
数字可以任意调整,提供以下参数范例:. G) I4 H9 v4 j% T1 O9 V
数值100 =200 双方阵营的兵力值
) E% W5 z7 `5 l! K 数值500 =22 双方阵营的兵力值
. j; w) B8 S( {' N0 ~- p# m+ y- K 数值10 =2000 双方阵营的兵力值0 _% E/ U, \! f, x& h o
数值1 =9999 双方阵营的兵力值
4 i5 o2 l6 z8 P8 x, m5 l
4 W5 n- C# D8 K5 [5 i! n0 |2 q3 b* q2 P6 O2 S- ~
i% O1 `& Q4 ~, g ~
例如我要让双方阵营的兵力值达到9999,就修改为以下:# L; B6 p# H3 H3 z+ B( g& Y
return int(mapDefaultTickets * (bf2.serverSettings.getTicketRatio() / 1.0))9 f( x0 e. P3 c/ I/ U& i& q) h
0 H( Q- v& ~7 ^& \) }' \$ i* s7 v
! j6 @' s: D+ B1 v- M8 s: Q2 F! I
! e( ?) W. B# e7 V: l2 g, t
修改完毕存盘进游戏就可以看见成果了.
& [3 h3 w/ Y2 V
1 V! E9 D9 g- x. V% @2 V- S9 x5 U L, ^2 j, j
8 h1 a* y. T, s5 ]
目前本人正在 100bot + 开放隐藏武器 + 9999兵力值 + 无限时间
s0 |& e& |5 g
6 e6 g* B% H4 {8 i- ~0 R8 n: J. ]/ g
( z+ m) M; j' r% R2 w
# F5 Y$ m2 R; v/ O
0 P4 P! Y6 r, i 100bot完后心得:
4 [' `6 g' f. T" n: m; q" D8 ] 这么多的bot,不会像以前那样有bot在"纳凉"发呆的情形,每个bot都有在确实的作战.如果你是指挥官,透过指挥模式会让你感觉像在玩实时战略游戏.也就是说当上指挥官可以转双方移激战的场所,小弟就是一开始指挥所有队伍防御原始基地等敌方攻过来.; Y* w' o: e j2 n$ t: `3 z
. Q0 |7 f, }0 J& D" A
x* M$ e3 ^& w7 l8 r6 q n, Y5 A
" Y9 u* C0 T8 m7 Q 我在炮击时,友军也会很聪明的闪避炮击,等待炮击完毕后,你就会看到一堆友军向前冲,很有战争的感觉. 当上医护兵的时候.......包你有电不完的"躺地人"
- U9 E8 x, E7 b( |: T& S8 J
6 `- k: y1 K0 {# O* V2 q- l5 h _# _) J" m3 B
* B: [, ]6 ?6 Q! P) o
bot真的服务至上,你死了,有医护兵给予你"爱的电流",子弹没了,弹药兵帮你补给,载具快爆了?没关系,后面马上工兵帮你原厂修理..快没血了立刻就有医护包送你..不过虽然受到以上服务,但实际加入混战的存活率不超过5秒钟..& I+ ~$ s2 k- ]) d9 S0 D6 O; _
/ A* f; V+ b$ S( @3 d; Q9 d; Z1 Y# o) [+ r7 [ ^7 c
8 g& q# |/ e1 `1 T* G% O( R 在50vs50的规模,打起来真的只有一种感觉:真是像玩一场战争电影
$ G; v3 t3 M7 Y- R# }2 F% C4 ]
) ]# Q, D: Y8 X[ 本帖最后由 =|HERO|=Vc 于 2007-8-25 01:24 编辑 ] |
|