stone-rae-parser
v1.0.0
Published
Parser para arquivos .aeitems (STONE_ESSENCE) - retorna dados de itens baseado em ID
Maintainers
Readme
stone-rae-parser
Parser para arquivos .aeitems (STONE_ESSENCE) - retorna dados estruturados de itens baseado em ID.
Instalação
npm install stone-rae-parserUso Básico
Node.js - Usar dados padrão (STONE_ESSENCE.aeitems)
import { getItemById, getAllIds } from 'stone-rae-parser';
// Buscar um item pelo ID
const item = getItemById(1996);
console.log(item);
// {
// id: 1996,
// type: 1956,
// name: 'Pedra Vermelha Ardente Nv.5',
// level: 5,
// price: 800,
// ...
// }
// Obter todos os IDs disponíveis
const allIds = getAllIds();
console.log(allIds); // [1996, 1998, 2000, ...]Browser - Usar dados padrão
import { getItemById, getAllIds, loadDefaultDataFromUrl, setDefaultData } from 'stone-rae-parser';
// Opção 1: Carregar via fetch (recomendado)
await loadDefaultDataFromUrl('/assets/STONE_ESSENCE.aeitems');
const item = getItemById(1996);
// Opção 2: Usar dados já carregados como string
const fileContent = await fetch('/assets/STONE_ESSENCE.aeitems').then(r => r.text());
setDefaultData(fileContent); // Converter UTF-16LE para UTF-8 primeiro se necessário
const item2 = getItemById(1996);Usar dados customizados
import { getItemById, parseFile, parseContent } from 'stone-rae-parser';
// Opção 1: Arquivo customizado (UTF-16LE)
const item1 = getItemById(1996, './meu_arquivo.aeitems');
// Opção 2: Conteúdo como string (já em UTF-8)
const content = `531 MINHA_LISTA\n1996\n1956\n...`;
const item2 = getItemById(1996, content);
// Opção 3: Parsear manualmente
const itemsMap = parseFile('./meu_arquivo.aeitems');
const item3 = itemsMap.get(1996);
// Ou parsear conteúdo string
const itemsMap2 = parseContent(content);
const item4 = itemsMap2.get(1996);API
getItemById(id: number): StoneItem | null
Retorna um item usando os dados padrão (STONE_ESSENCE.aeitems).
getItemById(id: number, data: string | Map<number, StoneItem>): StoneItem | null
Retorna um item usando dados customizados. O parâmetro data pode ser:
- string: Caminho do arquivo
.aeitems(será lido como UTF-16LE) ou conteúdo string (já em UTF-8) - Map<number, StoneItem>: Map já parseado
getAllIds(): number[]
Retorna array com todos os IDs disponíveis nos dados padrão, ordenados.
getAllIds(data: string | Map<number, StoneItem>): number[]
Retorna array com todos os IDs disponíveis nos dados customizados, ordenados.
parseFile(filePath: string): Map<number, StoneItem>
Lê e parseia um arquivo .aeitems com codificação UTF-16LE, retornando um Map.
Apenas disponível no Node.js.
parseContent(content: string): Map<number, StoneItem>
Parseia conteúdo string (já em UTF-8) e retorna um Map. Funciona em Node.js e Browser.
loadFileFromUrl(url: string): Promise<Map<number, StoneItem>>
Carrega arquivo .aeitems via fetch (UTF-16LE) e retorna um Map parseado.
Apenas disponível no Browser.
setDefaultData(content: string): void
Define dados padrão embutidos (útil para browser). O conteúdo deve estar em UTF-8 (já convertido de UTF-16LE se necessário).
loadDefaultDataFromUrl(url: string): Promise<void>
Carrega dados padrão via fetch e armazena em cache. Apenas disponível no Browser.
Tipos TypeScript
StoneItem
interface StoneItem {
id: number; // ID único do item
type: number; // Tipo (1956=físico, 1957=mágico, etc.)
name: string; // Nome do item
modelPath: string; // Caminho do modelo 3D
iconPath: string; // Caminho do ícone
level: number; // Nível da pedra
color: number; // Cor
price: number; // Preço
shopPrice: number; // Preço na loja
installPrice: number; // Preço de instalação
uninstallPrice: number; // Preço de desinstalação
damageAddon: number; // ID do addon de dano
defenseAddon: number; // ID do addon de defesa
weaponDesc: string; // Descrição para armas
armorDesc: string; // Descrição para armaduras
pileNum: number; // Número máximo de empilhamento
hasGuid: number; // Se possui GUID
procType: number; // Tipo de processamento
combinedSwitch: number; // Switch combinado
decorationAddonId: number; // ID do addon de decoração
}StoneType (Enum)
Valores disponíveis:
StoneType.FISICO = 1956- Tipo físicoStoneType.MAGICO = 1957- Tipo mágicoStoneType.VELOCIDADE = 1958- Tipo velocidadeStoneType.HP = 1959- Tipo HPStoneType.MP = 1960- Tipo MPStoneType.CINCO_ELEMENTOS = 5287- Classe dos cinco elementosStoneType.DIVERSOS = 12636- Diversos
Formato do Arquivo .aeitems
O arquivo .aeitems tem o seguinte formato:
531 STONE_ESSENCE // Linha de header (nome da lista)
1996 // ID do primeiro item
1956 // Tipo
Pedra Vermelha Ardente Nv.5 // Nome
Models\... // Model path
Surfaces\... // Icon path
5 // Level
0 // Color
800 // Price
57143 // Shop price
2000 // Install price
2000 // Uninstall price
476 // Damage addon
477 // Defense addon
Atq +16 // Weapon desc
Def +26 // Armor desc
9999 // Pile num
0 // Has GUID
0 // Proc type
0 // Combined switch
0 // Decoration addon ID
1998 // Próximo item ID
...Compatibilidade
Node.js ✅
- Suporte completo para
parseFile()e carregamento automático de dados padrão do sistema de arquivos.
Browser ✅
- Suporte completo para
parseContent(),loadFileFromUrl(), e funções de dados customizados. - Use
loadDefaultDataFromUrl()ousetDefaultData()para carregar dados padrão no browser. parseFile()não está disponível no browser (useloadFileFromUrl()).
Notas
- Os arquivos
.aeitemsestão codificados em UTF-16LE (UCS-2 BOM). - O parser detecta automaticamente e remove o BOM se presente.
- Node.js: Dados padrão são carregados em runtime a partir do arquivo
STONE_ESSENCE.aeitemsna raiz do projeto (se disponível). - Browser: Use
loadDefaultDataFromUrl()ousetDefaultData()para definir dados padrão. - Se o arquivo padrão não for encontrado, use dados customizados ou coloque o arquivo na raiz do projeto.
Licença
MIT
