Coder Social home page Coder Social logo

devynspencer / zomboid-mod-tools Goto Github PK

View Code? Open in Web Editor NEW
4.0 4.0 0.0 90 KB

Development tools, configurations, templates, and build scripts for Project Zomboid mod development.

License: MIT License

PowerShell 100.00%
mod mod-development powershell project-zomboid project-zomboid-tool zomboid

zomboid-mod-tools's Introduction

๐Ÿ‘‹ Oh, Hello!

GitHub Banner

Sr. Technical Systems Administrator | Automation Goblin

I'm a jaded worn-out seasoned Technical Systems Administrator with a passion for automation, gaming, and building cool things. My work focuses on creating efficient systems, implementing cutting-edge technologies, and simplifying complex workflows. Outside of work, I'm an avid gamer and enjoy diving into both computer and tabletop games. I tend to try to automate everything I touch, for better or worse.

๐Ÿ› ๏ธ My Toolbox & Skills

  • Programming Languages & Scripting: ๐Ÿ Python, ๐Ÿš PowerShell (7+ only), Bash, ๐ŸŒ JavaScript

  • Automation & DevOps: ๐Ÿณ Docker (love me some Compose), ๐Ÿš€ Building CI/CD pipelines, ๐Ÿ˜“ spending 5h to automate 1-2 5m tasks...

  • Configuration Management: ๐Ÿช† Puppet, โ˜ ๏ธ DSC, every other one...

  • Cloud & Infrastructure: ๐ŸŒ‹ Terraform, โ˜๏ธ Google Cloud, โ›… Azure, ๐Ÿ’ฉ VMware

  • Monitoring & Security: ๐Ÿชต ELK, ๐Ÿ”ฅ Prometheus, ๐Ÿ’ธ Splunk, ๐Ÿฆ‹ Grafana

  • Databases, Caches, & Queues: ๐Ÿ˜ PostgreSQL, ๐Ÿ’ฉ MySQL, ๐Ÿƒ MongoDB, accidentally touching a hot stove...

๐Ÿ”„ Current Projects & Interests

  • ๐ŸŒ Edge Extensions: Developing Microsoft Edge extensions to automate repeat tasks and keep useful information readily-available. I do 80% of my work in a browser between work/personal/projects, and therefore want to bring as much quality-of-life to my browser environment as possible.

  • ๐Ÿ’ฌ Discord Apps & Utilities: Creating useful tools that improve user (and moderator) experience.

  • ๐Ÿ›œ Home Network: Improving the infrastructure, monitoring, and management tools in my local network. I've been deploying an unreasonable amount of services to make it easy to work, learn, and relax.

zomboid-mod-tools's People

Contributors

devynspencer avatar

Stargazers

 avatar  avatar  avatar

Watchers

 avatar  avatar

zomboid-mod-tools's Issues

Add scenario-based log parsing

Search for patterns describing specific scenarios:

  • Failed to load x (return mod name, log line number, mod file line number, and log message, and maybe surrounding context lines)

  • Missing resources

  • Code errors with mod file line number and stack trace

Add function to export a workshop mod to a Lua zip archive

Intellij IDEA requires a Lua library to be archived before it can be added as a global library. Add a function that archives a Zomboid mod at the mod root (i.e. not the Steam Workshop root several directories before), compress to a zip archive, and save to the specified global libraries directory.

Documentation on modding resources

