3DMGAME 3DM首页 新闻中心 前瞻 | 评测 游戏库 热门 | 最新 攻略中心 攻略 | 秘籍 下载中心 游戏 | 汉化 购买正版 论坛

注册 登录

QQ登录

只需一步,快速开始

查看: 10550|回复: 31
打印 上一主题 下一主题

[原创] 哥萨克3 基础MOD教程 单位属性篇

[复制链接]

7

主题

305

帖子

468

积分

高级玩家

Rank: 4

贡献度
36
金元
3242
积分
468
精华
0
注册时间
2008-5-24
跳转到指定楼层
主题
发表于 2016-10-4 19:48 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
本帖最后由 yythero 于 2016-10-4 19:56 编辑

这应该是国内第一篇MOD教程

无聊研究了一下哥萨克的MOD制作,由于官方论坛上也没有给出完整的教程所以,这算是第一篇教程了吧。无聊可以改改单位数据自己用地图编辑器玩。
不提供任何后续的支持,很多东西我也不知道怎么改,问我也没用。反正新增单位什么的我是没做出来的。

由于哥萨克3是用Delphi开发的,因此和平常用C++开发的游戏完全不一样,你需要一点Delphi的基本语法知识免得出现代码错误。

推荐使用notepad++或者其他能够高亮Pascal语言的编辑器

MOD工具帖 有老外发布的各种MOD制作相关的工具如模型查看什么的
http://www.cossacks3.com/forum/index.php?threads/cossacks-3-modding-tools.17542/

新增单位教程 还未完工所以我懒得翻译和搬运了,需要自己用谷歌翻译看下
http://www.cossacks3.com/forum/index.php?threads/guide-adding-new-units-wip.19076/

单位属性修改教程:
目前我还没研究出如何修改单位移动速度,不过你可以修改单位的攻击力、生命、护甲、射程、射速和散布等属性。
首先打开X:\steam\steamapps\common\Cossacks 3\data\scripts\lib文件夹,盗版自己找下对应的目录。这里是存储的游戏基本数据,根据文件名称可以判断文件的功能。

打开unit.script文件,搜索你需要修改的单位名称,这里以“阿尔及利亚弓箭手”为例objbase.maxhp := 30;为单位的生命值

找到SetObjBaseWeapon(objprop, objbase, 0, 199, 295, 300, 500, 0, 100000, gc_obj_weapon_kind_arrow, True);
这个就是阿尔及利亚弓箭手的主武器,即普通弓箭如果你不知道非数字文字的意思,你不深入就不要去改了,你也可以自行去研究相关脚本关联的关键字。
橙色文字对应的属性从左到右为“武器索引”、“伤害”、“攻击间隔”、“最小射程”、“最大射程”、“最小搜敌范围”、“最大搜敌范围”
范围有关的单位都是像素,攻击间隔单位为帧
往下有3个属性
objprop.weapon[0].weaponsid := 'STRELA';
objbase.weapon[0].dispertion := _misc_PixelsToTiles(250);
objprop.weapon[0].addradius := _misc_PixelsToTiles(32);

以上3个属性,0对应的武器索引
第一个为声音即武器音效,不建议修改除非你知道关联名称
第二个为武器散布程度250像素
第三个为附加范围,估计是指的武器的碰撞体积单位也是像素

阿尔及利亚弓箭手有两种武器,第二种是对付建筑使用的火箭
objprop.weapon[1].attmask := objprop.weapon[1].attmask or (1 shl gc_obj_material_building);
objprop.weapon[1].attmask := objprop.weapon[1].attmask or (1 shl gc_obj_material_wood);
objprop.weapon[1].attmask := objprop.weapon[1].attmask or (1 shl gc_obj_material_woodwall);

这里只介绍以上3个新的属性
这是武器筛选遮罩,即限定第二种武器可以攻击建筑、木头和木头城墙
以上就是基本武器数值修改

