注册 | 登录

游侠NETSHOW论坛





查看: 15604|回复: 11
打印 上一主题 下一主题

[分享] 用记事本修改文明4地图的方法 [复制链接]

帖子
245
精华
0
积分
146
金钱
1085
荣誉
2
人气
0
评议
0
楼主
发表于 2008-1-22 22:23:41 |只看该作者
我以选择德国为例对游戏进行修改:
1.如果想要把德国和英国的位置换一下,方法如下:
找到:
BeginPlayer
        Team=0
............(德国数据)
BeginPlayer
        Team=2
...........(英国数据)
把2者数据互换一下就行了,这样德国的领土就在英伦三岛了,而英国在欧洲中部了。
不过德国的城市都是英国城市的名字了,而且开始时德国使用的都是英国士兵...汗


2.给德国添加历史伟人的方法:
首先搜索“UnitOwner=0”(德国是队伍0)
得到数据:
BeginPlot
        x=64,y=32
        RiverNSDirection=0
        isWOfRiver
        RouteType=ROUTE_RAILROAD
        TerrainType=TERRAIN_GRASS
        PlotType=2
        BeginUnit
                UnitType=UNIT_WW2_INF1_GER, UnitOwner=0
                Damage=0
                Level=1, Experience=0
                PromotionType=PROMOTION_COMBAT1
                FacingDirection=4
                UnitAIType=UNITAI_CITY_DEFENSE
        EndUnit
...........
EndPlot
以上是德国的一座城市的坐标及数据
在PlotType=2下面一行添加历史伟人数据,注意格式,和上面的德国先进步兵的格式保持一致:
添加大商业家:
        BeginUnit
                UnitType=UNIT_MERCHANT, UnitOwner=0
                Damage=0
                Level=0, Experience=0
                FacingDirection=4
                UnitAIType=UNITAI_ENGINEER
        EndUnit
添加大工程师:
        BeginUnit
                UnitType=UNIT_ENGINEER, UnitOwner=0
                Damage=0
                Level=0, Experience=0
                FacingDirection=4
                UnitAIType=UNITAI_ENGINEER
        EndUnit
添加大军事家:
        BeginUnit
                UnitType=UNIT_GREAT_GENERAL, UnitOwner=1
                Damage=0
                Level=0, Experience=0
                FacingDirection=4
                UnitAIType=UNITAI_GREAT_GENERAL
        EndUnit
添加大预言家:
        BeginUnit
                UnitType=UNIT_PROPHET, UnitOwner=1
                Damage=0
                Level=0, Experience=0
                FacingDirection=4
                UnitAIType=UNITAI_PROPHET
        EndUnit
添加大科学家:
        BeginUnit
                UnitType=UNIT_SCIENTIST, UnitOwner=1
                Damage=0
                Level=1, Experience=0
                FacingDirection=4
                UnitAIType=UNIT_SCIENTIST
        EndUnit
添加工人:
        BeginUnit
                UnitType=UNIT_WORKER, UnitOwner=1
                Damage=0
                Level=1, Experience=0
                FacingDirection=4
                UnitAIType=UNITAI_WORKER
        EndUnit
想加多少就加多少吧,一格里面可以加上八九十个历史伟人没问题的.....
另外,坐标x=64,y=32是德国城市,所以x=64,y=30、x=64,y=33、x=63,y=32、x=65,y=32等格子
基本上都是德国的领土(除了靠海的城市周围有海岸不能在海岸上添加伟人---
地形数据是TerrainType=TERRAIN_COAST)在这些格子里尽情添加伟人吧。我就给德国的4座城市
每种伟人各加了30个,成了超级大都市,造什么都是1回合搞定,每个新兵都有8级....
历史伟人还可以用了研究科技哦......1个科技1回合,谁还是你的对手啊^-^
用“UnitOwner=0”可以搜索到所有的德国城市,怎么改不用我教了吧.........

最后再教一招无赖改法:
按Ctrl+H把所有的“BonusType=BONUS_URANIUM”都替换成“BonusType=BONUS_ALUMINUM”
再找到德国的城市坐标,修改如下:
BeginPlot
        x=**,y=** (城市坐标)
        RiverNSDirection=0
        isWOfRiver
        BonusType=BONUS_URANIUM
        TerrainType=TERRAIN_PLAINS
        PlotType=1
