無聊研究了一下哥薩克的MOD製作,由於官方論壇上也沒有給出完整的教程所以,這算是第一篇教程了吧。無聊可以改改單位數據自己用地圖編輯器玩。
由於哥薩克3是用Delphi開發的,因此和平常用C++開發的遊戲完全不一樣,你需要一點Delphi的基本語法知識免得出現代碼錯誤。
推薦使用notepad++或者其他能夠高亮Pascal語言的編輯器
MOD工具帖(有老外發布的各種MOD製作相關的工具如模型查看什麼的):點擊進入
新增單位教程(還未完工所以我懶得翻譯和搬運了,需要自己用谷歌翻譯看下):點擊進入
單位屬性修改教程:
目前我還沒研究出如何修改單位移動速度,不過你可以修改單位的攻擊力、生命、護甲、射程、射速和散布等屬性。
首先打開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工具或者詳細教程了
來源:3DM論壇
作者:yythero