Jump to content

Como corrigir os erros comuns dos Servers


Recommended Posts

APRESENTAÇÃO

Olá pessoal, eu estive criando um servidor "Baiak" por um bom tempo, um projeto que não sei nem se vai para frente mas o ponto é que conforme criava tive muitos e muitos erros e fui corrigindo, pesquisando e pegando informações de um lado e de outro... Muitos erros eu encontrei solução rápida e outros eu não encontrava tão facilmente assim ou então não achava explicações nem nada. Ai para mudar um pouco minha existência insignificante eu decidi aprender a ver qual era o erro e também como arruma-lo. Enfim, eis que o tempo se passou e eu precisei pegar quests básicas de algum outro servidor para poder arrumar e por no meu, ai juntando um mais um decidi aproveitar e criar esse tópico corrigindo todo esse Baiak que eu peguei.

 

DADOS DO SERVIDOR

Nome: Baiak Speed

Versão: 8.60

Database: Sqlite

 

 

AO TRABALHO

Ao abrir o servidor eu encontrei diversos erros, para quem quiser ver segue aqui a baixo o link do pastebin para não travar muito o tópico.

Retorno do TFS antes de quaisquer edições

 

PRIMEIRO ERRO

Tá certo, agora vamos começar primeiramente diminuindo o número de linhas para reduzir um pouco a confusão em ver os erros, para isso vamos remover todos os erros deste tipo:

[9:49:58.694] [Error - IOMapSerialize::loadMapRelational] Unserialization of invalid tile at position ( 32333 / 32249 / 005 )

Correcção:

Spoiler

Abra o Sqlite Studio e clique no botão "add database" para poder cadastrar a db do seu servidor

 

image.png.45756552c90a5fc10e747fe39db920b9.png

 

Clique no botão "browse" para encontrar o arquivo .s3db do seu otserver.

 

image.png.f7c36fcdd9448a6fb3c8102a45538c80.png

 

Selecione o arquivo do servidor e abra-o.

 

image.png.9d078d17b6470be83b9eda088e7f8216.png

 

Expanda sua database para ver as tabelas que vamos trabalhar

 

image.png.55f106c6dd49f08a4e6071b0ce5cf3a1.png

 

Abra a tabela e confira se tem dados nela ou não

 

image.png.fb0385185f4b7ad58b931418c3047d59.png

 

Caso tenha dados, vamos precisar remover todos os dados, e para isso vamos ao menu e abrimos o SQL editor

 

image.png.6042f26730ab51dac6e252acceada2af.png

 

Agora nele colocamos a seguinte query:


PRAGMA foreign_keys = OFF;
DELETE FROM 'houses';

e executamos pelo botão "Execute query" como na imagem:

 

image.png.96fb5ab17b179f101329eb9ae0a27277.png

 

Pronto, agora a tabela está limpa. Agora faça a mesma coisa e envie a query abaixo:


PRAGMA foreign_keys = ON;

 

 

Explicação:

Spoiler

Esse erro acontece por que normalmente essas databases tanto em sqlite quanto em mysql de servidores "padrões" são databases publicas que não estão limpas, portanto o servidor identifica que já estão cadastradas 1023 casas (no exemplo) mas na verdade sabemos que não. Vocês viram nas imagens alguns nomes, sabemos que obviamente esse servidor que estamos trabalhando nem mesmo tem nenhuma relação com edron ou qualquer outra cidade do global, rs.

 

Certo, agora que está limpo e as foreign keys estão ativas novamente, vamos ver se o erro de Unserialization foi corrigido ou não.

Link do pastebin com o TFS como está agora.

 

SEGUNDO ERRO

Como podem ver o erro sumiu, porém ainda existem vários outros, e vamos novamente corrigir um que está ocupado muitas linhas e atrapalhando-nos bastante que é esse:

[10:27:13.536] [Warning - Spawns::loadFromXml] Demon vip3 ( 00705 / 00007 / 007 ) spawntime cannot be less than 1 seconds.

Correcção:

Spoiler

Dentro da pasta data do seu servidor, abra a pasta world e vamos editar o arquivo responsável, que é o no caso é o arquivo "baiak yurots-spawn.xml", para fazer essa edição vou usar no exemplo o notepad++ que acho que é o editor comum de quem está iniciando na edição de scripts.

Ao abrir o editor, pesquise por essa informação:


spawntime="0"

e no notepad abra o menu "substituir" e coloque:


spawntime="5"

Pronto, mais um erro corrigido.

 

Explicação:

Spoiler

Esse erro acontece por que o numero mínimo de respawn do monstro seria 1 e no caso está como 0, assim então atrapalhando a leitura feita pelo tfs.


Certo, vamos ver no TFS o que temos:Retorno do TFS como está agora.

 

TERCEIRO ERRO

Mais um erro foi removido, mas ainda faltam alguns, vamos ao próximo:

[10:39:22.888] [Spawn::addMonster] Cannot find "Ferumbras vip3"

