Um bot em Python projetado para automatizar a colocação de pixels em WPlace. Ele opera lendo uma imagem de referência e replicando-a no canvas do jogo, pixel por pixel, de forma otimizada e com suporte a múltiplas contas.
- Automatização de Desenho: Desenha automaticamente uma imagem pré-selecionada no canvas do WPlace.
- Detecção Automática de Pixels: Identifica de forma autônoma a quantidade de pixels disponíveis para uso, sem necessidade de calibração manual.
- Suporte a Múltiplas Contas: Capacidade de alternar entre diferentes janelas para otimizar o tempo de cooldown e acelerar o processo.
- Ferramentas de Calibração e Preparação: Um conjunto de scripts para preparar imagens, extrair paletas de cores e calibrar coordenadas.
- Suporte a Telas Retina: Lógica de correção de coordenadas para funcionar corretamente em telas de alta densidade de pixels (como as de MacBooks).
.
├── README.md
├── configs/ # Arquivos de configuração para diferentes artes
├── images/ # Imagens de referência, ícones e capturas de tela
├── src/ # Código fonte do bot
│ ├── config.py # Configurações globais e seleção de arte
│ ├── logic.py # Lógica de comparação de pixels e pintura
│ ├── main.py # Ponto de entrada da aplicação
│ └── utils.py # Funções utilitárias (OCR, gerenciamento de contas, etc.)
└── tools/ # Scripts para tarefas de calibração e preparação
- Python 3.x
- Tesseract-OCR Engine (instalado no sistema)
- Bibliotecas Python listadas em
requirements.txt. Instale-as com:(As bibliotecas incluempip install -r requirements.txt
pyautogui,opencv-python,pytesseract,Pillow,playsoundenumpy). - O jogo/aplicação WPlace aberto e visível na tela.
Para que o bot funcione corretamente, um processo de calibração inicial é necessário.
-
Escolha sua Imagem: Selecione a imagem que deseja desenhar.
-
Redimensione a Imagem: É crucial que a imagem de referência seja redimensionada para que seus pixels correspondam à grade de pixels do canvas do jogo. O script
resize.pyfoi projetado para isso.- Objetivo: Encontrar a
proporçãocorreta que faz com que a imagem redimensionada tenha exatamente as mesmas dimensões (em pixels) que a área de desenho no jogo. - Edite o script
tools/resize.py, alterando oinput_pathe ooutput_path. - Ajuste o valor da variável
proportion. Uma proporção maior que 1 aumenta a imagem; menor que 1, diminui. Você precisará experimentar até que a imagem_resized.pnggerada tenha o tamanho exato da arte no jogo. - Mova a imagem original e a
_resizedpara uma nova pasta dentro deimages/paintings/.
- Objetivo: Encontrar a
O bot precisa saber onde clicar para selecionar cada cor. Este processo usa dois scripts.
-
Tire um Print da Paleta: Com o jogo aberto, tire um print da tela inteira mostrando a paleta de cores. Salve esta imagem como
a.pngdentro da pastatools/. -
Extraia as Cores: Execute
findColor.pypara analisar a imagem e gerar uma lista das cores presentes na paleta.python tools/findColor.py
-
Encontre as Coordenadas:
- Copie a lista de cores gerada no terminal.
- Abra o script
tools/findcolorpallete.pye cole a lista na variávelCORES_PARA_ENCONTRAR. - Execute o script para obter um dicionário Python com as coordenadas de cada cor.
python tools/findcolorpallete.py
-
Atualize a Configuração: Copie o dicionário
PALETA_DE_CORESgerado e cole-o no seu arquivo de configuração de arte (veja o Passo 4).
-
Crie um Arquivo: Na pasta
configs/, copie otemplate.pye renomeie-o (ex:minha_arte_config.py). -
Edite o Arquivo: Abra seu novo arquivo e preencha todas as variáveis, incluindo a
PALETA_DE_CORESdo passo anterior, oPONTO_DE_ORIGEM_MAPA(canto superior esquerdo do canvas) e os caminhos para suas imagens. -
Selecione a Configuração: Abra o arquivo
src/config.pye altere a importação para usar seu novo arquivo.# Em src/config.py from configs.minha_arte_config import *
Antes de rodar o bot, você pode usar o script cV.py (visualizador de cores) para ver como sua imagem _resized ficará após ser "quantizada" com a paleta de cores do jogo. Isso ajuda a identificar se as cores da sua imagem correspondem bem às cores disponíveis.
- Edite o
tools/cV.pypara apontar para seu arquivo de imagem e execute-o.
Após toda a calibração:
-
Configure Múltiplas Contas (Opcional): Se for usar, abra cada conta em uma janela separada. A janela da primeira conta deve estar visível e em foco quando o script for iniciado.
-
Ajuste as Configurações Finais: Verifique as variáveis no
src/config.py(NUMERO_DE_CONTAS,COOLDOWN_ENTRE_ACOES,SWITCH_TABS). -
Inicie o Script:
./run.sh # ou python src/main.py
O bot começará a operar após uma contagem regressiva de 10 segundos.
Existem dois níveis de configuração:
| Variável | Descrição |
|---|---|
CAMINHO_IMAGEM_ANCORA |
Caminho para a imagem do ícone (brush_icon.png) usado para detectar os pixels disponíveis. |
PALETA_DE_CORES |
Dicionário com as coordenadas de cada cor (preenchido pela sua config de arte). |
BOTAO_ABRIR_PALETA_POS |
Tupla (x, y) com a posição do botão para abrir/fechar a paleta. |
COOLDOWN_ENTRE_ACOES |
Tempo (em segundos) de espera entre os ciclos de pintura. |
ESCALA_TELA |
2 para telas Retina (MacBook), 1 para telas normais. |
TOLERANCIA_COR |
Margem de diferença para que duas cores no canvas sejam consideradas iguais à do gabarito. |
SWITCH_TABS |
1 para habilitar a troca de contas, 0 para desabilitar. |
NUMERO_DE_CONTAS |
Número de janelas/contas para o bot ciclar. |
SLEEP_COEFICIENT |
Multiplicador para os time.sleep, ajustando a velocidade das ações do mouse. |
| Variável | Descrição |
|---|---|
CAMINHO_IMAGEM_A_PINTAR |
Caminho para a imagem original de alta resolução que você quer desenhar. |
CAMINHO_IMAGEM_A_PINTAR_REDIMENSIONADA |
Caminho para a imagem redimensionada (_resized.png) que serve como gabarito. |
PONTO_DE_ORIGEM_MAPA |
[CRÍTICO] Tupla (x, y) com a coordenada do canto superior esquerdo da área de desenho no jogo. |
ESCALA_DE_PIXELS |
Fator de multiplicação dos pixels da imagem redimensionada para a original (geralmente 32). |
- Este bot foi criado para um ambiente e resolução de tela específicos. Alterações na interface do jogo exigirão uma nova calibração.
- Use por sua conta e risco. A automação pode violar os termos de serviço de algumas plataformas.
