Skip to content

Instantly share code, notes, and snippets.

@Notusu
Created December 20, 2023 11:15
Show Gist options
  • Star 2 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save Notusu/e3604b2d8daac119643064bf91446280 to your computer and use it in GitHub Desktop.
Save Notusu/e3604b2d8daac119643064bf91446280 to your computer and use it in GitHub Desktop.
import winreg
import uuid
import tkinter as tk
import pyperclip
import random
def generate_unique_id():
return uuid.uuid4().int & (1 << 64) - 1
def write_to_registry(key_path, value_name, value_data):
try:
key = winreg.OpenKey(winreg.HKEY_CURRENT_USER, key_path, 0, winreg.KEY_SET_VALUE)
winreg.SetValueEx(key, value_name, 0, winreg.REG_QWORD, value_data)
winreg.CloseKey(key)
except Exception as e:
print(f"Error: {e}")
def show_success_message(message):
new_pcid_label.config(text=message)
def generate_and_apply_new_pcid():
key_path = r"Software\Classes\Software\Microsoft\XLive"
value_name = "PCID"
new_pcid = generate_unique_id()
write_to_registry(key_path, value_name, new_pcid)
show_success_message(f"New PCID: {new_pcid}")
def fix_key_error():
key_path = r"Software\Classes\Software\Microsoft\XLive"
value_name = "PCID"
fixed_pcid = int("c3f5106be2afbb00", 16)
write_to_registry(key_path, value_name, fixed_pcid)
show_success_message(language_strings[language_var.get()]["success_message"])
def get_cd_key():
cd_keys = [
"VB8DC-VYVGG-F8K78-7TJRF-7CVCT",
"Q97YF-4TKGJ-Q9FK9-63X7R-2D2R8",
"FMRY2-WHJTX-K3VK8-2DX9W-J2276",
"CGTPR-Q3GWX-P699R-6JF3M-784RY"
]
selected_key = random.choice(cd_keys)
pyperclip.copy(selected_key)
show_success_message(f"{selected_key} copied")
def toggle_language():
current_language = language_var.get()
new_language = "ru" if current_language == "en" else "en"
language_var.set(new_language)
generate_button["text"] = language_strings[new_language]["generate_button"]
fix_key_button["text"] = language_strings[new_language]["fix_key_button"]
faq_button["text"] = language_strings[new_language]["faq_button"]
get_cd_key_button["text"] = language_strings[new_language]["get_cd_key_button"]
new_pcid_label.config(text=language_strings[new_language]["label"])
faq_text.set(language_strings[new_language]["faq_text"])
def show_faq():
faq_window = tk.Toplevel(root)
faq_window.title("FAQ")
faq_window.geometry("630x100")
faq_window.minsize(630, 100)
faq_window.maxsize(630, 100)
faq_window.configure(bg="#2C3E50")
faq_label = tk.Label(faq_window, text=faq_text.get(), justify="left", bg="#2C3E50", fg="#D4D4D4")
faq_label.pack(pady=10, padx=10)
root = tk.Tk()
root.title("GWFL Online Fixer")
root.geometry("250x280")
root.minsize(250, 280)
root.maxsize(250, 280)
root.configure(bg="#2C3E50")
language_var = tk.StringVar(value="en")
language_strings = {
"en": {
"generate_button": "New PCID",
"fix_key_button": "Fix Key Error",
"faq_button": "FAQ",
"get_cd_key_button": "Get CD-Key",
"label": "",
"success_message": "Key successfully fixed.",
"faq_text": (
"1. Before playing, click 'Fix Key Error,' then launch and successfully log into your account. Close the game.\n"
"2. Click 'New PCID' in the program. Now you can start the game and play online.\n"
"P.S. If you are installing the game for the first time, use the button Get CD-Key and paste it while first launch.\n"
"Feel free to report bugs or ask questions in Steam Guide or in Telegram @e8200. Made by Heleus.\n"
),
},
"ru": {
"generate_button": "Новый PCID",
"fix_key_button": "Исправить ключ",
"faq_button": "FAQ",
"get_cd_key_button": "Получить CD-ключ",
"label": "",
"success_message": "Ключ успешно исправлен.",
"faq_text": (
"1. Перед игрой выберите 'Исправить ключ', затем запустите и успешно войдите в аккаунт. Закройте игру.\n"
"2. Нажмите в программе 'Новый PCID'. Теперь вы можете включить игру и играть в онлайне.\n"
"P.S. Если вы первый раз установили игру - нажмите 'Получить CD-ключ' и введите при первом запуске.\n"
"По всем вопросам писать в Телеграме @e8200 или в Steam руководстве. Made by Heleus.\n"
),
}
}
button_color = "#2C3E50"
button_style = {"bg": "#3A4B5E", "fg": "#D4D4D4", "font": ("Helvetica", 10, "bold"), "relief": tk.FLAT}
generate_button = tk.Button(root, text=language_strings[language_var.get()]["generate_button"],
command=generate_and_apply_new_pcid, **button_style)
generate_button.pack(pady=10)
fix_key_button = tk.Button(root, text=language_strings[language_var.get()]["fix_key_button"],
command=fix_key_error, **button_style)
fix_key_button.pack(pady=10)
faq_button = tk.Button(root, text=language_strings[language_var.get()]["faq_button"],
command=show_faq, **button_style)
faq_button.pack(pady=10)
get_cd_key_button = tk.Button(root, text=language_strings[language_var.get()]["get_cd_key_button"],
command=get_cd_key, **button_style)
get_cd_key_button.pack(pady=10)
new_pcid_label = tk.Label(root, text=language_strings[language_var.get()]["label"], bg="#2C3E50", fg="white")
new_pcid_label.pack(side=tk.BOTTOM, pady=10)
language_toggle_button = tk.Button(root, text="Сменить язык", command=toggle_language, **button_style)
language_toggle_button.pack(pady=10)
faq_text = tk.StringVar()
faq_text.set(language_strings[language_var.get()]["faq_text"])
root.mainloop()
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment