基礎知識
首先,現有的覆蓋遊戲壓縮包的mod方式是錯誤的,這樣破壞了遊戲的源文件,而且需要修改dll文件,使用不同破解的同志經常會出現問題。
真正的方法如下(你再也不用去修改什麼dll了):
在遊戲dead island\DI\Out\目錄下建立data文件夾。然後將壓縮包內需要mod的文件拷貝進去。如果該文件壓縮包中的目錄是:data\skills \xian_skills.xml,那麼就將xian_skills.xml拷貝至dead island\DI\Out\data\skills\xian_skills.xml
不同的data文件裡面的文件架結構是一樣的,不管是data0還是data2,裡面的文件只要在data\文件夾下,都放在至dead island\DI\Out\data\裡面的對應位置。
(遊戲dead island\DI目錄下的*.pak文件可以使用rar軟件解壓縮,遊戲原文件就在裡面,做這一切前備份工作請自己做好)
此遊戲是mod開放的,至少破解版是mod開放的。遊戲總是以dead island\DI\Out\data下的文件優先。
以後mod只需將要修改的文件放在這裡就好了,包括漢化也應該這麼做。

-------------------------------------------------- ------------------------------
關於聯機
關於聯機時mod能不能生效,怎么生效,請自行測試。

-------------------------------------------------- ------------------------------
技能修改
現在介紹一下人物技能的修改:
人物技能文件在data\Skills\ 文件夾中,定義了人物升級經驗、技能點給予、人物技能效果、基礎人物能力升級等內容。 mod這個可以讓你的人物擁有全新的技能,升級的時候擁有更多的技能點,調整物品欄數目的解鎖,人物屬性提升成都,調整升級難度等等。
首先介紹人物技能文件,以黑妹為例:
黑妹的文件為:purna_levels.xml、purna_skills.xml,
人物升級
其中level文件定義了黑妹的升級經驗和技能點獎勵。以一到五級為例:
<level id="1">     
        <prop n="ExpToNextLevel" v="2000"/>        //到下一級的經驗
        <prop n="MaxStamina" v="0.8"/>                //本級時的最大耐力
        <prop n="QuickSlotsCount" v="3"/>             //本級別可以擁有的武器槽位
        <prop n="InventorySize" v="12"/>               //本級別的物品欄大小
        <prop n="MaxHealth" v="110"/>                  //本級別的血量
</level>
<level id="2">
        <prop n="ExpToNextLevel" v="2220"/>
        <prop n="AllowedSkillsCount" v="1"/>          //說明到二級時所能擁有的技能點
        <prop n="MaxHealth" v="120"/>                   //此時絕對血量變為120
</level>
<level id="3">
        <prop n="ExpToNextLevel" v="2464"/>
        <prop n="AllowedSkillsCount" v="2"/>
        <prop n="MaxHealth" v="130"/>
</level>
<level id="4">
        <prop n="ExpToNextLevel" v="2735"/>
        <prop n="AllowedSkillsCount" v="3"/>
        <prop n="MaxHealth" v="140"/>
</level>
<level id="5">
        <prop n="ExpToNextLevel" v="3036"/>
        <prop n="AllowedSkillsCount" v="4"/>
        <prop n="MaxHealth" v="150"/>
        <prop n="QuickSlotsCount" v="5"/>        //此時武器欄變為5個


人物技能
多謝zyshiyong提醒,我忘了提醒:技能的描述式獨立的文本,不會隨著參數的修改而改變,參數修改後進遊戲試試就可以看見效果,但是技能的描述是不會變的。
skill文件定義了人物的技能,這是個重點文件,經常有朋友問我,你的黑妹為什麼會迴旋鏢之類的問題,關鍵就在這裡了。此處以黑妹生存系第一個技能的修改為例:
        <skill id="BoostAura1" cat="Tree3" max_level="1" tier=" 0">               //說明是第三個技能樹,只能升級一次,是0級技能
            <effect id="BoostAuraRange" change="1500" />                       &nbsp ;          //定義了光環的半徑,單位是厘米
            <effect id="BoostAuraTeamFactor" change="0.35" />                       &nbsp ; //定義了對隊友的加強因子,我增加到35%
             <effect id="ItemBuyFactor" change=" -0.99"/>                                    //這裡開始就是我增加的屬性了,這個是買東西降價,打0.1折,此技能來自細妹
             <effect id="InventorySize" change=" 20"/>                      &nbsp ;                   //這裡代表背包空間增量,我增加了20
             <effect id="NearByExperiensceMul" change=" -25"/>                          //這裡我修改了經驗獲取buff,我不愛升級,所以定義為-2500%,願意升級的人可以用正值
             <effect id="TeamLootDropChance" change=" 5.0"/>                      &nbsp ;    //這裡定義了物品掉落機率,我增加了500%
             <effect id="LootItemWeightMod" change=" 5.0"/>                      &nbsp ;      //這裡定義了珍惜物品出現權重加成,同樣我定義了500%
             <effect id="FuryPointsNeededToActivate" change=" -0.9"/>               //這裡是達到狂怒所需的怒氣修改,我改為只需正常的10%
             <effect id="FuryLevel" change=" 9"/>                      &nbsp ;                         / /這裡是狂怒等級,就是你怒後可以釋放幾次技能,正常升滿是3次,直接改為9次
             <effect id="BoomerangProb" change=" 1.0"/>                      &nbsp ;            //這個是迴旋鏢技能,1.0表示100%飛鏢回歸
             <effect id="ThrowMaxDist" change=" 25000"/>                      &nbsp ;         //投擲距離增量,想成為李尋歡必須要射的遠
             <effect id="enaltyForEnemiesLvlNuliffy" change=" 50"/>                  //越級攻擊懲罰降低,50表示越50級攻擊也不會miss
             <effect id="MedPackEffectivness" change=" 5.0"/>                      &nbsp ;    //醫療包效果調整為500%,一個小醫療包就能補滿
        </skill>
這裡的修改可以參考其他角色的skill技能文件,可以讓你的人物實現所有人物的全技能,例如火器精確度上升、修補物品便宜、加強物品耐久、百分百原地複活神馬的都可以(每個人狂怒效果仍然是獨特的,不在這裡修改)
其他人物特性(例如攜彈量、跑路速度)
此外還有重要的default_levels.xml文件,定義了人物的基本屬性,例如回血、視角大小、各種狀態下的行動速度、跳躍高度等等,這裡我並沒有進行修改,如果你想來個北斗亂入,這裡的代碼是需要研究一下的,好在可讀性還算不錯。
這裡只給出幾個大家最喜歡的參數
最大子彈攜帶量:​​
    <prop n="MaxAmmoPistol" v="5000"/>
    <prop n="MaxAmmoRifle" v="6000"/>``
    <prop n="MaxAmmoShotgun" v="2000"/>
    <prop n="MaxAmmoSniper" v="1500"/>   
你想做一個痛快的槍手的話,除了這裡,你還需要有一位出售所有子彈的商人(修改shop文件),以及讓子彈便宜一些更多一些(修改Inventory.scr),或者乾脆用技能效果來達到這兩個目的(子彈百分百回收)
視場大小:
    <prop n="CameraDefaultFOV" v="85"/>
85是個不錯的視場大小,但是槍支的後部會有一點點空白,這個看大家個人喜好了
死亡懲罰:
    <prop n="enaltyOnDeath" v="1"/>
將此數值改為0,死後不掉錢
跑動速度和跳躍高度:


