AGUARDANDO...

Gestão Financeira WYD

📁 Upload JSON

Veja quanto você gastou no WYD Global

Analise seu fluxo de gasto, comportamentos e investimentos no jogo.

Carregue um arquivo .json ou use o código de captura abaixo.

Como obter seus dados

1

Abra a loja do WYD Global. Na seleção de BRASIL / GLOBAL, clique com o botão direito e depois em Exibir código fonte do frame.

Passo 1 – Exibir código fonte do frame
2

Na nova aba que abrir, remova o texto view-source: da URL e pressione Enter.

Passo 2 – Remover view-source da URL
3

A loja vai carregar novamente em uma nova aba.

Passo 3 – Loja carregada na nova aba

Pressione F12 ou clique com o botão direito e escolha Inspecionar. Vá até a aba Console.

⚠ Se você acha que copiar este código dará acesso à sua senha, cartão ou itens, simplesmente não o faça. O código apenas intercepta a resposta da API de pacotes pública.

(function(){ function capturar(txt){ try{ const d=JSON.parse(txt); const h=d.historic||[]; if(!h.length)return; const j=JSON.stringify(h); navigator.clipboard.writeText(j) .then(()=>console.log('%c\u2705 Historic copiado! ('+h.length+' registros) \u2014 Volte ao Dashboard e clique \'Copiar por c\u00f3digo\'','color:#4ade80;font-weight:bold;font-size:13px;')) .catch(()=>{console.log('%c\u26a0 Cole manualmente:','color:#f0c040;font-weight:bold;');console.log(j);}); }catch(e){} } /* fetch */ const _f=window.fetch; window.fetch=async function(...a){ const res=await _f(...a); const url=(typeof a[0]==='string'?a[0]:a[0]?.url)||''; if(url.includes('cashdata'))res.clone().json().then(d=>capturar(JSON.stringify(d))); return res; }; /* XMLHttpRequest */ const _open=XMLHttpRequest.prototype.open; XMLHttpRequest.prototype.open=function(m,u,...r){this._wyd_url=u;return _open.apply(this,[m,u,...r]);}; const _send=XMLHttpRequest.prototype.send; XMLHttpRequest.prototype.send=function(...a){ this.addEventListener('load',function(){ if(this._wyd_url&&this._wyd_url.includes('cashdata'))capturar(this.responseText); }); return _send.apply(this,a); }; console.log('%c\u2694 WYD Monitor ativo! V\u00e1 at\u00e9 Pacotes.','color:#f0c040;font-weight:bold;font-size:14px;'); })();
4

Após colar o código e pressionar Enter, confirme que aparece a mensagem: ⚔ WYD Monitor ativo! Vá até Pacotes.

Em seguida, clique em uma das lojas BRASIL / GLOBAL e verifique se aparece a mensagem: ✅ Historic copiado! (XXX registros) — Volte ao Dashboard e clique 'Copiar por código'

Passo 4 – Monitor ativo e Historic copiado Passo 4b – Mensagem de sucesso Historic copiado
5

Clique em 📋 Copiar por código no topo desta página e autorize a extração do conteúdo copiado — ou pressione Ctrl+V manualmente na caixa de texto e clique em PROCESSAR.

📋 Copiar por código

Tentando ler da área de transferência... Se não funcionar automaticamente, cole o JSON abaixo.

⚔ Set Bahamut ⚔
Simulador de Refinação
Parâmetros de Simulação
Simulações entre 100 e 10.000 entregarão resultados de amostragem mais precisos.
Existe uma possibilidade não-oficial de existir uma taxa de dificuldade extra de 100→115. Coloquei 15 para resultados mais realistas.
Modo de Saída & Presets
Exibir valores em reais
Nível Inicial por Peça (Preset)
Análise de Probabilidade (Sorte vs Azar)
Consumo Médio por Refinação
Resultado por Peça do Set
Peça Sucesso Tent avg Souls avg

Digite o nome de um item para descobrir como obtê-lo.

⚔ Capa Bahamut ⚔
Refinação & Atributos
Refinação Mantle (+0 a +15)
Exibir valores em reais
Upgrade de Adicionais (Tiers)
Exibir valores em reais
⚔ Macro Jóia/Erva ⚔
Automação Open-Source (GtOkAi)
🛡️ O que é o Macro Jóia/Erva?

Este é um macro totalmente gratuito e open-source desenvolvido em Python para automatizar o uso da Jóia da Recuperação ou Ervas de Cura em debuffs permitidos no jogo.

O uso é por sua conta e risco, mas o código é aberto para que qualquer um possa verificar sua segurança e funcionamento. Ideal para quem busca agilidade e precisão média em momentos críticos de debuff.

📜 Termos de Uso: A modificação é permitida, porém os créditos para GtOkAi e o link wydglobal.pro não podem ser removidos sob nenhuma circunstância.

Guia de Instalação Passo a Passo
1