SetObjBasePrice(objbase, 10, 2, 0, 0, 0, 0);
为设定单位成本,数字对应游戏的6种资源,顺序木头、粮草、石头、金子、铁、煤炭
SetObjBaseSearchBuildVisionScore(objprop, objbase, 550, 25, 2, 15);
为设定搜索范围(像素),建造时间(毫秒),单位视野和得分
SetObjBaseProtection(objbase, 2, 2, 5, 255, 1, 7);
设置单位护甲,弓箭手没有这条因此所有属性都是0
数值对应 劈砍防护、长矛防护、火枪防护、葡萄弹防护、弓箭防护和炮弹防护

if (bmercenary) then至else区块内的函数为设置佣兵单位的属性,佣兵可以通过bmercenary进行判断。

以上就是修改的基本教程,你也许发现了修改完毕后4种弓箭手都变了。没错哥萨克把4种弓箭手放在了一个定义里。。。。
你可以通过拆分的方式将4种弓箭手拆分为多个过程进行,这需要一点Pascal语言的语法了。你可以参照其他单位的设定进行修改。
特别注意的是国家判断只能判断后缀带有国家后缀的单位比如archertur后面的tur就是土耳其的代码可以通过case nation of进行判断。
但是如果单位没有那种后缀是没法进行国家判定的。

科技修改放到下一篇去讲,那个非常复杂,简单的修改还行,复杂修改需要等官方MOD工具或者详细教程了
版主觉得有意义麻烦帮忙设置成隐藏吧 谢了


评分

2

查看全部评分

回复

使用道具 举报

3

主题

629

帖子

587

积分

高级玩家

Rank: 4

贡献度
3
金元
5747
积分
587
精华
0
注册时间
2012-6-3
舒服的沙发
发表于 2016-10-6 08:07 | 只看该作者
好东西~~正愁找不到办法把炮作废
回复 支持 反对

使用道具 举报

0

主题

231

帖子

379

积分

高级玩家

Rank: 4

贡献度
0
金元
3786
积分
379
精华
0
注册时间
2013-6-14
硬硬的板凳
发表于 2016-10-11 17:23 | 只看该作者
感谢楼主的指点,但是我并没有对兵种属性进行修改(怕改的太不和谐),反而对建筑物所提供的人口进行了修改,我觉得可以跟大家分享一下,主城提供100人口,17SJ兵营是150人口,房屋是15人口!(是的,就是这个小破房子,我满地图的造,好烦)。。。。。在看了楼主的推荐软件我果断下了一个notepad++进行修改,有意思的是,脚本名里我找不到关于建筑的,而是在Unit里找到了building。。。(程序猿,你TM在逗我)

我玩的是3DM下的未加密版,所以路径是:  X:\Cossacks 3\Cossacks 3\data\scripts\lib文件夹下的unit

我修改主要是找关键字所以建议大家也是寻找关键字进行修改
commonsid+'gol', commonsid+'iro', commonsid+'coa' : begin
                     SetObjBuildingBaseSettings(objprop, True, 500, gc_obj_usage_mine);
                     SetObjBuildingProperties(objprop, objbase, 2500, 300, 0);
                     SetObjBasePrice(objbase, 0, 100, 100, 0, 0, 0);
                     objprop.peasantabsorber  := 10;
                     objprop.bslowdeath := False;
                     objprop.exitMaxDelay := 0.5;
                     case objprop.sid of
                        commonsid+'gol' : objprop.produce[gc_resource_type_gold] := 10;
                        commonsid+'iro' : objprop.produce[gc_resource_type_iron] := 10;
                        commonsid+'coa' : objprop.produce[gc_resource_type_coal] := 10;
                     end;
这个是矿井的代码。。。
objprop.peasantabsorber  := 5;
农民吸纳默认是5,也就是建造好之后可以进入5个农民,我把它改成了10,在游戏里确实可以一开始容纳10人

然后就是人口
搜索csid+'cen'(是主城)
人口是objprop.farm := 100;
我改成了200,游戏中经测试也确实变成了200。