物品修改
以下是物品的修改:
物品的文件有好幾個,都以Inventory開頭,data文件夾下可以找到,可收集物品和藍圖在另外一個文件裡(Collectables.scr)< /span>
物品分為幾種:靜態不隨級別變化,沒法修理的,這些在Inventory.scr(例如船槳、拳頭:Melee_Fists等)中,隨你級別變化的,這些在Inventory_Gen.scr中,還有一些特殊的,在Inventory_Special.scr裡面(例如踢腿:Melee_Leg)
希望低級別使用槍支的,北斗神拳、無影腿愛好者,請仔細觀看了
靜態物品
介紹一下在Inventory.scr中物品的代碼,以新人最親愛的船槳為例:
   Item("Melee_Paddle", CategoryType_Melee)
    {
        IdNameOld("We_Paddle");
        Name("&Melee_Paddle_N&");
        Description("&Melee_Paddle_D&");
        Visibility(true);
        ItemType(ItemType_TwoHandedStick);                  \\物品的基礎類型,有MOD將雙拳替換為隔空掌和這裡就有關,這裡是傳送門隔山打牛、龜派氣功、電擊掌MOD
        PhysicsScript("DroppedInventory.scr");
        Condition(10000);             \\耐久,似乎改為-1可以表示不損壞(gen文件中物品此處定義是無效的,遊戲根據另外的代碼隨你級別會另算,如何解決我下面會說)
        Damage(90.0);                  \\基礎攻擊(gen文件中物品此處定義是無效的,遊戲根據另外的代碼隨你級別會另算)
        CriticalProb(0.5);                 \\50%暴擊</ span>
        CriticalDamage(60.0);           \\暴擊傷害
        DamageRange(250.0);              \\攻擊距離
        Force(80.0);                            \\推力,越大敵人的黃色體力消減越厲害,可以一下將敵人擊倒,可以應用在Inventory_Special.scr文件中定義的踢腿攻擊上(gen文件中物品此處定義是無效的,遊戲根據另外的代碼隨你級別會另算)
        PhysicsDamage(60.0);              \\這個是攻擊的物理效果,越大,打飛的越遠(幾位研究北斗拳、穿心腿、隔空漲的同志請注意,這個才是物理推力,上面的force是對體力條的攻擊力)
        StaminaUsage(0.00);                \\耐力使用
        SwingSpeed​​(0.8);                     \\揮動一次的時間(gen文件中物品此處定義是無效的,遊戲根據另外的代碼隨你級別會另算)
        HeadSmashProb(0.5);                   \\爆頭機率
        HeadCutProb(1.0);                        \\斬首機率
        ArmsCutProb(1.0);                        \\斷臂機率
        LegsCutProb(1.0);                       \\卸腿機率
        DamageType(DamageType_Cut); \\傷害類型,這裡我修改為割傷,這樣船槳的攻擊行為會和刀一樣,可以砍斷敵人肢體,丟出去可以插在人身上
        Mesh("weapon_paddle_a.msh");
        AnimPrefix("Stick2");
        HudIcon("paddle_a");
        MinDamageAngle(-60.0);
        MaxDamageAngle(45.0);
        MinDamageMult(1.0);
        MaxHitSeverity(HitSeverity_Medium);
        MinHitSeverity(HitSeverity_Light);
        Horizo​​ntalAttackDamageMul(1.0);
        TwoHanded(true);
        HolderElement("bip01 spine2");
        HolderOffset([25.0,10.0,15.0]);
        HolderAngle([90.0,20.0,90.0]);
        CausesKnockDown(true);
        DestroySound("break_wooden_weapon_00.wav");
        AiHitSound("paddle");
        use HitEffects_Wooden();
        BloodSplatFactor(0.15);
        use PickupSounds_Default();
        DamageSize(10.0);
        StatsType(StatsType_Blunt);
        LootLevel(2);\\物品的loot級別,和掉寶率有關
        LootType(LootType_Blunt);
        FF_Left(0.6);
        FF_Right(0.6);
        FF_Duration(0.2);
        FF_FadeOut(0.0);
        Color(Color_White);
        AchType(AchType_Paddle);
    }
後面部分似乎是定義幾個變體,可以不去管它。