https://pzwiki.net/wiki/Modding/File_Formats
https://pzwiki.net/wiki/Looping_Through_Tables
https://pzwiki.net/wiki/Variables_Assignments_Datatypes
https://pzwiki.net/wiki/Local_and_Global_Variables
https://github.com/MrBounty/PZ-Mod---Doc/blob/main/How%20to%20use%20global%20modData.md
https://theindiestone.com/forums/index.php?/topic/2530-mod-permissions/
https://theindiestone.com/forums/index.php?/topic/1033-lua-debugger/
https://theindiestone.com/forums/index.php?/topic/15188-item-and-recipe-script-variables-brief-description/
https://theindiestone.com/forums/index.php?/topic/54829-trapping-guide/
https://theindiestone.com/forums/index.php?/topic/51325-need-help-w-client-server-concept/
https://theindiestone.com/forums/index.php?/topic/12864-blender-3d-scripts/
https://theindiestone.com/forums/index.php?/topic/38509-decompile-after-build-4151-by-jd-gui/
https://theindiestone.com/forums/index.php?/topic/53019-details-on-the-improved-modding-tag-system-in-4169/
https://theindiestone.com/forums/index.php?/topic/35493-blender-template-for-creating-custom-pz-tiles/
https://theindiestone.com/forums/index.php?/topic/48939-how-to-get-players-username-out-of-isoplayer/
https://theindiestone.com/forums/index.php?/topic/42977-help-about-playersdb-file/
https://theindiestone.com/forums/index.php?/topic/28633-complete-vehicle-modding-tutorial/
https://theindiestone.com/forums/index.php?/topic/25760-isozoid-tool/
https://theindiestone.com/forums/index.php?/topic/45197-itemzed-mod-help/
https://theindiestone.com/forums/index.php?/topic/38505-example-4152-proceduraldistributions-distributions-vehicledistributions/
https://theindiestone.com/forums/index.php?/topic/40889-how-to-make-a-firearm-attachments-in-build-4154/
https://theindiestone.com/forums/index.php?/topic/37683-how-to-enable-debug-mode-for-project-zomboid/
https://theindiestone.com/forums/index.php?/topic/39785-everyone-where-can-i-find-the-latest-lua-methods/
https://theindiestone.com/forums/index.php?/topic/40465-trying-to-understand-proceduraldistributions/
https://theindiestone.com/forums/index.php?/topic/38119-event-list-how-to-and-current-event-list/
https://theindiestone.com/forums/index.php?/topic/38915-few-questions-about-item-spawning-system/
https://theindiestone.com/forums/index.php?/topic/33973-how-can-change-success-chance-and-potentially-repair/
https://theindiestone.com/forums/index.php?/topic/34167-any-written-tutorial-for-mod-making/
https://theindiestone.com/forums/index.php?/topic/32667-need-some-help/
https://theindiestone.com/forums/index.php?/topic/33879-creating-gunammomag-groups-for-zedmap-distribution/
https://theindiestone.com/forums/index.php?/topic/29220-how-to-save-mod-data/
https://theindiestone.com/forums/index.php?/topic/29770-any-documentation-for-context-menu-code/
https://theindiestone.com/forums/index.php?/topic/26550-how-to-change-only-1-value-not-all-item-in-by-mod/
https://theindiestone.com/forums/index.php?/topic/28623-project-zomboid-scripts-syntax-highlighting-for-notepad/
https://theindiestone.com/forums/index.php?/topic/28964-avoiding-runtime-errors/
https://theindiestone.com/forums/index.php?/topic/29220-how-to-save-mod-data/
https://theindiestone.com/forums/index.php?/topic/12394-pz-pack-file-manager/
https://theindiestone.com/forums/index.php?/topic/29770-any-documentation-for-context-menu-code/
https://theindiestone.com/forums/index.php?/topic/27895-add-a-function-to-a-toolweapon/
https://theindiestone.com/forums/index.php?/topic/27587-issues-with-generating-lots/
https://theindiestone.com/forums/index.php?/topic/26904-modding-barricade-health-causes-issues/
https://theindiestone.com/forums/index.php?/topic/4675-remove-items-spawn/
https://theindiestone.com/forums/index.php?/topic/23025-how-to-recompile-a-decompiled-class/
https://theindiestone.com/forums/index.php?/topic/26435-fortify-cars/
https://theindiestone.com/forums/index.php?/topic/23576-lua-adding-custom-user-configurable-hotkeys/
https://theindiestone.com/forums/index.php?/topic/25438-how-to-make-a-re-texture-pack/
https://theindiestone.com/forums/index.php?/topic/2011-how-to-use-the-modloader/
https://theindiestone.com/forums/index.php?/topic/23364-all-lua-functions-list/
https://theindiestone.com/forums/index.php?/topic/23525-lua-dynamically-creating-special-and-unique-items-advanced-tutorial/
https://theindiestone.com/forums/index.php?/topic/16660-full-project-zomboid-lua-reference-sheet/
https://theindiestone.com/forums/index.php?/topic/22961-want-to-get-into-weapon-modding/
https://theindiestone.com/forums/index.php?/topic/22812-lua-variables-and-function-scope-writing-efficient-lua-global-vs-local/
https://theindiestone.com/forums/index.php?/topic/22582-question-is-there-way-to-make-forageable-items/
https://theindiestone.com/forums/index.php?/topic/22012-suburbdistributions-variables/
https://theindiestone.com/forums/index.php?/topic/18084-video-tutorials-mapping-atox-warrior/
https://theindiestone.com/forums/index.php?/topic/21580-set-rarity-of-an-item/
https://theindiestone.com/forums/index.php?/topic/20486-character-build-planner-sharer/
https://theindiestone.com/forums/index.php?/topic/17816-a-list-of-item-ids-with-modules/
https://theindiestone.com/forums/index.php?/topic/18512-lua-code-snippets/
https://theindiestone.com/forums/index.php?/topic/18526-conditional-script-loading/
https://theindiestone.com/forums/index.php?/topic/15991-pz-modding-irc-channel/
https://theindiestone.com/forums/index.php?/topic/16624-giving-custom-options-to-items-when-you-right-click-them/
https://theindiestone.com/forums/index.php?/topic/16501-you-want-to-learn-lua/
https://theindiestone.com/forums/index.php?/topic/15302-pz-key-injector/
https://theindiestone.com/forums/index.php?/topic/15311-basic-profession-trait-mod-template/
https://theindiestone.com/forums/index.php?/topic/14001-item-distributions/
https://theindiestone.com/forums/index.php?/topic/14993-modloader-suburbsdistributionslua/
https://theindiestone.com/forums/index.php?/topic/15173-tool-to-find-bugs-when-creating-new-items/
https://theindiestone.com/forums/index.php?/topic/15194-tool-automatic-creation-of-translation-files/
https://theindiestone.com/forums/index.php?/topic/8023-simple-lua-oop-without-metatables/
https://theindiestone.com/forums/index.php?/topic/14276-event-list/
https://theindiestone.com/forums/index.php?/topic/14424-question-about-pz-moding/
https://theindiestone.com/forums/index.php?/topic/38329-customizing-loot-4151/
https://theindiestone.com/forums/index.php?/topic/38165-quick-guide-how-to-mod-the-loot-distribution-system-distributionslua-proceduraldistributionslua/
https://theindiestone.com/forums/index.php?/topic/23313-reference-list-of-lua-events/

