metin2-private-server / scripts /set_player_gold.py
manus4oHER's picture
Upload folder using huggingface_hub
65b3647 verified
Raw
History Blame Contribute Delete
2.19 kB
"""
Server-side currency tool for YOUR Open-MT2 DB (not official Gameforge live).
Usage:
python set_player_gold.py --name PlayerName --gold 999999999
python set_player_gold.py --account admin --gold 5000000 --all-chars
"""
from __future__ import annotations
import argparse
import sys
try:
import mysql.connector
except ImportError:
import subprocess
subprocess.check_call([sys.executable, "-m", "pip", "install", "mysql-connector-python", "-q"])
import mysql.connector
def main() -> None:
p = argparse.ArgumentParser(description="Set gold on local Open-MT2 game DB")
p.add_argument("--host", default="127.0.0.1")
p.add_argument("--port", type=int, default=3306)
p.add_argument("--user", default="root")
p.add_argument("--password", default="")
p.add_argument("--gold", type=int, required=True)
p.add_argument("--name", help="player character name")
p.add_argument("--account", help="account username (auth.account)")
p.add_argument("--all-chars", action="store_true", help="with --account, all characters")
args = p.parse_args()
if not args.name and not args.account:
p.error("provide --name and/or --account")
cn = mysql.connector.connect(
host=args.host,
port=args.port,
user=args.user,
password=args.password,
connection_timeout=5,
)
cur = cn.cursor(dictionary=True)
if args.name:
cur.execute("UPDATE game.player SET gold=%s WHERE name=%s", (args.gold, args.name))
print(f"updated name={args.name} gold={args.gold} rows={cur.rowcount}")
if args.account:
cur.execute("SELECT id FROM auth.account WHERE username=%s", (args.account,))
row = cur.fetchone()
if not row:
print(f"account not found: {args.account}")
else:
aid = row["id"]
if args.all_chars or not args.name:
cur.execute("UPDATE game.player SET gold=%s WHERE accountId=%s", (args.gold, aid))
print(f"updated account={args.account} id={aid} gold={args.gold} rows={cur.rowcount}")
cn.commit()
cur.close()
cn.close()
if __name__ == "__main__":
main()