HOME
Dhlfs Increased Stacks

Seven days to die: Modding

Für Einzelspieler gab es immer die eine oder andere Möglichkeit, an den Spieleinstellungen herum zu schrauben.
Durchforscht man die Unterverzeichnisse einiger Spiele dann findet man oft Konfigurationsdateien, in denen offensichtliche Sätze wie: player_start_money=5000 CR oder ähnlich stehen.
Allerdings.. am Beispiel von Bethesdas Skyrim(wo alle Spieldaten "verschlüsselt" in BSA Archiven versteckt sind) kommt man nicht ohne weitere Hilfsmittel(BSA-Extraktor, etc.) daran.

7 Days to die geht hier einen Zwischenweg, einiges ist "hard-codiert" und lässt sich nur durch Austausch von Programmdateien ändern.
Viele Sachen die man modden kann wurden aber netterweise ausgelagert in diese schrecklichen XML-Dateien.
Man könnte die Dinger als.. Mittler zwischen Mensch und Maschine ansehen, auch wenn der Vergleich seehr weit hergeholt ist.

XML Dateien sind seeehr pingelig, was die Schreibweise angeht. Ein vergessenes Zeichen und nichts klappt mehr. Besonders fies ist die unterschiedliche Behandlung von Groß-/Kleinschrift. "Geld" ist nicht dasselbe wie "geld" und wird als Fehler angesehen.
Ebenso störend: auch innerhalb von Kommentaren werden "Befehle" erkannt.. obwohl das ein KOMMENTAR ist! Falls.. Minuszeichen verstärkt genutzt werden, scheinen für die Kommentareinleitung fest belegt zu sein..

Daher empfehle ich DRINGEND keinen einfachen Texteditor zu verwenden sondern irgendwas was auch den Syntax von XML beherrscht und gleichzeitig den ganzen Text durchwühlt.
Gute Erfahrungen habe ich mit bluefish gemacht, das eigentlich von mir für die Erstellung von Web-Siten genutzt wird..


Änderungen an XML Dateien(egal ob Server oder Clientseitig) werden in Multiplayer Spielen ignoriert! Es werden immer die originalen Einstellungen geladen!
Man kann diese originalen Einstellungen "überschreiben" indem man gewünschte Änderungen in das Unterverzeichnis /Mods/ auf dem Server hinterlegt und den Server dann neustartet.

Das Problem besteht in der ungewöhnlichen Art und Weise(im Vergleich zu "früher") wie diese Einträge auszusehen haben. Einer meiner Lehrer faselte immer was von "Transferdenken!". Genau das braucht man hier..

Modding Einführung


Übersicht über einige der ORIGINALEN Konfigurationsdateien zu finden unter /7d2d/Data/Config/:
DateiZweckBeispiel
blocks.xmlAlle Blöcke die in der Welt platziert werden können wie z.B. Tische, Holzblöcke,
item_modifiers.xmlDie Farbdefinitionen(Färbemittel) finden sich hier
loot.xmlInhalt von Behältern(was und mit welcher Wahrscheinlichkeit)
recipes.xmlNicht nur Kochrezepte, auch was z.B. zum Bau eines Tores gebraucht wird
worldglobal.xmlJe nach Biom: Wahrscheinlichkeit wie oft z.B. Birdsnest auftauchen oder MINEN..

Es gibt Anleitungen im Internet. Wenn man die mal findet..
Eine recht gute Anlaufstelle war mal 7daystodie.com bis zu jenem unglücklichen Tag, an dem Jemand entschied es wäre eine tolle Idee die Forenlinks zu ändern. Viele Links bei Tante Google zeigen nunmehr auf nicht mehr existierende Seiten. Toll gemacht "Jemand"!!
Keine Ahnung, wie lange der angegebene Link gültig bleibt.. aber dort bekommt man Einiges an Informationen.

Recht spät bin ich auf den Entwicklerlink im Forum gestoßen wo auch die Herangehensweise an XPATH erläutert wird.
Grundlegend muss man zuerst das Mods-Verzeichnis finden, bzw. das Verzeichnis selber einmal auf dem Server erstellen:
Da die Pfade je nach Betriebssystem anders aussehen, hier nur der Tipp: Das Mods-Verzeichnis gehört in das Verzeichnis, wo auch die serverconfig.xml liegt.

DTM? API? Mods? Modlets? Overhaul? Packs? What?

API Servermanager, die die API nutzen. Weiß ich nicht, will ich nicht.
DTM Irgendwas das mit einem "DMT-Tool" erstellt wurde, k.A. was das ist und interessiert mich auch nicht.
Overhaul Nach meinen Erfahrungen ist es NICHT möglich, die Dateien einfach mal zu überschreiben, aber das hier soll das angeblich tun.
Modlet Das ist quasi der geringstmögliche Eingriff in das Spiel. Eben durch(genau DEFINIERTE!) Änderungen an den XML-Dateien im Mod Verzeichnis.
Pack Eine "fertige" Sammlung von Modlets die gut zusammen arbeiten sollten