对了差点忘了说了,主城对于有些国家提供的人口也不同,所以下面还有3个不同国家的人口,如果你随机玩,记得也要改哦。。。

其他提供人口的建筑搜索关键字分别是:
csid+'hou'(这个是小房子)。。。
csid+'bar' (17世纪兵营,国家不同提供人口也不一样,下面会有3个分支也最好修改,不然随机到这个国家。。。呵呵)
csid+'ba2' (18世纪兵营,支持人口最多的建筑,默认250,没有多余国家分支,也就是说要么有,要么没有)

好了,人口修改我就分享这么多,在这也请大神告诉我科技在哪修改。。。脚本名实在是有毒
回复 支持 反对

使用道具 举报

7

主题

305

帖子

468

积分

高级玩家

Rank: 4

贡献度
36
金元
3242
积分
468
精华
0
注册时间
2008-5-24
冰凉的地板
 楼主| 发表于 2016-10-12 21:06 | 只看该作者
本帖最后由 yythero 于 2016-10-14 12:45 编辑
mjkof123321 发表于 2016-10-11 17:23
感谢楼主的指点,但是我并没有对兵种属性进行修改(怕改的太不和谐),反而对建筑物所提供的人口进行了修改 ...

data/scripts/country.script 文件是这个
科技很恶心 我半天都没整理出教程 而且这个文件里科技都是不带名字的。。。恶心的要死很难找到需要的科技
另外单位的生产权限也是这个文件,你可以找找把土耳其弓箭手给重新恢复
土耳其就能从兵营造弓箭手了,隐藏单位还有土耳其18C龙骑兵,这俩单位有非佣兵版的
<
把上面这段代码(2097行附近)的archertur和lightcavalry后面的False改成True
同样在country.script搜索下阿尔及利亚弓箭手(archer)可以找到和下面这句相似的地方,同时把下面这句加上就能在兵营里3号位置造土耳其弓箭手了(大概在2219行附近)
<
在马厩的单位生产界面加上下面这句可以让土耳其造18C龙骑兵(大概在2170行附近)
<
具体效果可以看这个截图


当然你可以根据你自己需要给兵营和马厩这类的建筑里放一些其他可以训练的单位,不过我没研究出来怎么把那个单位的升级一起放进去
另外貌似发射体也能在其他的文件里定义,不过我没去研究具体是怎么改的


本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?注册

x
回复 支持 1 反对 0

使用道具 举报

1

主题

128

帖子

190

积分

中级玩家

Rank: 3Rank: 3

贡献度
0
金元
1902
积分
190
精华
0
注册时间
2014-4-23
5#
发表于 2016-10-13 22:43 | 只看该作者
大神们,我想改射石炮,叫它距离短点。。。
回复 支持 反对

使用道具 举报

0

主题

231

帖子

379

积分

高级玩家

Rank: 4

贡献度
0
金元
3786
积分
379
精华
0
注册时间
2013-6-14
6#
发表于 2016-10-14 23:57 | 只看该作者
好玩不过嫂子 发表于 2016-10-13 22:43
大神们,我想改射石炮,叫它距离短点。。。

修改的位置是unit脚本里的,具体路径我上面有贴出来
搜索'mortar'(这就是迫击炮“射石炮”)
在1368行的位置
代码如下:
SetObjBaseWeapon(objprop, objbase, 0, 100, 100, 500, 3100, 0, 70000, gc_obj_weapon_kind_mortarball, True);
要修改的数值是3100(最大射程),我测试的时候直接去掉了后面的0,也就是50(就是500的那个,最小射程)和310。。。额。。。情况是贴脸打,然后建筑碎片把自己也砸死了。2333333
回复 支持 反对

使用道具 举报

0

主题

231

帖子

379

积分

高级玩家

Rank: 4

贡献度
0
金元
3786
积分
379
精华
0
注册时间
2013-6-14
7#
发表于 2016-10-15 00:11 | 只看该作者
yythero 发表于 2016-10-12 21:06
data/scripts/country.script 文件是这个
科技很恶心 我半天都没整理出教程 而且这个文件里科技都是不带名 ...

