npm package discovery and stats viewer.

Discover Tips

  • General search

    [free text search, go nuts!]

  • Package details

    pkg:[package-name]

  • User packages

    @[username]

Sponsor

Optimize Toolset

I’ve always been into building performant and accessible sites, but lately I’ve been taking it extremely seriously. So much so that I’ve been building a tool to help me optimize and monitor the sites that I build to make sure that I’m making an attempt to offer the best experience to those who visit them. If you’re into performant, accessible and SEO friendly sites, you might like it too! You can check it out at Optimize Toolset.

About

Hi, 👋, I’m Ryan Hefner  and I built this site for me, and you! The goal of this site was to provide an easy way for me to check the stats on my npm packages, both for prioritizing issues and updates, and to give me a little kick in the pants to keep up on stuff.

As I was building it, I realized that I was actually using the tool to build the tool, and figured I might as well put this out there and hopefully others will find it to be a fast and useful way to search and browse npm packages as I have.

If you’re interested in other things I’m working on, follow me on Twitter or check out the open source projects I’ve been publishing on GitHub.

I am also working on a Twitter bot for this site to tweet the most popular, newest, random packages from npm. Please follow that account now and it will start sending out packages soon–ish.

Open Software & Tools

This site wouldn’t be possible without the immense generosity and tireless efforts from the people who make contributions to the world and share their work via open source initiatives. Thank you 🙏

© 2026 – Pkg Stats / Ryan Hefner

pw-elements-data

v1.0.5

Published

Biblioteca para manipulação de arquivos elements.data do Perfect World

Readme

PW Elements.data Library

Uma biblioteca Node.js para manipulação de arquivos elements.data do jogo Perfect World.

Recursos

  • Leitura e escrita de arquivos elements.data
  • Suporte para diferentes versões do Perfect World (através de arquivos de configuração)
  • Manipulação de itens: visualização, edição, adição e remoção
  • Suporte para codificação GBK para textos em chinês
  • Manipulação correta de diferentes tipos de dados (int32, float, wstring, etc.)
  • Ferramenta CLI integrada para uso em linha de comando
  • Backups automáticos antes de qualquer modificação

Instalação

Como dependência em seu projeto:

npm install pw-elements-data

Ou clone o repositório:

git clone https://github.com/seu-usuario/pw-elements-data.git
cd pw-elements-data
npm install

Uso como biblioteca

const { PWElementsData } = require('pw-elements-data');

async function exemplo() {
  // Inicializar a biblioteca
  const pwData = new PWElementsData({
    elementsDataPath: './elements.data',
    configPath: './configs/PW_1.5.2_v127.cfg'
  });
  
  // Carregar os dados
  await pwData.initialize();
  
  // Listar categorias
  const categorias = await pwData.listCategories();
  console.log(categorias);
  
  // Listar itens em uma categoria
  const itens = await pwData.listItems('WEAPON_MAJOR_TYPE');
  console.log(`Total de itens: ${itens.length}`);
  
  // Obter um item específico
  const item = await pwData.getItem('WEAPON_MAJOR_TYPE', 293);
  console.log(`Item: ${item.Name}`);
  
  // Editar um item
  const itemEditado = await pwData.editItem('WEAPON_MAJOR_TYPE', 293, 'Name', 'Nova Espada Lendária');
  
  // Adicionar um novo item
  const novoItem = await pwData.addItem('WEAPON_MAJOR_TYPE');
  // Ou clonar um existente
  const itemClonado = await pwData.addItem('WEAPON_MAJOR_TYPE', 293);
  
  // Remover um item
  const itemRemovido = await pwData.removeItem('WEAPON_MAJOR_TYPE', novoItem.ID);
  
  // Salvar as alterações
  await pwData.save();
}

Uso via linha de comando

A biblioteca inclui uma ferramenta de linha de comando integrada:

# Instalar globalmente
npm install -g pw-elements-data

# Ou use npx
npx pw-elements-editor [comandos]

Comandos disponíveis:

# Listar categorias
pw-elements-editor list-categories

