Script:import json
import os
import time
import random
import tkinter as tk
from tkinter import messagebox
import keyboard
# Bot Modes
MODES = ["perfect", "human", "spam", "challenge"]
current_mode = "perfect"
# Function to check for modcharts (JSON)
def check_modchart(song_name):
modchart_path = f"mods/{song_name}/modchart.json"
if os.path.exists(modchart_path):
with open(modchart_path) as f:
data = json.load(f)
return data # Return modchart data
return None # No modchart
# Function to check for Lua modchart (for detection)
def lua_modchart_exists(song_name):
lua_path = f"mods/{song_name}/modchart.lua"
return os.path.exists(lua_path)
# Function to change bot mode
def set_mode(mode):
global current_mode
current_mode = mode
mode_label.config(text=f"Current Mode: {mode}")
# Function to determine if bot should press a note
def should_press(note_time):
if current_mode == "perfect":
return True # Always press
if current_mode == "human":
return random.random() > 0.02 # 2% chance to miss
if current_mode == "spam":
return True # Press all notes, even fake ones
if current_mode == "challenge":
return note_time != random.randint(0, 10000000000000) # Miss exactly one note
# Function to play notes based on modchart
def play_notes(chart_data, modchart_data=None):
scroll_speed = 1.0 # Default speed
if modchart_data:
if "scrollSpeed" in modchart_data:
scroll_speed = modchart_data["scrollSpeed"]
for note in chart_data:
adjusted_time = note["time"] / scroll_speed # Adjust timing based on modchart speed
if should_press(adjusted_time):
keyboard.press(note["key"])
keyboard.release(note["key"])
# Main Function
def start_bot():
song_name = song_name_entry.get() # Get song name from user input
if not song_name:
messagebox.showerror("Error", "Please enter a song name.")
return
print(f"Loading bot for {song_name}...")
# Detect if modchart exists
modchart_data = check_modchart(song_name)
has_lua_modchart = lua_modchart_exists(song_name)
if modchart_data:
print(f"Detected JSON modchart for {song_name}")
if has_lua_modchart:
print(f"Detected Lua modchart for {song_name}")
# Simulated chart data (Replace with actual note data)
chart_data = [{"time": 500, "key": "left"}, {"time": 1000, "key": "right"}]
# Start playing notes
play_notes(chart_data, modchart_data)
# GUI Setup
root = tk.Tk()
root.title("FNF Bot - Mode Selector")
# Mode Label
mode_label = tk.Label(root, text=f"Current Mode: {current_mode}", font=("Arial", 14))
mode_label.pack(pady=10)
# Mode Buttons
mode_button_frame = tk.Frame(root)
mode_button_frame.pack()
for mode in MODES:
mode_button = tk.Button(mode_button_frame, text=mode.capitalize(), command=lambda m=mode: set_mode(m))
mode_button.pack(side=tk.LEFT, padx=5)
# Song Name Input
song_name_label = tk.Label(root, text="Enter Song Name:", font=("Arial", 12))
song_name_label.pack(pady=10)
song_name_entry = tk.Entry(root, font=("Arial", 12))
song_name_entry.pack(pady=5)
# Start Button
start_button = tk.Button(root, text="Start Bot", font=("Arial", 14), command=start_bot)
start_button.pack(pady=20)
# Run the GUI loop
root.mainloop()
Now Chatgpt can answer everything. cool, we just need to have fun. lets play uno online free