Este é um erro chato de resolver... Não por ser difícil, nada disso, ele é simples. O problema é que você tem que escolher entre duas opções, ou você pega de outro servidor todos os xmls dos monstros que faltam e coloca no seu ou então faz os passos que vou fazer aqui e resolve o problema do mesmo jeito só que de forma mais simples.

 

Correcção:

Spoiler

No meu caso, o erro é causado pelos monstros vip3 que não existem no servidor... então eu uso a seguinte solução:

Vá no mesmo arquivo do erro anterior, que é o arquivo "baiak yurots-spawn.xml" na pasta "data/world" do servidor e procure por isso:


" vip3"

Lembre-se procure sem as aspas, só as coloquei para mostrar que tem um espaço antes do vip3.

Agora clique no menu substituir novamente, não coloque nada na parte de "Substituir por" e aperte substituir todos.

 

Aqui faltou apenas o monstro Lord of Demon e o Abominator e a solução é a mesma, procure por:


"Lord of Demon"

Dessa vez mantenha as aspas na pesquisa, clique no menu substituir e digite em baixo no "Substituir por" o seguinte:


"Demon"

Faça o mesmo com o "Abominator" e pronto, aperte substituir todos e salve.

 

Explicação:

Spoiler

O que causou o erro foi o fato dos monstros não existirem no monsters.xml da pasta monsters, pra corrigir isso eu simplesmente removi o nome vip3 deles e troquei o nome do que faltou e fiz o servidor substituir todos pelos monstros comuns. Outra solução possível é criar todos os monstros vip3 um por um e assim remover os erros de cada um por vez.

 

Mais uma vez vamos ver no TFS o que temos de retorno:

Retorno do TFS como está ficando

 

ERROS EXTRAS

Agora terminamos os erros que estão sendo causados antes do carregamento do servidor e vamos aos erros durante o funcionamento, que no caso aqui são esses:

[10:55:55.022] OTSYS_SQLITE3_PREPARE(): SQLITE ERROR: no such table: z_ots_comunication (SELECT * FROM z_ots_comunication WHERE "type" = 'login';)
[10:57:49.740] OTSYS_SQLITE3_PREPARE(): SQLITE ERROR: no such column: players.onlinetimetoday (UPDATE "players" SET "onlinetimetoday"=players.onlinetimetoday+60, "onlinetimeall"=players.onlinetimeall+60 WHERE "online" = 1;)

Para esses erros eu não pretendia passar solução pois ele não tem relação com o sqlite já que é de comunicação do gesior com o servidor, porém sei que é útil fazer isso e que vai ajudar vocês então... A partir de agora vou mostrar solução mas acabou o que precisa ser mostrado no TFS.

 

Correcção:

Spoiler

COM GESIOR E PHPMYADMIN:

Vá no seu phpmyadmin, abra a database do seu servidor e clique no menu SQL e digite a seguinte query:


CREATE TABLE `z_ots_comunication` (
`id` int(11) NOT NULL auto_increment,
`name` varchar(255) NOT NULL,
`type` varchar(255) NOT NULL,
`action` varchar(255) NOT NULL,
`param1` varchar(255) NOT NULL,
`param2` varchar(255) NOT NULL,
`param3` varchar(255) NOT NULL,
`param4` varchar(255) NOT NULL,
`param5` varchar(255) NOT NULL,
`param6` varchar(255) NOT NULL,
`param7` varchar(255) NOT NULL,
`delete_it` int(2) NOT NULL default '1',
PRIMARY KEY (`id`)
) ENGINE=MyISAM DEFAULT CHARSET=latin1;
ALTER TABLE `accounts` ADD vipdays INT(15) NOT NULL DEFAULT 0;
ALTER TABLE `players` ADD `exphist_lastexp` BIGINT( 255 ) NOT NULL DEFAULT '0', 
ADD `exphist1` BIGINT( 255 ) NOT NULL DEFAULT '0', 
ADD `exphist2` BIGINT( 255 ) NOT NULL DEFAULT '0', 
ADD `exphist3` BIGINT( 255 ) NOT NULL DEFAULT '0', 
ADD `exphist4` BIGINT( 255 ) NOT NULL DEFAULT '0', 
ADD `exphist5` BIGINT( 255 ) NOT NULL DEFAULT '0', 
ADD `exphist6` BIGINT( 255 ) NOT NULL DEFAULT '0', 
ADD `exphist7` BIGINT( 255 ) NOT NULL DEFAULT '0', 
ADD `onlinetimetoday` BIGINT( 255 ) NOT NULL DEFAULT '0', 
ADD `onlinetime1` BIGINT( 255 ) NOT NULL DEFAULT '0', 
ADD `onlinetime2` BIGINT( 255 ) NOT NULL DEFAULT '0', 
ADD `onlinetime3` BIGINT( 255 ) NOT NULL DEFAULT '0', 
ADD `onlinetime4` BIGINT( 255 ) NOT NULL DEFAULT '0', 
ADD `onlinetime5` BIGINT( 255 ) NOT NULL DEFAULT '0', 
ADD `onlinetime6` BIGINT( 255 ) NOT NULL DEFAULT '0', 
ADD `onlinetime7` BIGINT( 255 ) NOT NULL DEFAULT '0', 
ADD `onlinetimeall` BIGINT( 255 ) NOT NULL DEFAULT '0';  