# Listar itens em uma categoria
pw-elements-editor list-items WEAPON_MAJOR_TYPE

# Ver detalhes de um item
pw-elements-editor view-item WEAPON_MAJOR_TYPE 293

# Editar um item
pw-elements-editor edit-item WEAPON_MAJOR_TYPE 293 Name "Nova Espada Lendária"

# Adicionar um novo item
pw-elements-editor add-item WEAPON_MAJOR_TYPE

# Adicionar um novo item baseado em um existente
pw-elements-editor add-item WEAPON_MAJOR_TYPE 293

# Remover um item
pw-elements-editor remove-item WEAPON_MAJOR_TYPE 293

Arquivos de configuração

A biblioteca utiliza arquivos de configuração para definir a estrutura dos elementos para diferentes versões do Perfect World. Os arquivos de configuração estão localizados no diretório configs/.

Para utilizar uma versão específica, forneça o caminho para o arquivo de configuração adequado:

const pwData = new PWElementsData({
  configPath: './configs/PW_1.5.2_v130.cfg'
});

API

Classe PWElementsData

Construtor

new PWElementsData(options)
  • options.elementsDataPath - Caminho para o arquivo elements.data
  • options.configPath - Caminho para o arquivo de configuração

Métodos

  • initialize() - Inicializa a biblioteca carregando os dados
  • listCategories() - Lista todas as categorias disponíveis
  • listItems(category) - Lista todos os itens de uma categoria
  • getItem(category, itemId) - Obtém um item específico
  • editItem(category, itemId, fieldName, newValue) - Edita um item
  • addItem(category, [templateItemId]) - Adiciona um novo item
  • removeItem(category, itemId) - Remove um item
  • save() - Salva as alterações no arquivo

Funções auxiliares

  • parseConfig(configPath) - Analisa um arquivo de configuração
  • readElementsData(filePath, config) - Lê um arquivo elements.data
  • writeElementsData(filePath, data, config) - Escreve um arquivo elements.data

Limitações

  1. A biblioteca atualmente não suporta completamente todos os tipos especiais de elementos (como listas de conversa).
  2. Alguns tipos de dados complexos (como referências a tabelas) podem não ser tratados corretamente.
  3. O suporte para compressão MPPC ainda não está implementado.

Licença

MIT

Editor de Elements.data

Este é um conjunto de ferramentas para editar o arquivo elements.data do Perfect World.

Ferramentas Disponíveis

Script Original (editElement.js)

  • Permite listar categorias, visualizar itens e fazer edições gerais
  • Processa todo o arquivo ao fazer alterações
  • Uso: node editElement.js <comando> <parâmetros>

Editor Direto (directEdit.js)

  • Permite editar itens diretamente no arquivo sem processar todo o arquivo
  • Faz alterações apenas no offset específico do item
  • Muito mais rápido para edições simples
  • Uso: node directEdit.js <offset> <novoNome> [prefixo]

Localizando um Item para Edição

Para encontrar o offset de um item para edição direta:

  1. Use node findItem339.js para localizar um item pelo ID
  2. Localize o offset adequado nos resultados
  3. Use o directEdit.js com o offset encontrado

Exemplo de Uso

# Encontrar o item ID 339
node findItem339.js

# Editar o item diretamente (após descobrir o offset)
node directEdit.js 435776 "Espada do Pesadelo Celestial" ★

# Verificar a mudança
node editElement.js view-item WEAPON_MAJOR_TYPE 339

Dicas

  • Sempre faça backup do arquivo elements.data antes de editar
  • O script directEdit.js cria automaticamente um backup (.bak) antes de editar
  • Os nomes podem conter caracteres especiais como "★" e outros símbolos
  • Para tipos de item diferentes de WEAPON_MAJOR_TYPE, você precisará encontrar os offsets corretos com o script findItem339.js modificado para o ID desejado

Limitações

  • O editor direto atualmente só edita nomes de itens
  • Para editar outros campos, será necessário adaptar o script para identificar os offsets corretos dos campos