Ä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..
Datei | Zweck | Beispiel |
---|---|---|
blocks.xml | Alle Blöcke die in der Welt platziert werden können wie z.B. Tische, Holzblöcke, | |
item_modifiers.xml | Die Farbdefinitionen(Färbemittel) finden sich hier | |
loot.xml | Inhalt von Behältern(was und mit welcher Wahrscheinlichkeit) | |
recipes.xml | Nicht nur Kochrezepte, auch was z.B. zum Bau eines Tores gebraucht wird | |
worldglobal.xml | Je nach Biom: Wahrscheinlichkeit wie oft z.B. Birdsnest auftauchen oder MINEN.. | |
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
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!
<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.<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<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.<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>
<!-- 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?<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.<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:<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:<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"/>
<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..
Diese Einträge in den ORIGINAL Dateien zu ändern bringt NICHTS.. diese Änderungen müssen in den MODLETS definiert werden!!
<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>
Bezeichnung | Beschreibung |
---|---|
drop event | Harvest|Destroy ersteres ist wiederholbar, letzteres erscheint beim kompletten ABBAU/Zerstörung |
tool category | Disassemble NUR wenn mit Abbauwerkzeug gearbeitet wird erhält man das.. |
name | Name des Objekts das erhalten werden kann |
count | Anzahl, kann ein fester Wert(1) oder auch eine Folge (1,4) sein |
prob | Wahrscheinlichkeit in Prozent, 1=100%, 0.5=50% |
tag | salvageHarvest|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