Instale o Python 3.10+

Baixe e instale a versão mais recente em python.org. IMPORTANTE: Marque a opção "Add Python to PATH" durante a instalação para que os comandos funcionem no terminal.

2

Prepare a pasta e os Ativos

Crie uma pasta chamada macro_assets no mesmo diretório onde ficará o macro. Salve as imagens abaixo dentro dela com seus respectivos nomes exatos:

anchor.png anchor.png
enfraquecer.png enfraquecer.png
congelar.png congelar.png
cancel.png cancel.png
3

Crie o arquivo requirements.txt

Este arquivo gerencia as bibliotecas necessárias. Crie-o na pasta raiz e cole o conteúdo:

opencv-python numpy pyautogui pynput Pillow customtkinter pygetwindow

No seu terminal, dentro da pasta do projeto, execute:

pip install -r requirements.txt
4

Salve o macro.py e Execute

Crie um arquivo chamado macro.py e cole o código completo abaixo. Para abrir a interface, use o comando:

# Macro de Jóia e Erva - Criado por GtOkAi # wydglobal.pro import os import time import threading import queue import cv2 import numpy as np import pyautogui import pygetwindow as gw from pynput import keyboard import customtkinter as ctk from PIL import Image # ─── Configurações e Caminhos ────────────────────────────────────────────────── PASTA_RECURSOS = 'macro_assets' IMG_ANCORA = os.path.join(PASTA_RECURSOS, 'anchor.png') NOME_JANELA = "With Your Destiny" DEBUFFS = { 'enfraquecer.png': 't', 'congelar.png': 't', 'cancel.png': 'e' } # ─── Parâmetros de Detecção ─────────────────────────────────────────────────── LIMITE_CONFIANCA = 0.8 LARGURA_VARREDURA_ESQ = 350 LARGURA_VARREDURA_DIR = 350 ALTURA_VARREDURA = 80 INTERVALO_VERIFICACAO = 0.15 # Reduzido para maior velocidade com GUI # ─── Classe Principal da Interface ─────────────────────────────────────────── class MacroInterface(ctk.CTk): def __init__(self): super().__init__() self.title("Macro de Jóia e Erva - por GtOkAi - wydglobal.pro") self.geometry("500x550") ctk.set_appearance_mode("dark") ctk.set_default_color_theme("blue") self.executando = False self.thread_monitor = None self.fila_log = queue.Queue() # Layout self.grid_columnconfigure(0, weight=1) self.grid_rowconfigure(3, weight=1) # Cabeçalho self.label_titulo = ctk.CTkLabel(self, text="MACRO DE JÓIA E ERVA", font=ctk.CTkFont(size=20, weight="bold")) self.label_titulo.grid(row=0, column=0, padx=20, pady=(20, 5)) self.label_subtitle = ctk.CTkLabel(self, text="wydglobal.pro", font=ctk.CTkFont(size=12), text_color="gray") self.label_subtitle.grid(row=1, column=0, padx=20, pady=(0, 20)) # Status self.frame_status = ctk.CTkFrame(self) self.frame_status.grid(row=2, column=0, padx=20, pady=10, sticky="ew") self.frame_status.grid_columnconfigure(0, weight=1) self.label_status = ctk.CTkLabel(self.frame_status, text="Status: Desconectado", font=ctk.CTkFont(weight="bold")) self.label_status.grid(row=0, column=0, padx=20, pady=10) # Console de Logs self.textbox_log = ctk.CTkTextbox(self, width=460, height=200) self.textbox_log.grid(row=3, column=0, padx=20, pady=10, sticky="nsew") self.textbox_log.configure(state="disabled") # Botões self.button_start = ctk.CTkButton(self, text="INICIAR MACRO (F6)", command=self.toggle_macro, height=50, font=ctk.CTkFont(size=16, weight="bold")) self.button_start.grid(row=4, column=0, padx=20, pady=20, sticky="ew") # Listener de Teclado self.listener = keyboard.Listener(on_press=self.tecla_pressionada) self.listener.start() # Update loop para logs self.update_logs() def update_logs(self): while not self.fila_log.empty(): msg = self.fila_log.get() self.textbox_log.configure(state="normal") self.textbox_log.insert("end", f"[{time.strftime('%H:%M:%S')}] {msg}\n") self.textbox_log.see("end") self.textbox_log.configure(state="disabled") self.after(100, self.update_logs) def log(self, msg): self.fila_log.put(msg) def set_status(self, text, color="white"): self.label_status.configure(text=f"Status: {text}", text_color=color) self.log(text) def tecla_pressionada(self, tecla): if tecla == keyboard.Key.f6: self.toggle_macro() def toggle_macro(self): if not self.executando: self.executando = True self.button_start.configure(text="PARAR MACRO (F6)", fg_color="#ef4444", hover_color="#991b1b") self.thread_monitor = threading.Thread(target=self.loop_monitoramento, daemon=True) self.thread_monitor.start() else: self.executando = False self.button_start.configure(text="INICIAR MACRO (F6)", fg_color=["#3B8ED0", "#1F6AA5"], hover_color=["#367E96", "#144870"]) self.set_status("Interrompido", "#ef4444") # ─── Lógica de Monitoramento (Rodando em Thread) ────────────────────────── def loop_monitoramento(self): modelos = self.carregar_recursos() if not modelos: self.executando = False return while self.executando: self.set_status("Buscando Janela do Jogo...", "#38bdf8") janelas = gw.getWindowsWithTitle(NOME_JANELA) janela = next((j for j in janelas if NOME_JANELA in j.title), None) if not janela: time.sleep(2) continue if janela.isMinimized: self.set_status("Janela Minimizada", "#facc15") time.sleep(2) continue self.set_status("Buscando Âncora...", "#38bdf8") regiao_busca_ancora = (janela.left, janela.top, 500, 300) try: ancora = pyautogui.locateOnScreen(IMG_ANCORA, region=regiao_busca_ancora, confidence=0.8) if not ancora: time.sleep(1) continue except: time.sleep(1) continue self.set_status("Monitorando Debuffs", "#4ade80") # Definir região baseada na âncora m_esq = max(0, int(ancora.left - LARGURA_VARREDURA_ESQ)) m_topo = max(0, int(ancora.top - (ALTURA_VARREDURA // 2))) m_largura = min(pyautogui.size()[0] - m_esq, int(LARGURA_VARREDURA_ESQ + LARGURA_VARREDURA_DIR + ancora.width)) m_altura = min(pyautogui.size()[1] - m_topo, int(ALTURA_VARREDURA)) regiao_debuffs = (m_esq, m_topo, m_largura, m_altura) while self.executando: # Revalidar janela nova_janela = gw.getWindowsWithTitle(NOME_JANELA) j_atual = next((j for j in nova_janela if NOME_JANELA in j.title), None) if not j_atual or j_atual.left != janela.left or j_atual.top != janela.top: break # Scan screenshot = pyautogui.screenshot(region=regiao_debuffs) screenshot_cinza = cv2.cvtColor(np.array(screenshot), cv2.COLOR_RGB2GRAY) for nome, (template, tecla) in modelos.items(): res = cv2.matchTemplate(screenshot_cinza, template, cv2.TM_CCOEFF_NORMED) _, val_max, _, _ = cv2.minMaxLoc(res) if val_max >= LIMITE_CONFIANCA: self.log(f"DETECTADO: {nome.split('.')[0].upper()} -> Acionando {tecla.upper()}") pyautogui.press(tecla) time.sleep(0.8) time.sleep(INTERVALO_VERIFICACAO) def carregar_recursos(self): if not os.path.exists(IMG_ANCORA): self.log(f"ERRO: Âncora não encontrada em {IMG_ANCORA}") return None modelos = {} for arq, tecla in DEBUFFS.items(): path = os.path.join(PASTA_RECURSOS, arq) if os.path.exists(path): img = cv2.imread(path, cv2.IMREAD_GRAYSCALE) if img is not None: modelos[arq] = (img, tecla) else: self.log(f"Aviso: {arq} não encontrado.") if not modelos: self.log("ERRO: Nenhum debuff carregado.") return None return modelos if __name__ == "__main__": app = MacroInterface() app.mainloop()
python macro.py