这样只有德国一家拥有铀了............

使用道具 举报

帖子
1115
精华
0
积分
568
金钱
5383
荣誉
1
人气
0
评议
0
沙发
发表于 2008-1-23 09:12:33 |只看该作者
游戏里不是有地图编辑器的么?

使用道具 举报

帖子
1271
精华
0
积分
646
金钱
2266
荣誉
1
人气
0
评议
0
板凳
发表于 2008-1-24 10:51:23 |只看该作者
很好很强大…………拜服一下楼主…………

应该是用这个修改,打完以后,电脑不会说你作弊吧……我估计的……呵呵=。=

使用道具 举报

帖子
700
精华
0
积分
360
金钱
5209
荣誉
1
人气
1
评议
0
地板
发表于 2008-1-25 10:33:29 |只看该作者
RFC BC3000 能改不?。。。。。。。。。。

使用道具 举报

帖子
245
精华
0
积分
146
金钱
1085
荣誉
2
人气
0
评议
0
5#
发表于 2008-1-25 13:00:12 |只看该作者
原帖由 WDSK 于 2008-1-25 10:33 发表
RFC BC3000 能改不?。。。。。。。。。。

你说的这个我没玩过,我也没有这张地图,如果想改胜利条件,你可以试试:
我有1张欧洲地图,拿这张图给你示范一下:
用记事本打开后看到如下数据:
BeginGame
        Era=
        Speed=GAMESPEED_NORMAL
        Calendar=CALENDAR_DEFAULT
        Option=GAMEOPTION_AGGRESSIVE_AI
        Option=GAMEOPTION_NO_TECH_BROKERING
        Option=GAMEOPTION_PERMANENT_ALLIANCES
        Victory=VICTORY_CONQUEST  (胜利条件:征服胜利)
        Victory=VICTORY_DOMINATION  (胜利条件:支配胜利)
        Victory=VICTORY_CULTURAL  (胜利条件:文化胜利)
        Victory=VICTORY_SPACE_RACE  (胜利条件:太空竞赛)
        Victory=VICTORY_DIPLOMATIC  (胜利条件:外交胜利)
        GameTurn=0
        MaxTurns=0
        MaxCityElimination=0
        NumAdvancedStartPoints=0
        TargetScore=0
        Description= Wellcome all on the bloody playground of Europe Beyond the Sword! Fight the enemy politely
        ModPath=
EndGame

把不需要的胜利条件删掉就行了,不知道你说的地图是不是这样的

使用道具 举报

帖子
245
精华
0
积分
146
金钱
1085
荣誉
2
人气
0
评议
0
6#
发表于 2008-1-25 13:25:48 |只看该作者
刚才我又看了几张地图,有的地图没有列出胜利条件,表示为默认所有胜利条件,我试了一下,只要在地图上添加你要的胜利条件就可以了。
比如"SEarth"这张地图的数据:
Version=11
BeginGame
        Tutorial=0
        Calendar=CALENDAR_DEFAULT
        GameTurn=0
        StartYear=-4000
EndGame
什么选项都没有,如果只想要征服胜利的话可将其改为:
Version=11
BeginGame
        Tutorial=0
        Calendar=CALENDAR_DEFAULT
        Victory=VICTORY_CONQUEST
        GameTurn=0
        StartYear=-4000
EndGame
再进游戏你就发现胜利条件只有这一条了。

使用道具 举报

帖子
700
精华
0
积分
360
金钱
5209
荣誉
1
人气
1
评议
0
7#
发表于 2008-1-25 15:31:12 |只看该作者

回复 #7 hulubaodian 的帖子

NB!我马上试试! 。。。。。。。。。。。。。

使用道具 举报

帖子
700
精华
0
积分
360
金钱
5209
荣誉
1
人气
1
评议
0
8#
发表于 2008-1-25 15:35:21 |只看该作者

回复 #7 hulubaodian 的帖子

不过LZ还是要试试RFCBC3000的地图能不能改,因为这个胜利条件还是有历史胜利条件的,别到时候出错跳出

使用道具 举报