Bei jedem Update werden einige Mods fehlerhaft sein. Am schlimmsten trifft es wohl die Mods, die Programmdateien(*.dll, etc.) austauschen. Deshalb verwende ich solche Mods nicht auf dem Server.
Meiner Meinung nach sollte man nicht das "Tollste/Bunteste/Megageile-Whatever"-Erlebnis auf den Server zaubern, sondern sich auf die Stabilität konzentrieren.
Damit meine ich, das man zwar viele aber dafür nur kleine Veränderungen ins Spiel übernimmt. Sollte nach einem Update dann ein oder zwei Mod(lets) nicht mehr funktionieren.. kann man immer noch die anderen weiter benutzen.


Wie heisst dieser oder jener Block denn bloß?
Man KÖNNTE das Spiel auf englisch umstellen, was aber nicht wirklich weiterhilft denn "Industrielicht" gibt es als "IndustrialLight01" oder auch "IndustrialLight(poi)" -.-
Am einfachsten nutzt man in der Serverkonsole den "dm" Befehl und drückt dann F3.
Wenn man sich nun den Block zentriert anschaut.. sieht man den richtigen Namen links unter "Focused Block": Name: industrialLight01

Somit dürfte klar sein, welche Art von Mods ich hier anwende: Die "Modlets".
Vorteil: Je nach Laune kann ich die gefahrlos entfernen oder hinzufügen. Ein kurze Liste der von mir verbastelten Modlets:
DHLF's Increased Stacks
Die Stapelgröße aller Gegenstände wird erhöht, so das pro Gegenstand auch nur ein Feld im Inventar/Truhen belegt wird
Klar gibt es die auch "fertig" bei Nexusmods. Aber da ich nun schon zwei Account-Passwörter verloren habe.. habe ich mir lieber ein Wochenende Zeit genommen um dafür auch ALLE Items zu finden ;)
Kompatibel: Wenn entfernt behalten alle Stapel ihre Größe bis sortiert oder aufgeteilt wird.
DHLF's MaxModTiers
Alle Gegenstände(Werkzeug, Waffen, Rüstungen, KEINE Kleidung) bekommen pro Qualitätsstufe EINEN Platz für Modifikationen. Statt 1-1-2-2-3-4 also 1-2-3-4-5-6
Kompatibel: Wenn entfernt behalten bereits hergestellte Gegenstände ihre Mod-Plätze! Neu hergestellte/gefundene aus Containern haben wieder die originale Anzahl an Mod-Plätzen.
DHLF's RealisticBlockStrenght
Work-in-progress: Irreführender Titel(momentan), da es bisher NUR die Eisenstachelfallen betrifft..
Wieso sollten EISEN-Stachelfallen pro Kollision mit einem Zombieknie(Stahl-Kniescheiben-OP gehabt?) ein Drittel ihrer Haltbarkeit verlieren?
Senkt Schadenspunkte für EISEN-Stachelfallen pro Berührung von 33% auf 1%. Hm, sind vielleicht etwas ZU stabil geworden?
DHLF's RenamedItem
Ein Demo Modlet, das einen Gegenstand öh.. personalisiert. Hier wird das Knochenmesser umbenannt in Vallys Reißzahn. Mit "Hintergrundstory"
Kompatibel: Wenn entfernt erhalten alle Gegenstände ihren ursprünglichen Namen zurück.
DHLF's SolarPanelSoundChange
Schon mal das Wummern gehört, wenn sich zu Tagesbeginn die Solarpaneele aktivieren? Selbst ein Generator ist leiser im Betrieb!!
Wechselt die Sounddatei auf die leisere Variante von der Batterie-Bank
Kompatibel: Wenn entfernt wummern die Dinger wieder. Wenn man es denn mag..
DHLF's TargetBarForALL
Zeigt die Lebenspunkte für anvisierte Gegener unterhalb des Kompasses an.
Kompatibel: Wenn entfernt verschwindet die TargetBar wieder.
DHLF's EnvirontmentCleaner
Müllbeseitigung zahlt sich aus..etwas :)

Mod-Versionsnummern

