Загрузка...

Скрипт Скрипт для игры Spray Paint Roblox

Тема в разделе Python создана пользователем nnbro9 14 апр 2025. (поднята Вчера, в 17:48) 228 просмотров

Загрузка...
  1. nnbro9
    nnbro9 Автор темы 14 апр 2025 18 11 авг 2022
    скрипт рисует выбранное изображение
    рисует только цветом, который выберешь в игре
    эмулирует движения мышью



    скрипт, чтобы чисто зайти поудивлять типов

    #1
    он не быстрый, но точнее второго
    Python
    import cv2 import numpy as np import pydirectinput import keyboard import time from pynput.mouse import Controller as MouseController, Button import tkinter as tk from tkinter import filedialog, messagebox from PIL import Image, ImageTk mouse = MouseController() class DrawingApp: def __init__(self, root): self.root = root self.root.title("Рисовальщик изображений") self.root.geometry("500x400") self.image_path = "" self.scale_factor = tk.DoubleVar(value=1.0) self.pause_time = tk.DoubleVar(value=0.01) self.drawing = False self.create_widgets() def create_widgets(self): frame_image = tk.LabelFrame(self.root, text="Выбор изображения", padx=5, pady=5) frame_image.pack(pady=5, padx=10, fill="x") self.btn_select = tk.Button(frame_image, text="Выбрать изображение", command=self.select_image) self.btn_select.pack(pady=5) self.lbl_image = tk.Label(frame_image, text="Изображение не выбрано") self.lbl_image.pack() frame_settings = tk.LabelFrame(self.root, text="Настройки", padx=5, pady=5) frame_settings.pack(pady=5, padx=10, fill="x") tk.Label(frame_settings, text="Масштаб (0.1-5.0):").grid(row=0, column=0, sticky="w") tk.Scale(frame_settings, from_=0.1, to=5.0, resolution=0.1, orient="horizontal", variable=self.scale_factor).grid(row=0, column=1, sticky="ew") tk.Label(frame_settings, text="Задержка (сек):").grid(row=1, column=0, sticky="w") tk.Scale(frame_settings, from_=0.001, to=0.1, resolution=0.001, orient="horizontal", variable=self.pause_time).grid(row=1, column=1, sticky="ew") self.btn_start = tk.Button(self.root, text="Начать рисование", command=self.start_drawing, state="disabled") self.btn_start.pack(pady=10) frame_info = tk.LabelFrame(self.root, text="Информация", padx=5, pady=5) frame_info.pack(pady=5, padx=10, fill="x") tk.Label(frame_info, text="Для остановки нажмите F4", fg="red").pack() def select_image(self): self.image_path = filedialog.askopenfilename(filetypes=[("Image files", "*.jpg;*.jpeg;*.png;*.bmp")]) if self.image_path: self.lbl_image.config(text=self.image_path.split("/")[-1]) self.btn_start.config(state="normal") try: img = Image.open(self.image_path) img.thumbnail((100, 100)) photo = ImageTk.PhotoImage(img) self.lbl_image_preview = tk.Label(self.root) self.lbl_image_preview.image = photo self.lbl_image_preview.config(image=photo) self.lbl_image_preview.pack() except Exception as e: messagebox.showerror("Ошибка", f"Не удалось загрузить изображение: {e}") def prepare_image(self): img = cv2.imread(self.image_path) if img is None: messagebox.showerror("Ошибка", "Не удалось загрузить изображение!") return None small_img = cv2.resize(img, (0, 0), fx=self.scale_factor.get(), fy=self.scale_factor.get()) gray = cv2.cvtColor(small_img, cv2.COLOR_BGR2GRAY) binary = cv2.adaptiveThreshold(gray, 255, cv2.ADAPTIVE_THRESH_MEAN_C, cv2.THRESH_BINARY_INV, 11, 2) return binary def generate_drawing_points(self, image): points = [] height, width = image.shape for y in range(0, height, 1): for x in range(0, width, 1): if image[y, x] > 0: points.append((x, y)) return points def draw_image(self, points): try: pydirectinput.PAUSE = self.pause_time.get() scale = 1.0 try: screen_w, screen_h = pydirectinput.size() except: screen_w, screen_h = 1920, 1080 img_h, img_w = self.processed_img.shape offset = ((screen_w - img_w) / 2, (screen_h - img_h) / 2) self.drawing = True self.btn_start.config(state="disabled", text="Рисование...") self.root.update() time.sleep(2) for i, (x, y) in enumerate(points): if not self.drawing or keyboard.is_pressed('F4'): print("Остановлено пользователем!") break scaled_x = int(x + offset[0]) scaled_y = int(y + offset[1]) pydirectinput.moveTo(scaled_x, scaled_y) mouse.click(Button.left) except Exception as e: messagebox.showerror("Ошибка", f"Произошла ошибка: {e}") finally: self.drawing = False self.btn_start.config(state="normal", text="Начать рисование") messagebox.showinfo("Информация", "Рисование завершено") def start_drawing(self): if not self.image_path: messagebox.showerror("Ошибка", "Сначала выберите изображение!") return self.processed_img = self.prepare_image() if self.processed_img is None: return drawing_points = self.generate_drawing_points(self.processed_img) import threading threading.Thread(target=self.draw_image, args=(drawing_points,), daemon=True).start() if __name__ == "__main__": root = tk.Tk() app = DrawingApp(root) root.mainloop()
    [IMG]

    видос ускорен в 50раз
    (рисовалось в paint)
    #2
    быстрый, но не очень точный
    тут без GUI
    запускаешь скрипт и alt+tab в роблокс
    time.sleep(??) можете настроить
    Python
    import cv2 import numpy as np import pydirectinput import keyboard import time pydirectinput.PAUSE = 0.0000000000001 #скорость рисования 1 DRAW_DELAY = 0.00000001 #скорость рисования 2 SCALE_FACTOR = 1 # размер (влияет на скорость) DOT_DENSITY = 1 # я бы не трогал это def prepare_image(image_path): img = cv2.imread(image_path) if img is None: print("Ошибка загрузки изображения!") return None small_img = cv2.resize(img, (0, 0), fx=SCALE_FACTOR, fy=SCALE_FACTOR) gray = cv2.cvtColor(small_img, cv2.COLOR_BGR2GRAY) binary = cv2.adaptiveThreshold(gray, 255, cv2.ADAPTIVE_THRESH_MEAN_C, cv2.THRESH_BINARY_INV, 11, 2) return binary def generate_drawing_points(image): points = [] height, width = image.shape for y in range(0, height, DOT_DENSITY): for x in range(0, width, DOT_DENSITY): if image[y, x] > 0: points.append((x, y)) return points def draw_image(points, scale=1.0, offset=(0, 0)): try: print(f"Начинаем рисование {len(points)} точек...") time.sleep(2) # под себя нужно настроить pydirectinput.mouseDown(button='left') for i, (x, y) in enumerate(points): if keyboard.is_pressed('F4'): print("Остановлено по F4!") break scaled_x = int(x * scale + offset[0]) scaled_y = int(y * scale + offset[1]) pydirectinput.moveTo(scaled_x, scaled_y) time.sleep(DRAW_DELAY) if i % 500 == 0: print(f"Прогресс: {i + 1}/{len(points)} точек") except Exception as e: print(f"Ошибка: {e}") finally: pydirectinput.mouseUp(button='left') print("Рисование завершено") if __name__ == "__main__": image_path = "x6YsgfTZoKJYfFXrria6Zjel16Kj-kxd0orOglucHyLnQmA-tnWZ3R-VCOYP3ZEIWak7ENvYgWZgtmHb0XRTX22o.jpg" processed_img = prepare_image(image_path) if processed_img is None: exit() drawing_points = generate_drawing_points(processed_img) try: screen_w, screen_h = pydirectinput.size() except: screen_w, screen_h = 1920, 1080 img_h, img_w = processed_img.shape scale = min(screen_w / img_w, screen_h / img_h) * 0.8 offset = ((screen_w - img_w * scale) / 2, (screen_h - img_h * scale) / 2) draw_image(drawing_points, scale, offset)



    [IMG][IMG][IMG][IMG][IMG][IMG]
     
    14 апр 2025 Изменено
  2. Masgiat
    Masgiat 14 апр 2025 kernel.c 267 4 дек 2024
  3. nnbro9
    nnbro9 Автор темы 14 апр 2025 18 11 авг 2022
    [IMG]
    нарисован с помощью #2
     
    14 апр 2025 Изменено
    1. gonome
Top
JavaScript error: