哥萨克3本文为大家带来基础MOD教程之单位属性修改的教程,可以对单位的属性进行修改,包括武器、护甲等的数值,建造单位的消耗量等大量数据。希望对大家有所帮助。
无聊研究了一下哥萨克的MOD制作,由于官方论坛上也没有给出完整的教程所以,这算是第一篇教程了吧。无聊可以改改单位数据自己用地图编辑器玩。
由于哥萨克3是用Delphi开发的,因此和平常用C++开发的游戏完全不一样,你需要一点Delphi的基本语法知识免得出现代码错误。
推荐使用notepad++或者其他能够高亮Pascal语言的编辑器。
哥萨克3单位属性修改教程
目前我还没研究出如何修改单位移动速度,不过你可以修改单位的攻击力、生命、护甲、射程、射速和散布等属性。
首先打开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进行判断。
但是如果单位没有那种后缀是没法进行国家判定的。
就是这样,祝大家游戏开心,万事顺意。
……