kasarreiss
80+
- Katılım
- 14 Haziran 2024
- Mesajlar
- 386
- Reaksiyon skoru
- 40
ben yeni yapay zeka ile bir kodlama yaptım ama sorunlu çalışıyor ve ne denersem deniyim düzeltemiyorum minecraftda 5 oyun modu var balık tutmak için ve hepsinde arklı bir hamle ayapman lazım onu kendi algılayıp hangisini nasıl yapması gerektiğini yaptı ama hep biryerde hata oluyor şuan elimde olan kodlamayı aşağıya bırakıyorum eğer bir gelişme olursda o halini güncellerim yardım eden herkese şimdiden teşekkürler
import time
import threading
import cv2
import numpy as np
import pyautogui
import mss
pyautogui.PAUSE = 0.001
SCREEN_W, SCREEN_H = pyautogui.size() # 2560x1440 öneriliyor
BAR_REGION = (
int(SCREEN_W * 0.1),
int(SCREEN_H * 0.38),
int(SCREEN_W * 0.8),
int(SCREEN_H * 0.24),
)
sct = mss.mss()
settings = {
"green_bar": True, # Yeşil bar zamanlama
"click_spam": True, # Sol tık spam
"shift_spam": True, # SHIFT mini-game
"running": True,
}
# HSV aralıkları
YELLOW_LOW = np.array([15, 80, 80])
YELLOW_HIGH = np.array([35, 255, 255])
BLUE_LOW = np.array([90, 40, 40])
BLUE_HIGH = np.array([140, 255, 255])
GREEN_LOW = np.array([40, 80, 80])
GREEN_HIGH = np.array([85, 255, 255])
RED1_LOW = np.array([0, 90, 90])
RED1_HIGH = np.array([10, 255, 255])
RED2_LOW = np.array([170, 90, 90])
RED2_HIGH = np.array([180, 255, 255])
TEXT_GREEN_LOW = np.array([40, 200, 40])
TEXT_GREEN_HIGH = np.array([90, 255, 255])
TEXT_RED_LOW = np.array([0, 0, 180])
TEXT_RED_HIGH = np.array([40, 80, 255])
WHITE_LOW = np.array([0, 0, 210])
WHITE_HIGH = np.array([180, 40, 255])
def grab_region(region):
x, y, w, h = region
monitor = {"left": x, "top": y, "width": w, "height": h}
img = np.array(sct.grab(monitor))[:, :, :3]
return img
def has_bar_frame(img):
hsv = cv2.cvtColor(img, cv2.COLOR_BGR2HSV)
yellow_mask = cv2.inRange(hsv, YELLOW_LOW, YELLOW_HIGH)
blue_mask = cv2.inRange(hsv, BLUE_LOW, BLUE_HIGH)
return yellow_mask.mean() > 3 and blue_mask.mean() > 3
# 1) YEŞİL BAR (kanca yeşile gelince 1 sol tık)
def handle_green_bar(img):
if not settings["green_bar"]:
return False
hsv = cv2.cvtColor(img, cv2.COLOR_BGR2HSV)
green_mask = cv2.inRange(hsv, GREEN_LOW, GREEN_HIGH)
ys, xs = np.where(green_mask > 0)
if len(xs) < 30:
return False
green_center_x = int(xs.mean())
gray = cv2.cvtColor(img, cv2.COLOR_BGR2GRAY)
_, thr = cv2.threshold(gray, 210, 255, cv2.THRESH_BINARY)
cnts, _ = cv2.findContours(thr, cv2.RETR_EXTERNAL, cv2.CHAIN_APPROX_SIMPLE)
hook_x = None
h, w = img.shape[:2]
for c in cnts:
x, y, cw, ch = cv2.boundingRect(c)
if 4 < cw < 40 and 8 < ch < 60 and h * 0.2 < y < h * 0.8:
hook_x = x + cw // 2
break
if hook_x is None:
return False
if abs(hook_x - green_center_x) <= 20:
pyautogui.click()
time.sleep(0.03)
return True
return False
# 2) SOL TIK SPAM
def handle_click_spam(img):
if not settings["click_spam"]:
return False
hsv = cv2.cvtColor(img, cv2.COLOR_BGR2HSV)
green_mask = cv2.inRange(hsv, TEXT_GREEN_LOW, TEXT_GREEN_HIGH)
red_mask = cv2.inRange(hsv, TEXT_RED_LOW, TEXT_RED_HIGH)
if green_mask.mean() > 1.5 and red_mask.mean() > 1.5:
end = time.time() + 2.0
while time.time() < end and settings["running"] and settings["click_spam"]:
pyautogui.click()
time.sleep(0.005)
return True
return False
# 3) SHIFT MINI-GAME (senin tarifine göre)
class ShiftState:
def __init__(self):
self.active = False # şu an shift mini-game ekranında mıyız
self.shift_down = False # şu an shift basılı mı
self.pause_until = 0.0 # kırmızı görüldü, bu zamana kadar basma
shift_state = ShiftState()
def is_shift_screen(img):
"""
SHIFT oyununu ayırt et:
- Altın çerçeveli bar var.
- Ortada koyu kutu ve etrafında beyaz SHIFT tuş ikonları (çok beyaz).
- Yeşil yazı yok (click spam değil).
- İnce yeşil bar yok (yeşil bar oyunu değil).
"""
hsv = cv2.cvtColor(img, cv2.COLOR_BGR2HSV)
# Diğer oyun işaretleri varsa bu değil
if cv2.inRange(hsv, TEXT_GREEN_LOW, TEXT_GREEN_HIGH).mean() > 1.0:
return False
if cv2.inRange(hsv, GREEN_LOW, GREEN_HIGH).mean() > 1.0:
return False
# Ortadaki alan
h, w = img.shape[:2]
cx1, cy1 = int(w * 0.2), int(h * 0.0)
cx2, cy2 = int(w * 0.8), int(h * 0.6)
center_hsv = hsv[cy1:cy2, cx1:cx2]
# Beyaz SHIFT tuşları
white_mask = cv2.inRange(center_hsv, WHITE_LOW, WHITE_HIGH)
white_ratio = white_mask.mean()
return white_ratio > 2.0 # yeterince beyaz alan varsa SHIFT ekranı varsay
def detect_red_near_fisher(img):
"""
Balıkçının yanındaki kırmızı efektleri bulmak için:
Barın ortasındaki bölgede kırmızı yoğunluğu var mı bak.
"""
hsv = cv2.cvtColor(img, cv2.COLOR_BGR2HSV)
h, w = img.shape[:2]
# Ortadaki küçük alan (balıkçı + yakın çevresi)
rx1, ry1 = int(w * 0.4), int(h * 0.05)
rx2, ry2 = int(w * 0.6), int(h * 0.45)
region = hsv[ry1:ry2, rx1:rx2]
r1 = cv2.inRange(region, RED1_LOW, RED1_HIGH)
r2 = cv2.inRange(region, RED2_LOW, RED2_HIGH)
red_ratio = max(r1.mean(), r2.mean())
return red_ratio > 1.5
def handle_shift_game(img):
if not settings["shift_spam"]:
# Ayar kapalıysa aktifse bile shift'i bırak
if shift_state.shift_down:
pyautogui.keyUp("shift")
shift_state.shift_down = False
shift_state.active = False
return False
now = time.time()
on_shift_screen = is_shift_screen(img)
if not on_shift_screen:
# Ekran değişti: oyun bitti, shift bırak
if shift_state.shift_down:
pyautogui.keyUp("shift")
shift_state.shift_down = False
shift_state.active = False
return False
# Buraya geldiysek shift mini-game içindeyiz
if not shift_state.active:
shift_state.active = True
shift_state.pause_until = 0.0
# oyuna yeni girdik: hemen shift basılı tut
if not shift_state.shift_down:
pyautogui.keyDown("shift")
shift_state.shift_down = True
# Kırmızı efekt var mı?
red_here = detect_red_near_fisher(img)
# Eğer şu an kırmızı görüldüyse: 3 saniye shift bırak
if red_here and now >= shift_state.pause_until:
# kırmızı tetikledi
if shift_state.shift_down:
pyautogui.keyUp("shift")
shift_state.shift_down = False
shift_state.pause_until = now + 3.0
return True
# Eğer kırmızı bekleme süresi dolduysa ve shift basılı değilse:
if now >= shift_state.pause_until:
if not shift_state.shift_down:
pyautogui.keyDown("shift")
shift_state.shift_down = True
# Eğer hâlâ bekleme süresindeysek (pause_until > now):
# shift basılı olmamalı
if now < shift_state.pause_until:
if shift_state.shift_down:
pyautogui.keyUp("shift")
shift_state.shift_down = False
return True # shift ekranındayız, işlendi
def bot_loop():
time.sleep(2)
print("[BOT] Başladı. Menü açık, 'q' ile kapatabilirsin.")
while settings["running"]:
frame = grab_region(BAR_REGION)
if not has_bar_frame(frame):
time.sleep(0.03)
continue
# Öncelik sırası: click spam -> shift -> yeşil bar
if handle_click_spam(frame):
continue
# SHIFT oyununu özel state ile yönet
if handle_shift_game(frame):
# shift ekranındaysak yeşil bar fonksiyonunu karıştırma
time.sleep(0.02)
continue
# Yeşil bar
handle_green_bar(frame)
time.sleep(0.01)
# çıkarken shift bırak
if shift_state.shift_down:
pyautogui.keyUp("shift")
print("[BOT] Durduruldu.")
def print_menu():
print("\n=== Melonya Bot Menü ===")
print(f"1 - Yeşil bar (kanca -> yeşil) : {'AÇIK' if settings['green_bar'] else 'KAPALI'}")
print(f"2 - Sol tık spam mini-game : {'AÇIK' if settings['click_spam'] else 'KAPALI'}")
print(f"3 - SHIFT mini-game : {'AÇIK' if settings['shift_spam'] else 'KAPALI'}")
print("9 - Hepsini AÇ")
print("0 - Hepsini KAPAT")
print("q - Botu kapat")
print("========================")
def menu_loop():
print_menu()
while settings["running"]:
c = input("Seçim: ").strip().lower()
if c == "1":
settings["green_bar"] = not settings["green_bar"]
print(f"[MENÜ] Yeşil bar: {'AÇIK' if settings['green_bar'] else 'KAPALI'}")
elif c == "2":
settings["click_spam"] = not settings["click_spam"]
print(f"[MENÜ] Sol tık spam: {'AÇIK' if settings['click_spam'] else 'KAPALI'}")
elif c == "3":
settings["shift_spam"] = not settings["shift_spam"]
print(f"[MENÜ] SHIFT mini-game: {'AÇIK' if settings['shift_spam'] else 'KAPALI'}")
elif c == "9":
settings["green_bar"] = settings["click_spam"] = settings["shift_spam"] = True
print("[MENÜ] Tüm modlar AÇIK.")
elif c == "0":
settings["green_bar"] = settings["click_spam"] = settings["shift_spam"] = False
print("[MENÜ] Tüm modlar KAPALI.")
elif c == "q":
print("[MENÜ] Çıkış...")
settings["running"] = False
else:
print("[MENÜ] Geçersiz seçim.")
print_menu()
def main():
print("Melonya fishing bot başlıyor. 2 sn sonra aktif.")
bot_thread = threading.Thread(target=bot_loop, daemon=True)
bot_thread.start()
menu_loop()
bot_thread.join()
print("Tamamen kapandı.")
if __name__ == "__main__":
main()
import time
import threading
import cv2
import numpy as np
import pyautogui
import mss
pyautogui.PAUSE = 0.001
SCREEN_W, SCREEN_H = pyautogui.size() # 2560x1440 öneriliyor
BAR_REGION = (
int(SCREEN_W * 0.1),
int(SCREEN_H * 0.38),
int(SCREEN_W * 0.8),
int(SCREEN_H * 0.24),
)
sct = mss.mss()
settings = {
"green_bar": True, # Yeşil bar zamanlama
"click_spam": True, # Sol tık spam
"shift_spam": True, # SHIFT mini-game
"running": True,
}
# HSV aralıkları
YELLOW_LOW = np.array([15, 80, 80])
YELLOW_HIGH = np.array([35, 255, 255])
BLUE_LOW = np.array([90, 40, 40])
BLUE_HIGH = np.array([140, 255, 255])
GREEN_LOW = np.array([40, 80, 80])
GREEN_HIGH = np.array([85, 255, 255])
RED1_LOW = np.array([0, 90, 90])
RED1_HIGH = np.array([10, 255, 255])
RED2_LOW = np.array([170, 90, 90])
RED2_HIGH = np.array([180, 255, 255])
TEXT_GREEN_LOW = np.array([40, 200, 40])
TEXT_GREEN_HIGH = np.array([90, 255, 255])
TEXT_RED_LOW = np.array([0, 0, 180])
TEXT_RED_HIGH = np.array([40, 80, 255])
WHITE_LOW = np.array([0, 0, 210])
WHITE_HIGH = np.array([180, 40, 255])
def grab_region(region):
x, y, w, h = region
monitor = {"left": x, "top": y, "width": w, "height": h}
img = np.array(sct.grab(monitor))[:, :, :3]
return img
def has_bar_frame(img):
hsv = cv2.cvtColor(img, cv2.COLOR_BGR2HSV)
yellow_mask = cv2.inRange(hsv, YELLOW_LOW, YELLOW_HIGH)
blue_mask = cv2.inRange(hsv, BLUE_LOW, BLUE_HIGH)
return yellow_mask.mean() > 3 and blue_mask.mean() > 3
# 1) YEŞİL BAR (kanca yeşile gelince 1 sol tık)
def handle_green_bar(img):
if not settings["green_bar"]:
return False
hsv = cv2.cvtColor(img, cv2.COLOR_BGR2HSV)
green_mask = cv2.inRange(hsv, GREEN_LOW, GREEN_HIGH)
ys, xs = np.where(green_mask > 0)
if len(xs) < 30:
return False
green_center_x = int(xs.mean())
gray = cv2.cvtColor(img, cv2.COLOR_BGR2GRAY)
_, thr = cv2.threshold(gray, 210, 255, cv2.THRESH_BINARY)
cnts, _ = cv2.findContours(thr, cv2.RETR_EXTERNAL, cv2.CHAIN_APPROX_SIMPLE)
hook_x = None
h, w = img.shape[:2]
for c in cnts:
x, y, cw, ch = cv2.boundingRect(c)
if 4 < cw < 40 and 8 < ch < 60 and h * 0.2 < y < h * 0.8:
hook_x = x + cw // 2
break
if hook_x is None:
return False
if abs(hook_x - green_center_x) <= 20:
pyautogui.click()
time.sleep(0.03)
return True
return False
# 2) SOL TIK SPAM
def handle_click_spam(img):
if not settings["click_spam"]:
return False
hsv = cv2.cvtColor(img, cv2.COLOR_BGR2HSV)
green_mask = cv2.inRange(hsv, TEXT_GREEN_LOW, TEXT_GREEN_HIGH)
red_mask = cv2.inRange(hsv, TEXT_RED_LOW, TEXT_RED_HIGH)
if green_mask.mean() > 1.5 and red_mask.mean() > 1.5:
end = time.time() + 2.0
while time.time() < end and settings["running"] and settings["click_spam"]:
pyautogui.click()
time.sleep(0.005)
return True
return False
# 3) SHIFT MINI-GAME (senin tarifine göre)
class ShiftState:
def __init__(self):
self.active = False # şu an shift mini-game ekranında mıyız
self.shift_down = False # şu an shift basılı mı
self.pause_until = 0.0 # kırmızı görüldü, bu zamana kadar basma
shift_state = ShiftState()
def is_shift_screen(img):
"""
SHIFT oyununu ayırt et:
- Altın çerçeveli bar var.
- Ortada koyu kutu ve etrafında beyaz SHIFT tuş ikonları (çok beyaz).
- Yeşil yazı yok (click spam değil).
- İnce yeşil bar yok (yeşil bar oyunu değil).
"""
hsv = cv2.cvtColor(img, cv2.COLOR_BGR2HSV)
# Diğer oyun işaretleri varsa bu değil
if cv2.inRange(hsv, TEXT_GREEN_LOW, TEXT_GREEN_HIGH).mean() > 1.0:
return False
if cv2.inRange(hsv, GREEN_LOW, GREEN_HIGH).mean() > 1.0:
return False
# Ortadaki alan
h, w = img.shape[:2]
cx1, cy1 = int(w * 0.2), int(h * 0.0)
cx2, cy2 = int(w * 0.8), int(h * 0.6)
center_hsv = hsv[cy1:cy2, cx1:cx2]
# Beyaz SHIFT tuşları
white_mask = cv2.inRange(center_hsv, WHITE_LOW, WHITE_HIGH)
white_ratio = white_mask.mean()
return white_ratio > 2.0 # yeterince beyaz alan varsa SHIFT ekranı varsay
def detect_red_near_fisher(img):
"""
Balıkçının yanındaki kırmızı efektleri bulmak için:
Barın ortasındaki bölgede kırmızı yoğunluğu var mı bak.
"""
hsv = cv2.cvtColor(img, cv2.COLOR_BGR2HSV)
h, w = img.shape[:2]
# Ortadaki küçük alan (balıkçı + yakın çevresi)
rx1, ry1 = int(w * 0.4), int(h * 0.05)
rx2, ry2 = int(w * 0.6), int(h * 0.45)
region = hsv[ry1:ry2, rx1:rx2]
r1 = cv2.inRange(region, RED1_LOW, RED1_HIGH)
r2 = cv2.inRange(region, RED2_LOW, RED2_HIGH)
red_ratio = max(r1.mean(), r2.mean())
return red_ratio > 1.5
def handle_shift_game(img):
if not settings["shift_spam"]:
# Ayar kapalıysa aktifse bile shift'i bırak
if shift_state.shift_down:
pyautogui.keyUp("shift")
shift_state.shift_down = False
shift_state.active = False
return False
now = time.time()
on_shift_screen = is_shift_screen(img)
if not on_shift_screen:
# Ekran değişti: oyun bitti, shift bırak
if shift_state.shift_down:
pyautogui.keyUp("shift")
shift_state.shift_down = False
shift_state.active = False
return False
# Buraya geldiysek shift mini-game içindeyiz
if not shift_state.active:
shift_state.active = True
shift_state.pause_until = 0.0
# oyuna yeni girdik: hemen shift basılı tut
if not shift_state.shift_down:
pyautogui.keyDown("shift")
shift_state.shift_down = True
# Kırmızı efekt var mı?
red_here = detect_red_near_fisher(img)
# Eğer şu an kırmızı görüldüyse: 3 saniye shift bırak
if red_here and now >= shift_state.pause_until:
# kırmızı tetikledi
if shift_state.shift_down:
pyautogui.keyUp("shift")
shift_state.shift_down = False
shift_state.pause_until = now + 3.0
return True
# Eğer kırmızı bekleme süresi dolduysa ve shift basılı değilse:
if now >= shift_state.pause_until:
if not shift_state.shift_down:
pyautogui.keyDown("shift")
shift_state.shift_down = True
# Eğer hâlâ bekleme süresindeysek (pause_until > now):
# shift basılı olmamalı
if now < shift_state.pause_until:
if shift_state.shift_down:
pyautogui.keyUp("shift")
shift_state.shift_down = False
return True # shift ekranındayız, işlendi
def bot_loop():
time.sleep(2)
print("[BOT] Başladı. Menü açık, 'q' ile kapatabilirsin.")
while settings["running"]:
frame = grab_region(BAR_REGION)
if not has_bar_frame(frame):
time.sleep(0.03)
continue
# Öncelik sırası: click spam -> shift -> yeşil bar
if handle_click_spam(frame):
continue
# SHIFT oyununu özel state ile yönet
if handle_shift_game(frame):
# shift ekranındaysak yeşil bar fonksiyonunu karıştırma
time.sleep(0.02)
continue
# Yeşil bar
handle_green_bar(frame)
time.sleep(0.01)
# çıkarken shift bırak
if shift_state.shift_down:
pyautogui.keyUp("shift")
print("[BOT] Durduruldu.")
def print_menu():
print("\n=== Melonya Bot Menü ===")
print(f"1 - Yeşil bar (kanca -> yeşil) : {'AÇIK' if settings['green_bar'] else 'KAPALI'}")
print(f"2 - Sol tık spam mini-game : {'AÇIK' if settings['click_spam'] else 'KAPALI'}")
print(f"3 - SHIFT mini-game : {'AÇIK' if settings['shift_spam'] else 'KAPALI'}")
print("9 - Hepsini AÇ")
print("0 - Hepsini KAPAT")
print("q - Botu kapat")
print("========================")
def menu_loop():
print_menu()
while settings["running"]:
c = input("Seçim: ").strip().lower()
if c == "1":
settings["green_bar"] = not settings["green_bar"]
print(f"[MENÜ] Yeşil bar: {'AÇIK' if settings['green_bar'] else 'KAPALI'}")
elif c == "2":
settings["click_spam"] = not settings["click_spam"]
print(f"[MENÜ] Sol tık spam: {'AÇIK' if settings['click_spam'] else 'KAPALI'}")
elif c == "3":
settings["shift_spam"] = not settings["shift_spam"]
print(f"[MENÜ] SHIFT mini-game: {'AÇIK' if settings['shift_spam'] else 'KAPALI'}")
elif c == "9":
settings["green_bar"] = settings["click_spam"] = settings["shift_spam"] = True
print("[MENÜ] Tüm modlar AÇIK.")
elif c == "0":
settings["green_bar"] = settings["click_spam"] = settings["shift_spam"] = False
print("[MENÜ] Tüm modlar KAPALI.")
elif c == "q":
print("[MENÜ] Çıkış...")
settings["running"] = False
else:
print("[MENÜ] Geçersiz seçim.")
print_menu()
def main():
print("Melonya fishing bot başlıyor. 2 sn sonra aktif.")
bot_thread = threading.Thread(target=bot_loop, daemon=True)
bot_thread.start()
menu_loop()
bot_thread.join()
print("Tamamen kapandı.")
if __name__ == "__main__":
main()