pw-elements-data
v1.0.5
Published
Biblioteca para manipulação de arquivos elements.data do Perfect World
Maintainers
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-dataOu clone o repositório:
git clone https://github.com/seu-usuario/pw-elements-data.git
cd pw-elements-data
npm installUso 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 293Arquivos 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.dataoptions.configPath- Caminho para o arquivo de configuração
Métodos
initialize()- Inicializa a biblioteca carregando os dadoslistCategories()- Lista todas as categorias disponíveislistItems(category)- Lista todos os itens de uma categoriagetItem(category, itemId)- Obtém um item específicoeditItem(category, itemId, fieldName, newValue)- Edita um itemaddItem(category, [templateItemId])- Adiciona um novo itemremoveItem(category, itemId)- Remove um itemsave()- Salva as alterações no arquivo
Funções auxiliares
parseConfig(configPath)- Analisa um arquivo de configuraçãoreadElementsData(filePath, config)- Lê um arquivo elements.datawriteElementsData(filePath, data, config)- Escreve um arquivo elements.data
Limitações
- A biblioteca atualmente não suporta completamente todos os tipos especiais de elementos (como listas de conversa).
- Alguns tipos de dados complexos (como referências a tabelas) podem não ser tratados corretamente.
- 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:
- Use
node findItem339.jspara localizar um item pelo ID - Localize o offset adequado nos resultados
- 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 339Dicas
- 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