楼主向你请教一下,我在country脚本里找科技的时候无意的发现了18世纪的攻防科技升级
在1430行 _aus : SetUpgStructFoodGold(upgstruct, upgplace, member, 3, 2000, 100, True, 5, 9000, 350, True, 4, 12000, 400, True, 5, 23000, 580, True, 5, 32000, 680, True, 7, 42000, 780, blacksmith, century18); // Dragun_18

从开头的aus和后面的dragun18注释,我猜测应该是奥地利的18世纪龙骑士,括号中的内容应该就是每一级的属性点,所需食物量和所需金币量,但是我还没有测试。

要是这样的话,兵种的每一级攻防升级属性,和所需资源量就可以修改了吧?
回复 支持 反对

使用道具 举报

0

主题

231

帖子

379

积分

高级玩家

Rank: 4

贡献度
0
金元
3786
积分
379
精华
0
注册时间
2013-6-14
8#
发表于 2016-10-15 00:12 | 只看该作者
yythero 发表于 2016-10-12 21:06
data/scripts/country.script 文件是这个
科技很恶心 我半天都没整理出教程 而且这个文件里科技都是不带名 ...

楼主向你请教一下,我在country脚本里找科技的时候无意的发现了18世纪的攻防科技升级
在1430行 _aus : SetUpgStructFoodGold(upgstruct, upgplace, member, 3, 2000, 100, True, 5, 9000, 350, True, 4, 12000, 400, True, 5, 23000, 580, True, 5, 32000, 680, True, 7, 42000, 780, blacksmith, century18); // Dragun_18

从开头的aus和后面的dragun18注释,我猜测应该是奥地利的18世纪龙骑士,括号中的内容应该就是每一级的属性点,所需食物量和所需金币量,但是我还没有测试。

要是这样的话,兵种的每一级攻防升级属性,和所需资源量就可以修改了吧?
回复 支持 反对

使用道具 举报

0

主题

231

帖子

379

积分

高级玩家

Rank: 4

贡献度
0
金元
3786
积分
379
精华
0
注册时间
2013-6-14
9#
发表于 2016-10-15 00:32 | 只看该作者
分享一下矿井左下角扩充人口科技的修改方法

修改的文件是country,路径是data/scripts/lib/country.script

从2815行到2825行分别对应着二级矿井到7级矿井
<

修改的内容我拿7级矿井举例:
_country_AddUpgradeWithAccessControl(country, upgplace+'.6', 7, gc_upg_tooltiptype_none, gc_upg_type_single_inside_mine, 40, False, 500, 2, 2, ind, 60300, 0, 0, 25950, 0, 0, bAddIfNotExist, 0, 0, 0, 'eur'+member, '', '', '', '', '', '', '', '', '', True, req0, '', '', '', '', '', '', '');

7级矿井额外提供40的工人位,所以更改这一数值就可以更改升这一级!这一级!这一级所提供的工人数。
代码之后的ind后面的数字开始就是代表所消耗的资源量。

按照自己的喜好适度修改即可。先分享这么多,别的我再找找。。。实在是有毒。。。
回复 支持 反对

使用道具 举报

13

主题

577

帖子

515

积分

高级玩家

Rank: 4

贡献度
18
金元
4429
积分
515
精华
0
注册时间
2009-11-23
10#
发表于 2016-10-15 20:45 | 只看该作者
还是中世纪2方便多了。
回复 支持 反对

使用道具 举报

0

主题

110

帖子

194

积分

中级玩家

Rank: 3Rank: 3

贡献度
3
金元
1819
积分
194
精华
0
注册时间
2006-1-29
11#
发表于 2016-10-16 08:50 | 只看该作者
楼主炮塔的射程在哪一行改,有没有各种族全翻译的啊,O(∩_∩)O谢谢
回复 支持 反对

使用道具 举报

68

主题

2553

帖子

4382

积分

游戏精英

Rank: 8Rank: 8

