DA

[Encerrado] [Ajuda][Duvida]Sprites .spr

Por Daniel Bighouse, 27 de set. de 2012 em Tópicos Sem Resposta

tibia
otserv
21
4.9k
Daniel BighouseD
27 de setembro de 2012 às 15:18

Bom galera estou com uma duvida e um problema danado com o .spr do server (aquele arquivo que guarda as sprites que ficam no cliente).

 

Limite imposto por ele é de exatamente 65.535sprites.

 

Mas eu acabei de criar um .spr sem nenhuma sprite onde o Tibia Sprite Editor by Noxitu pediu que .spr tenha de 1 sprite à 2.147.483.647sprites. Isso mesmo mais de 2 trilhões de sprites!

 

Onde acho que seja o problema de muitos!

Fazer um server e um dia não poder mais colocar nenhum item, monstro, etc... (mesmo que exclua uns um dia vai acabar!)

O que acabaria com o server sem ter mais upgrade. Não teria mais coisas novas para se ver.

 

Então não sei se alguém já conseguiu ter um .spr com mais de 65.535 sprites.

Se conseguiu fala aqui e explica como fez.

 

Casso (que acho mais provável) ninguém conseguiu AINDA onde venho pedir quem gostaria de ajudar a conseguir 'quebrar' este limite de 65.535 sprites no .spr!

 

Programas usados:

 

Tibia Sprite Editor by Noxitu ver. 1.3.0

TE6.7A - Milice Edit

Dat Editor

Spr Editor v0.3 - by Trooper

 

 

 

Imagens:

Esta dele mostrando o limite(como pedem ver está com 65.534 faltando 1sprite para lotar)



RAAAAL6N_EG4TSviVRH2jlCw82tnH9FZ1ZbF_AzwcsFfFDtsshNcmgZ8GvJuze9gTraUD4cPq8onKMgt8iszL6kVcmw_CnRmyrGup70-wvh5LOsuAJtU9VDp2lBPjJ7ksASQqlTp1Fyyy3frwg.jpg

 

Imagem do .spr novo criado com nenhuma sprite como podem ver na imagem ele pede para ter entre 1sprite à 2.147.483.647sprites!

Quem não entende inglês, tradução: O valor deve ser entre 1 e 2147483647.

QQAAAL6N_EG4TSviVRH2jlCw82tH-6Ev1IBGNjEB33zlJ2Kp-ikyf5PvzM0YDsF6Rep8j5aZ9FjzH8EFtUnVRKuwFOR9zyPZHV38g9oY5qjVgTnEAJtU9VDWzey1yOQ_Cg1hCFa64cmoZOsZuQ.jpg

Editado Setembro 27 por DanielBadhu

27 de setembro de 2012 às 15:22

é impossivel aumentar o limite de sprites no tibia.spr

Daniel BighouseD
27 de setembro de 2012 às 15:25

Já ouvi uns 50 falando a mesma coisa ¬¬'

 

Mais eu não me dou por vencido e não vai ser você que vai tirar minha vontade!

Editado Setembro 27 por DanielBadhu

beddyB
27 de setembro de 2012 às 20:05

Amigo... apenas força de vontade não vai fazer com que voce descubra um jeito de colocar mais de 65.000 sprites...

Que linguagens voce conhece?

 

Não é tão simples assim!

 

Já que voce não se da por vencido... voce teria que correr atraz do que deseja.

Começe a estudar!

RZProgrammerR
28 de setembro de 2012 às 12:17

Bom, com um pouco de analise agente pode chegar em algum lugar.

valor máximo você disse que é: 65.535

 

Valor decimal: 65.535

Valor hexadecimal: FFFF

 

Possivelmente o arquivo está lendo um valor word.

Abaixo irei citar os valores para que entendam um pouco.

 

Nome da unidade : Capacidade de armazenamento

nibble: 16 casas

Byte: 256 casas

Word: 65.536 casas

Double Word: 4.294.967.296 casas

Quad Word: 18.446.744.073.709.551.616 casas

 

 

Sou novo nesse ramo de tibia, então não esperem muito ainda. Mais não dúvide da capacidade de uma pessoa.

Recomendo que estude um pouco sobre isso, possa ser que te leve a resposta. Irei dar uma estudada sobre o arquivo .spr para ver se consigo algo especifico para você.

EdMignariE
28 de setembro de 2012 às 13:11

Onde acho que seja o problema de muitos!

Fazer um server e um dia não poder mais colocar nenhum item, monstro, etc... (mesmo que exclua uns um dia vai acabar!)

O que acabaria com o server sem ter mais upgrade. Não teria mais coisas novas para se ver.

 

 

 

Problema de muitos, inclusive da cip. A partir da versão 9.60 esse limite teve que ser aumentado. Clientes antes desta versão não podem ler mais que 65.535.Ou você muda a versão do cliente ou é melhor se conformar. :/

Editado Setembro 28 por EdMignari

RZProgrammerR
28 de setembro de 2012 às 14:51

O limite está no cliente ou no arquivo .spr?

Se puderem explicar um pouco mais quem sabe posso achar a solução para vocês.

Editado Setembro 28 por WinSocket

Daniel BighouseD
28 de setembro de 2012 às 19:38

O limite está no cliente ou no arquivo .spr?

Se puderem explicar um pouco mais quem sabe posso achar a solução para vocês.

 

Na verdade eu acho que .spr não tem versão o.O

