Ir para conteúdo
Close
underewarr

C++ Global save + Restarter

Posts Recomendados

Um código simples para fazer o global server save, e logo após reiniciar o servidor.

 

Adicione no Config.Lua

 

shutdownAtGlobalSave = true
globalSaveEnabled = true

No Game.cpp adicione uma nova função

bool Game::isRunning(const char* name)
{
	PROCESSENTRY32 proc32;
    HANDLE hSnapshot;
 
    hSnapshot = CreateToolhelp32Snapshot(TH32CS_SNAPPROCESS, 0);
 
    proc32.dwSize = sizeof(PROCESSENTRY32);
	bool isRunning = false;
	if(Process32First(hSnapshot, &proc32))
    {
        while(Process32Next(hSnapshot, &proc32))
        {
            std::string filename_str = std::string(proc32.szExeFile);
			if(filename_str == name)
            {
				isRunning = true;
            	break;
			}
        }
    }
 
    CloseHandle(hSnapshot);
    return isRunning;
}

Adicione em game.h

bool isRunning(const char* name);

Em Game.cpp procure por

void Game::setGameState(GameState_t newState)

E adicione logo a baixo.

 

Scheduler::getInstance().stop();
Dispatcher::getInstance().stop();

E abaixo disso adicione

const char* name = "AutoRun.exe";
if(!isRunning(name))
	WinExec(name, SW_SHOWNORMAL);

Em otsystem.h adicione um novo include

 

#include <windows.h>

Agora vamos anexar isso

#include <tlhelp32.h>

Esta feito agora basta compilar um programa chamado autorun.exe com o código a baixo. 

Após a compilação coloque o exe na pasta do servidor e inicie.

#include <windows.h>
#include <tlhelp32.h>
#include <iostream>
 
const int _time = 10;
char* name = "Nazwa serwera.exe";
 
bool isRunning()
{
	PROCESSENTRY32 proc32;
    HANDLE hSnapshot;
 
    hSnapshot = CreateToolhelp32Snapshot(TH32CS_SNAPPROCESS, 0);
 
    proc32.dwSize = sizeof(PROCESSENTRY32);
 
    std::cout << "Check the server is running." << std::endl;
	bool isRunning = false;
	if(Process32First(hSnapshot, &proc32))
    {
        while(Process32Next(hSnapshot, &proc32))
        {
            std::string filename_str = std::string(proc32.szExeFile);
			if(filename_str == name)
            {
				isRunning = true;
            	break;
			}
        }
    }
 
    CloseHandle(hSnapshot);
    return isRunning;
}
 
bool checkServer()
{
	while(true)
	{
		Sleep(_time * 1000);
		if(!isRunning())
		{
			std::cout << "Run the server." << std::endl;
			WinExec(name, SW_SHOWNORMAL);
			return true;
		}
	}
 
	return false;
}
 
int main()
{
    if(checkServer())
    	return 0;
 
    return 1;
}

Cade minhas badges? @Matk

Creditos: Underewar,Osk


Editado por underewarr (veja o histórico de edições)

Compartilhar este post


Link para o post
Compartilhar em outros sites

Parabéns, seu tópico de conteúdo foi aprovado!
Muito obrigado pela sua contribuição, nós do Tibia King agradecemos.
Seu conteúdo com certeza ajudará à muitos outros, você recebeu +1 REP.

Spoiler

Congratulations, your content has been approved!
Thank you for your contribution, we of Tibia King we are grateful.
Your content will help many other users, you received +1 REP.

 



Não esqueçam de me marca quando eu responder em seu tópico, assim recebo a notificação e volto em seu tópico.
Não dou suporte em mensagem privada ou fora do fórum.
Não esqueça de reputa e agradecer a pessoa que lhe ajudou em algum tópico seu.
"Só ajudo quem eu vejo ajudando." xD

Não esqueça de reputa alguém que lhe ajudou ou tentou lhe ajudar, e agradeça com suas palavras. Seja grato por alguém ter lhe ajudado ou tentado lhe ajudar!

O coitadismo e o conformismo potencializado é a arte de sentir compaixão de si mesmo para você não utilize ferramentas capazes de transformar
sua história!!

-- Augusto Cury

 

                                                               ezgif-1-98aab239f3.gif

Compartilhar este post


Link para o post
Compartilhar em outros sites
13 horas atrás, underewarr disse:
Spoiler

 

Um código simples para fazer o global server save, e logo após reiniciar o servidor.

 

Adicione no Config.Lua

 



shutdownAtGlobalSave = true
globalSaveEnabled = true

No Game.cpp adicione uma nova função



bool Game::isRunning(const char* name)
{
	PROCESSENTRY32 proc32;
    HANDLE hSnapshot;
 
    hSnapshot = CreateToolhelp32Snapshot(TH32CS_SNAPPROCESS, 0);
 
    proc32.dwSize = sizeof(PROCESSENTRY32);
	bool isRunning = false;
	if(Process32First(hSnapshot, &proc32))
    {
        while(Process32Next(hSnapshot, &proc32))
        {
            std::string filename_str = std::string(proc32.szExeFile);
			if(filename_str == name)
            {
				isRunning = true;
            	break;
			}
        }
    }
 
    CloseHandle(hSnapshot);
    return isRunning;
}

Adicione em game.h



bool isRunning(const char* name);

Em Game.cpp procure por



void Game::setGameState(GameState_t newState)

E adicione logo a baixo.

 



Scheduler::getInstance().stop();
Dispatcher::getInstance().stop();

E abaixo disso adicione



const char* name = "AutoRun.exe";
if(!isRunning(name))
	WinExec(name, SW_SHOWNORMAL);

Em otsystem.h adicione um novo include

 



#include <windows.h>

Agora vamos anexar isso



#include <tlhelp32.h>

Esta feito agora basta compilar um programa chamado autorun.exe com o código a baixo. 

Após a compilação coloque o exe na pasta do servidor e inicie.



#include <windows.h>
#include <tlhelp32.h>
#include <iostream>
 
const int _time = 10;
char* name = "Nazwa serwera.exe";
 
bool isRunning()
{
	PROCESSENTRY32 proc32;
    HANDLE hSnapshot;
 
    hSnapshot = CreateToolhelp32Snapshot(TH32CS_SNAPPROCESS, 0);
 
    proc32.dwSize = sizeof(PROCESSENTRY32);
 
    std::cout << "Check the server is running." << std::endl;
	bool isRunning = false;
	if(Process32First(hSnapshot, &proc32))
    {
        while(Process32Next(hSnapshot, &proc32))
        {
            std::string filename_str = std::string(proc32.szExeFile);
			if(filename_str == name)
            {
				isRunning = true;
            	break;
			}
        }
    }
 
    CloseHandle(hSnapshot);
    return isRunning;
}
 
bool checkServer()
{
	while(true)
	{
		Sleep(_time * 1000);
		if(!isRunning())
		{
			std::cout << "Run the server." << std::endl;
			WinExec(name, SW_SHOWNORMAL);
			return true;
		}
	}
 
	return false;
}
 
int main()
{
    if(checkServer())
    	return 0;
 
    return 1;
}

Cade minhas badges? @Matk

Creditos: Underewar,Osk

 

 

 

Consegue por pra linux tambem?


Compartilhar este post


Link para o post
Compartilhar em outros sites
28 minutos atrás, Zzyzx disse:

Consegue por pra linux tambem?

 

não consigo, mas vou tentar se funcionar eu te marco aqui, na verdade nunca tentei fazer para linux.


Compartilhar este post


Link para o post
Compartilhar em outros sites
10 horas atrás, underewarr disse:

não consigo, mas vou tentar se funcionar eu te marco aqui, na verdade nunca tentei fazer para linux.

 

Blzzz


Compartilhar este post


Link para o post
Compartilhar em outros sites

@Zzyzx  Qual source tu usa?


Compartilhar este post


Link para o post
Compartilhar em outros sites
6 minutos atrás, underewarr disse:

@Zzyzx  Qual source tu usa?

 

TFS 0.4 3777

mas o servidor não ta online ainda.


Compartilhar este post


Link para o post
Compartilhar em outros sites

o BLACKLIST esta ativado na source?

 