Add debug scenario template file(s)

From the Debug Mode wiki article:

A list of debug scenarios can be found on the main menu, double-clicking will start the game in a predefined scenario. Custom scenarios can be made by editing "DebugScenario.lua" at "ProjectZomboid\media\lua\client\DebugUIs\Scenarios", or creating a new scenario.

  • Add template for basic scenario file, with ample commentary
  • Add advanced template to test a series of dependent events or wait for user input before proceeding
  • Add function to generate a new scenario and return the file path (or open in a specified text editor)

Add function to configure debug options

From the Debug Mode wiki article:

Within the F11 menu there is an options menu with a long drop down, you can select from a variety of sources to help you find further information about your current session. Be careful with these options because some of them might cause your client to freeze and continuously crash upon launch. If this happens you can set the offending option to false in C:\Users\Username\Zomboid\debug-options.init.

  • Set-ZomboidDebug -- Set one or more debug options by parsing the ini file
  • Reset-ZomboidDebug or Initialize-ZomboidDebug -- Reset options to default
  • Enable-ZomboidDebugOption -- Enable options by name. Basically an alias over Set-ZomboidDebug
  • Disable-ZomboidDebugOption -- Disable options by name. Another wrapper for Set-ZomboidDebug

PowerShell Module - ZomboidModTools

PowerShell Module: ZomboidModTools

See project repository on GitHub.

Option Management

  • Set mod.info properties
  • Set config files in ~\Zomboid -- keybind, screen layout, mod options
  • Add/Remove/Set user data -- saved_builds.txt
  • Add/Remove/Set user data -- saved_modlists.txt
  • Add/Remove/Set user data -- saved_modtags.txt
  • Add/Remove/Set user data -- saved_outfits.txt
  • Backup/Restore user options
  • Backup/Restore mod options

Mod Management

Tools for managing Project Zomboid mods installed locally and/or via the Steam Workshop.

Steam Workshop

Tools for working with Zomboid mods from the Steam Workshop.

  • Research local API options for working with Steam client (subscribe actions etc)
  • Find Zomboid mod on Steam Workshop
  • Open Zomboid mod on Steam Workshop -- browser or in Steam
  • Publish Zomboid mod to Steam Workshop
  • Subscribe to Zomboid mod from Steam Workshop
  • Unsubscribe to Zomboid mod from Steam Workshop

Local

Tools for working with Zomboid mods installed locally.

  • Remove Zomboid mod (from user/local/workshop mods directory)
  • Find Zomboid mods in user/local/workshop mods directories by criteria

Development

Tools for developing Zomboid mods that follow a standard structure and feature set.

  • Create new Zomboid mod -- from template(s)
  • Parse mod.info file
  • Generate/Update mod.info file
  • Copy Zomboid mod from workshop mods directory to staging/development directory
  • Clear development Zomboid mod from user/local/workshop mods directory
  • Publish (Copy/Update?) development Zomboid mod to user/local/workshop mods directory
  • Test development Zomboid mod structure
  • Test mod.info structure
  • Build pipeline (using PSBuild, BuildHelpers etc) wrapping the above development tasks?

Templates

Utilize templates created in Template - Zomboid Mod card

Debug Tools

Tools for debugging a Zomboid mod, including mod environments, log parsing, and debug environment setup.

  • Create shortcut to run Zomboid in debug mode
  • Create shortcut to Zomboid user/local/workshop mod directories
  • Create shortcut to Zomboid logs directories
  • Create shortcut to Zomboid install directory
  • Create shortcut to Zomboid user directory
  • Start Zomboid in debug mode

Zomboid Logs

  • Show Zomboid x/y/z log output
  • Tail Zomboid x/y/z log output
  • Search Zomboid x/y/z log output for specific criteria

Debug Environments

  • Start Zomboid with x mods loaded
  • Define a list of "development" mods to include when testing
  • List mod environments -- is there an existing mod management tool (or API hook to the Mod Manager Zomboid mod) for this?
  • Copy existing mod environment
  • Remove mod environment
  • Start Zomboid in debug mode with specified mod environment loaded

Documentation

Configure loaded mods

  • Add/remove/set mod profiles -- not sure if these are available without the mod manager mod but would be a huge quality of life and add more tooling opportunities for testing and distribution.

  • Set default mods to load (time saver on startup and also useful for debugging specific groups of mods together).

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.