帖子
245
精华
0
积分
146
金钱
1085
荣誉
2
人气
0
评议
0
9#
发表于 2008-1-27 10:31:58 |只看该作者

回复 #9 WDSK 的帖子

RFCBC3000的地图的历史胜利条件的文件可能在Beyond the Sword\Mods\Rhye's and Fall of Civilization\Assets\Python\下的“Victory.py”文件,用记事本打开后看到了历史条件胜利的数据,但我水平太差,改不了。
中国历史条件胜利的数据:
                elif (iPlayer == iChina):
                        if (pChina.isAlive()):

                                if (self.getGoal(iChina, 0) == -1):
                                        if (iGameTurn > i1000AD):
                                                self.setGoal(iChina, 0, 0)


                                if (iGameTurn == i1400AD):      
                                        if (self.getGoal(iChina, 1) == -1): #see onCityAcquired()
                                                self.setGoal(iChina, 1, 1)

                                if (iGameTurn == i1600AD):
                                        if (pChina.getNumUnits() >= 120):
                                                self.setGoal(iChina, 2, 1)
                                        else:
                                                self.setGoal(iChina, 2, 0)

再后面还有宗教胜利的内容:
                elif (iPlayer == iChina):
                        if (pChina.isAlive()):
                                if (self.getGoal(iChina, 0) == -1):
                                        if (iGameTurn <= i1000AD):
                                                if (iBuilding == con.iConfucianCathedral or iBuilding == con.iTaoistCathedral):
                                                        #iConfucianCounter = pChina.getBuildingClassCount(con.iConfucianCathedral)
                                                        #iTaoistCounter = pChina.getBuildingClassCount(con.iTaoistCathedral)
                                                        iConfucianCounter = 0
                                                        iTaoistCounter = 0
                                                        for iCity in range(pChina.getNumCities()):
                                                                pCity = pChina.getCity(iCity)
                                                                if (pCity.hasBuilding(con.iConfucianCathedral)):
                                                                        iConfucianCounter += 1
                                                                if (pCity.hasBuilding(con.iTaoistCathedral)):
                                                                        iTaoistCounter += 1
                                                        if (iConfucianCounter >= 2 and iTaoistCounter >= 2):
                                                                self.setGoal(iChina, 0, 1)
                                        else:
                                                self.setGoal(iChina, 0, 0)

有哪位高人有兴趣不妨改改看......

使用道具 举报

帖子
264
精华
0
积分
142
金钱
616
荣誉
1
人气
0
评议
0
10#
发表于 2008-1-29 04:23:17 |只看该作者
好消息是知道怎么把这些胜利条件去掉了(测试中) 坏消息是不知道怎么加胜利条件 不知道能不能直接用Victory=VICTORY_CONQUEST这个语句 把胜利条件关掉的方法就是把
if (self.getGoal(iChina, 0) == -1):
                                        if (iGameTurn > i1000AD):
                                                self.setGoal(iChina, 0, 1)
中的self.setGoal(iChina, 0, 1)改成self.setGoal(iChina, 0, 0)
每个
if (self.getGoal(i**, 0) == -1):
                                        if (**):
                                                self.setGoal(**, *, *)
都是RFC里的胜利条件 好好观察 就能对症下药
其中的self.setGoal(**, *, *)就是结果 如果是1 那么条件触发 游戏胜利
如果是0那么条件不被触发 也就不会赢了

使用道具 举报

帖子
700
精华
0
积分
360
金钱
5209
荣誉
1
人气
1
评议
0
11#
发表于 2008-2-1 01:26:28 |只看该作者
我个人认为这个技术贴填补了我们论坛在探索文明4修改方面的一大空白,应当予以加入索引以便大家随时共享,希望BZ领导批示


04GS08版主已于08/01/22添加至置顶精华索引里  :-)   ---------by banjamine

[ 本帖最后由 04GS08 于 2008-2-1 11:41 编辑 ]

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

手机版|Archiver|游侠NETSHOW论坛 ( 苏ICP备2023007791号 )

GMT+8, 2025-5-22 22:01 , Processed in 0.266432 second(s), 10 queries , Gzip On, Memcache On.

Powered by Discuz! X2

© 2001-2011 Comsenz Inc.

分享到