An sich eine selbstverständlich Sache: Mod-Versionen sollten schon für die verwendete Spielversion passen!
Aber wie ist das doch so schön? Es gab ein Update und man möchte UNBEDINGT SOFORT weiterspielen und holt sich dann(weil man ja nicht abwarten kann!!) irgendeine veraltete Version.
Es gibt z.B. ein paar alpha18 Mods die IMMER noch funktionieren, aber es ändert sich halt mit jeder Version irgendwas..
Aus der Wasser-Dose wurde nun "Gekochtes Wasser"(im Glas) womit durch die Namensänderung viele Mods diese Eintrag nicht mehr wiederfinden können.
Im schlimmsten Fall "kackt" der Server erst nach einiger Zeit ab. Ich hatte mal versehentlich ein *illegales* Item im Inventar. Immer wenn ich auf dem Server spawnte.. "kackte" der ab. Ohne mich lief der Server weiter..

Die Idee ist.. also erst mal einen kleineren Mod herunterladen, in das Mod Verzeichnis kopieren(ggfs. vorher die *.ZIP oder *.ARJ oder was auch immer entpacken).
Sollte eine *.exe Datei(für Windows User) heruntergeladen worden sein.. vergesst die! Löschen und von der Seite nie wieder etwas herunterladen!!
KEINE *.exe Dateien von irgendwelchen Seiten laden und ausführen(sonst: selber doof!).
Einzige Ausnahme wäre wohl die JAR von der originalen Minecraftseite :D

Modletbeispiel 1 - Stapelanzahl ändern


Einige Objekte "fallen zusammen" wenn man das Inventar sortiert.
Beispiel: Der Stapelwert für Farben(Färbemittelfläschchen) MUSS auf 1 bleiben!
Erhöht man den Stapelwert z.B. auf 10 und hatte vorher 9 blaue Farben(einzeln) wird man nach Sortierung des Inventars nur noch EINE blaue Farbe übrig haben!

Alle Gegenstände finden sich in der Datei ~/7d2d/Data/Config/items.xml
Diese.. ausufernde Datei hatte zum Zeitpunkt dieses Geschreibsels 20379 Zeilen bei einer Größe von 1.206.373 Bytes. Viel Spaß beim Lesen!!
Man sucht jetzt nach FoodRottingFlesh und findet hoffentlich:

<item name="foodRottingFlesh"> <property name="Tags" value="food"/> <property name="HoldType" value="31"/> <property name="DisplayType" value="foodRaw"/> <property name="Meshfile" value="#Other/Items?Misc/parcelPrefab.prefab"/> <property name="DropMeshfile" value="#Other/Items?Misc/sack_droppedPrefab.prefab"/> <property name="Material" value="MfoodRawMeat"/> <property name="Stacknumber" value="125"/> <!-- STK food --> <property name="EconomicValue" value="5"/> <property name="EconomicBundleSize" value="1"/> <property name="SellableToTrader" val ue="false"/> <property class="Action0"> <property name="Class" value="Eat"/> <property name="Delay" value="1.0"/> <property name="Use_time" value="..."/> <property name="Sound_start" value="player_eating"/> </property> <property name="CraftingIngredientTime" value="95"/> <property name="Group" value="Food/Cooking,CFFood/Cooking"/> <effect_group tiered="false" name="Food Tier 0"> <triggered_effect trigger="onSelfPrimaryActionEnd" action="ModifyCVar" cvar="$foodAmountAdd" operation="add" value="1"/> <triggered_effect trigger="onSelfPrimaryActionEnd" action="ModifyStats" stat="Health" operation="add" value="-3"/><display_value name="foodHealthAmount" value="-3"/> <triggered_effect trigger="onSelfPrimaryActionEnd" action="ModifyCVar" cvar=".foodStaminaBonusAdd" operation="add" value="-1"/> <triggered_effect trigger="onSelfPrimaryActionEnd" action="AddBuff" buff="buffProcessConsumables"/> <triggered_effect trigger="onSelfPrimaryActionEnd" action="ModifyCVar" cvar=".DiseaseRoll" operation="set" value="15"/><display_value name="dDysenteryRisk" value=".12"/> <triggered_effect trigger="onSelfPrimaryActionEnd" action="ModifyCVar" cvar=".DiseaseRoll" operation="add" value="@$MetabolismResist"/> <triggered_effect trigger="onSelfPrimaryActionEnd" action="AddBuff" buff="buffDysenteryCatchFood"> <requirement name="RandomRoll" seed_type="Random" min_max="1,100" operation="LTE" value="@.DiseaseRoll"/> </triggered_effect> </effect_group> </item>

Unter property name="Stacknumber" steht der Wert 125, also die Größe eines Stapels vergammelten Fleisches.
Den Eintrag unter /Mods/beliebigerOrdnername/Config/items.xml vornehmen um die Stapelanzahl des vergammelten Fleisches auf 250 zu erhöhen:

<configs> <set xpath="/items/item[@name='foodRottingFlesh'] /property[@name='Stacknumber']/@value">250</set> <!-- Default 125 --> </configs>

