Софт PingPick|Python

Начинающий
Начинающий
Статус
Оффлайн
Регистрация
15 Окт 2023
Сообщения
49
Реакции
5
Название смешное, другое не придумал.
Многие знают про отключение/включение интернета, в момент отключение есть возможность сделать суету.
Конкретно в этом случае, PUBG, есть примерно 2сек.
Работает так, сервер запоминает действие игроков, продолжает их производить у вас даже, если на стороне игрока он прекратил действие.
Например. Игрок пикает через стену, ловишь его на пике прогой, у игрока он за стеной, у вас он пикает. Даёте ему голову и дальше молитесь. Про регистрацию пуль сказать не могу, иногда регает через стенку, а бывает и так, что нихера не регает.
Очень важный аспект, твои действие до нажатия бинда, сервер тоже запоминает. Если ты бежишь прямо, включил софт, на сервере ты будешь бежать прямо.
Совет, сначала используйте бинд, далее движение. И да, эти две секунды вы беспомощны Можно включить бинд, выйти из-за стенки, нанести урон. По окончанию вас сервер оттепает на место где вы включили софт, при этом урон может пройти

Важно! Запускайте от имени админа через cmd.
Открываете cmd от админа
Пишите cd (путь до папки с файлом)
Название файла


Библиотеки (вписывать в cmd от имени админа)
pip install ttkbootstrap
pip install pynput

Скриншот-20-07-2025 17_37_49.jpg


Python:
Expand Collapse Copy
import tkinter as tk
from tkinter import ttk, colorchooser
import ttkbootstrap as ttkb
from ttkbootstrap.constants import *
import subprocess
import time
from pynput import mouse
import threading
import json
import os