動態物品
然後是Inventory_Gen.scr中的火器(近戰、子彈、手雷什麼的我就不說了,這些東西的價格、數量、威力都是可改的),我們以祖國防御者衝鋒槍為例:
    Item("Firearm_leg_DefenderOfTheMotherland", CategoryType_Firearm)
    {
        Name("&Firearm_leg_DefenderOfTheMotherland_N&");
        Description("&Firearm_leg_DefenderOfTheMotherland_D&");
        CategoryType(CategoryType_Firearm);
        Visibility(true);
        ItemType(ItemType_Rifle);
        PhysicsScript("DroppedInventory.scr");
        UpgradeLevel(0);
        Condition(-1);       &nbsp ;                  \\物品無需修理(之前說過的我就不再說了)
        DamageRangeMelee(110.0);             \\(無效)
        HeadSmashProb(0.8);
        HeadCutProb(0.0);
        ArmsCutProb(0.0);
        LegsCutProb(0.0);
        DamageType(DamageType_Bullet);
        Mesh("weapon_machine_gun_b.msh");
        Skin("super");
        SkinTag("weapon_epic1");
        AnimPrefix("AK47");
        HudIcon("akms");
        ShotTime(0.07);                    \\射擊時間,越小越快
        ShotSound("AkOneShotSt_XX.wav");
        BaseSoundPrefix("ak47");
        AmmoType(AmmoType_Rifle);
        AmmoCount(90);                    \\彈夾大小
        ReloadTime(1.25);                 \\換彈夾時間
        EmptySound("istol_Empty.wav");
        RagdollBehavior(RagdollBehavior_None);
        TwoHanded(true);
        HolderElement("bip01 r thigh");
        HolderOffset([0.0,10.0,0.0]);
        HolderAngle([0.0,90.0,-90.0]);
        use HitEffects_Firearm();
        use PickupSounds_Default();
        ClipReload(true);
        FxNameShell("MGGunfireShell");
        ShootFx("MGGunfireSingle_sequence.fx");
        AimBlurStart(25.0);
        AimBlurEnd(35.0);
        ShootMinAngle(0.001);                  \\準星最小大小(這裡開始是準星和準確度修改,我以下的參數的效果和普通fps的ak類似)
        ShootMaxAngle(0.004);                  \\準星最大大小</​​span>
        ShootAngleVel(0.0003);                  \\每次射擊準星和散佈的增量
        ShootAngleCooldown(0.14);              \\準星回縮效果,越大越快
        ShootVertRecoil(0.001);                   \\後座水平跳動大小
        ShootVertRecoilSpread(0.001);           \\後座水平散佈大小
        ShootHorzRecoil(0.0);                        \\後座垂直跳動大小
        ShootHorzRecoilSpread(0.001);             \\後座垂直散佈大小
        ShootRecoilTime(0.005);                     \\後座作用效果時間
        ShootMode(ShotMode_Automatic);           \\全自動射擊
        BulletsPerShot(1);                                  \\每次打出幾個子彈,似乎散彈槍就可以不止一個
        AimFov(3.5);                                         \\瞄準時候的縮放倍數,調大就是狙擊搶了
        DamageSize(5.0);   
        AiHitSound("firearm");
        StatsType(StatsType_Rifle);
        Price(5000);                                                   \\價格,修改無效
        LootLevel(5);                                        
        LootType(LootType_Firearm_Auto);
        FF_Left(0.3);
        FF_Right(0.4);
        FF_Duration(0.1);
        FF_FadeOut(0.0);
        CriticalProb(0.05);
        CriticalDamage(100.0);
        FirePointRange(0,2000.0);
        FirePointDamage(0,100.0);
        FirePointPhysicsDamage(0,40.0);
        FirePointForce(0,100.0);
        FirePointRange(1,10000.0);
        FirePointDamage(1,20.0);
        FirePointPhysicsDamage(1,40.0);
        FirePointForce(1,20.0);
        Color(Color_Orange);
        GenType(GenType_AUTORIFLE);
        GenLevelMin(0);                            \\這個很重要,表示槍械生成的最低等級,2級人物想用槍,這裡必須要調低
        ShotTailDelay(0.1);
        AchType(AchType_Rifle);
        NameGender(0);
        PriceMult(1.1);
    }
    Item("Firearm_leg_DefenderOfTheMotherland", CategoryType_Firearm) \\一下是瞄準狀態下的參數,和上麵類似,不再解釋
    {
        CategoryType(CategoryType_Firearm);
        UsageType(UsageType_Aim);
        UpgradeLevel(0);
        HandOffset(HandModification_Normal, [-0.812,0.0,7.0]);
        HandRot(HandModification_Normal, [0.0625,0.1875,0.0]);
        SwayMaxAngle(0.02);
        ShootMinAngle(0.0005);
        ShootMaxAngle(0.001);
        ShootAngleVel(0.0001);
        ShootAngleCooldown(0.28);
        ShootVertRecoil(0.001);
        ShootHorzRecoil(0.0);
        ShootHorzRecoilSpread(0.0);
    }
後面的部分是升級後的變化,可以不用太關注
有人在問如何修改才能提升隨級別浮動武器的傷害,這個可以從skill中解決,直接用技能效果提升鈍器、火器、刀具的傷害。我個人建議這麼做,但是你也可以從Inventory_Gen.scr文件下手。
在Inventory_Gen.scr文件後部定義了1-50隨級別浮動的傷害、耐久、速度、推力,以下選取一點:
    GeneratorLevel(0, 45)\\表示是45級的武器規則
    {
        GenParam(Gen_Damage, 9940, 6620.6288, 4970, 3970.6, 3310.3712); \\生成的各類武器傷害,這裡我提高了10倍,以下類似,我將耐久也提升了10倍
        GenParam(Gen_Force, 994, 662.6288, 497, 397.6, 331.3712);
        GenParam(Gen_Speed​​, 0.05, 0.08, 0.1, 0.20, 0.50);​​
        GenParam(Gen_Durability, 690, 460, 310, 230, 150);


合成公式
以下再說一下合成plan的修改:
這部分定義在Collectables.scr中這個文件裡還定義了磁帶、身份證什麼的。
一下以Oldsmokycraft為例:
    Item("Craftplan_Oldsmokycraft", CategoryType_Collectable)
    {
        Name("&ColItem_Craftplan_Oldsmokycraft&");
        Description(&ColItem_Craftplan_Oldsmokycraft_D&);
        ItemType(ItemType_CraftPlan);
        Price(1000);                                                                                     \\需要的錢
        Mesh("blueprint_a.msh");
        Skin("default_hl");
        BaseItem("Melee_Machete", "Weapon_Craft10", "");   &nbsp ;                        &nbsp ;  \\以下是需要的武器,不知道能否用於其他武器
        BaseItem("Melee_leg_TheMachete", "Weapon_Craft10", "");
        BaseItem("Melee_leg_Bushmaster", "Weapon_Craft10", "");
        RequiredItem("CraftPart_Tape", 3);                                                        \\一下是需要的零件,覺得多可以刪掉一點
        RequiredItem("CraftPart_Wire", 3);
        RequiredItem("CraftPart_Lp4000Battery", 1);
        RequiredItem("CraftPart_Magnet", 2);
        RequiredItem("CraftPart_Belt", 2);
        RequiredItem("CraftPart_Blade", 2);
        NamePrefix("&CraftOldSmokyPrefixName&");
        AdditionalDamageType(DamageType_Electric);                         \\一下是craft後增加的效果,想改全元素的就要仔細研究了
        AdditionalDamage(0.05);
        AdditionalCriticalProb(0.06);
        AdditionalCriticalDuration(5.0);
        AdditionalCriticalDamage(0.5);
        DeathEffect(0);
        PropagateProb(0.2);
        AdditionalDamadeLevel(4);
        Color(Color_Violet);
    }
合成plan似乎不是普通物品,沒法改為在商店中出售,同理,收集類的其他物品也沒法從商人那裡得到。
目前我所知的可行到手辦法只有一個,修改任務定義文件,將某個循環任務的獎勵改為藍圖。為了達成這個目的,我苦練兩天的77支線、全骷髏黑妹毀檔了,所以我會勸你不要輕易做這個事情。


商店修改
商店文件在data2包內,請自行尋找。
一下以燈塔門口的商人為例,我將原有的物品代碼刪掉一些,節省版面:
!Item(s, i)//item name, roulette space [0-5]                 \\這裡註釋了白色物品的格式
!ColorItem(s, i, i, i)//item name, roulette space [0-5], colors [White = 0, Green = 1, Violet = 2, Yellow = 3, Orange = 4], min level \\彩色物品的格式
//Javier_Shop
Assortment("ACT1A_Shop02")
{
//[White = 0, Green = 1, Violet = 2, Yellow = 3, Orange = 4]              \\這裡註釋了顏色和代碼的關係
    //WEAPONS - ORANGE
  ColorItem("Melee_KatanaGen", 0, 4, 0)\\這裡我定義了一隻橙色太刀,總會出現,而且從人物0級起就會賣,隨你級別調整貨物等級
  ColorItem("Firearm_leg_DefenderOfTheMotherland", 0, 4, 0)\\和上麵類似,我加了一隻祖國防御者
    //WEAPONS - VIOLET
    ColorItem("Melee_MaceHeavyStarGen", 3, 3, 8)
    //WEAPONS - BLUE
    ColorItem("Melee_CaneKnifeSugarGen", 1, 2, 6)
    //WEAPONS - GREEN
    ColorItem("Melee_HammerNailGen", 3, 1, 4)
    //WEAPONS - WHITE
    Item("Melee_KnifeHomemadeGen", 1)
    //MISC
    Item("Ammo_RifleBig", 0)\\這裡我增加了一隻步槍子彈,定義為總會出現
}
似乎出現機率為0(必定出現)的物品只能刷出三件,這部分的代碼我理解的也不深刻,也沒有去steam論壇交流(忙聯機了),所以大家最好再研究一下。

-------------------------------------------------- ------------------------------
任務
關於任務的修改:
任務是可以修改獎勵和完成條件的,文件在quests文件夾中,但是修改起來非常危險,錯誤的話會毀檔,不建議新手操作,本人研究也不深刻,故此不做多餘介紹

-------------------------------------------------- ------------------------------
界面修改(例如去準星)
這裡已知的是可以調整界面上隊友、準星、物品提示的圖標、位置、透明度。
去準星確實是有需要的,例如3d屏幕使用者,大家就不要說我蛋疼了。
文件是data\Menu\HUD\hud.xui,在那個包裡記不得了,請自行尋找
以準星為例:
<roperties>
<Id>HudCrosshair</Id>
<Width>100.000000</Width>
<Height>100.000000</Height>
<Opacity>1.000000</Opacity>             //我增加了一行透明度定義,如果是0,就是不顯示準星,1就是完整顯示,喜歡半透明的可以自己選個值,我想和我一樣使用3d顯示器的同志一定很喜歡這個
<osition>640.000000,360.000000,0.000000</Position>
<ivot>50.000000,50.000000,0.000000</Pivot>
<HoldAspectRatio>true</HoldAspectRatio>
<HoldAspectRatioX>true</HoldAspectRatioX>
<HoldAspectPivotPosition>true</HoldAspectPivotPosition>
<ClassOverride>HudCrosshair</ClassOverride>
</Properties>
如果要修改準星,那麼不只一個crosshair的properties需要改,我記得是兩個。
話說用3d偏光眼鏡玩這個遊戲不是一般的爽,斬首後ss的腦袋和著血柱從屏幕裡砸出來,嘖嘖、、、、、

-------------------------------------------------- ------------------------------
殺怪經驗
這個文件是xp_rewards.scr,位置在data0包的data目錄裡
示例:
        Xp("InfectedKill", 20);              \ \自然就是殺一個給經驗的基礎值了。
        Xp("InfectedDeath_Assisted", 10);
        Xp("InfectedDeath_Nearby", 5);
不過我個人仍然建使用技能的效果來影響經驗值的獲取。

-------------------------------------------------- ------------------------------
以上是暫時我所研究出的mod方式,steam官方論壇上有一些其他文件的mod說明,例如按鍵綁定什麼的,我沒有作進一步研究,在此也就起個拋磚引玉的效果,希望大家多多研究吧。
arrow
arrow
    全站熱搜

    heido001 發表在 痞客邦 留言(0) 人氣()