Após abrir a interface, é só clicar em INICIAR MACRO (F6)::

Visualização do Macro
⚔ Ancient Hunter ⚔
Previsor de Probabilidade Server-Side
Configurações de Combinação
Item em Foco
⚔ Acessório Bahamut (Tier) ⚔
Evolução Tradicional & Transcendência
Parâmetros da Simulação
Ranking Global
Histórico de up.
Pos Guild Nome / Reino Total Level Pontuação
Royal Arena
Histórico das arenas

Ultima Atualizacao

...

Carregando...

Players Rastreados

...

Na categoria atual

Arenas Detectadas

...

Carregando...

O rastreamento de arenas iniciou em 06 de Abril de 2026. Dados anteriores a esta data nao estao disponiveis.
Rank Guerreiro Pontos Win Rate Avg Kills KDR
Estatísticas Detalhadas
Análise de Guilds, Reinos e Evolução

Distribuição de Reinos

Membros por Guild (Top 10)

Top Level up

Poder Total das Guilds

Leaderboard de Guilds (Level Médio)

Rank Guild Membros Level Médio Poder Total
⚔ Banco de Guildmark ⚔
Biblioteca de símbolos das guildas
Selecione um servidor acima
⚔ Criador de Guildmark ⚔
Estúdio de Pixel Art Oficial
Membro
Líder
Sub-Líder

⚙ Configurações de Custo Global

Altere os valores e lotes para refletir o mercado atual. Estes valores afetam todos os simuladores e são salvos automaticamente.