dobain

Merge de arquivos iteminfo.lub

1 post neste tópico

Ola Pessoal,

Sabe aquelas ferramentinhas que tu nunca usa mas no momento da pressa salva a vida do cara, então passei por uma dessas e na pressa fiz esse código em php mesmo para resolver a parada, já que nem todo editor abre arquivos com mais de 100 mil linhas.

- pega o seu iteminfo.lub original e adiciona os códigos que faltam pegando do arquivo adicional
- Coloca em ordem de código (organizando aquela bagunça)

Uso um client 2014 então pode ser que nem pra todo mundo seja útil

Não me preocupei em polir o código e deve rodar ele pela linha de comando (php nomearquivo.php), usei o método FETP (Funcionou Então Ta Pronto) kkkk

Quem quiser melhorar o código, fazer uma ferramenta, sei la, fique a vontade a ideia é ajudar.

- "ah mas eu não tenho php"
- Instala um Wamp server, Xamp ou um desses ambientes da vida que vai estar disponível na sua linha de comando.

* OBS: Postei o código propositalmente para evitar desconfianças sobre o conteúdo.

 

<?php
$arquivo_atual = 'original_itemInfo.lub';
$arquivo_merge = 'iteminfo_adicional.lub';
$arquivo_saida = 'C:\novo_itemInfo.lub';
$MAX_ID = 32500; //numero maximo de ID de iten suportado pelo seu client
//
$atual = pre_ler($arquivo_atual);
$novo = pre_ler($arquivo_merge);
$saida = 'tbl = {'.PHP_EOL; // inicio da estrutura do arquivo
for($i = 0; $i<=$MAX_ID; $i++) {
    $key = 0;
    if($atual[$i]['identifiedDisplayName']) {
        $key = $i;
        $value = $atual[$i];
    } elseif($novo[$i]['identifiedDisplayName']) {
        $key = $i;
        $value = $novo[$i];
    }
    if($key && $value['identifiedDisplayName']) {
        $saida .= '   ['.$key.'] = {'.PHP_EOL;
        $saida .= '      identifiedDisplayName = ' .$value['identifiedDisplayName'].','.PHP_EOL;
        $saida .= '      identifiedResourceName = ' .$value['identifiedResourceName'].','.PHP_EOL;
        $saida .= '      identifiedDescriptionName = ' .$value['identifiedDescriptionName'].','.PHP_EOL;
        $saida .= '      unidentifiedDisplayName = ' .$value['unidentifiedDisplayName'].','.PHP_EOL;
        $saida .= '      unidentifiedResourceName = ' .$value['unidentifiedResourceName'].','.PHP_EOL;
        $saida .= '      unidentifiedDescriptionName = ' .$value['unidentifiedDescriptionName'].','.PHP_EOL;
        $saida .= '      slotCount = ' .$value['slotCount'].','.PHP_EOL;
        $saida .= '      ClassNum = ' .$value['ClassNum'].','.PHP_EOL;
        $saida .= '   },'.PHP_EOL;
    }
}
// Funcao lua no final do arquivo
$saida .= '}
main = function()
	for ItemID, DESC in pairs(tbl) do
		result, msg = AddItem(ItemID, DESC.unidentifiedDisplayName, DESC.unidentifiedResourceName, DESC.identifiedDisplayName, DESC.identifiedResourceName, DESC.slotCount, DESC.ClassNum)
		if not result == true then
			return false, msg
		end
		for k, v in pairs(DESC.unidentifiedDescriptionName) do
			result, msg = AddItemUnidentifiedDesc(ItemID, v)
			if not result == true then
				return false, msg
			end
		end
		for k, v in pairs(DESC.identifiedDescriptionName) do
			result, msg = AddItemIdentifiedDesc(ItemID, v)
			if not result == true then
				return false, msg
			end
		end
		k = DESC.unidentifiedResourceName
		v = DESC.identifiedDisplayName
	end
	return true, "good"
end'.PHP_EOL;
// salvar a saida em disco
file_put_contents($arquivo_saida, $saida);
//
// Final de mais uma voz do Brasil.
//
function pre_ler($arquivo) {
    // A proxima linha é que contem a magica toda, ela desmonta a estrutura do arquivo em conteudo
    // Se algo der errado bem provavel que tenha copiado ela incompleta
    // usei o site www.regex101.com/
    $parser = '/\[([0-9]+)\]\s=\s\{\s+([[:alnum:]]+)\s+\=\s+(.*)\,\s+([[:alpha:]]+)\s\=\s(.*)\,\s+([[:alpha:]]+)\s+\=\s(.*)\,\s+([[:alpha:]]+)\s+\=\s+(.*)\,\s+([[:alpha:]]+)\s+\=\s(.*)\,\s+([[:alpha:]]+)\s+\=\s+(.*)\,\s+([[:alpha:]]+)\s+\=\s+([0-9]+)\,\s+([[:alpha:]]+)\s+\=\s+([0-9]+)(\s|\,).*\}\,/sU';
    preg_match_all($parser,file_get_contents($arquivo),$matchs);
    $ret = [];
    for($i=0;$i<=sizeof($matchs[1])-1;$i++) {
        $ret[$matchs[1][$i]][$matchs[2][$i]] =$matchs[3][$i];
        $ret[$matchs[1][$i]][$matchs[4][$i]] =$matchs[5][$i];
        $ret[$matchs[1][$i]][$matchs[6][$i]] =$matchs[7][$i];
        $ret[$matchs[1][$i]][$matchs[8][$i]] =$matchs[9][$i];
        $ret[$matchs[1][$i]][$matchs[10][$i]]=$matchs[11][$i];
        $ret[$matchs[1][$i]][$matchs[12][$i]]=$matchs[13][$i];
        $ret[$matchs[1][$i]][$matchs[14][$i]]=$matchs[15][$i];
        $ret[$matchs[1][$i]][$matchs[16][$i]]=$matchs[17][$i];
    }  
    return $ret;
}
?>

 

Editado por dobain
0

Compartilhar este post


Link para o post
Compartilhar em outros sites