前排提示:個人感覺有點麻煩不知道還有沒有簡便法子
這種情況適用於直接修改啟動路徑或者覆蓋都不好使,仍然想入正玩盜的情況(樣例極少,我是隻見過九九九櫻空漢化組出現過這種問題)
基本思路:寫個程序,打開漢化文件,檢測本體關閉後結束程序就成,需要打包成exe
步驟:
創建一個python文件進行編輯(以下在vs code中舉例)
1.安裝psutil和pyinstaller庫
在終端中輸入以下內容
pip install pyinstaller
pip install psutil
若出現SSL問題,也可輸入以下內容:
(1)pip install psutil --trusted-host pypi.org --trusted-host pypi.python.org --trusted-host=files.pythonhosted.org
(2)pip install pyinstaller --trusted-host pypi.org --trusted-host pypi.python.org --trusted-host=files.pythonhosted.org
終端樣例:(在這個位置輸入)
2.編寫代碼(鏈接大概率會沒,直接粘貼代碼到這了)
import os
import subprocess
import sys
import time
import psutil
def get_process_pid_by_name(program_path):
for proc in psutil.process_iter(['pid', 'name', 'exe']):
try:
if proc.info['exe'] and program_path.lower() == proc.info['exe'].lower():
return proc.info['pid']
except (psutil.NoSuchProcess, psutil.AccessDenied, psutil.ZombieProcess):
continue
return None
def run_program():
program_path_1 = r"漢化exe啟動路徑"
program_path_2 = r"原nine_kokoiro啟動路徑"
if not os.path.exists(program_path_1):
return
proc_1 = subprocess.Popen([program_path_1], stdout=subprocess.PIPE, stderr=subprocess.PIPE)
pid_2 = None
start_time = time.time()
while time.time() - start_time < 30:
pid_2 = get_process_pid_by_name(program_path_2)
if pid_2:
break
time.sleep(1)
else:
return
while pid_2 and psutil.pid_exists(pid_2):
time.sleep(1)
sys.exit(0)
if __name__ == "__main__":
run_program()
裡面只有兩項需要更改(更改路徑)
獲取路徑辦法(漢化遊戲不得在正版路徑下)
以上內容全部結束後應當是這樣的:
嘗試運行,你會發現可以正常打開,且程序應當在關閉本體後終止。若不能則檢查之前步驟
3.打包:
首先終端中會給出你的目標目錄(比如此處C:\Users\lenovo-1>)
打開文件夾位置,將寫好的文件(.py)另存到該文件夾中
終端輸入
python -c "import psutil; print(psutil.__file__)"
獲取psutil庫的位置
如
得到後再輸入
pyinstaller --onefile --add-data "psutil路徑" 你編寫程序的文件名.py
這時候應當開始打包了(會輸出到目標目錄\dist中)
成功樣例
雙擊運行後你會發現可以正常啟動遊戲(附帶一個終端窗口,這個終端窗口不建議用命令去除,會出現警告信息,不美觀x)
4.最後將這玩意拖進common\nine_kokoiro裡,把原來的文件刪了(不刪也行,但是原啟動項至少得覆蓋掉),將新造的exe修改成nine_kokoiro.exe就ok
這時候就可以從steam啟動遊戲記錄時長啦
ps:1.這個法子應該適用於任何遊戲入正玩盜其他方法都失效的情況下
2.有嘗試過不加psutil庫用tasklist,但是一直有bug,放棄