A simple tool to help WoW repack administrators manipulate the repack database(s)

WoW Repack Manipulator

This tool makes it easier for an administrator of a WoW Repack (private WoW server, basically) to manipulate the database that governs everything in the game, within reason. It does this by removing the need to know SQL or how-to connect to and operate a MySQL database, allowing administrators to easily define what they want to manipulate as a TOML file and then run the tool against their database.

Warning

This tool currently does NOT backup the database before changing it. It will do this in a future version.

Consider backing up the database before proceeding.

What's Working

Right now you can only manipulate the following repacks and their associated tables:

  • EmuCoach Cataclysm v15 - catav15
    • creature_template

Configuration

You need to create a TOML file. Any name will do but the tool looks for ./manipulations.toml in the current working directory as a default.

Here's an example:

database_hostname = "localhost:3306"
database_username = "root"
database_password = "ascent"
database_name = "emucoach_v15_vip_world"

repack = "catav15"

[[manipulation]]
type = "creature_template"
column = "entry"
id = [40]
modifiers = [
    {key="name", value="Kobold MINER"},
    {key="difficulty_entry_1", value=2},
    {key="difficulty_entry_2", value=3}
]

The database_* related flags are somewhat obvious: change them to reflect the connection information to your database.

Let's review each key/value pair (repack, etc.) and the array of tables ([[manipulation]]).

repack

The repack key is used tell the tool what repack version you're using.

manipulation

This is where the real work is done.

This key is an array of tables. In JSON notion this would look like this:

[
    {
        "type": "creature_table",
        "column": "entry",
        "id": [
            40,
        ],
        "modifiers": [
            {
                "key": "name",
                "value": "Kobold MINER"
            },
            {
                "key": "difficulty_entry_1",
                "value": 2
            },
            {
                "key": "difficulty_entry_2",
                "value": 3
            }
        ]
    }
]

This will manipulate (modifiers) the creature_table MySQL table (type) and edit the following columns (modifiers.key) by finding each one based on the unique (id):

  • name would be changed from Kobold Miner to Kobold MINER
  • difficulty_entry_1 would be changed from 0 to 2
  • difficulty_entry_2 would be changed from 0 to 3

The id value is a list of IDs for the entry column. It has to be a list and it has to have at least one value otherwise nothing is updated.

Note

This tool will not check if the values you're providing for the tables are correct. It does zero validation.

This means if the repack system is expecting, for example, difficulty_entry_1 to be a value of either 0, 1 or 2, and you give it 99, this tool will not check you've provided the right value. It simply updates the database.

This means this tool is a potential foot cannon. Good luck ;-)

Executing