Tragbare "Blöcke" wie Stühle findet man aber in der Datei ~/7d2d/Data/Config/blocks.xml
Hier müsste man nach woodChair1 suchen:

<block name="woodChair1"> <property name="Extends" value="woodWeakNoUpgradeMaster" param1="DescriptionKey"/> <property name="Texture" value="22"/> <property name="Stacknumber" value="10"/> <property name="MaxDamage" value="50"/> <property name="Weight" value="23"/> <property name="Shape" value="New"/> <property name="Path" value="solid"/> <property name="Model" value="chair"/> <property name="StabilitySupport" value="false"/> <property name="UseGlobalUV" value="Local"/> <property name="AllowAllRotations" value="true"/> <property name="Place" value="TowardsPlacerInverted"/> <property name="ImposterDontBlock" value="true"/> <property name="IsTerrainDecoration" value="true"/> <property name="Collide" value="movement,melee,bullet,arrow,rocket"/> <property name="DescriptionKey" value="furnitureGroupDesc"/> <property name="CanPickup" value="true"/> <property name="FilterTags" value="fdecor,fother,ffurniture"/> <property name="Group" value="Decor/Miscellaneous"/> <drop event="Fall" count="0" prob="0"/> </block>

Den Eintrag unter /Mods/beliebigerOrdnername/Config/blocks.xml vornehmen um die Stapelanzahl der Holzstühle auf 50 zu erhöhen:

<configs> <set xpath="/blocks/block[@name='woodChair1'] /property[@name='Stacknumber']/@value">50</set> <!-- Default 10 --> </configs>

Obwohl dies eine ERWEITERUNG von woodWeakNoUpgradeMaster ist, solange für woodChair1 ein Eintrag "Stacknumber" existiert kann man den ändern.

Modletbeispiel 2 -Eigenschaften eines Gegenstandes ändern

Aus diesem folgenden Gewusel muss man sich die passenden Werte heraus suchen..

<item name="meleeToolRepairT0StoneAxe"> <property name="Tags" value="axe,melee,light,tool,longShaft,attStrength,perkMiner69r,perkMotherLode,perkTheHuntsman,canHaveCosmetic"/> <property name="DisplayType" value="meleeRepairTool"/> <property name="HoldType" value="32"/> <property name="Meshfile" value="#Other/Items?Weapons/Melee/Axe/stone_axePrefab.prefab"/> <property name="Material" value="Mstone"/> <property name="RepairTools" value="resourceRockSmall"/> <property name="EconomicValue" value="175"/> <property name="EconomicBundleSize" value="1"/> <property name="SellableToTrader" value="false"/> <property name="DegradationBreaksAfter" value="false"/> <property name="SoundJammed" value="ItemNeedsRepair"/> <property name="SoundDestroy" value="wooddestroy1"/> <property name="FuelValue" value="50"/> <property name="ShowQuality" value="true"/> <!-- <property name="UnlockedBy" value="perkMiner69r"/> --> <property class="Action0"> <property name="Class" value="DynamicMelee"/> <property name="Sphere" value=".1"/> <property name="Sound_start" value="swoosh"/> <property name="ToolCategory.Butcher" value="0" param1="4"/><!-- damage vs entity corpses --> <property name="GrazeStart" value=".15"/> <property name="GrazeEnd" value=".3"/> <property name="SwingDegrees" value="45"/> <property name="SwingAngle" value="135"/> <property name="UseGrazingHits" value="true"/> <property class="HitSounds"> <property name="Override0" value="organic" param1="stonehitorganic"/> </property> <property class="GrazeSounds"> <property name="Override0" value="organic" param1="metalgrazeorganic"/> </property> </property> <property class="Action1"> <!-- UseAction --> <property name="Class" value="Repair"/> <property name="Delay" value=".64"/> <!-- Repair actions still need the delay amount --> <property name="Repair_amount" value="100"/> <property name="Upgrade_hit_offset" value="-1"/> <property name="Sound_start" value="repair_block"/> <property name="Allowed_upgrade_items" value="resourceWood,resourceClayLump,resourceSnowBall,resourceScrapIron,resourceForgedIron,resourceForgedSteel,resourceConcreteMix,resourceCobblestones,ironDoor1_v1,vaultDoor01,scrapHatch_v1,vaultHatch_v1,resourceYuccaFibers,resourceCloth,resourceScrapPolymers"/> <property name="UsePowerAttackAnimation" value="false"/> </property> <effect_group name="meleeToolRepairT0StoneAxe"> <passive_effect name="EntityDamage" operation="base_set" value="6" tags="perkMiner69r"/> <passive_effect name="BlockDamage" operation="base_set" value="21.5" tags="perkMiner69r"/> <passive_effect name="AttacksPerMinute" operation="base_set" value="105" tags="perkMiner69r,axe"/> <passive_effect name="StaminaLoss" operation="base_set" value="8" tags="primary"/> <passive_effect name="DegradationMax" operation="base_set" value="112,300" tier="1,6" tags="perkMiner69r"/> <passive_effect name="DegradationPerUse" operation="base_set" value="1" tags="perkMiner69r"/> <passive_effect name="MaxRange" operation="base_set" value="2.4" tags="perkMiner69r"/> <passive_effect name="BlockRange" operation="base_set" value="3" tags="perkMiner69r"/> <passive_effect name="ModSlots" operation="base_set" value="1,1,2,2,3,4" tier="1,2,3,4,5,6"/> <passive_effect name="ModPowerBonus" operation="perc_add" value=".10" tags="EntityDamage,BlockDamage"/> <passive_effect name="ModPowerBonus" operation="base_add" value="300" tags="EconomicValue"/> <passive_effect name="EntityDamage" operation="perc_add" value=".1,.5" tier="2,6" tags="perkMiner69r"/> <!-- tier bonus --> <passive_effect name="BlockDamage" operation="perc_add" value=".1,.5" tier="2,6" tags="perkMiner69r"/> <!-- tier bonus --> <display_value name="dBlockRepairAmount" value="100"/> <passive_effect name="HarvestCount" operation="base_set" value=".7" tags="butcherHarvest"/> <passive_effect name="DamageModifier" operation="perc_add" value="-.85" tags="earth"/> <passive_effect name="DamageModifier" operation="perc_add" value="-.33" tags="stone"/> <passive_effect name="DamageModifier" operation="perc_add" value="-.5" tags="metal"/> <passive_effect name="DamageModifier" operation="base_set" value="1" tags="head,perkMiner69r" match_all_tags="true"/> <passive_effect name="DismemberChance" operation="base_set" value=".05" tags="perkMiner69r"/> </effect_group> <property name="Group" value="Tools/Traps,Basics"/> <property name="RepairExpMultiplier" value="5.5"/> </item>

