İçeriği Atla

Aimlock ve Aimtrigger Phyton Örneği

Aimlock ve Aimtrigger Phyton Örneği

Aimlock ve Aimtrigger: Oyuncu Deneyimi mi, Haksız Avantaj mı?

Oyun dünyası, rekabetin kızıştığı ve oyuncuların en iyi performansı göstermek için çaba harcadığı bir alan haline geldi. Ancak, hile yazılımları bu deneyimi ciddi şekilde bozabiliyor. Aimlock ve aimtrigger, oyunlarda oyuncuların nişan alma veya atış yapma becerilerini tamamen otomatikleştirerek rekabeti adil olmayan bir hale getiriyor.

Aimlock Nedir?

Aimlock, oyuncunun hedefe otomatik olarak kilitlenmesini sağlar. Sistem, ekran üzerindeki belirli koordinatları analiz ederek fareyi bu hedeflere yönlendirir.

Aimtrigger Nedir?

Aimtrigger ise hedefe nişan alındığında tetiği otomatik olarak çeken bir mekanizmadır. Bu özellik, oyuncunun reflekslerini simüle eder, ancak insanüstü bir doğrulukla çalıştığı için etik dışıdır.

Hilelerin Riskleri

  1. Hesap Yasaklanması: Birçok oyun geliştiricisi, hile kullanımını algılayabilen yazılımlar kullanır ve hile yapan oyuncuların hesaplarını kalıcı olarak yasaklar.
  2. Topluluk İtibarı: Hile yapan oyuncular, oyun topluluğunda kötü bir itibar kazanır.
  3. Eğlenceyi Bozma: Hem hile yapan oyuncu hem de diğer oyuncular için oyun deneyimi zevksiz hale gelir.

Alternatif Yollar

Oyuncuların becerilerini geliştirmek için antrenman yapmaları veya rehberlerden faydalanmaları önerilir. Adil oyun, uzun vadede daha tatmin edici bir deneyim sunar.

Aşağıda phyton dilinde yazılmış bir genel çalışan kod bulunmaktadır. Kodu derlemeden önce program kimliğini gizleme ve oyun güvenliğini atlama kodu geliştirmelisiniz.

import sys
import cv2
import numpy as np
import random
import time
import win32api
import win32con
import win32gui
from mss import mss
from PyQt5.QtWidgets import QApplication, QMainWindow, QLabel, QVBoxLayout, QWidget, QPushButton, QSpinBox, QHBoxLayout, QCheckBox
from PyQt5.QtGui import QPixmap, QImage, QIcon
from PyQt5.QtCore import QTimer