class App:
    def __init__(self, root):
        self.root = root
        self.root.title("Gotions")
        self.root.geometry("430x630")
        self.root.resizable(False, False)
        self.style = ttkb.Style(theme="darkly")
        self.root.configure(bg=self.style.colors.bg)
        self.main_frame = ttk.Frame(root, padding=10, style="primary.TFrame")
        self.main_frame.pack(fill="both", expand=True, padx=10, pady=10)
        self.style.configure("primary.TFrame", borderwidth=2, relief="flat", bordercolor=self.style.colors.secondary, background=self.style.colors.secondary)
        self.style.configure("TButton", font=("Helvetica", 12), padding=10)
        self.style.configure("TLabel", font=("Helvetica", 12), background=self.style.colors.secondary, foreground=self.style.colors.light)
        self.style.configure("TScale", background=self.style.colors.secondary)
        self.bind_var = tk.StringVar(value="ЛКМ")
        self.timer_duration = tk.DoubleVar(value=5.0)
        self.timer_delay = tk.DoubleVar(value=1.0)
        self.timer_color = tk.StringVar(value="#FFFFFF")
        self.is_freeze_running = False
        self.is_timer_visible = tk.BooleanVar(value=True)
        self.timer_thread = None
        self.mouse_listener = None
        self.last_click_time = 0
        self.timer_window = None
        self.timer_display_label = None
        self.load_settings()
        self.create_widgets()
        self.create_timer_window()
        self.update_timer_display()

    def create_widgets(self):
        title_label = ttk.Label(self.main_frame, text="Меню управления", style="TLabel")
        title_label.pack(pady=10)
        freeze_frame = ttk.LabelFrame(self.main_frame, text="Заморозка", padding=10)
        freeze_frame.pack(fill="x", pady=10)
        ttk.Label(freeze_frame, text="Выберите бинд:").pack(anchor="w")
        bind_menu = ttk.OptionMenu(freeze_frame, self.bind_var, "ЛКМ", "ЛКМ", "ПКМ", "Боковая кнопка 1", "Боковая кнопка 2")
        bind_menu.pack(fill="x", pady=5)
        self.freeze_button = ttk.Button(freeze_frame, text="Запустить Заморозку", command=self.toggle_freeze, style="primary.TButton")
        self.freeze_button.pack(fill="x", pady=5)
        self.status_label = ttk.Label(freeze_frame, text="Статус: Остановлен")
        self.status_label.pack(pady=5)
        timer_frame = ttk.LabelFrame(self.main_frame, text="Таймер", padding=10)
        timer_frame.pack(fill="x", pady=10)
        ttk.Label(timer_frame, text="Длительность таймера (сек):").pack(anchor="w")
        timer_scale = ttk.Scale(timer_frame, from_=0.1, to=10.0, variable=self.timer_duration, orient="horizontal")
        timer_scale.pack(fill="x", pady=5)
        self.timer_label = ttk.Label(timer_frame, text=f"{self.timer_duration.get():.1f} сек")
        self.timer_label.pack()
        self.timer_duration.trace("w", self.update_timer_label)
        ttk.Label(timer_frame, text="Задержка перед стартом (сек):").pack(anchor="w")
        delay_scale = ttk.Scale(timer_frame, from_=0.0, to=5.0, variable=self.timer_delay, orient="horizontal")
        delay_scale.pack(fill="x", pady=5)
        self.delay_label = ttk.Label(timer_frame, text=f"{self.timer_delay.get():.1f} сек")
        self.delay_label.pack()
        self.timer_delay.trace("w", self.update_delay_label)
        self.timer_toggle_button = ttk.Button(timer_frame, text="Скрыть таймер", command=self.toggle_timer_window, style="primary.TButton")
        self.timer_toggle_button.pack(fill="x", pady=5)
        ttk.Label(timer_frame, text="Цвет цифр таймера:").pack(anchor="w")
        ttk.Button(timer_frame, text="Выбрать цвет", command=self.choose_timer_color, style="primary.TButton").pack(fill="x", pady=5)
        self.countdown_label = ttk.Label(timer_frame, text="Таймер: не запущен")
        self.countdown_label.pack(pady=10)

    def create_timer_window(self):
        self.timer_window = tk.Toplevel(self.root)
        self.timer_window.title("Таймер")
        self.timer_window.geometry("200x100")
        self.timer_window.attributes('-alpha', 0.7)
        self.timer_window.overrideredirect(True)
        self.timer_window.attributes('-topmost', True)
        self.timer_window.configure(bg='black')
        self.timer_window.wm_attributes('-transparentcolor', 'black')
        self.timer_display_label = tk.Label(
            self.timer_window,
            text="Таймер: не запущен",
            font=("Helvetica", 16),
            fg=self.timer_color.get(),
            bg='black'
        )
        self.timer_display_label.pack(expand=True)
        self.timer_window.bind("<Button-1>", self.start_move)
        self.timer_window.bind("<B1-Motion>", self.on_motion)

    def start_move(self, event):
        self.timer_window.x = event.x
        self.timer_window.y = event.y

    def on_motion(self, event):
        x = self.timer_window.winfo_x() + event.x - self.timer_window.x
        y = self.timer_window.winfo_y() + event.y - self.timer_window.y
        self.timer_window.geometry(f"+{x}+{y}")

    def toggle_timer_window(self):
        self.is_timer_visible.set(not self.is_timer_visible.get())
        self.timer_window.wm_attributes('-alpha', 0.7 if self.is_timer_visible.get() else 0.0)
        self.timer_toggle_button.config(text="Скрыть таймер" if self.is_timer_visible.get() else "Показать таймер")
        self.save_settings()

    def choose_timer_color(self):
        color = colorchooser.askcolor(title="Выберите цвет цифр таймера")[1]
        if color:
            self.timer_color.set(color)
            if self.timer_display_label:
                self.timer_display_label.config(fg=color)
            self.save_settings()

    def update_timer_label(self, *args):
        self.timer_label.config(text=f"{self.timer_duration.get():.1f} сек")
        self.save_settings()

    def update_delay_label(self, *args):
        self.delay_label.config(text=f"{self.timer_delay.get():.1f} сек")
        self.save_settings()

    def save_settings(self):
        settings = {
            "bind": self.bind_var.get(),
            "timer_duration": self.timer_duration.get(),
            "timer_delay": self.timer_delay.get(),
            "timer_color": self.timer_color.get(),
            "timer_visible": self.is_timer_visible.get()
        }
        with open("settings.json", "w") as f:
            json.dump(settings, f)

    def load_settings(self):
        if os.path.exists("settings.json"):
            with open("settings.json", "r") as f:
                settings = json.load(f)
                self.bind_var.set(settings.get("bind", "ЛКМ"))
                self.timer_duration.set(settings.get("timer_duration", 5.0))
                self.timer_delay.set(settings.get("timer_delay", 1.0))
                self.timer_color.set(settings.get("timer_color", "#FFFFFF"))
                self.is_timer_visible.set(settings.get("timer_visible", True))

    def toggle_freeze(self):
        if not self.is_freeze_running:
            self.is_freeze_running = True
            self.freeze_button.config(text="Остановить Заморозку")
            self.status_label.config(text="Статус: Работает")
            bind_map = {
                "ЛКМ": mouse.Button.left,
                "ПКМ": mouse.Button.right,
                "Боковая кнопка 1": mouse.Button.x1,
                "Боковая кнопка 2": mouse.Button.x2
            }
            bind_key = bind_map.get(self.bind_var.get(), mouse.Button.left)
            self.start_mouse_listener(bind_key)
        else:
            self.is_freeze_running = False
            self.freeze_button.config(text="Запустить Заморозку")
            self.status_label.config(text="Статус: Остановлен")
            if self.mouse_listener:
                self.mouse_listener.stop()
            self.countdown_label.config(text="Таймер: не запущен")
            if self.timer_display_label:
                self.timer_display_label.config(text="Таймер: не запущен")

    def execute_netsh_commands(self):
        try:
            subprocess.run(["netsh", "interface", "set", "interface", "Ethernet", "disable"], check=True, timeout=5)
            time.sleep(0.5)
            subprocess.run(["netsh", "interface", "set", "interface", "Ethernet", "enable"], check=True, timeout=5)
            self.status_label.config(text="Статус: Работает (команды выполнены)")
        except subprocess.CalledProcessError as e:
            self.status_label.config(text=f"Статус: Ошибка netsh: {e}")
            self.is_freeze_running = False
            self.freeze_button.config(text="Запустить Заморозку")
            if self.mouse_listener:
                self.mouse_listener.stop()
        except subprocess.TimeoutExpired:
            self.status_label.config(text="Статус: Ошибка: netsh timeout")
            self.is_freeze_running = False
            self.freeze_button.config(text="Запустить Заморозку")
            if self.mouse_listener:
                self.mouse_listener.stop()

    def start_mouse_listener(self, bind_key):
        def on_click(x, y, button, pressed):
            if self.is_freeze_running and button == bind_key and pressed:
                current_time = time.time()
                if current_time - self.last_click_time < 0.6:
                    return
                self.last_click_time = current_time
                threading.Thread(target=self.execute_netsh_commands, daemon=True).start()
                if self.timer_thread is None or not self.timer_thread.is_alive():
                    self.timer_thread = threading.Thread(target=self.start_timer, daemon=True)
                    self.timer_thread.start()

        self.mouse_listener = mouse.Listener(on_click=on_click)
        self.mouse_listener.start()

    def start_timer(self):
        time.sleep(self.timer_delay.get())
        duration = self.timer_duration.get()
        while duration > 0 and self.is_freeze_running:
            timer_text = f"Таймер: {duration:.1f} сек"
            self.countdown_label.config(text=timer_text)
            if self.timer_display_label:
                self.timer_display_label.config(text=timer_text)
            time.sleep(0.1)
            duration -= 0.1
        if self.is_freeze_running:
            timer_text = "Таймер: завершен"
            self.countdown_label.config(text=timer_text)
            if self.timer_display_label:
                self.timer_display_label.config(text=timer_text)

    def update_timer_display(self):
        if self.is_timer_visible.get():
            self.timer_window.wm_attributes('-alpha', 0.7)
        else:
            self.timer_window.wm_attributes('-alpha', 0.0)

if __name__ == "__main__":
    root = ttkb.Window()
    app = App(root)
    root.mainloop()
 
1. Python язык дерьма.
2. Ахуеть что-то на югейме на питоне и без говнокода
3. Неплохо вполне, если не считать первого пункта.
 
1. Python язык дерьма.
2. Ахуеть что-то на югейме на питоне и без говнокода
3. Неплохо вполне, если не считать первого пункта.
Ах, понял понял. В следующий раз буду на ahk чёт делать. Если без шуток, так называемый PingPick для питона хватает.
Наклепал на питоне аим, на onnx моделях. Переходить надо на плюсы. Питон не вывозит
 
Ах, понял понял. В следующий раз буду на ahk чёт делать. Если без шуток, так называемый PingPick для питона хватает.
Наклепал на питоне аим, на onnx моделях. Переходить надо на плюсы. Питон не вывозит

Плюсы норм тема, питон очень слабый язык, он мало того что не компилируемый, так еще и медленней плюсов раз в 30...
 
Назад
Сверху Снизу