Den Eintrag unter /Mods/beliebigerOrdnername/Config/items.xml vornehmen um den Reparaturwert und die Upgradeleistung zu verdoppeln:

<configs> <!-- changing StoneAxe repair/upgrade values --> <set xpath="/items/item[@name='meleeToolRepairT0StoneAxe'] /property/property[@name='Repair_amount']/@value">200</set> <!-- Default 100 --> <set xpath="/items/item[@name='meleeToolRepairT0StoneAxe'] /property/property[@name='Upgrade_hit_offset']/@value">-2</set> <!-- Default -1 (3 hits necessary to upgrade) --> </configs>

Modletbeispiel 3 Sound ändern

Ich möchte den Ton der Solaranlage abschalten. Mag realistisch sein, das die Spannungswandler wie blöde wummern.. aber als Alternative bleibt nur einen Turm aufs Haus zu setzen, damit das Gewummere möglichst weit weg ist.
Die Soundzuweisungen(für "Blöcke") finden sich in der Datei ~/7d2d/Data/Config/sounds.xml:

<!-- Solar Panel --> <SoundDataNode name="solarpanel_on"> <AudioSource name="Sounds/AudioSource_Interact"/> <Noise ID="1" noise="7" time="3" muffled_when_crouched="0.5"/> <AudioClip ClipName="Sounds/Electricity/SolarPanel/solarpanel_on"/> <LocalCrouchVolumeScale value="1.0"/> <CrouchNoiseScale value="0.5"/> <NoiseScale value="1"/> <MaxVoices value="10"/> <MaxRepeatRate value="0.01"/> </SoundDataNode> <SoundDataNode name="solarpanel_idle"> <AudioSource name="Sounds/AudioSource_Interact"/> <AudioClip ClipName="Sounds/Electricity/SolarPanel/solarpanel_idle_lp" Loop="true"/> <LocalCrouchVolumeScale value="1.0"/> <CrouchNoiseScale value="0.5"/> <NoiseScale value="1"/> <MaxVoices value="18"/> <MaxRepeatRate value="0.001"/> </SoundDataNode> <SoundDataNode name="solarpanel_off"> <AudioSource name="Sounds/AudioSource_Interact"/> <Noise ID="1" noise="7" time="3" muffled_when_crouched="0.5"/> <AudioClip ClipName="Sounds/Electricity/SolarPanel/solarpanel_off"/> <LocalCrouchVolumeScale value="1.0"/> <CrouchNoiseScale value="0.5"/> <NoiseScale value="1"/> <MaxVoices value="10"/> <MaxRepeatRate value="0.01"/> </SoundDataNode>

Es gibt also drei Sound "Ereignisse": Einschalten, Betrieb und das Abschalten. Wenn man den Loop auf "false" setzt sollte es dann nur einmal bei Tagesanbruch ein kurzes Wummern geben?
Leider klappt das nicht wirklich, irgendetwas scheint die Funktion während des Spielens wieder auf "true" zu setzen(NEIN, es hing NICHT mit dem Sonnenaufgang um 4:00 zusammen!).
Besser läuft es indem man die Sounddatei umbiegt(selbst der Stromgenerator ist LEISER als die "Ladeelektronik" des Solarpanels!!), z.B. auf die Batterie-Bank:

<configs> <set xpath="/Sounds/SoundDataNode[@name='solarpanel_idle'] /AudioClip/@ClipName">Sounds/Electricity/BatteryBank/batterybank_idle_lp</set> <!-- Dunno, with no filename: error exceptions --> <set xpath="/Sounds/SoundDataNode[@name='solarpanel_idle'] /AudioClip/@Loop">false</set> <!-- Default true --> </configs>

Es gibt eine Besonderheit zu beachten: Im Gegensatz zu anderen *.xml Dateien wird hier der erste Parameter von xpath(hier Sounds) großgeschrieben. Die Datei sounds.xml ist kleingeschrieben, aber zu Beginn wird das "Tag" Sounds eingefügt.

Modletbeispiel 4: Abbaubare Lampen..

Man hat nach stundenlangem Spiel endlich eine Stromquelle und auch ein Drahtwerkzeug. Aber keine einzige Lampe?!! Warum nicht einfach vorhandene abbauen?
Beispiel "industriallight" findet sich in der Datei ~/7d2d/Data/Config/blocks.xml:

<block name="industrialLight01"> <property name="Class" value="Light"/> <property name="CreativeMode" value="Dev"/> <property name="IndexName" value="POILight"/> <property name="DescriptionKey" value="lightPOIGroupDesc"/> <property name="Group" value="Science"/> <property name="Material" value="Mmetal_thin"/> <property name="StabilitySupport" value="false"/> <!-- build restriction --> <property name="Shape" value="ModelEntity"/> <property name="ImposterDontBlock" value="true"/> <property name="Light" value="0.5"/> <property name="Collide" value="melee,bullet,arrow,rocket"/> <property name="Model" value="Entities/Lighting/industrialLight01Prefab"/> <property name="HandleFace" value="South"/> <property class="RepairItems"> <property name="resourceForgedIron" value="1"/> <property name="resourceElectricParts" value="3"/> <property name="resourceElectricParts" value="2"/> </property> <drop event="Harvest" name="terrStone" count="0" tool_category="Disassemble"/> <drop event="Harvest" name="resourceElectricParts" count="2,6" tag="salvageHarvest"/> <!-- HV: mounted fluorescent lamp --> <drop event="Harvest" name="resourceScrapPolymers" count="1,2" tag="salvageHarvest"/> <drop event="Destroy" name="resourceScrapIron" count="5"/> <drop event="Fall" name="scrapMetalPile" count="1" prob="0.75" stick_chance="1"/> <property name="TakeDelay" value="-1"/> <property name="EconomicValue" value="175"/> <property name="FilterTags" value="MC_building,SC_lighting"/> <property name="SortOrder1" value="70a0"/> </block>

Jetzt gibt es nur ein WINZIGES Problem:
Testet man in der Serverconsole giveself industrialLight01 fällt einem einen Sack mit dem industrialLight01 (poi) vor die Füße, das FALSCHE Licht!
Nach langer Suche findet man heraus das die vom Spieler(später) herstellbare Industrielichter als industrialLight01_player benannt werden. Verwirrend!
Beweis: giveself industrialLight01_player schmeißt einen Sack mit dem richtigen "Industrielicht" vor die Füße..

Den Eintrag unter /Mods/beliebigerOrdnername/Config/blocks.xml vornehmen um das IndustrieLicht01 abbauen zu können:

