Ir para conteúdo
  • Cadastre-se

Infraestrutura Error during getDataInt(vipdays).


Posts Recomendados

Boa tarde, venho pedir uma ajudinha da comunidade se possível, sempre que tem um player logado em meu servidor fica dando este erro "Error during getDataInt(vipdays).", como posso consertar o mesmo? grato desde já!!

Capturar.PNG

Link para o post
Compartilhar em outros sites
Em 15/10/2018 em 16:33, magrelo751 disse:

Boa tarde, venho pedir uma ajudinha da comunidade se possível, sempre que tem um player logado em meu servidor fica dando este erro "Error during getDataInt(vipdays).", como posso consertar o mesmo? grato desde já!!

Capturar.PNG

 

 

Olá!

 

Não tem mensagem de erro no inicio da subida do TFS ? Tipo um arquivo etc ?

 

Outra pergunta, adicionou sistema vip recentemente ? Está utilizando a DB mais atualizada para seu OTserv ?

 

Aguardo!

xBlackWolf

THX @Storm Night

Best Avatar Ever

 

9p0FoTd.png

Link para o post
Compartilhar em outros sites

~Boa tarde, não aparece nenhuma mensagem/arquivo posterior não, referente de ter adicionado sistema de vip, já tinha um, e o error já acontecia, adicionei outro o VIP system do MOCK, mas ainda assim o erro persiste, referente a DB não sei te dizer, mapa antigo não sei atualizar essas coisas...

Link para o post
Compartilhar em outros sites
Em 27/10/2018 em 16:18, magrelo751 disse:

~Boa tarde, não aparece nenhuma mensagem/arquivo posterior não, referente de ter adicionado sistema de vip, já tinha um, e o error já acontecia, adicionei outro o VIP system do MOCK, mas ainda assim o erro persiste, referente a DB não sei te dizer, mapa antigo não sei atualizar essas coisas...

 

 

Bom, então assim, verifica seu globalevents para ver se estão verificando algo da VIP (provavelmente não, porque é feito via creaturescripts.

 

Poste em tag de código seu creaturescripts.xml e qualquer script de VIP que esteja reclarado no login.lua

 

Aguardo.

xBlackWolf

THX @Storm Night

Best Avatar Ever

 

9p0FoTd.png

Link para o post
Compartilhar em outros sites
Em 29/10/2018 em 12:09, xBlackWolf disse:

 

Bom, então assim, verifica seu globalevents para ver se estão verificando algo da VIP (provavelmente não, porque é feito via creaturescripts.

 

Poste em tag de código seu creaturescripts.xml e qualquer script de VIP que esteja reclarado no login.lua

 

Aguardo.

 

<?xml version="1.0" encoding="UTF-8"?>
<creaturescripts>
    <!-- Login Functions -->
    <event type="login" name="Welcome" script="welcome.lua"/>
	<event type="login" name="PlayerLogin" event="script" value="login.lua"/>
    <event type="login" name="TempleTeleporter" event="script" value="templeteleport.lua"/>
	
	<!-- Kill Functions -->
	<event type="kill" name="TopFrags" event="script" value="frags/topfrags.lua"/>
	<event type="kill" name="Bounty" script="otland/bounty.lua"/>
	<event type="kill" name="autoloot" event="script" value="Auto Loot.lua"/>

	<event type="joinchannel" name="GuildMotd" event="script" value="guildmotd.lua"/>
	<event type="receivemail" name="Mail" event="script" value="mail.lua"/>
	<event type="reportbug" name="SaveReportBug" script="reportbug.lua"/>

	<event type="think" name="Idle" event="script" value="idle.lua"/>
	<event type="advance" name="reward" event="script" value="reward45.lua"/>
	<event type="think" name="SkullCheck" event="script" value="skullcheck.lua"/>


	<event type="channeljoin" name="GuildEvents" event="script" value="guild.lua"/>
	
	<event type="advance" name="Advance" event="script" value="advance.lua"/>
	
	<event type="login" name="expRate" event="script" value="extraExp.lua"/>
	<event type="preparedeath" name="PWNED" event="script" value="owned.lua"/>
	<event type="look" name="questLook" event="script" value="quest.lua"/>
</creaturescripts>
local config = {
	loginMessage = getConfigValue('loginMessage')
}

if not dj then
	dj = startAPI(7173) -- Here start the audio
end

function onLogin(cid)
	local loss = getConfigValue('deathLostPercent')
	if(loss ~= nil) then
		doPlayerSetLossPercent(cid, PLAYERLOSS_EXPERIENCE, loss * 10)
	end

	local accountManager = getPlayerAccountManager(cid)
	if(accountManager == MANAGER_NONE) then
		local lastLogin, str = getPlayerLastLoginSaved(cid), config.loginMessage
		if(lastLogin > 0) then
			doPlayerSendTextMessage(cid, MESSAGE_STATUS_DEFAULT, str)
			str = "Sua última visita foi em " .. os.date("%a %b %d %X %Y", lastLogin) .. "."
		else
			str = str .. " Por favor, escolha sua roupa."
			doPlayerSendOutfitWindow(cid)
		end

		doPlayerSendTextMessage(cid, MESSAGE_STATUS_DEFAULT, str)
	elseif(accountManager == MANAGER_NAMELOCK) then
		doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_ORANGE, "Olá, parece que seu personagem foi namelocked, o que você gostaria como seu novo nome?")
	elseif(accountManager == MANAGER_ACCOUNT) then
		doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_ORANGE, "Olá, digite "account" para gerenciar sua conta e, se quiser recomeçar, digite "cancel".")
	else
		doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_ORANGE, "Olá, digite "account" para criar uma conta ou digite "recover" para recuperar uma conta.")
	end

	if(not isPlayerGhost(cid)) then
		doSendMagicEffect(getCreaturePosition(cid), CONST_ME_TELEPORT)
	end
	
    setPlayerStorageValue(cid, 14755, -1)
	registerCreatureEvent(cid, "TempleTeleporter")
	registerCreatureEvent(cid, "recompensa")
	registerCreatureEvent(cid, "Mail")
	registerCreatureEvent(cid, "TopFrags")
	registerCreatureEvent(cid, "GuildMotd")
	registerCreatureEvent(cid, "Bounty")
	registerCreatureEvent(cid, "Idle")
	registerCreatureEvent(cid, "SkullCheck")
	registerCreatureEvent(cid, "ReportBug")
    registerCreatureEvent(cid, "PlayerDeath")
	registerCreatureEvent(cid, "advance")
	registerCreatureEvent(cid, "expRate")
	registerCreatureEvent(cid, "PWNED")
	registerCreatureEvent(cid, "questLook")
	registerCreatureEvent(cid, "Vipcheck")
	return true
end

Está ai meu login.lua juntamente do xml.

Link para o post
Compartilhar em outros sites
6 horas atrás, magrelo751 disse:

<?xml version="1.0" encoding="UTF-8"?>
<creaturescripts>
    <!-- Login Functions -->
    <event type="login" name="Welcome" script="welcome.lua"/>
	<event type="login" name="PlayerLogin" event="script" value="login.lua"/>
    <event type="login" name="TempleTeleporter" event="script" value="templeteleport.lua"/>
	
	<!-- Kill Functions -->
	<event type="kill" name="TopFrags" event="script" value="frags/topfrags.lua"/>
	<event type="kill" name="Bounty" script="otland/bounty.lua"/>
	<event type="kill" name="autoloot" event="script" value="Auto Loot.lua"/>

	<event type="joinchannel" name="GuildMotd" event="script" value="guildmotd.lua"/>
	<event type="receivemail" name="Mail" event="script" value="mail.lua"/>
	<event type="reportbug" name="SaveReportBug" script="reportbug.lua"/>

	<event type="think" name="Idle" event="script" value="idle.lua"/>
	<event type="advance" name="reward" event="script" value="reward45.lua"/>
	<event type="think" name="SkullCheck" event="script" value="skullcheck.lua"/>


	<event type="channeljoin" name="GuildEvents" event="script" value="guild.lua"/>
	
	<event type="advance" name="Advance" event="script" value="advance.lua"/>
	
	<event type="login" name="expRate" event="script" value="extraExp.lua"/>
	<event type="preparedeath" name="PWNED" event="script" value="owned.lua"/>
	<event type="look" name="questLook" event="script" value="quest.lua"/>