class ScreenRecorderAlpha(QMainWindow):
    def __init__(self):
        super().__init__()
        self.setWindowTitle("Cheater")
        self.setGeometry(100, 100, 800, 600)
        self.setWindowIcon(QIcon("icon.ico"))


        # Settings
        self.game_running = False
        self.crosshair_size = 50
        self.zoom_mode = False
        self.aim_smooth_min = 0.05
        self.aim_smooth_max = 0.15
        self.click_delay_min = 0.02
        self.click_delay_max = 0.08
        self.headshot_probability = 0.8
        self.crosshair_center = (960, 540)
        self.target_window_name = "TEST"


        # HOG Parameters
        self.winStride = (4, 4)
        self.padding = (8, 8)
        self.scale = 1.02


        # Screen capture
        self.sct = mss()


        # Initialize HOG detector
        self.hog = cv2.HOGDescriptor()
        self.hog.setSVMDetector(cv2.HOGDescriptor_getDefaultPeopleDetector())


        # Target memory
        self.last_target_position = None
        self.target_miss_frames = 0


        # Initialize UI
        self.init_ui()


        # Timer for processing frames
        self.timer = QTimer()
        self.timer.timeout.connect(self.process_frame)


    def init_ui(self):
        layout = QVBoxLayout()


        self.video_label = QLabel("Game Feed")
        self.video_label.setFixedSize(800, 450)
        layout.addWidget(self.video_label)


        smooth_layout = QHBoxLayout()
        smooth_layout.addWidget(QLabel("Aim Smoothness Min (s):"))
        self.smooth_min_spin = QSpinBox()
        self.smooth_min_spin.setRange(1, 100)
        self.smooth_min_spin.setValue(int(self.aim_smooth_min * 100))
        self.smooth_min_spin.valueChanged.connect(self.update_smooth_min)
        smooth_layout.addWidget(self.smooth_min_spin)


        smooth_layout.addWidget(QLabel("Aim Smoothness Max (s):"))
        self.smooth_max_spin = QSpinBox()
        self.smooth_max_spin.setRange(1, 100)
        self.smooth_max_spin.setValue(int(self.aim_smooth_max * 100))
        self.smooth_max_spin.valueChanged.connect(self.update_smooth_max)
        smooth_layout.addWidget(self.smooth_max_spin)


        layout.addLayout(smooth_layout)


        self.zoom_checkbox = QCheckBox("Zoom Mode")
        self.zoom_checkbox.stateChanged.connect(self.toggle_zoom_mode)
        layout.addWidget(self.zoom_checkbox)


        self.start_button = QPushButton("Start")
        self.start_button.clicked.connect(self.start_game)
        layout.addWidget(self.start_button)


        self.stop_button = QPushButton("Stop")
        self.stop_button.clicked.connect(self.stop_game)
        layout.addWidget(self.stop_button)


        container = QWidget()
        container.setLayout(layout)
        self.setCentralWidget(container)


    def update_smooth_min(self, value):
        self.aim_smooth_min = value / 100


    def update_smooth_max(self, value):
        self.aim_smooth_max = value / 100


    def toggle_zoom_mode(self, state):
        self.zoom_mode = state == 2


    def start_game(self):
        self.game_running = True
        self.timer.start(5)


    def stop_game(self):
        self.game_running = False
        self.timer.stop()


    def move_mouse(self, x, y):
        win32api.SetCursorPos((int(x), int(y)))


    def left_click(self):
        win32api.mouse_event(win32con.MOUSEEVENTF_LEFTDOWN, 0, 0)
        time.sleep(0.02)
        win32api.mouse_event(win32con.MOUSEEVENTF_LEFTUP, 0, 0)


    def is_game_window_active(self):
        hwnd = win32gui.GetForegroundWindow()
        window_title = win32gui.GetWindowText(hwnd)
        return self.target_window_name.lower() in window_title.lower()


    def process_frame(self):
        if not self.game_running or not self.is_game_window_active():
            return


        try:
            monitor = {"top": 0, "left": 0, "width": 1920, "height": 1080}
            screenshot = self.sct.grab(monitor)
            frame = np.array(screenshot)
            frame = cv2.cvtColor(frame, cv2.COLOR_BGRA2BGR)


            # İnsan tespiti için HOG kullanımı
            boxes, weights = self.hog.detectMultiScale(
                frame,
                winStride=self.winStride,
                padding=self.padding,
                scale=self.scale,
            )


            crosshair_area = self.crosshair_size * (2 if not self.zoom_mode else 4)
            target_found = False


            for (x, y, w, h) in boxes:
                target_x = x + w // 2
                target_y = y + h // 2
                # Hedefin nişangah merkezine olan mesafesini hesapla
                distance = np.sqrt((target_x - self.crosshair_center[0]) ** 2 +
                                   (target_y - self.crosshair_center[1]) ** 2)


                if distance <= crosshair_area:
                    # Mesafe kategorisini belirle
                    if distance < 200:  # Yakın mesafe
                        print("Yakın mesafe hedef bulundu")
                    elif 200 <= distance < 500:  # Orta mesafe
                        print("Orta mesafe hedef bulundu")
                    else:  # Uzun mesafe
                        print("Uzun mesafe hedef bulundu")


                    # Hedefe nişan al ve ateş et
                    aim_y = y + h // 4 if random.random() < self.headshot_probability else y + (3 * h) // 4
                    self.move_mouse(target_x, aim_y)
                    time.sleep(random.uniform(self.aim_smooth_min, self.aim_smooth_max))
                    self.left_click()
                    self.last_target_position = (target_x, target_y)
                    target_found = True
                    break


            if not target_found:
                self.target_miss_frames += 1
                if self.target_miss_frames > 5:
                    self.last_target_position = None
            else:
                self.target_miss_frames = 0


            self.update_ui(frame)


        except Exception as e:
            print(f"Error: {e}")


    def update_ui(self, frame):
        frame_resized = cv2.resize(frame, (800, 450))
        height, width, channel = frame_resized.shape
        qimg = QImage(frame_resized.data, width, height, width * channel, QImage.Format_RGB888)
        pixmap = QPixmap.fromImage(qimg)
        self.video_label.setPixmap(pixmap)




if __name__ == "__main__":
    app = QApplication(sys.argv)
    window = ScreenRecorderAlpha()
    window.show()
    sys.exit(app.exec_())