Jump to content

sphereii

Members
  • Posts

    3,069
  • Joined

  • Last visited

  • Days Won

    23

Everything posted by sphereii

  1. That isn't the expected results. Can you send me the files through discord, and I'll take a look? Are you using <append> or <insertBefore> and <insertAfter> ? - - - Updated - - - The testing version of SDX has removed the ability to merge the xpath, but it kept the ability to apply localization. If your SDX mod folder is like this: JaxTeller718/Config/ JaxTeller718/Scripts/ JaxTeller718/Text/ JaxTeller718/Resources/ It will copy the Config and Resource scripts over into the Game's Mods/JaxTeller718/ as-is, build and apply the scripts, and do the localization merge. It's definitely not ideal, and I believe there's plans to include native support for localization, but we just aren't there yet.
  2. I'm sorry, but there's no tool yet that will generate an xpath file. There are online generators that you can use to help build your xpath. I haven't linked to them yet, since they sometimes do strange things, like using index values.
  3. Not at this point. Maybe layer in A17 or possibly in A18.
  4. It's alphabetical Changes start from the top and end with the last mod in the folder.
  5. You have two options: 1) Update steam to use the latest_experimental ( Right click on 7 Days to Die, click on the Beta tab, then select latest_experimental. ) or 2) Go to The Fun Pimps in the Mod Launcher, select latest_experimental, then select "Download From Steam".
  6. At the top level of your game folder (C:\Program Files (x86)\Steam\steamapps\common\7 Days To Die), make a Mods folder. Then, under that, make a folder for each of the mods you want to make. C:\Program Files (x86)\Steam\steamapps\common\7 Days To Die\Mods\BloodMoonTrickle C:\Program Files (x86)\Steam\steamapps\common\7 Days To Die\Mods\Zicky\ Under your Zicky folder, you should have this: Config/entityclasses.xml ( if you want to make a change to the entityclasses.xml file ) ModInfo.xml The game will look in the Mods folder for mods automatically; As long as it has a ModInfo.xml, it'll try to load it.
  7. Nice to see you again. "A17" doesn't so much exist yet. However, it's available under the latest_experimental build under The Fun Pimp category. That will grab A17e. None of the other mods listed will change until A17 goes stable
  8. <append xpath="/bankAccounts/Account[@name='Gamida']/@balance">+$10</append>
  9. Looking forward to seeing your work Let us know if you have any issues with generating your xpath.
  10. Simplest Example: Mods/Buggi/Config/items.xml: <configs> <!-- this will insert new stuff under the <property name="Magazine_items" value="9mmBullet" /> <insertAfter xpath="/items/item/property[@class='Action0']/property[@name='Magazine_items'][@value='9mmBullet']> <...my new stuff....> </insertAfter> <!-- this will change the value of the CreativeMode to false, rather than the default none --> <set xpath="/items/item[@name='clubMaster']/property[@name='CreativeMode']/@value">False</set> </configs> The <configs> tags aren't really used at all; they are just there to make a valid XML file, which needs a root node. This is just as valid: <buggi> <insertAfter xpath="/items/item/property[@class='Action0']/property[@name='Magazine_items'][@value='9mmBullet']> <...my new stuff....> </insertAfter> </buggi> Does this help clear things up?
  11. You'd probably want to use <insertAfter>, rather than append. <insertAfter xpath="/items/item/property[@class='Action0']/property[@name='Magazine_items'][@value='9mmBullet']> <...my new stuff....> </insertAfter>
  12. yes, the first one is correct. I'll update the post. It appends as a string, so it doesn't know any context on what it's changing.
  13. Thank you. It's chilly here too, with a winter storm rolling in tomorrow morning. If you are coming, I'd plan on arriving tonight. We have tostitos.
  14. Probably something like this: <remove xpath="/blocks/block[@name='woodFrameWedge']/property[@name='MaxDamage']" /> <append xpath="/blocks/block[@name='woodFrameWedge']"> <property name="MaxDamage" value="75" > </append> If you aren't appending specifically to a value, but rather an entirely new line, it'll be the slightly longer format.
  15. A quick and easy solution to the issue is to use two xpath commands: <remove xpath="//property" /> <append xpath="//property/@value>50</append> The remove should fail silently if its not there, and remove if it its there. the append would put it back.
  16. I don't believe SDX had something like that. It'd be worth trying it out when we get the experimental release and see what actually works and doesn't.
  17. If I had access to it, I doubt I'd be here I'd be in-game
  18. It's a good thing its not up for re-election! But the term modlet is just used to separate these from what we've been calling mods. Modlet - Small standalone mod that is re-distributed and works with others Mod - Some sort of overhaul, like Ravenhearst, Valmod, Starvation, etc. Ideally, we'd get to a point where we'd call modlets as mods, and what we currently call mods as overhauls, or something to that effect.
  19. I'd be interested to see if those style syntaxes will work for us, and in which context. - - - Updated - - - Definitely exciting times coming up.
  20. Blob of information is now done. Thank you for your patience. Please feel free to post any questions, clarifications or what have you here. This isn't a final tutorial, but more of a rough dump to get people started and slightly up to speed.
  21. Modlet Example ========== Here's an example on what a Modlet would look like. It's a very simple one, but just shows how a single model can change how horde night plays out. [ Guppycur's Blood Moon ] Guppycur made some tweaks to the gamestages.xml when Alpha 16 first came out. During a horde night, if you reached the 4th wave, you'd only get a trickle of zombies until the blood moon was over. Often times, this meant that a single zombie would spawn in for you to kill. Once that was done, another one would spawn in. This was somewhat tedious for experienced players. Guppycur's mod changed the trickle value to be spawning 50 zombies, instead of a single one. The original mod was a complete copy of the gamestages.xml. If someone had already modified their gamestages.xml, and wanted to include his changes, they would have had to manually merge, and update their XML with his changes. XPath Modlet for Guppycur's Blood Moon The following files would be copied into the game folder: Mods/BloodMoonTrickle/Config/gamestages.xml Mods/BloodMoonTrickle/ModInfo.xml Contents of the gamestages.xml: <configs> <!-- Updates the Game stages, under the BloodMoonHorde, to change the maxAlive to 50 for all nodes --> <!-- By default, it only looks at the the game stages that have a 4 element into it, so it doesn't kick in until gamestage 23 --> <set xpath="/gamestages/spawner[@name='BloodMoonHorde']/*/spawn[4]/@maxAlive">50</set> </configs> The xpath command is a set, meaning it's changing an existing value. Let's read it out: Under the <gamestages> node, look for the <spawner> code that's called "BloodMoonHode". The /*/ is a wild card match. You'll also notice that spawn[4] is different than anything else we covered. What is that reference? In some rare cases, we may not be able to write a properly formed xpath that targets the line we want. If the xpath is too general, it may make more changes than we intend. When that happens, we can fall back to using an index. In this case, we want to change the 4th spawn line. Here is vanilla's gamestage 64 entry: <gamestage stage="64"> <spawn group="feralHordeStageGS54" num="21" maxAlive="8" duration="2" interval="38" /> <spawn group="feralHordeStageGS59" num="21" maxAlive="8" duration="2" /> <spawn group="feralHordeStageGS64" num="21" maxAlive="8" duration="2" /> <spawn group="ZombiesNight" num="65" maxAlive="1" /> </gamestage> The spawn[4] references the 4th line, the ZombiesNight group. The reason I had to use the index value was because I did not want to change all the maxAlive's in the spawn group, only the 4th one. Earlier gamestages do not have a 4th line, so the change did not affect them. This gave the players more breathing room if their game stage was smaller. Localization Support ( A18 and Beyond ) As of A18, Localization support from the Mods folder is available in vanilla. In the Config folder, create a Localization.txt and a Localization - Quest.txt. This file must match case and spelling of the vanilla entries. The localization files files have a heading, like the vanilla version, as a comma delimited line. For mod localization support, you only need to specify the heading that you are adding. For example, if your mod only contains localization for English, you do not need to specify the other language in the heading line. If your new localization key matches a vanilla value, or a value from a previously loaded mod, then that value will be updated, with the last mod loaded having the final effect. The format of the file is this: HEADER ENTRY Example: Key,Source,Context,Changes,English myKey,UI,Item stat,New,This is my English Key Note: If you are only including non-English translation, such as French, and leave the English blank or out, then a user loading the Spanish version will get the localization key. This is because English is the fall back translation. If you specify an English, then the spanish player will see the English localization.
  22. XPath Advanced Conditionals =========================== Up until now, we've just been covering how to find xpath using direct matches (@name='toolbelt'), but xpath can provide us with more flexibility. Most of the time, you will not need these advanced conditionals, but beware they exist for some more complex things you want to try. starts-with( s1, s2 ) - Matches if s1 starts with whatever word you put in s2. In this example, @name is s1, and 'zombieTemp' is s2 <set xpath="/entity_classes/entity_class[starts-with(@name, 'zombieTemp')]/property[@name='Class']/@value">EntityZombieSDX, Mods</set> ends-with( s1, s2 ) - Matches if s1 ends with whatever word you put in s2. In this example, @name is s1, and 'lateMale' is s2 NOTE: ends-with() is not currently supported in the version of xpath that is in the game. <set xpath="/entity_classes/entity_class[ends-with(@name, 'lateMale')]/property[@name='Class']/@value">EntityZombieSDX, Mods</set> contains( s1, s2 ) - Similar to starts-with, but s1 just needs to have some kind of match. <set xpath="/entity_classes/entity_class[contains(@name, 'Template')]/property[@name='Class']/@value">EntityZombieSDX, Mods</set> not - Flips the conditions around. <set xpath="/entity_classes/entity_class[not (contains(@name, 'zombie'))]/property[@name='Class']/@value">EntityZombieSDX, Mods</set> This would change every entity_class that does not contain the name zombie. Another example: <set xpath="/items/item[starts-with(@name, 'drinkJar') and not(contains(@name, 'Empty'))]/property[@name='Stacknumber']/@value">64</set> and - Multi conditions. We used this above in the magazine_items, but we didn't explicitly type it out. An examples mean the same thing: <set xpath="/items/item/property[@class='Action0']/property[@name='Magazine_items' and @value='9mmBullet']/@value">9mmBullet,NoAmmo</set> or - Multi conditions, but only needs to match one. In the below example, it'll only make changes if the property name is magazine_items OR if the value is a 9mm bullet. <set xpath="/items/item/property[@class='Action0']/property[@name='Magazine_items' or @value='9mmBullet']/@value">9mmBullet,NoAmmo</set>
×
×
  • Create New...