贡献度
461
金元
25276
积分
4382
精华
1
注册时间
2008-6-19

3DM MOD站(白银)

12#
发表于 2016-10-16 20:29 | 只看该作者
fb3344518 发表于 2016-10-16 08:50
楼主炮塔的射程在哪一行改,有没有各种族全翻译的啊,O(∩_∩)O谢谢

1317 大砲搜索距離450

1760 tower 攻擊距離1200
1766 tower 搜索距離1200
回复 支持 反对

使用道具 举报

0

主题

110

帖子

194

积分

中级玩家

Rank: 3Rank: 3

贡献度
3
金元
1819
积分
194
精华
0
注册时间
2006-1-29
13#
发表于 2016-10-16 21:47 | 只看该作者
mingjau 发表于 2016-10-16 20:29
1317 大砲搜索距離450

1760 tower 攻擊距離1200

O(∩_∩)O谢谢
回复 支持 反对

使用道具 举报

0

主题

110

帖子

194

积分

中级玩家

Rank: 3Rank: 3

贡献度
3
金元
1819
积分
194
精华
0
注册时间
2006-1-29
14#
发表于 2016-10-17 10:12 | 只看该作者
楼主还有什么实用好玩的修改分享一下
回复 支持 反对

使用道具 举报

0

主题

110

帖子

194

积分

中级玩家

Rank: 3Rank: 3

贡献度
3
金元
1819
积分
194
精华
0
注册时间
2006-1-29
15#
发表于 2016-10-17 18:33 | 只看该作者
射击的频率怎么改呢
回复 支持 反对

使用道具 举报

68

主题

2553

帖子

4382

积分

游戏精英

Rank: 8Rank: 8

贡献度
461
金元
25276
积分
4382
精华
1
注册时间
2008-6-19

3DM MOD站(白银)

16#
发表于 2016-10-17 21:47 | 只看该作者
fb3344518 发表于 2016-10-17 18:33
射击的频率怎么改呢

應該是該最頂仁兄所說:
"攻击间隔"(請用Ctrl-F尋找關鍵字)

回复 支持 反对

使用道具 举报

2

主题

771

帖子

706

积分

超级玩家

Rank: 5Rank: 5

贡献度
7
金元
6778
积分
706
精华
0
注册时间
2008-7-30
17#
发表于 2016-10-18 09:07 | 只看该作者
请教能把大炮改成能自动攻击敌军吗?
回复 支持 反对

使用道具 举报

68

主题

2553

帖子

4382

积分

游戏精英

Rank: 8Rank: 8

贡献度
461
金元
25276
积分
4382
精华
1
注册时间
2008-6-19

3DM MOD站(白银)

18#
发表于 2016-10-18 09:47 | 只看该作者
sanjuro 发表于 2016-10-18 09:07
请教能把大炮改成能自动攻击敌军吗?

1317 大砲搜索距離450->2000
回复 支持 反对

使用道具 举报

2

主题

771

帖子

706

积分

超级玩家

Rank: 5Rank: 5

贡献度
7
金元
6778
积分
706
精华
0
注册时间
2008-7-30
19#
发表于 2016-10-18 21:55 | 只看该作者
mingjau 发表于 2016-10-18 09:47
1317 大砲搜索距離450->2000

大砲改成能自動後,果然成了大殺器~

回复 支持 反对

使用道具 举报

7

主题

193

帖子

322

积分

高级玩家

Rank: 4

贡献度
2
金元
3143
积分
322
精华
0
注册时间
2010-3-22
20#
发表于 2016-11-1 16:22 | 只看该作者
求教楼上。大炮如何改成自动射击啊?    没看懂你的修改方法    谢了
回复 支持 反对

使用道具 举报

3

主题

94

帖子

153

积分

中级玩家

Rank: 3Rank: 3