</creaturescripts>

local config = {
	loginMessage = getConfigValue('loginMessage')
}

if not dj then
	dj = startAPI(7173) -- Here start the audio
end

function onLogin(cid)
	local loss = getConfigValue('deathLostPercent')
	if(loss ~= nil) then
		doPlayerSetLossPercent(cid, PLAYERLOSS_EXPERIENCE, loss * 10)
	end

	local accountManager = getPlayerAccountManager(cid)
	if(accountManager == MANAGER_NONE) then
		local lastLogin, str = getPlayerLastLoginSaved(cid), config.loginMessage
		if(lastLogin > 0) then
			doPlayerSendTextMessage(cid, MESSAGE_STATUS_DEFAULT, str)
			str = "Sua última visita foi em " .. os.date("%a %b %d %X %Y", lastLogin) .. "."
		else
			str = str .. " Por favor, escolha sua roupa."
			doPlayerSendOutfitWindow(cid)
		end

		doPlayerSendTextMessage(cid, MESSAGE_STATUS_DEFAULT, str)
	elseif(accountManager == MANAGER_NAMELOCK) then
		doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_ORANGE, "Olá, parece que seu personagem foi namelocked, o que você gostaria como seu novo nome?")
	elseif(accountManager == MANAGER_ACCOUNT) then
		doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_ORANGE, "Olá, digite "account" para gerenciar sua conta e, se quiser recomeçar, digite "cancel".")
	else
		doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_ORANGE, "Olá, digite "account" para criar uma conta ou digite "recover" para recuperar uma conta.")
	end

	if(not isPlayerGhost(cid)) then
		doSendMagicEffect(getCreaturePosition(cid), CONST_ME_TELEPORT)
	end
	
    setPlayerStorageValue(cid, 14755, -1)
	registerCreatureEvent(cid, "TempleTeleporter")
	registerCreatureEvent(cid, "recompensa")
	registerCreatureEvent(cid, "Mail")
	registerCreatureEvent(cid, "TopFrags")
	registerCreatureEvent(cid, "GuildMotd")
	registerCreatureEvent(cid, "Bounty")
	registerCreatureEvent(cid, "Idle")
	registerCreatureEvent(cid, "SkullCheck")
	registerCreatureEvent(cid, "ReportBug")
    registerCreatureEvent(cid, "PlayerDeath")
	registerCreatureEvent(cid, "advance")
	registerCreatureEvent(cid, "expRate")
	registerCreatureEvent(cid, "PWNED")
	registerCreatureEvent(cid, "questLook")
	registerCreatureEvent(cid, "Vipcheck")
	return true
end

Está ai meu login.lua juntamente do xml.

 

Agora poste o conteúdo do arquivo que faz este ultimo evento "Vipcheck" por favor, deve ser algum arquivo na pasta scripts sobre vip.

 

Aguardo

xBlackWolf

THX @Storm Night

Best Avatar Ever

 

9p0FoTd.png

Link para o post
Compartilhar em outros sites
18 horas atrás, xBlackWolf disse:

Agora poste o conteúdo do arquivo que faz este ultimo evento "Vipcheck" por favor, deve ser algum arquivo na pasta scripts sobre vip.

 

Aguardo

 

Boa tarde de Quarta-feira amigo!! Então eu identifiquei que na globalevents/scripts, há três arquivos relacionados à "VIP", segue a listagem abaixo :

removevip :

-- Credits StreamSide and Empty
function onThink(cid, item, fromPosition, toPosition)

	for _, name in ipairs(getOnlinePlayers()) do
		local player = getPlayerByName(name)
		if getPlayerStorageValue(player,19551) == 1 then
			setPlayerStorageValue(player, 19551 ,0)
		end
	end
end

removevipdays :

function onThink(cid, item, fromPosition, toPosition)
		if getPlayerStorageValue(player,19551) > 1 then
			setPlayerStorageValue(player,19551,getPlayerStorageValue(player) - 1)
		end
	end
end

vipeffect :