<configs> <!-- Industrielichter(POI) können abgebaut werden(und verwandeln sich in industrialLight01_player als wären die vom Spieler hergestellt worden --> <append xpath="/blocks/block[@name='industrialLight01']"> <drop event="Harvest" name="industrialLight01_player" count="1" prob=".5" tag="salvageHarvest"/> </append> <!-- industrialLight01_player(vom Spieler gesetzte Industrielichter) können ausserhalb von Gebietsschutzbereichen abgebaut werden --> <append xpath="/blocks/block[@name='industrialLight01_player']"> <drop event="Harvest" name="industrialLight01_player" count="1" prob=".7" tag="salvageHarvest"/> </append> <!-- Aufnahmeverzögerung(eigenes Gebiet) des MASTERS von industrialLight01 von 5 Sekunden auf nur 1 Sekunde.. --> <set xpath="/blocks/block[@name='ceilingLight01_player'] /property[@name='TakeDelay']/@value">1</set> <!-- Default 05 (MASTER) --> </configs>

Weiter Kandidaten zu Abbauen in der Welt:
ceilingLight01 (POI!) benannt als Einfache Glühbirne, sollte als ceilingLight01_player droppen!
lanternDecorLight genannt Laterne lanternLight_Player , Besonderheit: kann überall wiederaufgehoben werden(player Variante).
wallLight01-NO playerversion.
spotlightNailedDownPOI
cntCollapsedChemistryStation = Plan für Chemiestation?
cntCollapsedGeneratorbank soll beim Abbauen zu generatorbank werden(Generator)
Drop envent beschreibt was bei welcher Aktion "abfällt".
1.) Für "Abbau"(Harvest) benötigt man ein ABBAUWERKZEUG wie Schraubzwinge/Schlagschrauber und nutzt die erste Aktion(linke Maustaste)
2.) Für "Zerstörung"(Destroy) wird die zweite Aktion verwendet(rechte Maustaste).

<drop event="Harvest" name="terrStone" count="0" tool_category="Disassemble"/> <drop event="Harvest" name="resourceElectricParts" count="1,4" tag="salvageHarvest"/> <drop event="Destroy" name="resourceScrapIron" count="5"/> <drop event="Fall" name="scrapMetalPile" count="1" prob="0.75" stick_chance="1"/> <property name="TakeDelay" value="-1"/>

Modletbeispiel 5: Türen besitzen "Stabilität"

Ein unbemerktes Problem beim Bau einer Basis: Nur Blöcke unter denen bereits andere OHNE Lücke gestapelt sind haben volle "Stabilität".
Dummerweise gelten Türen NICHT als "Stabilitätfördernd"!

Das Problem wird erst später deutlich, wenn man mehrere Stockwerke aufeinander gestapelt hat.. und plötzlich ein Teil davon einstürzt -.-
Als ADMIN kann man sich die Stabilität bunt darstellen lassen.. als einfacher Spieler leider nicht ..

Da TÜREN bekanntlich auch TÜRRAHMEN haben.. sollten die auch stabil genug sein um darüber liegende Etagen zu stützen.
Der Standartname der einfachen Holztür lautet im Englischen "secureDoorWooden", was sich in der Datei ~/7d2d/Data/Config/blocks.xml wiederfindet(Auszug):

<block name="secureDoorWooden"> <property name="Class" value="DoorSecure"/> <property name="Material" value="Mwood_regular"/> <property name="StabilitySupport" value="false"/> <property name="MaxDamage" value="250"/>

Den Eintrag unter /Mods/beliebigerOrdnername/Config/blocks.xml vornehmen um Türen eine strukturelle..Integrität zu geben:

<configs> <!-- Türen Stabilitäts-Support wird auf TRUE gesetzt, d.h. sie gelten als stabiler Block --> <!-- keep wooden and metal block as intended by the devs.. just the iron and vault doors gets stability.. <set xpath="/blocks/block[@name='secureDoorWooden'] /property[@name='StabilitySupport']/@value">true</set> <set xpath="/blocks/block[@name='secureReinforcedDoorWooden'] /property[@name='StabilitySupport']/@value">true</set> <set xpath="/blocks/block[@name='metalReinforcedDoorWooden'] /property[@name='StabilitySupport']/@value">true</set> --> <set xpath="/blocks/block[@name='ironDoor1_v1'] /property[@name='StabilitySupport']/@value">true</set> <set xpath="/blocks/block[@name='vaultDoor01'] /property[@name='StabilitySupport']/@value">true</set> <set xpath="/blocks/block[@name='vaultDoor03'] /property[@name='StabilitySupport']/@value">true</set> </configs>


ironDoor1_v2 und ironDoor1_v3 gelten als ERWEITERUNG von ironDoor1_v1 und benötigen keine separaten Einträge..
Währendr vaultDoor02 von vaultDoor01 abhängt muss vaultDoor03 separat umdefiniert werden..
denn vaultDoor03_powered hingegen hängt direkt von vaultDoor03..

Modletbeispiel 6

Ab Version a21 kann man die BatteryBanks nur als zufällige (höhere) Questbelohnung erhalten, bzw. man findet das Ding irgendwo und kann es via einen meiner Abbaumods.. abbauen.
Stundenlanges Durchspielen hat mir aber NIRGENDWO so ein Ding offenbart.. also werde ich versuchen mittels Modlet die nötige Fähigkeitsstufe etwas herabzusetzen..
Es ist von den Designern vorgesehen das man verdammte 75 Bücher "Wiring 101" sammeln und auch lesen muss bevor dieses unglaublich "hochwertige" Stück Technik vom Spieler verstanden wird -.-

