テキストファイル(txt)をチートファイル(cht)に変換するPythonのコード

  メモ

テキストファイル(txt)をチートファイル(cht)に変換するPythonのコード

テキストファイル(txt)をチートファイル(cht)に変換するPythonのコード

全部のゲームやチートコードの種類で試したわけじゃないから動かんかったらすまん。
主にPSで使用。

テキストに余計な要素を省いたチートコードを記載する。
sample.txtと名前を付けて保存。

チートの見出し
チートコードを(連続)記載。
二個目以降は一行開ける

戦闘後、宝箱必ず落とす
D00E922C 0802
8010E530 0001
D00E922C 0802
8010E55C 0001

ルーラでどこでもいける
80010280 FFFF
80010282 FFFF
80010284 FFFF
80010286 FFFF
80010288 FFFF

戦闘中にMPが減らない
D0137ECA 1460
80137ECA 1000

Pythonのコードを実行。
sample.txtを選択して、sample.chtが出力される。

テキストファイル(txt)をチートファイル(cht)に変換するPythonのコード

テキストファイル(txt)をチートファイル(cht)に変換するPythonのコード

cheats = 3

cheat0_desc = "戦闘後、宝箱必ず落とす"
cheat0_code = "D00E922C 0802 8010E530 0001 D00E922C 0802 8010E55C 0001"
cheat0_enable = false

cheat1_desc = "ルーラでどこでもいける"
cheat1_code = "80010280 FFFF 80010282 FFFF 80010284 FFFF 80010286 FFFF 80010288 FFFF"
cheat1_enable = false

cheat2_desc = "戦闘中にMPが減らない"
cheat2_code = "D0137ECA 1460 80137ECA 1000"
cheat2_enable = false

Pythonのサンプルコードはこれ。

import os

def txt_to_cht(input_text: str) -> str:
    cheats = []
    lines = input_text.strip().splitlines()

    i = 0
    while i < len(lines):
        line = lines[i].strip()
        if not line:  # 空行 → スキップ
            i += 1
            continue

        # 見出し(説明)
        desc = line
        i += 1
        codes = []

        # 次の空行 or 終わりまでコードを集める
        while i < len(lines) and lines[i].strip():
            codes.append(lines[i].strip())
            i += 1

        cheats.append((desc, " ".join(codes)))

    # 出力フォーマット
    result = []
    result.append(f"cheats = {len(cheats)}\n")
    for idx, (desc, code) in enumerate(cheats):
        result.append(f'cheat{idx}_desc = "{desc}"')
        result.append(f'cheat{idx}_code = "{code}"')
        result.append(f'cheat{idx}_enable = false\n')

    return "\n".join(result)


def main():
    import tkinter as tk
    from tkinter import filedialog

    root = tk.Tk()
    root.withdraw()

    # 入力ファイル選択
    input_path = filedialog.askopenfilename(
        title="変換するテキストファイルを選択",
        filetypes=[("Text files", "*.txt"), ("All files", "*.*")]
    )
    if not input_path:
        print("キャンセルされました")
        return

    # 出力ファイル名
    base, _ = os.path.splitext(input_path)
    output_path = base + ".cht"

    with open(input_path, "r", encoding="utf-8") as f:
        txt = f.read()

    cht_text = txt_to_cht(txt)

    with open(output_path, "w", encoding="utf-8") as f:
        f.write(cht_text)

    print(f"変換完了! {output_path} を保存しました。")


if __name__ == "__main__":
    main()

LEAVE A COMMENT