@Zzyzx


Editado por underewarr (veja o histórico de edições)

Compartilhar este post


Link para o post
Compartilhar em outros sites
22 minutos atrás, underewarr disse:

o BLACKLIST esta ativado na source?

 

@Zzyzx

 

Não, não tem.


Compartilhar este post


Link para o post
Compartilhar em outros sites
1 minuto atrás, Zzyzx disse:

Não, não tem.

 

Para desativar.

Em otserv.cpp , procure por :

{
#if defined(WINDOWS) && !defined(__CONSOLE__)
if(MessageBox(GUI::getInstance()->m_mainWindow, "Unable to fetch blacklist! Continue?", "Blacklist", MB_YESNO) == IDNO)
#else
std::cout << "Unable to fetch blacklist! Continue? (y/N)" << std::endl;
char buffer = getchar();
if(buffer == 10 || (buffer != 121 && buffer != 89))
#endif
startupErrorMessage("Unable to fetch blacklist!");
}

substitua por :

/*{
#if defined(WINDOWS) && !defined(__CONSOLE__)
if(MessageBox(GUI::getInstance()->m_mainWindow, "Unable to fetch blacklist! Continue?", "Blacklist", MB_YESNO) == IDNO)
#else
std::cout << "Unable to fetch blacklist! Continue? (y/N)" << std::endl;
char buffer = getchar();
if(buffer == 10 || (buffer != 121 && buffer != 89))
#endif
startupErrorMessage("Unable to fetch blacklist!");
}*/

Agora no linux :

while true; do ./theforgottenserver -y; done


Compartilhar este post


Link para o post
Compartilhar em outros sites
4 minutos atrás, underewarr disse:

Para desativar.

Em otserv.cpp , procure por :


{
#if defined(WINDOWS) && !defined(__CONSOLE__)
if(MessageBox(GUI::getInstance()->m_mainWindow, "Unable to fetch blacklist! Continue?", "Blacklist", MB_YESNO) == IDNO)
#else
std::cout << "Unable to fetch blacklist! Continue? (y/N)" << std::endl;
char buffer = getchar();
if(buffer == 10 || (buffer != 121 && buffer != 89))
#endif
startupErrorMessage("Unable to fetch blacklist!");
}

substitua por :


/*{
#if defined(WINDOWS) && !defined(__CONSOLE__)
if(MessageBox(GUI::getInstance()->m_mainWindow, "Unable to fetch blacklist! Continue?", "Blacklist", MB_YESNO) == IDNO)
#else
std::cout << "Unable to fetch blacklist! Continue? (y/N)" << std::endl;
char buffer = getchar();
if(buffer == 10 || (buffer != 121 && buffer != 89))
#endif
startupErrorMessage("Unable to fetch blacklist!");
}*/

Agora no linux :

while true; do ./theforgottenserver -y; done

 

foi mal, me expressei mal, quando falei que não tem, queria ter dito que estava desativado, kk


Compartilhar este post


Link para o post
Compartilhar em outros sites
Em 05/11/2018 em 22:13, underewarr disse:

não consigo, mas vou tentar se funcionar eu te marco aqui, na verdade nunca tentei fazer para linux.

 

conseguiu pra linux ?? minha tfs é 0.4


Compartilhar este post


Link para o post
Compartilhar em outros sites
Em 28/12/2018 em 16:07, BilauX disse:

conseguiu pra linux ?? minha tfs é 0.4

 

Agora no linux :

while true; do ./theforgottenserver -y; done

@BilauX


Compartilhar este post


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.


Open Tibia Server

Quer aprender a criar seu próprio servidor de Tibia? Então está no lugar certo, aqui você encontrará milhares de tutorias, scripts, códigos, mapas e utilitários para que você possa fazer o seu próprio servidor de Tibia partindo do zero.

Redes Sociais

Anuncie no Tibia King

Precisa de mais visibilidade em seus projetos? Quer publicidade para o seu servidor? Anuncie no Tibia King e faça sua divulgação, possuímos centenas de acessos simultâneos e milhares diários, com certeza será a sua solução! A publicação do seu anuncio é instantânea!

×
×
  • Criar Novo...