Ir para conteúdo
Faça parte da equipe! (2024) ×
Conheça nossa Beta Zone! Novas áreas a caminho! ×
  • Quem está por aqui   0 membros estão online

    • Nenhum usuário registrado visualizando esta página.

[Código Aberto] Sistema de AutoDrop para WYD com Reconhecimento de Itens por Imagem


 Compartilhar

Posts Recomendados

Boa noite galera, venho aqui repassar um projeto que estava trabalhando a um bom tempo atrás.

 

Se trata de um sistema feito em python, para automatizar a exclusão de itens indesejados no inventário do game com base nas imagens configuradas. (Para quem quer saber mais, o código trabalha conforme alguns robôs de produção, os mesmos que separam produtos com defeitos nas fabricas, se quiser saber mais posso explicar depois).

 

O sistema foi feito com python e usa bibliotecas como Opencv, Pyautogui e mss para capturar a tela, identificar itens por imagem e realizar o drop automaticamente em clientes com interfaces que contem a lixeira no inventário (confirmação de exclusão) ou descarte jogando no chão.

 

Por se tratar de um projeto não concluido, estou repassando para estudos e aprimoramento, espero que quem utilize-o, não faça algo que de alguma forma prejudique os servidores.

 

Também vale ressaltar, que por se trata de um macro de imagem, ele captura a tela do computador e consequentemente o wyd.exe aberto, fazendo com que você precise identificar as coordenadas em sua tela e utilizar tais coordenadas para estar aplicando a configuração do macro (ele se torna indetectável para anti-cheats)

 

Como usar:

 

Spoiler

1. Instale o Python no Windows

Entre no site python.org, baixe a versão mais recente e instale no seu computador. Durante a instalação, marque a opção “Add Python to PATH”.

Depois de instalado, abra o prompt de comando e digite python --version para ver se está tudo certo.

 

2. Instale as bibliotecas

Abra o prompt de comando e digite:

pip install opencv-python pyautogui mss

Isso vai instalar tudo que o script precisa para funcionar.

 

3. Prepare a pasta do projeto

Crie uma pasta com o nome que desejar

Dentro dela, crie outra pasta com o nome templates (onde irá ficar as imagens dos itens)

Salve o código com o nome script.py dentro da pasta principal (na primeira pasta que você criou)

 

4. Capture as imagens dos itens

Abra o WYD e deixe o inventário visível

Use a ferramenta de captura do Windows

Recorte exatamente a imagem do item que você quer excluir e salve como PNG dentro da pasta templates

Você pode dar o nome que quiser, mas depois precisa colocar esse nome no código

 

5. Pegue as coordenadas da tela

Abra o Python e digite:

import pyautogui
print(pyautogui.position())

Deixe o mouse parado em cima do slot onde o item será jogado e veja o valor de X e Y

Depois, faça o mesmo com o botão de confirmação da exclusão (se houve na interface do cliente)

Coloque esses valores no código, nos campos DELETE_SLOT_COORDS e CONFIRM_BUTTON_COORDS

Também use esse método para definir onde está o inventário na tela, informando o topo (top), a lateral (left), a largura (width) e a altura (height)

 

6. Execute o script

Abra o prompt de comando

Vá até a pasta onde está o script com o comando cd

Digite python script.py

Deixe o jogo aberto com o inventário visível. O script vai começar a procurar pelos itens que você configurou e excluir automaticamente

 

Código:

 

Spoiler

import cv2
import pyautogui
import time
import numpy as np
from mss import mss

# Região do inventário na tela (ajuste conforme a resolução e posição do jogo)
INVENTORY_REGION = {"top": 400, "left": 800, "width": 400, "height": 400}

# Caminhos para as imagens dos itens indesejados (templates)
TEMPLATES = {
    "common_item": "templates/common_item.png",
    # Adicione mais templates conforme necessário
}

# Coordenadas do slot de exclusão (ajuste conforme sua tela)
DELETE_SLOT_COORDS = {"x": 900, "y": 500}

# Coordenadas do botão de confirmação (ajuste conforme sua tela)
CONFIRM_BUTTON_COORDS = {"x": 1000, "y": 600}

def capture_inventory(region):
    with mss() as sct:
        screenshot = sct.grab(region)
        img = np.array(screenshot)
        return cv2.cvtColor(img, cv2.COLOR_BGRA2BGR)

def match_template(image, template_path, threshold=0.8):
    template = cv2.imread(template_path, cv2.IMREAD_UNCHANGED)
    result = cv2.matchTemplate(image, template, cv2.TM_CCOEFF_NORMED)
    locations = np.where(result >= threshold)
    return zip(*locations[::-1])  # Retorna posições x, y

def manage_inventory(image):
    for item_name, template_path in TEMPLATES.items():
        matches = match_template(image, template_path)
        for (x, y) in matches:
            print(f"Item '{item_name}' encontrado em ({x}, {y})")
            move_and_delete_item(x, y)

def move_and_delete_item(x, y):
    # Move até o item
    pyautogui.moveTo(x + INVENTORY_REGION["left"], y + INVENTORY_REGION["top"])
    pyautogui.mouseDown()
    time.sleep(0.2)

    # Arrasta até o slot de exclusão
    pyautogui.moveTo(DELETE_SLOT_COORDS["x"], DELETE_SLOT_COORDS["y"])
    pyautogui.mouseUp()
    time.sleep(0.5)

    # Clica no botão de confirmação
    pyautogui.moveTo(CONFIRM_BUTTON_COORDS["x"], CONFIRM_BUTTON_COORDS["y"])
    pyautogui.click()
    print("Item excluído com sucesso.")
    time.sleep(1)

def main():
    print("Iniciando monitoramento do inventário...")
    while True:
        inventory_image = capture_inventory(INVENTORY_REGION)
        manage_inventory(inventory_image)
        time.sleep(5)  # Espera antes da próxima varredura

if __name__ == "__main__":
    main()

 

 

Observações importantes:

1. Certifique-se de criar a pasta Templates e colocar as imagens dos itens que deseja excluir dentro dela.

2.As coordenadas de região do inventário, slot de exclusão e botão de confirmação precisam ser ajustadas de acordo com sua tela. Podendo usar o pyautogui.position() para pegar as coordenadas corretas.

3. Talvez a função de capturar coordenadas em modo de tela cheia do WYDFAK possa pegar as coordenadas. (não testei)

4. Isso é só a ponta de um projeto incrível que pode ser feito

 

NÃO TESTE COM SEUS ITENS OU DROPS QUE TEM VALOR ALTO

 

Tive essa ideia de projeto, quando estava fazendo uma automação que separa paçocas quebradas.

Editado por bill3002
  • Curtir 5

A maior arma contra o sistema, é o conhecimento.

Link para o comentário
Compartilhar em outros sites

 Compartilhar

×
×
  • Criar Novo...

Informação Importante

Nós fazemos uso de cookies no seu dispositivo para ajudar a tornar este site melhor. Você pode ajustar suas configurações de cookies , caso contrário, vamos supor que você está bem para continuar.