贡献度
3
金元
1410
积分
153
精华
0
注册时间
2009-12-28
21#
发表于 2016-12-5 10:13 | 只看该作者
奇怪,我用notepad++改了佣兵的一些血量伤害之类的数值,然后保存,进了游戏选个战役,造出来的佣兵还是跟原来一样没有任何变化。
求教,是不是我改的方法不对?难道不能直接保存?
或者是,数值变了,但是游戏界面里显示的数值没变?
回复 支持 反对

使用道具 举报

1

主题

317

帖子

301

积分

高级玩家

Rank: 4

贡献度
0
金元
3008
积分
301
精华
0
注册时间
2012-3-15
22#
发表于 2016-12-20 01:14 | 只看该作者
sanjuro 发表于 2016-10-18 21:55
大砲改成能自動後,果然成了大殺器~

<
因補丁的關西  所以行數無法按照樓主所說下去查找
想請問 大砲的射程跟搜索距離是哪一段程式嗎???

回复 支持 反对

使用道具 举报

3

主题

94

帖子

153

积分

中级玩家

Rank: 3Rank: 3

贡献度
3
金元
1410
积分
153
精华
0
注册时间
2009-12-28
23#
发表于 2016-12-31 09:07 | 只看该作者
改来改去没效果啊,有没有人具体说一下该用什么工具,怎么操作修改??????
回复 支持 反对

使用道具 举报

3

主题

94

帖子

153

积分

中级玩家

Rank: 3Rank: 3

贡献度
3
金元
1410
积分
153
精华
0
注册时间
2009-12-28
24#
发表于 2017-1-4 23:00 | 只看该作者
原来参数改了在战役里没用,只能随机地图起作用。
不过战役里有什么么方法改?
回复 支持 反对

使用道具 举报

7

主题

305

帖子

468

积分

高级玩家

Rank: 4

贡献度
36
金元
3242
积分
468
精华
0
注册时间
2008-5-24
25#
 楼主| 发表于 2017-1-5 22:49 | 只看该作者
guandaguther 发表于 2017-1-4 23:00
原来参数改了在战役里没用,只能随机地图起作用。
不过战役里有什么么方法改? ...

战役地图提前放置在地图上的兵属性都是固定的 改不了 地图编译了
回复 支持 反对

使用道具 举报

3

主题

94

帖子

153

积分

中级玩家

Rank: 3Rank: 3

贡献度
3
金元
1410
积分
153
精华
0
注册时间
2009-12-28
26#
发表于 2017-1-12 23:59 | 只看该作者
yythero 发表于 2017-1-5 22:49
战役地图提前放置在地图上的兵属性都是固定的 改不了 地图编译了

多谢指点。
回复 支持 反对

使用道具 举报

0

主题

9

帖子

69

积分

初级玩家

Rank: 2

贡献度
0
金元
690
积分
69
精华
0
注册时间
2017-5-7
27#
发表于 2017-8-25 19:39 | 只看该作者
我想在磨坊上添加可以采集黄金,想把它采集的效率调到最低这样用雇佣军的时候可以多抵消金币损耗,有哪位大神知道磨坊在哪里吗?
回复 支持 反对

使用道具 举报

1

主题

313

帖子

392

积分

高级玩家

Rank: 4

贡献度
1
金元
3881
积分
392
精华
0
注册时间
2009-2-1
28#
发表于 2020-11-19 17:31 | 只看该作者
666666666666666666666666666666666666666
回复 支持 反对

使用道具 举报

0

主题

433

帖子

516

积分

高级玩家

Rank: 4

贡献度
0
金元
5155
积分
516
精华
0
注册时间
2013-4-16
29#
发表于 2022-2-7 10:05 | 只看该作者
野战炮那个 代码是哪个 想要修改射程
回复 支持 反对

使用道具 举报

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

本版积分规则

Archiver|手机版|3DMGAME ( 京ICP备14006952号-1  沪公网安备 31011202006753号

GMT+8, 2025-3-15 05:22 , Processed in 0.124225 second(s), 16 queries , Memcache On.

Powered by Discuz! X3.2

© 2001-2013 Comsenz Inc.

快速回复 返回顶部 返回列表