COM S3DB PELO SQLITE STUDIO:

Entre no Sqlite studio e como fizemos no primeiro erro vamos executar as queries abaixo:


CREATE TABLE `z_ots_comunication` (
`id` INTEGER PRIMARY KEY AUTOINCREMENT,
`name` varchar(255) NOT NULL,
`type` varchar(255) NOT NULL,
`action` varchar(255) NOT NULL,
`param1` varchar(255) NOT NULL,
`param2` varchar(255) NOT NULL,
`param3` varchar(255) NOT NULL,
`param4` varchar(255) NOT NULL,
`param5` varchar(255) NOT NULL,
`param6` varchar(255) NOT NULL,
`param7` varchar(255) NOT NULL,
`delete_it` int(2) NOT NULL default '1'
);
ALTER TABLE `accounts` ADD vipdays INT(15) NOT NULL DEFAULT 0;
ALTER TABLE `players` ADD `exphist_lastexp` BIGINT( 255 ) NOT NULL DEFAULT 0;
ALTER TABLE `players` ADD `exphist1` BIGINT( 255 ) NOT NULL DEFAULT 0;
ALTER TABLE `players` ADD `exphist2` BIGINT( 255 ) NOT NULL DEFAULT 0;
ALTER TABLE `players` ADD `exphist3` BIGINT( 255 ) NOT NULL DEFAULT 0;
ALTER TABLE `players` ADD `exphist4` BIGINT( 255 ) NOT NULL DEFAULT 0;
ALTER TABLE `players` ADD `exphist5` BIGINT( 255 ) NOT NULL DEFAULT 0;
ALTER TABLE `players` ADD `exphist6` BIGINT( 255 ) NOT NULL DEFAULT 0;
ALTER TABLE `players` ADD `exphist7` BIGINT( 255 ) NOT NULL DEFAULT 0;
ALTER TABLE `players` ADD `onlinetimetoday` BIGINT( 255 ) NOT NULL DEFAULT 0;
ALTER TABLE `players` ADD `onlinetime1` BIGINT( 255 ) NOT NULL DEFAULT 0;
ALTER TABLE `players` ADD `onlinetime2` BIGINT( 255 ) NOT NULL DEFAULT 0;
ALTER TABLE `players` ADD `onlinetime3` BIGINT( 255 ) NOT NULL DEFAULT 0;
ALTER TABLE `players` ADD `onlinetime4` BIGINT( 255 ) NOT NULL DEFAULT 0;
ALTER TABLE `players` ADD `onlinetime5` BIGINT( 255 ) NOT NULL DEFAULT 0;
ALTER TABLE `players` ADD `onlinetime6` BIGINT( 255 ) NOT NULL DEFAULT 0;
ALTER TABLE `players` ADD `onlinetime7` BIGINT( 255 ) NOT NULL DEFAULT 0;
ALTER TABLE `players` ADD `onlinetimeall` BIGINT( 255 ) NOT NULL DEFAULT 0;  

Lembre-se de dar um CTRL+A antes de executar para que sejam executadas todas juntas.

 

Tudo ok agora, com essa você resolve o problema do z_ots_communication, vipdays e onlinetime.

 

Explicação:

Spoiler

Esses são três erros de SQL, para erros de SQL você tem que estar atento as informações que são mostradas no TFS e tentar entende-las, por exemplo:

 

[11:18:50.175] OTSYS_SQLITE3_PREPARE(): SQLITE ERROR: no such column: players.onlinetimetoday (UPDATE "players" SET "onlinetimetoday"=players.onlinetimetoday+60, "onlinetimeall"=players.onlinetimeall+60 WHERE "online" = 1;)

 

Nesse exemplo temos escrito "no such column", que significa que as colunas nas quais a query tenta fazer alteração não existem na tabela. Se isso acontecer em uma tabela que é única sua por exemplo, você pode solucionar o erro criando as colunas que faltam uma a uma.

 

FINALIZAÇÃO/CONCLUSÃO

Agora que está tudo terminado, o TFS final ficou assim:

Retorno TFS Final.

 

No momento, não pretendo mexer muito mais nesse servidor, acredito que ainda tenham bugs de globalevents e creaturescripts que vão ocorrer conforme o servidor ficar aberto por algumas horas porém não tenho intenção de arruma-los já que eu só vou retirar algumas quests padrões como inquisiton, poi, etc e depois o apagarei.

Acredito e espero que alguém vá conseguir encontrar alguma ajuda nesse tópico, agradeço por terem lido tudo.

 

Foi bem interessante para mim limpar os erros desse servidor e escrever isso, peço desculpas aos profissionais pelos meus erros e ignorância em alguma coisa, até mais.

 

 

 

Edited by davidwcr99
Umas imagens ficaram no fim não sei por que...
Link to comment
Share on other sites

×
×
  • Create New...