메이플스토리 인벤 자유 게시판

전체보기

모바일 상단 메뉴

본문 페이지

[수다] 1분 ai 딸각하니깐 아무것도 모르는 사람도 매크로 만들수있는세상이네

클랜원구해요
댓글: 3 개
조회: 208
2026-09-26 17:00:19

1. 먼저 이것부터 설치

Windows에서 Python이 없다면 Python 3.11 이상을 설치한 뒤 CMD에서:

pip install opencv-python pyautogui pillow numpy requests

2. 아래 코드를 lie_detector.py로 저장

import tkinter as tkfrom tkinter import messageboximport pyautoguiimport cv2import numpy as npimport timeimport threadingimport requests# =========================================================# 설정# =========================================================CHECK_INTERVAL = 0.3# 감지 기준.# 0.65 정도부터 시작해서 필요하면 조절MATCH_THRESHOLD = 0.65# 디스코드 웹훅.# 처음 테스트할 때는 빈칸으로 둬도 됨.DISCORD_WEBHOOK = ""# 감시 영역monitor_region = None# 실행 상태running = Falselast_detected = False# =========================================================# 디스코드 알림# =========================================================def send_discord(message): if not DISCORD_WEBHOOK: return try: requests.post( DISCORD_WEBHOOK, json={"content": message}, timeout=5 ) except Exception as e: print("디스코드 전송 실패:", e)# =========================================================# 화면 영역 선택# =========================================================class RegionSelector: def __init__(self): self.root = tk.Tk() self.root.attributes("-fullscreen", True) self.root.attributes("-alpha", 0.25) self.root.configure(bg="black") self.canvas = tk.Canvas( self.root, cursor="cross", bg="black" ) self.canvas.pack(fill="both", expand=True) self.start_x = 0 self.start_y = 0 self.rect = None self.canvas.bind( "<ButtonPress-1>", self.mouse_down ) self.canvas.bind( "<B1-Motion>", self.mouse_drag ) self.canvas.bind( "<ButtonRelease-1>", self.mouse_up ) self.canvas.create_text( 400, 100, text="감시할 영역을 마우스로 드래그하세요", fill="white", font=("Arial", 24) ) self.root.mainloop() def mouse_down(self, event): self.start_x = event.x self.start_y = event.y if self.rect: self.canvas.delete(self.rect) self.rect = self.canvas.create_rectangle( self.start_x, self.start_y, self.start_x, self.start_y, outline="red", width=4 ) def mouse_drag(self, event): if self.rect: self.canvas.coords( self.rect, self.start_x, self.start_y, event.x, event.y ) def mouse_up(self, event): global monitor_region x1 = min(self.start_x, event.x) y1 = min(self.start_y, event.y) x2 = max(self.start_x, event.x) y2 = max(self.start_y, event.y) width = x2 - x1 height = y2 - y1 if width < 100 or height < 100: messagebox.showwarning( "영역이 너무 작습니다", "팝업이 들어갈 정도로 넓게 선택해주세요." ) return monitor_region = ( x1, y1, width, height ) self.root.destroy()# =========================================================# LIE DETECTOR 판별# =========================================================def detect_lie_detector(img): """ 화면에서 LIE DETECTOR 팝업을 찾는다. OCR 없이 화면의 구조와 색상/문자 영역을 이용한 간단한 1차 탐지 버전. """ if img is None: return False, 0.0 # BGR -> HSV hsv = cv2.cvtColor(img, cv2.COLOR_BGR2HSV) # 밝은 글자 영역 탐색 gray = cv2.cvtColor(img, cv2.COLOR_BGR2GRAY) # 대비 강화 gray = cv2.equalizeHist(gray) # 밝은 영역 _, bright = cv2.threshold( gray, 160, 255, cv2.THRESH_BINARY ) # 작은 노이즈 제거 kernel = np.ones((3, 3), np.uint8) bright = cv2.morphologyEx( bright, cv2.MORPH_OPEN, kernel ) # 팝업 테두리 탐색 contours, _ = cv2.findContours( bright, cv2.RETR_EXTERNAL, cv2.CHAIN_APPROX_SIMPLE ) h, w = img.shape[:2] possible = 0 for contour in contours: x, y, cw, ch = cv2.boundingRect(contour) # 너무 작은 영역 무시 if cw < w * 0.2: continue if ch < h * 0.03: continue # 화면 상단에 제목 영역이 존재하는지 확인 if y < h * 0.25: possible += 1 # 화면 중앙에 큰 팝업이 있는지 확인 center_crop = img[ int(h * 0.05):int(h * 0.95), int(w * 0.05):int(w * 0.95) ] if center_crop.size == 0: return False, 0.0 center_gray = cv2.cvtColor( center_crop, cv2.COLOR_BGR2GRAY ) # 평균 밝기 brightness = np.mean(center_gray) # 팝업이 있는 화면은 중앙에 비교적 큰 영역이 존재 score = 0.0 if possible >= 1: score += 0.35 if 45 < brightness < 220: score += 0.15 # 파란색 UI 영역 탐색 hsv_center = cv2.cvtColor( center_crop, cv2.COLOR_BGR2HSV ) lower_blue = np.array([80, 50, 50]) upper_blue = np.array([140, 255, 255]) blue_mask = cv2.inRange( hsv_center, lower_blue, upper_blue ) blue_ratio = np.mean(blue_mask > 0) if blue_ratio > 0.05: score += 0.30 # 밝은 글자 비율 bright_ratio = np.mean( cv2.threshold( center_gray, 180, 255, cv2.THRESH_BINARY )[1] > 0 ) if bright_ratio > 0.03: score += 0.20 return score >= MATCH_THRESHOLD, score# =========================================================# 감시 루프# =========================================================def monitor_loop(): global running global last_detected print() print("==============================") print(" LIE DETECTOR 감시 시작") print("==============================") print("감시 영역:", monitor_region) print() while running: try: screenshot = pyautogui.screenshot( region=monitor_region ) frame = cv2.cvtColor( np.array(screenshot), cv2.COLOR_RGB2BGR ) detected, score = detect_lie_detector(frame) print( f"r감지 점수: {score:.2f}", end="" ) # 새롭게 감지된 경우만 알림 if detected and not last_detected: print() print() print("🚨 LIE DETECTOR 감지!") send_discord( "🚨 **LIE DETECTOR 감지!**n" "화면에서 거짓말 탐지 미니게임이 감지되었습니다." ) # Windows 알림음 try: import winsound winsound.Beep( 1200, 500 ) winsound.Beep( 1600, 500 ) except: pass last_detected = detected except Exception as e: print() print( "감시 오류:", e ) time.sleep( CHECK_INTERVAL )# =========================================================# 메인# =========================================================def main(): global running print() print("======================================") print(" LIE DETECTOR 화면 감지기") print("======================================") print() print("1. 감시 영역을 선택합니다.") print("2. 오른쪽 아래의 팝업을 포함하도록 드래그하세요.") print() # 감시 영역 선택 RegionSelector() if monitor_region is None: print("감시 영역이 선택되지 않았습니다.") return print() print("선택된 영역:", monitor_region) print() input( "게임을 켜고 준비한 다음 ENTER를 누르세요..." ) running = True thread = threading.Thread( target=monitor_loop, daemon=True ) thread.start() print() print("감시 중입니다.") print("종료하려면 이 창에서 Ctrl + C") print() try: while True: time.sleep(1) except KeyboardInterrupt: running = False print() print("감시를 종료합니다.")if __name__ == "__main__": main()

3. 실행

CMD에서 해당 파일이 있는 폴더로 이동해서:

python lie_detector.py

실행하면 화면이 어두워지고 마우스로 감시 영역을 지정하라고 나올 거야.

여기서 네 게임의 오른쪽 아래 알림이 나타나는 영역을 넉넉하게 드래그하면 돼.



어차피 할생각도없었지만야 걍 만들어줘 도라에몽 하니깐 바로 뚝딱나오네;;

모바일 게시판 하단버튼

댓글

새로고침
새로고침

모바일 게시판 하단버튼

지금 뜨는 인벤

더보기+

모바일 게시판 리스트

모바일 게시판 하단버튼

글쓰기

모바일 게시판 페이징

최근 HOT한 콘텐츠

  • 메이플
  • 게임
  • IT
  • 유머
  • 연예
▲
AD