(Currently in development so you're just seeing the results of running the code via the Go compiler and not a compiled, released binary.)

There are two flags to the command that you can provide:

  • -config "./manipulations.toml"
  • -debugging

This is what it looks like to run the code:

> go run .
INFO: 2022/02/03 18:22:42 main.go:56: connected to database: root:ascent@tcp(localhost:3306)/emucoach_v15_vip_world
INFO: 2022/02/03 18:22:42 main.go:59: successfully loaded configuration: ./manipulations.toml
INFO: 2022/02/03 18:22:42 parse.go:24: updated created 40: 'name' = 'Kobold MINER'
INFO: 2022/02/03 18:22:42 parse.go:24: updated created 40: 'difficulty_entry_1' = '2'        
INFO: 2022/02/03 18:22:42 parse.go:24: updated created 40: 'difficulty_entry_2' = '3' 

That's it. The database has been updated.

Owner
Michael Crilly
Cloud Engineer and Director
Michael Crilly
Similar Resources

ets2-dlc-repacker is a Windows / Linux / MacOS CLI util to automatically repack older DLC archives for compatibility with newer versions.

ets2-dlc-repacker is a Windows / Linux / MacOS CLI util to automatically repack older DLC archives for compatibility with newer versions.

ets2-dlc-repacker is a Windows / Linux / MacOS CLI util to automatically repack older DLC archives for compatibility with newer versions.

Dec 26, 2021

Zibr - Repack ZIPs into Brotli

zibr zipr is a command-line utility that repacks a compressed ZIP or PNG file in

Oct 8, 2022

This is a template project to help beginners learn, or to help developers develop some interesting small projects

This is a template project to help beginners learn, or to help developers develop some interesting small projects

This is a template project to help beginners learn, or to help developers develop some interesting small projects

Dec 13, 2022

Golang package to manipulate time intervals.

timespan timespan is a Go library for interacting with intervals of time, defined as a start time and a duration. Documentation API Installation Insta

Sep 26, 2022

A Golang library to manipulate strings according to the word parsing rules of the UNIX Bourne shell.

shellwords A Golang library to manipulate strings according to the word parsing rules of the UNIX Bourne shell. Installation go get github.com/Wing924

Sep 27, 2022

Manipulate subtitles in GO (.srt, .ssa/.ass, .stl, .ttml, .vtt (webvtt), teletext, etc.)

This is a Golang library to manipulate subtitles. It allows you to manipulate srt, stl, ttml, ssa/ass, webvtt and teletext files for now. Available op

Dec 29, 2022

Explore Docker registries and manipulate Docker images!

Explore Docker registries and manipulate Docker images!

L/S tags Utility and API to manipulate (analyze, synchronize and aggregate) images across different Docker registries. Example invocation $ lstags alp

Nov 25, 2022

manipulate and inspect VCS repositories in Go

go-vcs - manipulate and inspect VCS repositories go-vcs is a library for manipulating and inspecting VCS repositories in Go. It currently supports Git

Nov 27, 2022

Handy tools to manipulate korean character.

Handy tools to manipulate korean character.

About hangul hangul is a set of handy tools for manipulate korean character in Go language. Example package main import ( "fmt" hangu

Oct 27, 2022

QueryCSV enables you to load CSV files and manipulate them using SQL queries then after you finish you can export the new values to a CSV file

QueryCSV enables you to load CSV files and manipulate them using SQL queries then after you finish you can export the new values to a CSV file

QueryCSV enable you to load CSV files and manipulate them using SQL queries then after you finish you can export the new values to CSV file

Dec 22, 2021

Decorated Syntax Tree - manipulate Go source with perfect fidelity.

Decorated Syntax Tree The dst package enables manipulation of a Go syntax tree with high fidelity. Decorations (e.g. comments and line spacing) remain

Dec 29, 2022

datatable is a Go package to manipulate tabular data, like an excel spreadsheet.

datatable is a Go package to manipulate tabular data, like an excel spreadsheet.

datatable is a Go package to manipulate tabular data, like an excel spreadsheet. datatable is inspired by the pandas python package and the data.frame R structure. Although it's production ready, be aware that we're still working on API improvements

Nov 23, 2022

Tiny lib to manipulate the .line format (.rm in the reMarkable2) in Go

linestogo Tiny lib to manipulate the .line format

Apr 30, 2021

manipulate WireGuard with OpenID Connect Client Initiated Backchannel Authentication(CIBA) Flow

oidc-wireguard-vpn manipulate WireGuard with OpenID Connect Client Initiated Backchannel Authentication(CIBA) Flow Requirements Linux WireGuard nftabl

Oct 7, 2022

API in Golang with CRUD to manipulate GeoJson

Golang API with Hexagonal Architecture API to manage point of navigation Object Point: - Name - Latitude - Longiture TODO ❏ Create point in Mongodb [X

Dec 24, 2022

A go library to manipulate keyboards using libevdev

gokbd About This is an elementary library using libevdev to talk to a keyboard on Linux. It allows snooping the keys pressed as well as typing out key

Jan 19, 2022

ffcommander - An easy frontend to FFmpeg and Imagemagick to automatically process video and manipulate subtitles.

% FFCOMMANDER(1) ffcommander 2.39 % Mikael Hartzell (C) 2018 % 2021 Name ffcommander - An easy frontend to FFmpeg and Imagemagick to automatically pro

May 9, 2022

Groupie Trackers consists on receiving a given API and manipulate the data contained in it, in order to create a site, displaying the information.

groupie-tracker Objectives Groupie Trackers consists on receiving a given API and manipulate the data contained in it, in order to create a site, disp

Jan 13, 2022
a build tool for Go, with a focus on cross-compiling, packaging and deployment

goxc NOTE: goxc has long been in maintenance mode. Ever since Go1.5 supported simple cross-compilation, this tool lost much of its value. There are st

Dec 9, 2022
Tool to check for dependency confusion vulnerabilities in multiple package management systems

Confused A tool for checking for lingering free namespaces for private package names referenced in dependency configuration for Python (pypi) requirem

Jan 2, 2023
An extremely opinionated TypeScript monorepo tool.

Unirepo is an extremely opinionated TypeScript build tool. Typical monorepo management tools in the Node.js ecosystem provide automation aroun

Nov 29, 2022
a Make/rake-like dev tool using Go
a Make/rake-like dev tool using Go

About Mage is a make-like build tool using Go. You write plain-old go functions, and Mage automatically uses them as Makefile-like runnable targets. I

Jan 7, 2023
πŸš€ gowatch is a command line tool that builds and (re)starts your go project everytime you save a Go or template file.
πŸš€ gowatch is a command line tool that builds and (re)starts your go project everytime you save a Go or template file.

gowatch δΈ­ζ–‡ζ–‡ζ‘£ gowatch is a command line tool that builds and (re)starts your go project everytime you save a Go or template file. Installation To insta

Dec 30, 2022
🌍 Earthly is a build automation tool for the container era
 🌍 Earthly is a build automation tool for the container era

?? Earthly is a build automation tool for the container era. It allows you to execute all your builds in containers. This makes them self-contained, repeatable, portable and parallel. You can use Earthly to create Docker images and artifacts (eg binaries, packages, arbitrary files).

Dec 30, 2022
Concurrent task runner, developer's routine tasks automation toolkit. Simple modern alternative to GNU Make 🧰
Concurrent task runner, developer's routine tasks automation toolkit. Simple modern alternative to GNU Make 🧰

taskctl - concurrent task runner, developer's routine tasks automation toolkit Simple modern alternative to GNU Make. taskctl is concurrent task runne

Dec 14, 2022
EGo lets you build, debug und run Go apps on Intel SGX - as simple as conventional Go programming!

EGo is a framework for building confidential apps in Go. Confidential apps run in always-encrypted and verifiable enclaves on Intel SGX-enabled ha

Dec 28, 2022
NFPM is Not FPM - a simple deb, rpm and apk packager written in Go

NFPM NFPM is Not FPM - a simple deb, rpm and apk packager written in Go. Why While fpm is great, for me, it is a bummer that it depends on ruby, tar a

Jan 1, 2023
GR 4 - Wow class generator

Wow class generator Simple generator to create maps in Go using warcraft logs for Class and Spec Names. It generates : A dict of current wow classes a

Nov 5, 2021