E eu peguei e estou falando só do .spr pois eu testei este limite usando o arquivo .spr(só este) não usei .dat, .exe. ou .pic!

 

Estão é só o .spr!

RZProgrammerR
28 de setembro de 2012 às 23:48

Beleza cara.

Então como nosso amigo disse que os novos estão vindo com o aumento desse "limite" no arquivo, irei pesquisar mais sobre o arquivo.

Caso eu queira compartilhar informações ou manter um contato adicione ai.

Skype: Rennan.Programmer

Messenger: R.LealFernandes@live.com

Daniel BighouseD
29 de setembro de 2012 às 09:19

Problema de muitos, inclusive da cip. A partir da versão 9.60 esse limite teve que ser aumentado. Clientes antes desta versão não podem ler mais que 65.535.Ou você muda a versão do cliente ou é melhor se conformar. :/

 

Tem algum cliente já com este aumento? (preciso só do .spr dele)

 

Mais a versão do cliente não é só o .exe que diz qual é a versão?

RZProgrammerR
29 de setembro de 2012 às 09:25

Onde acho que seja o problema de muitos!

Fazer um server e um dia não poder mais colocar nenhum item, monstro, etc... (mesmo que exclua uns um dia vai acabar!)

O que acabaria com o server sem ter mais upgrade. Não teria mais coisas novas para se ver.

 

 

 

Problema de muitos, inclusive da cip. A partir da versão 9.60 esse limite teve que ser aumentado. Clientes antes desta versão não podem ler mais que 65.535.Ou você muda a versão do cliente ou é melhor se conformar. :/

EdMignariE
29 de setembro de 2012 às 10:13

O Arquivo spr tem versão. Nos primeiros 4bytes se lê um inteiro que é assinatura da versão do arquivo. Mas o problema não esta no arquivo .spr e sim no cliente.

 

Nos primeiros bytes, ele lê assim:

 

versões anteriores a 9.6:

 

[4 bytes] = Assinatura do spr

[2 bytes] = Quantidade de sprites (0 a 65.535 sprites)

 

 

versão 9.6+

 

[4 bytes] = Assinatura do spr

[4 bytes] = Quantidade de sprites (0 a 4.294.967.295 sprites)

Editado Setembro 29 por EdMignari

Daniel BighouseD
29 de setembro de 2012 às 10:30

Se mudar a versão do cliente mudará algo no Server?

Pois de mudar só o .spr e o .dat tranquilo está resolvido!

O cliente que estou usando ele lê da 8.10 a 9.63 ^^

 

Tem como me passar algum .spr e .dat do cliente 9.6+ ?

EdMignariE
29 de setembro de 2012 às 10:55

Cada servidor tem um protocolo que, dependendo da versão, é incompativel com a versão do cliente. Mesmo seu cliente sendo multiprotocolo, quando você escolher qual protocolo vai usar, ele vai verificar se a assinatura do spr é compativel.

Editado Setembro 29 por EdMignari

RZProgrammerR
29 de setembro de 2012 às 12:41

Comparação.:

 

- Cliente e arquivo spr antigo tem 2 bytes de armazenamento

- Cliente e arquivo spr recente tem 4 bytes de armazenamento

 

Primeiro temos que avaliar 2 coisas.

Quando o aplitivo é executado ele tem espaço suficiente para os 65.536 dados. O que precisa-se saber é se o alocamento virtual criado tem espaço para armazenar.

Segundo seria o arquivo spr pois ele já está montado, o que pode acabar dando um pouco de trabalho! Se você for modificar ele terá que avaliar o fato de que ele não tem espaço já inicialmente por tanto adicionar 2 bytes no começo do arquivo pode corrompe-lo.

Caso voce tente mudar o local de leitura e contador, mudando isso você teria que modificar também o seu editor de sprite pois ele iria ler um local "falso".

Realmente é complicado pensar nissa hipótese.

 

Recomendo que você mude de cliente e arquivos amigo.

Não acho que o trabalho vá valer a pena. Caso alguem tenha uma solução poste ai.

 

Bom digo isso por experiencia própria pois já mechi com outro jogo rpg chamado "Priston Tale". E tive alguns problemas iniciais lá sobre itens que no final acabaram dando resultados.

Pois bem, se alguem conseguir algo avisa ai.

 

________________________________________________________________________________________________________

Pensamento:

 

- Criar 2 arquivos spr para o cliente.

. Primeiro passo é ajustar o local virtual para um tamanho adequado.

. Segundo seria voce usar já um arquivo spr recente e criar as funções no executavel para ler 4 bytes.

 

hipótese: Fazer a leitura do arquivo primário e sequencial arquivo secundario usando a mesma "virtual address".

Penso eu que seria mais ou menos assim:

 

Você primeiro ve de que posição parte a leitura e onde termina.

exeplo: 0x20h -> partida

. 0xF500h -> fim

 

Após saber o inicio e fim você analisa como é feita a entrada de dados.

Cada item deve ter seus bytes contados corretamente, então não coma byte para não dar erros no executavel.

exemplo: nosso item terá 0x10h de dados

 

Se o final do nosso item é 0xF500h o nosso próximo item será na posição: 0xF510h

Então o a função secundárias terá que dar inicio na nesta posição para que a leitura de cada spr sejá feita corretamente.

 

Bom, isso é uma hipótese. Não sei como é o funcionamento correto do jogo, então estou só presumindo isso.

Se alguem tiver mais informações do executavel e se for possivel ajudar seria de grande agradecimento meu.