Skip to content

Instantly share code, notes, and snippets.

@SARDONYX-sard
Last active January 1, 2024 12:57
Show Gist options
  • Save SARDONYX-sard/863d340fb159aa770e544bf49ebd8096 to your computer and use it in GitHub Desktop.
Save SARDONYX-sard/863d340fb159aa770e544bf49ebd8096 to your computer and use it in GitHub Desktop.
# Python script that just writes the latest version in the meta.ini file of MO2 to version
import sys
from configparser import ConfigParser
from pathlib import Path
from typing import Literal
def color(string: str, mode: Literal["green", "red", "yellow", "cyan"]):
esc_char = "\033"
color_reset = "[0m"
colors = {"cyan": "[36m", "green": "[32m", "red": "[31m", "yellow": "[33m"}
return f"{esc_char}{colors[mode]}{string}{esc_char}{color_reset}"
def update_meta_version(dir: Path):
config = ConfigParser()
# This code is lint error, but it's code is correct.
config.optionxform = str # Enable preserve case.
print(f" DirName: {Path(dir).name}")
try:
config.read(f"{dir}/meta.ini", encoding="utf-8")
except Exception:
try:
config.read(
f"{dir}/meta.ini"
) # In jp environment, default encoding is ShiftJS
except Exception as e:
print(
color(" Error: Failed to read `meta.ini`.", "red"),
e,
end="\n\n",
)
return
if "General" not in config.keys():
print(color(" Error: No General section.", "red"), end="\n\n")
return
if "version" not in config["General"].keys():
version = color("None.", "red")
else:
version = config["General"]["version"]
# NOTE: This is the code to fix the error that version is not updated due to a flag error.
# config["General"]["nexusFileStatus"] = "1"
# with open(f"{dir}/meta.ini", "w", encoding="utf-8") as configfile:
# config.write(configfile)
# print(color(" Info: Writ file", "green"))
latest_version = ""
if "newestVersion" not in config["General"].keys():
latest_version = color("None", "red")
else:
latest_version = config["General"]["newestVersion"]
print(f" Old version: {version}")
print(f"Latest version: {latest_version}")
if latest_version == "":
print(
color(" Warn: Skip update. Not found latest.", "yellow"),
end="\n\n",
)
return
if version != latest_version:
config["General"]["version"] = latest_version
with open(f"{dir}/meta.ini", "w", encoding="utf-8") as configfile:
config.write(configfile)
print(color(" Ok: Updated.", "green"))
else:
print(color(" Info: No need update. This is latest", "cyan"))
def main():
default_path = "D:/GAME/ModOrganizer Skyrim SE/mods"
search_path = Path(sys.argv[1] if len(sys.argv) > 1 else default_path)
if not search_path.exists():
print(color(" Error: Specified path does not exist.", "red"))
sys.exit(1)
dirs = [x for x in search_path.iterdir() if x.is_dir()]
for dir in dirs:
# try:
print("")
update_meta_version(dir)
# except Exception as e:
# print(color(" Error:", "red"), e, end="\n\n")
# continue
if __name__ == "__main__":
main()
input("Press any key.")

ModOrganizer Skyrim SE\mods\Enhanced Character Edit -SE キャラクリ編集画面の強化 youngNord追加\meshes\CharacterMakingExtenderにある nameList.txtに使いたい日本語の名前を入れるとキャラクリ画面で名前を変更できる

よく使うキー

  • 通常

    • 自動歩行: c
    • シャウト: z
    • ダッシュ: left-shift
    • 隠密: CapsLock
    • 1人称と3人称の切り替え: q
    • 所持品画面: o
    • マップ: m
    • fpsの表示: *
  • Modによる設定

    • ロックオン: middle-scrollスクロールボタン自体を押す(デフォルトはこれだけれど変えられるかもしれない)True Directional Movementによる機能
    • 前転: left-ctrl
    • 左/右よりの切り替え(3人称時): v
    • UIの非表示切り替え: x
    • ミニマップの非表示切り替え: n
  • キーコンフィグはSkyrimControlMapperを使うと便利

  • ModOrganizer Skyrim SE\mods\Gamepad++ カスタムキーマップ及び日本語化\interface\controls\pccontrolmap.txtをいじるとキーマップが変えられる (ゲーム中でもファイルを上書き→ゲーム内のメニューでキーコンフィグをデフォルトに戻すを選ぶとリアルタイムで反映できる)

よく使うコンソールコマンド

  • ;を押すとコンソール画面がでる
コマンド 説明
showracemenu キャラクリ画面を開く
tgm god mode. 矢が無限、無敵
tim 矢が有限、体力が1以下にならない
コンソール画面で対象をclick+ tc 対象を操作できる

Modの入れ外しとセーブデータ汚染

  • scriptsフォルダ内のpexファイル、espやeslファイルがあるModを導入したセーブデータをそのModを外した状態で遊ぶと存在しないデータなどゴミが内部に残ってこれが積み重なるとおかしくなるので注意。

  • SKSEプラグインのみのMod、interface、mesh、textureだけのModなら同じセーブデータでどのタイミングで入れ外しても問題ない。とはいえSKSEプラグインはespなどを使うModの依存となっている場合がほとんどなので注意。

# 2つのフォルダ名を切り替えるためのPython3スクリプト
from os import chdir, getcwd, listdir, rename
def swap_name(target_dir: str, target1: str, target2: str):
"""
swap file name
"""
chdir(target_dir)
rename(target2, f"{target2}.temp")
rename(target1, target2)
rename(f"{target2}.temp", target1)
swap_name("C:/ドキュメント/My Games/Skyrim Special Edition", "Saves", "Saves.bak")
@SARDONYX-sard
Copy link
Author

DAR(条件分岐でアニメーションが変化するSKSEplugin)とNemesis(アニメーション一元管理外部ツール)併用時

DAR, Nemesisを必要とするModをインストール、アンインストールした場合必ず以下を行う

  1. エンジンのアップデートボタンを押す
  2. 実行
    nemesis

Nemesisが実行できないとき

  • 起動ファイルのパスが間違っている場合は実行ファイルの設定に行く
    2022-12-27 (2)

  • パスを修正する(デフォルトパス: ModOrganizer Skyrim SE\mods\Nemesis Unlimited Behavior Engine FINSに代わる新しいSkyrim挙動フレームワーク\Nemesis_Engine\Nemesis Unlimited Behavior Engine.exe)
    2022-12-27 (3)

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment