Skip to content

Latest commit

 

History

History
90 lines (66 loc) · 3.28 KB

research.md

File metadata and controls

90 lines (66 loc) · 3.28 KB

Research — Perfect World Reroller

Objetivo

App que lê atributos de equipamentos (R8 Up2/Up3, G17, G18) e astrolábios diretamente da memória do processo do jogo e decide automaticamente se mantém ou rola novamente com base em critérios do usuário.

Itens alvo

  • R8 Up2/Up3, G17, G18 — 4 linhas de atributos dinâmicos
  • Astrolábio — slots com aptidões + lista de addons

Estrutura de dados

addon_data (16 bytes por atributo)

struct addon_data {
    int id;        // 4 bytes — ID do tipo de atributo
    int arg[3];    // 12 bytes — arg[0]=valor, arg[1]=tier, arg[2]=extra
};

Cada item tem uma ADDON_LIST (vetor sequencial de addon_data).

Máscara de ID

int tipo_puro = addon_id & 0x0000FFFF; // remove flags (Embedded, Engraved, Inherited)

IDs mapeados

Atributo Handler IDs conhecidos
STR enhance_str_addon 1084–1087, 1098, 1104–1108, 1124–1128, 1429–1433, 1912–1917, 1936–1944, 2272, 2567–2575, 2718, 2745, 3011, 3055, 3072, 3232
AGI enhance_agi_addon 1088–1092, 1109–1113, 1129–1133, 1434–1438, 1918–1923, 1945–1953, 2271, 2576–2584, 2719, 2746, 3015, 3056, 3073, 3234
ENG (mag) enhance_eng_addon 1093–1097, 1114–1118, 1134–1138, 1460–1464, 1930–1935, 1963–1971, 2270, 2585–2593, 2717, 2744, 3013, 3054, 3071, 3233
VIT enhance_vit_addon 1099–1103, 1119–1123, 1139–1143, 1444–1448, 1924–1929, 1954–1962, 2273, 2558–2566, 2720, 2747, 3017, 3057, 3074, 3235
Vigor enhance_vigour 3043, 3044, 3148–3151, 3196, 3202, 3209–3212, 3236–3238
Defesa IA_EA_ESS<defense> 216–220 (variantes scale 221–225)
Resist. item_armor_enhance_resistance<N> 226–260+ (N=0..4)

O valor do atributo está em arg[0].

Astrolábio

struct astrolabe_essence {
    int   exp;
    unsigned char  level;
    unsigned short slot;
    unsigned short aptit[ASTROLABE_SLOT_COUNT];
};

class astrolabe_item {
    astrolabe_essence _ess;
    ADDON_LIST _total_addon;
};

Reroll: FlushGeniusPoint() → ShuffleSlot() + ShuffleAddon().

Fluxo do reroll

Jogador usa Spirit of the Forge
  → servidor gera novos addons via generate_addon()
  → substitui _total_addon[i]
  → OnRefreshItem() envia resultado ao cliente
  → app lê memória → compara com critérios → decide automaticamente

Stack

Componente Tecnologia
Leitura memória ReadProcessMemory (Win32 API)
Cliques SendMessage / PostMessage
UI WinForms (.NET 8)

Leitura de memória em vez de OCR (frágil, dependente de resolução) ou interceptação de pacotes (mais trabalhoso).

Próximos passos

  • Extrair lista completa de IDs do source (item_addon.cpp)
  • Montar dicionário id → nome legível para a UI
  • Localizar ADDON_LIST na memória com Cheat Engine
  • Implementar módulo de leitura e parser de addons
  • Implementar lógica de decisão + simulação de clique
  • UI com seleção de atributos e valores mínimos