Chapter 8.5: Using the DayZ Mod Template
Home | << Previous: Adding Chat Commands | Using the DayZ Mod Template | Next: Debugging & Testing >>
Obsah
- Co je šablona DayZ modu?
- Co šablona poskytuje
- Krok 1: Klonování nebo stažení šablony
- Krok 2: Pochopení struktury souborů
- Krok 3: Přejmenování modu
- Krok 4: Aktualizace config.cpp
- Krok 5: Aktualizace mod.cpp
- Krok 6: Přejmenování skriptových složek a souborů
- Krok 7: Sestavení a testování
- Integrace s DayZ Tools a Workbench
- Šablona vs. ruční nastavení
- Další kroky
Co je šablona DayZ modu?
Šablona DayZ modu je open-source repozitář spravovaný InclementDabem, který poskytuje kompletní, připravenou kostru modu pro DayZ:
Repozitář: https://github.com/InclementDab/DayZ-Mod-Template
Místo vytváření každého souboru ručně (jak je popsáno v Kapitole 8.1: Váš první mod) vám šablona poskytne předpřipravenou adresářovou strukturu se vším boilerplate kódem. Naklonujete ji, přejmenujete několik identifikátorů a můžete začít psát herní logiku.
Toto je doporučený výchozí bod pro každého, kdo již vytvořil Hello World mod a chce přejít ke složitějším projektům.
Co šablona poskytuje
Šablona obsahuje vše, co DayZ mod potřebuje pro kompilaci a načtení:
| Soubor / složka | Účel |
|---|---|
mod.cpp | Metadata modu (název, autor, verze) zobrazená v DayZ launcheru |
config.cpp | Deklarace CfgPatches a CfgMods, které registrují mod v enginu |
Scripts/3_Game/ | Zárodky skriptů herní vrstvy (výčty, konstanty, konfigurační třídy) |
Scripts/4_World/ | Zárodky skriptů světové vrstvy (entity, manažery, interakce se světem) |
Scripts/5_Mission/ | Zárodky skriptů misijní vrstvy (UI, háčky misí) |
.gitignore | Předkonfigurované ignorování pro DayZ vývoj (PBO, logy, dočasné soubory) |
Šablona následuje standardní pětivrstvou hierarchii skriptů zdokumentovanou v Kapitole 2.1: Pětivrstvá hierarchie skriptů. Všechny tři skriptové vrstvy jsou propojeny v config.cpp, takže můžete okamžitě umístit kód do kterékoli vrstvy bez další konfigurace.
Krok 1: Klonování nebo stažení šablony
Možnost A: Použití funkce GitHubu "Use this template"
- Přejděte na https://github.com/InclementDab/DayZ-Mod-Template
- Klikněte na zelené tlačítko "Use this template" v horní části repozitáře
- Vyberte "Create a new repository"
- Pojmenujte svůj repozitář (např.
MyAwesomeMod) - Naklonujte svůj nový repozitář na disk P:
cd P:\
git clone https://github.com/YourUsername/MyAwesomeMod.gitMožnost B: Přímé klonování
Pokud nepotřebujete vlastní GitHub repozitář, naklonujte šablonu přímo:
cd P:\
git clone https://github.com/InclementDab/DayZ-Mod-Template.git MyAwesomeModMožnost C: Stažení jako ZIP
- Přejděte na stránku repozitáře
- Klikněte na Code a poté Download ZIP
- Rozbalte ZIP do
P:\MyAwesomeMod\
Krok 2: Pochopení struktury souborů
Po klonování vypadá adresář vašeho modu takto:
P:\MyAwesomeMod\
mod.cpp
Scripts\
config.cpp
3_Game\
ModName\
(skripty herní vrstvy)
4_World\
ModName\
(skripty světové vrstvy)
5_Mission\
ModName\
(skripty misijní vrstvy)Jak jednotlivé části do sebe zapadají
mod.cpp je identifikační karta vašeho modu. Ovládá, co hráči vidí v seznamu modů DayZ launcheru. Všechna dostupná pole najdete v Kapitole 2.3: mod.cpp a Workshop.
Scripts/config.cpp je nejkritičtější soubor. Říká enginu DayZ:
- Na čem váš mod závisí (
CfgPatches.requiredAddons[]) - Kde se nachází jednotlivé skriptové vrstvy (
CfgMods.class defs) - Jaké preprocesorové definice nastavit (
defines[])
Kompletní referenci najdete v Kapitole 2.2: config.cpp do hloubky.
Scripts/3_Game/ se načítá jako první. Sem umístěte výčty, konstanty, RPC ID, konfigurační třídy a cokoli, co neodkazuje na světové entity.
Scripts/4_World/ se načítá jako druhá. Sem umístěte třídy entit (modded class ItemBase), manažery a cokoli, co interaguje s herními objekty.
Scripts/5_Mission/ se načítá jako poslední. Sem umístěte háčky misí (modded class MissionServer), UI panely a startovací logiku. Tato vrstva může odkazovat na typy ze všech nižších vrstev.
Krok 3: Přejmenování modu
Šablona je dodávána s zástupnými názvy. Musíte je nahradit skutečným názvem vašeho modu. Zde je systematický přístup.
Zvolte si názvy
Než začnete cokoli upravovat, rozhodněte se o:
| Identifikátor | Příklad | Použit v |
|---|---|---|
| Zobrazovaný název modu | "My Awesome Mod" | mod.cpp, config.cpp |
| Název adresáře | MyAwesomeMod | Název složky, cesty v config.cpp |
| Třída CfgPatches | MyAwesomeMod_Scripts | config.cpp CfgPatches |
| Třída CfgMods | MyAwesomeMod | config.cpp CfgMods |
| Podadresář skriptů | MyAwesomeMod | Uvnitř 3_Game/, 4_World/, 5_Mission/ |
| Preprocesorová definice | MYAWESOMEMOD | config.cpp defines[], kontroly #ifdef |
Pravidla pojmenování
- Žádné mezery ani speciální znaky v názvech adresářů a tříd. Používejte PascalCase nebo podtržítka.
- Názvy tříd CfgPatches musí být globálně unikátní. Dva mody se stejným názvem třídy CfgPatches budou v konfliktu. Použijte název svého modu jako prefix.
- Názvy podadresářů skriptů uvnitř každé vrstvy by měly odpovídat názvu vašeho modu pro konzistenci.
Krok 4: Aktualizace config.cpp
Otevřete Scripts/config.cpp a aktualizujte následující sekce.
CfgPatches
Nahraďte název šablonové třídy vlastním:
class CfgPatches
{
class MyAwesomeMod_Scripts // <-- Váš unikátní název patche
{
units[] = {};
weapons[] = {};
requiredVersion = 0.1;
requiredAddons[] =
{
"DZ_Data" // Závislost na základní hře
};
};
};Pokud váš mod závisí na jiném modu, přidejte jeho název třídy CfgPatches do requiredAddons[]:
requiredAddons[] =
{
"DZ_Data",
"CF_Scripts" // Závisí na Community Framework
};CfgMods
Aktualizujte identitu modu a cesty ke skriptům:
class CfgMods
{
class MyAwesomeMod
{
dir = "MyAwesomeMod";
name = "My Awesome Mod";
author = "YourName";
type = "mod";
dependencies[] = { "Game", "World", "Mission" };
class defs
{
class gameScriptModule
{
value = "";
files[] = { "MyAwesomeMod/Scripts/3_Game" };
};
class worldScriptModule
{
value = "";
files[] = { "MyAwesomeMod/Scripts/4_World" };
};
class missionScriptModule
{
value = "";
files[] = { "MyAwesomeMod/Scripts/5_Mission" };
};
};
};
};Klíčové body:
- Hodnota
dirmusí přesně odpovídat názvu kořenové složky vašeho modu. - Každá cesta v
files[]je relativní vůči kořenu modu. - Pole
dependencies[]by mělo obsahovat seznam vanilla skriptových modulů, do kterých se napojujete. Většina modů používá všechny tři:"Game","World"a"Mission".
Preprocesorové definice (volitelné)
Pokud chcete, aby ostatní mody mohly detekovat přítomnost vašeho modu, přidejte pole defines[]:
class MyAwesomeMod
{
// ... (ostatní pole výše)
class defs
{
class gameScriptModule
{
value = "";
files[] = { "MyAwesomeMod/Scripts/3_Game" };
};
// ... ostatní moduly ...
};
// Povolení detekce mezi mody
defines[] = { "MYAWESOMEMOD" };
};Ostatní mody pak mohou použít #ifdef MYAWESOMEMOD k podmíněné kompilaci kódu, který se integruje s vaším modem.
Krok 5: Aktualizace mod.cpp
Otevřete mod.cpp v kořenovém adresáři a aktualizujte jej informacemi o vašem modu:
name = "My Awesome Mod";
author = "YourName";
version = "1.0.0";
overview = "Stručný popis toho, co váš mod dělá.";
picture = ""; // Volitelné: cesta k náhledovému obrázku
logo = ""; // Volitelné: cesta k logu
logoSmall = ""; // Volitelné: cesta k malému logu
logoOver = ""; // Volitelné: cesta k logu při najetí myší
tooltip = "My Awesome Mod";
action = ""; // Volitelné: URL na webové stránky moduMinimálně nastavte name, author a overview. Ostatní pole jsou volitelná, ale zlepšují prezentaci v launcheru.
Krok 6: Přejmenování skriptových složek a souborů
Přejmenujte podadresáře skriptů uvnitř každé vrstvy tak, aby odpovídaly názvu vašeho modu:
Scripts/3_Game/ModName/ --> Scripts/3_Game/MyAwesomeMod/
Scripts/4_World/ModName/ --> Scripts/4_World/MyAwesomeMod/
Scripts/5_Mission/ModName/ --> Scripts/5_Mission/MyAwesomeMod/Uvnitř těchto složek přejmenujte všechny zástupné .c soubory a aktualizujte jejich názvy tříd. Například pokud šablona obsahuje soubor jako ModInit.c s třídou nazvanou ModInit, přejmenujte ho na MyAwesomeModInit.c a aktualizujte třídu:
modded class MissionServer
{
override void OnInit()
{
super.OnInit();
Print("[MyAwesomeMod] Server initialized!");
}
};Krok 7: Sestavení a testování
Použití File Patching (rychlá iterace)
Nejrychlejší způsob testování během vývoje:
DayZDiag_x64.exe -mod=P:\MyAwesomeMod -filePatchingToto načte vaše skripty přímo ze zdrojových složek bez balení PBO. Upravte .c soubor, restartujte hru a okamžitě uvidíte změny.
Použití Addon Builderu (pro distribuci)
Když jste připraveni k distribuci:
- Otevřete DayZ Tools ze Steamu
- Spusťte Addon Builder
- Nastavte Source directory na
P:\MyAwesomeMod\Scripts\ - Nastavte Output directory na
P:\@MyAwesomeMod\Addons\ - Nastavte Prefix na
MyAwesomeMod\Scripts - Klikněte na Pack
Poté zkopírujte mod.cpp vedle složky Addons:
P:\@MyAwesomeMod\
mod.cpp
Addons\
Scripts.pboOvěření ve script logu
Po spuštění zkontrolujte script log pro vaše zprávy:
%localappdata%\DayZ\script_<datum>_<čas>.logHledejte prefix tag vašeho modu (např. [MyAwesomeMod]).
Integrace s DayZ Tools a Workbench
Workbench
DayZ Workbench umí otevřít a upravovat skripty vašeho modu se zvýrazňováním syntaxe:
- Otevřete Workbench z DayZ Tools
- Přejděte na File > Open a navigujte do složky
Scripts/vašeho modu - Otevřete jakýkoli
.csoubor pro úpravu se základní podporou Enforce Script
Workbench čte config.cpp, aby pochopil, které soubory patří ke kterému skriptovému modulu, takže správně nakonfigurovaný config.cpp je nezbytný.
Nastavení disku P:
Šablona je navržena pro práci z disku P:. Pokud jste klonovali na jiné místo, vytvořte junction:
mklink /J P:\MyAwesomeMod "D:\Projects\MyAwesomeMod"Tím zpřístupníte mod na P:\MyAwesomeMod bez přesouvání souborů.
Automatizace Addon Builderu
Pro opakované sestavení si můžete vytvořit batch soubor v kořenu vašeho modu:
@echo off
set DAYZ_TOOLS="C:\Program Files (x86)\Steam\steamapps\common\DayZ Tools"
set SOURCE=P:\MyAwesomeMod\Scripts
set OUTPUT=P:\@MyAwesomeMod\Addons
set PREFIX=MyAwesomeMod\Scripts
%DAYZ_TOOLS%\Bin\AddonBuilder\AddonBuilder.exe %SOURCE% %OUTPUT% -prefix=%PREFIX% -clear
echo Sestavení dokončeno.
pauseŠablona vs. ruční nastavení
| Aspekt | Šablona | Ručně (Kapitola 8.1) |
|---|---|---|
| Čas do prvního sestavení | ~2 minuty | ~15 minut |
| Všechny 3 skriptové vrstvy | Předkonfigurované | Přidáváte je podle potřeby |
| config.cpp | Kompletní se všemi moduly | Minimální (pouze mise) |
| Připraveno pro Git | .gitignore zahrnuto | Vytváříte vlastní |
| Vzdělávací hodnota | Nižší (soubory předpřipravené) | Vyšší (sestavujete vše sami) |
| Doporučeno pro | Zkušené moddery, nové projekty | Začátečníky, kteří se učí základy |
Doporučení: Pokud je toto váš úplně první DayZ mod, začněte s Kapitolou 8.1, abyste pochopili každý soubor. Jakmile se budete cítit pohodlně, používejte šablonu pro všechny budoucí projekty.
Další kroky
S vaším modem založeným na šabloně v provozu můžete:
- Přidat vlastní předmět -- Postupujte podle Kapitoly 8.2: Vytvoření vlastního předmětu pro definici předmětů v config.cpp.
- Vytvořit admin panel -- Postupujte podle Kapitoly 8.3: Tvorba admin panelu pro UI správy serveru.
- Přidat chatové příkazy -- Postupujte podle Kapitoly 8.4: Přidání chatových příkazů pro herní textové příkazy.
- Prostudovat config.cpp do hloubky -- Přečtěte si Kapitolu 2.2: config.cpp do hloubky, abyste pochopili každé pole.
- Naučit se možnosti mod.cpp -- Přečtěte si Kapitolu 2.3: mod.cpp a Workshop pro publikování na Workshop.
- Přidat závislosti -- Pokud váš mod používá Community Framework nebo jiný mod, aktualizujte
requiredAddons[]a podívejte se na Kapitolu 2.4: Váš první mod.
Předchozí: Kapitola 8.4: Přidání chatových příkazů | Domů