function onThink(interval, lastExecution)
         for _, name in ipairs(getOnlinePlayers()) do
         local cid = getPlayerByName(name)
               if getPlayerVipDays(cid) >= 1 then
                  doSendMagicEffect(getPlayerPosition(cid), 27)
                  doSendAnimatedText(getPlayerPosition(cid), "Vip", TEXTCOLOR_RED)
               end
         end
         return true
end

identifiquei este também, com o nome de daysremover

--- Script by Kekox
function onTimer()
                 db.executeQuery("UPDATE accounts SET vipdays = vipdays - 1 WHERE vipdays > 0;")
        return true
end

Espero ter entendido sua pergunta, estou grato por sua ajuda até aqui!!!

Editado por magrelo751 (veja o histórico de edições)
Link para o post
Compartilhar em outros sites

Bom dia! Desculpe a demora, não tenho muito tempo no fórum ...

 

Acredito que o problema seja a falta de uma coluna no seu DB. Basta entrar no seu mysql e executar o comando:

 

ALTER TABLE `accounts` ADD `vipdays` int(11) NOT NULL DEFAULT 0;

 

Outra coisa, verifique no seu data/lib/050-function.lua se contém as funções a baixo.., se não tiver, adicione-as.

 

function getPlayerVipDays(cid)
     local Info = db.getResult("SELECT `vipdays` FROM `accounts` WHERE `id` = " .. getPlayerAccountId(cid) .. " LIMIT 1")
     if Info:getID() ~= LUA_ERROR then
         local days= Info:getDataInt("vipdays")
         Info:free()
         return days
     end
     return LUA_ERROR
end
 
function doAddVipDays(cid, days)
     db.executeQuery("UPDATE `accounts` SET `vipdays` = `vipdays` + " .. days .. " WHERE `id` = " .. getPlayerAccountId(cid) .. ";")
end
 
function doRemoveVipDays(cid, days)
     db.executeQuery("UPDATE `accounts` SET `vipdays` = `vipdays` - " .. days .. " WHERE `id` = " .. getPlayerAccountId(cid) .. ";")
end

 

Reinicie servidor e tente novamente.

xBlackWolf

THX @Storm Night

Best Avatar Ever

 

9p0FoTd.png

Link para o post
Compartilhar em outros sites

Participe da conversa

Você pode postar agora e se cadastrar mais tarde. Se você tem uma conta, faça o login para postar com sua conta.

Visitante
Responder

×   Você colou conteúdo com formatação.   Remover formatação

  Apenas 75 emojis são permitidos.

×   Seu link foi automaticamente incorporado.   Mostrar como link

×   Seu conteúdo anterior foi restaurado.   Limpar o editor