Jeder Volldepp müsste so einen Kasten mit Platz für Autobatterien zusammenschustern können.. Okay, die Verkabelung wird den einen oder anderen Spieler vor kleine Probleme stellen..
Aber im Ernst.. einen VERDAMMTEN Generator kann man schon für 25 dieser Bücher basteln? Ernsthaft?!!

Lösungsweg:
Die BatteryBank findet man erwartungsgemäß unter /Data/config/blocks.xml aber nirgends ist der nötige Bücherwert(75) zu finden -.-
Einzige(vermutete) Angriffstellen sind:
-TraderStageTemplate, das wahrscheinlich angibt in welchem "Vertrauensverhältnis/Level" man beim Händler diese Waren käuflich erwerben kann..
-UnlockedBy craftingElectrician

Nach längerer Suche findet sich unter /Data/config/progression.xml tatsächlich der gesuchte Eintrag:
icon="batterybank" name_key="electricianT4" has_quality="false" unlock_level="75" Leider hängen hier auch alle anderen Level 75 Baupläne mit dran..

Zwei Möglichkeiten:
Korrekte Vorgehensweise:
In /Data/config/blocks.xml die Zeile mit "-UnlockedBy craftingElectrician" VIA MODLET!! zu entfernen(damit ist das Ding von Beginn an.. baubar)
UND man müsste natürlich auch in /Data/config/progression.xml display entry auf vaultDoor01_Powered setzen UND ebenso in unlock_entry die batterybank entfernen.
Allereinfachste Vorgehensweise:
In /Data/config/blocks.xml das TraderStageTemplate abändern von Tier2 nach electricTier0 (wenn das existiert!)


Diese Einträge in den ORIGINAL Dateien zu ändern bringt NICHTS.. diese Änderungen müssen in den MODLETS definiert werden!!

Diverses..

Unter /7d2d/Data/Config/XUi/windows.xml liegen Einstellungen(die Art der Darstellung) für das Benutzerinterface:
Variablen werden mit geschweiften Klammern markiert:
{daycolor} färbt den nachfolgenden Text ROT, wenn es ein BLOODMOON Tag wird(ab ca. 5:00?)
{day|always} der aktuellen Tag, always als Zusatz, das es IMMER(ständig?) aktuell gehalten wird?
{maptemperature} die örtliche Temperatur
{mapwind} die aktuelle Windgeschwindigkeit
{mapelevation} die aktuelle Höhe
{time|always} die aktuelle Zeit

Interessant auch Folgendes:

<configs> <!-- Beim Abbau zerstörter Chemiestationen fällt eine Chemiestation ab (ca. 30%) --> <append xpath="/blocks/block[@name='cntCollapsedChemistryStation']"> <drop event="Harvest" name="drinkJarPureMineralWater" count="2" prob="1" tool_category="Disassemle" tag="salvageHarvest"/> <drop event="Harvest" name="chemistryStation" count="1" prob="1" tag="allHarvest"/> <drop event="Destroy" name="chemistryStation" count="4" prob="1" tag="allHarvest"/> </append> </configs>

BezeichnungBeschreibung
drop eventHarvest|Destroy ersteres ist wiederholbar, letzteres erscheint beim kompletten ABBAU/Zerstörung
tool categoryDisassemble NUR wenn mit Abbauwerkzeug gearbeitet wird erhält man das..
nameName des Objekts das erhalten werden kann
countAnzahl, kann ein fester Wert(1) oder auch eine Folge (1,4) sein
probWahrscheinlichkeit in Prozent, 1=100%, 0.5=50%
tagsalvageHarvest|allHarvest


Mit diesen "Modlet" passiert bei(zerstörten) Chemiestationen Folgendes:
Egal ob mit Angriff(Axt) oder Spannzange(linke oder! rechte Maustaste):
Neben den *üblichen* Rohstoffen(und der EINEN Wasserflasche) fällt eine Chemiestation ab.. und dann beim ENDE nochmals 4 weitere..

So war das NICHT gewollt -.-
Da zusätzlich(im Original) die Chemiestation nicht als verkaufbar angegeben ist.. wird man die so nicht los :D

Also die Zeile Harvest(chemistryStation) entfernen und in der Zeile mit Destroy den count auf 1 setzen..und noch die tool_category einfügen, damit das NUR mit Abbauwerkzeugen erhalten wird..

Diese Seite wurde zuletzt am 09.07.2023 um 23:38 geändert.

(c) 2024 DHLF ☮🇺🇦