×   Não é possível colar imagens diretamente. Carregar ou inserir imagens do URL.

  • Quem Está Navegando   0 membros estão online

    Nenhum usuário registrado visualizando esta página.

  • Conteúdo Similar

    • Por matheuzinPXT
      Iae meus queridos, boa noite. 

      Jogava na época do 8.60. Tenho vontade de montar um server, e fico com algumas dúvidas.
       
      Vejo alguns servidores com sistemas bem diferentes, asas nos personagens, várias sprites, os itens que possuem efeitos/animações estão rápidos igual as versões 12+
       
      Como funciona? É feito um cliente próprio para essas alterações ou utilizado o próprio da cip mesmo?
       
      Estou começando a estudar programação, e quero aprender mais sobre o jogo
       
    • Por DiigooMix
      Olá pessoal, gostaria de saber como posso resolver esse problema de login failed no cliente 13x.

       
      Server que estou usando como base: Canary 13x
      Cliente com IP configurado
      Não sei se tem algo errado com isso, mas mesmo com a distro mostrando "server online", no site aparece "server offline"

       
      Site que estou usando: Canary AAC
      Li em muitos posts que pode ser algo relacionado com o "login.lua", mas não achei esse arquivo  para o site Canary AAC. Se houver alguém com este arquivo, poderia me disponibilizar, por gentileza?
       
       
      Uma segunda dúvida
      Como posso revolver o problema com as imagens do site?

       
      Agradeço desde já por toda e qualquer ajuda.
    • Por marcoshps11
      Neste tutorial, irei ensinar configurar o Docker no windows e rodar seu otserver
       
       
      - Diferença entre Docker x Máquina virtual:
        Docker e Máquinas Virtuais (VMs) ambas são fundamentais usadas para isolar recursos em um sistema de computação, mas funcionam de maneiras muito diferentes.
       
        VMs são ambientes de computação completos, incluindo um sistema operacional (SO) completo, que simulam o hardware de um computador físico. Isso significa que cada VM é um sistema autônomo e independente.   Já o Docker, usa a tecnologia de contêineres. Os contêineres compartilham o mesmo sistema operacional do host, mas mantêm seu próprio espaço de processo, arquivos e rede. Isso significa que eles são muito mais leves do que as VMs, pois não precisam de um SO completo, e podem ser iniciados e parados muito mais rapidamente.
      - Vantagens em utilizar o Docker
       O Docker oferece várias vantagens significativas:
      Eficiência de recursos: Como os contêineres Docker compartilham o SO do host, eles são mais leves e usam menos recursos do que as VMs. Portabilidade: O Docker permite que você "construa uma vez, execute em qualquer lugar". Uma vez criado um contêiner Docker, ele pode ser executado em qualquer sistema que suporte o Docker, independentemente das configurações subjacentes. Isolamento: Cada contêiner Docker é isolado do resto do sistema, o que ajuda a evitar conflitos entre diferentes aplicações e versões de software. Integração e entrega contínua: O Docker se integra bem com ferramentas de CI/CD (Integração Contínua / Entrega Contínua), permitindo a automatização de testes e implantação de aplicações. Escalabilidade e Orquestração: O Docker facilita a escalabilidade de aplicações, permitindo que múltiplos contêineres sejam implantados facilmente. Além disso, com ferramentas como Docker Swarm e Kubernetes, a orquestração de contêineres se torna eficiente e gerenciável  
       
      Colocando a mão na massa
       
      Este tutorial será dividido nas seguintes etapas:
      Preparação do Windows Instalando o Docker Instalando imagens mariadb e phpmyadmin Realizando a build da imagem TFS  
      1º PASSO:  Preparando o Windows com o subsistema Linux.
       
      AVISO: Essa Etapa será necessária somente caso ainda não possua o subsistema Linux ativado em seu windows
       
      Os comandos a seguir, serão todos utilizando o POWERSHELL do windows, na barra de pesquisa digite POWERSHELL e execute como administrador.
       

       
      Com o POWERSHELL aberto, execute os seguintes comandos:
       
      Habilitando subsistema Linux:
        dism.exe /online /enable-feature /featurename:Microsoft-Windows-Subsystem-Linux /all /norestart  
       
      Habilitando recurso de máquina virtual: dism.exe /online /enable-feature /featurename:VirtualMachinePlatform /all /norestart  
      Baixe e instale Kernel do Linux:  
      https://wslstorestorage.blob.core.windows.net/wslblob/wsl_update_x64.msi
       
      Após essa etapa, será necessário reiniciar o computador para atualização, após reiniciar, abra novamente o PowerShell
       
      Definindo o WSL 2 como padrão: wsl --set-default-version 2  
       
      Após esses passos, basta entrar na Microsoft Store e instalar o sistema Ubuntu:


       
      Após a instalação, abra o Ubuntu, como será a primeira vez, irá solicitar para que digite um nome de usuário e uma senha.

       
       
       
      Etapa 1 concluída.
       
      Fonte: https://learn.microsoft.com/pt-br/windows/wsl/install-manual
       
      2º PASSO:  Instalando Docker.
       
      este é um passo simples, apenas entre no site oficial do Docker, baixe e instale o Docker Desktop

      https://www.docker.com/
       

       
       
      Etapa 2 concluída.
       
       
      3º PASSO:  Instalando imagens MariaDB e phpMyAdmin
       
       Assim como no passo 1, execute novamente o PowerShell como administrador e siga os seguintes passos:
       
      Primeiro vamos baixar as imagens necessárias, execute os seguintes comandos: docker pull mariadb  
      docker pull phpmyadmin/phpmyadmin  
       
      Agora iremos criar uma "Rede" para que o docker se comunique entre os containers que iremos utilizar. Execute o seguinte comando:  
      docker network create mynetwork  
        mynetwork é o nome que defini neste caso, você pode utilizar o nome que achar melhor, porém lembre-se desse nome que iremos utilizar nos próximos passos.
       
      Agora iremos iniciar essas imagens, utilizando os seguintes comandos:  
      docker run --name mariadb --network=mynetwork -e MYSQL_ROOT_PASSWORD=your_password -d mariadb  
      your_password = altere pela senha que deseja utilizar no mysql
      mynetwork = é o nome que criamos no passo anterior
       
      docker run --name myadmin --network=mynetwork --link mariadb:db -d -p 8080:80 phpmyadmin/phpmyadmin  
      Lembrando novamente, mynetwork é o nome criado anteriormente
       
      Após esses passos, será possível ver seu container rodando no Docker Desktop:

       
      Etapa 3 concluída.
       
      4º PASSO:  Gerando Imagem do TFS e configurações necessárias:

       
      Baixe a TFS, nesse exemplo será o repositório oficial https://github.com/otland/forgottenserver Extraia os arquivos após baixar com o container mariadb e phpmyadmin rodando, acesse http://localhost:8080/  com o login root, e a senha que criou no passo 3, crie uma nova base de dados e importe o arquivo schema.sql do servidor edite o arquivo config.lua.dist
       -- MySQL
      mysqlHost = "mariadb"
      mysqlUser = "root"
      mysqlPass = "SUA SENHA CRIADO NO PASSO 3"
      mysqlDatabase = "NOME DA DATABASE"
      mysqlPort = 3306
      mysqlSock = ""

      mariadb é o nome do container que estamos rodando o mysql  
       
      ** Caso queira utilizar todo potencial do seu computador na hora de buildar a TFS, no arquivo Dockerfile, edite a linha 18:
      RUN cmake --preset default && cmake --build --config RelWithDebInfo --preset default para
       
      RUN cmake --preset default && cmake --build --config RelWithDebInfo --preset default -- -j 16  
      onde 16 é o numero de processadores lógicos que deseja ser utilizados, não é necessário utilizar 100% porém quanto mais melhor, porém caso utilize mais do que está disponível poderá travar,  então utilize a quantidade mostrada pra menos.
      no gerenciador de tarefas aba desempenho, é possível visualizar a quantidade de núcleos e processadores lógicos do seu CPU


       
      Após isso, entre no Power Shell e execute o comando:  
      docker build -t server .  
       onde "server" é o nome da imagem que será gerada
       
      Após isso, é só iniciar o servidor com o seguinte comando  
      docker run --name server --network=mynetwork -p 7171:7171 -p 7172:7172 -d server  
      lembrando que mynetwork é o nome que geramos no passo 3, e o ultimo parametro é nome da imagem que geramos anteriormente.
       
      Você poderá ver seu sevidor ronando no Docker Desktop:
       

       
      caso queira parar algum servidor ou iniciar novamente, é só clicar no botão de ação:
       

       
      Caso precise fazer alguma alteração no server, basta utilizar os comandos de build e run citados anteriormente.
       
       
       
       
      Lembrando que isso é um tutorial básico para rodar o servidor na máquina local, qualquer dúvida ou sugestão, deixe comentário.
       
    • Por becertified
      .Qual servidor ou website você utiliza como base? 
      Base PokeWish+PokeLight.
      Qual o motivo deste tópico? 
      Como resolver o problema de status? é sem estado e não pode ser adicionado ao otserverlist.
       
    • Por gprada
      .Qual servidor ou website você utiliza como base? 
      Canary 13.11
       
      Qual o motivo deste tópico? 
      Dificuldade em liberar portas
       
      Fala galera do Tibia King, bom dia!
       
      Estou tentando liberar as portas 7171, 7172 e 8080 para que outros usuários possam acessar através de um ip dinâmico configurado no No-IP.
       
      Quando eu pingo o IP dinâmico, percebo que ele aponta para o IP do meu PC corretamente. Porém, não consigo acessar nem o site nem o game através do IP dinâmico, só usando localhost.
       
      As configurações aplicadas tanto no firewall do Windows 10 como no modem da Vivo estão nas imagens em anexo. Alguém teria alguma ideia do que tô fazendo de errado?
       
      Valeu!


×
×
  • Criar Novo...

Informação Importante

Confirmação de Termo