GM Volcano 1 Postado Março 20, 2008 Share Postado Março 20, 2008 Tá aí um code feito pelo programador Brasileiro Proglin(membro de outro fórum) Feito para servidores SQL.. Foi testado na svn de dezembro(12/07) Bom, vamos ao codigo : Em game.cpp, depois de : #include "talkaction.h" #include "spells.h" #include "configmanager.h" Adicione : #include "tools.h" Depois de : Game::Game() { Adicione : #ifdef __UCB_DDOS_PROTECTION__ connectionTestFalseValidUntil = std::time(NULL) + 2*60; //Ignore verification in first 2 minutes connectionTestTrueValidUntil = connectionTestFalseValidUntil; connectionTestOk = true; #endif Adicione no final : #ifdef __UCB_DDOS_PROTECTION__ bool Game::isOutSideWorldResponding(){ OTSYS_THREAD_LOCK_CLASS lockClass(gameLock, "Game::isOutSideWorldResponding()"); uint32_t now = std::time(NULL); if( !connectionTestOk ){ if( now > connectionTestFalseValidUntil ){ //Redo test connectionTestOk = isWorldReachable(); connectionTestFalseValidUntil = now + 60; //False result is valid for 60 seconds } } else { if( now > connectionTestTrueValidUntil ){ //Redo test connectionTestOk = isWorldReachable(); connectionTestTrueValidUntil = now + 10; //Ok result is valid for 10 secongs } } return connectionTestOk; } #endif Agora em game.h, depois de : void internalCreatureChangeVisible(Creature* creature, bool visible); void changeLight(const Creature* creature); #ifdef __SKULLSYSTEM__ void changeSkull(Player* player, Skulls_t newSkull); #endif Adicione : #ifdef __UCB_DDOS_PROTECTION__ bool isOutSideWorldResponding(); #endif Depois de : uint32_t inFightTicks; uint32_t exhaustionTicks; uint32_t fightExhaustionTicks; Adicione : #ifdef __UCB_DDOS_PROTECTION__ bool connectionTestOk; uint32_t connectionTestTrueValidUntil; uint32_t connectionTestFalseValidUntil; #endif Agora em tools.cpp, adicione no final : #ifdef __UCB_DDOS_PROTECTION__ bool isWorldReachable(){ int32_t ret; #if defined __WINDOWS__ ret = system("ping -n 1 -w 500 google.com > NUL"); #else ret = system("ping -q -c 1 -w 1 google.com > /dev/null"); #endif return (ret == 0); } #endif Agora em tools.h, adicione no final : #ifdef __UCB_DDOS_PROTECTION__ bool isWorldReachable(); #endif Agora em players.cpp, substitua : if(skillLoss){ Por : #ifdef __UCB_DDOS_PROTECTION__ if(skillLoss && g_game.isOutSideWorldResponding()){ #else if(skillLoss){ #endif Substitua : experience -= getLostExperience(); Por : #ifdef __UCB_DDOS_PROTECTION__ if( g_game.isOutSideWorldResponding() ){ experience -= getLostExperience(); } #else experience -= getLostExperience(); #endif Agora vá em Projeto > Opções do Projeto > Parâmetros > Compilador C++ e adicione no final : -D__UCB_DDOS_PROTECTION__ Agora Recompile tudo (Ctrl + F11)! Créditos constam no inicio do tópico.. Link para o comentário Compartilhar em outros sites More sharing options...
Natanael Beckman 223 Postado Março 21, 2008 Share Postado Março 21, 2008 Muito legal, é um topico muito importante para sevidores serios ou mesmo pra curti =D. Link para o comentário Compartilhar em outros sites More sharing options...
ubo 0 Postado Março 31, 2008 Share Postado Março 31, 2008 muitu bom continue trazendu codes boms assin nos agradecemos valew!!! Link para o comentário Compartilhar em outros sites More sharing options...
Matheus gallo 0 Postado Abril 18, 2008 Share Postado Abril 18, 2008 mto bom msm!! parabens Link para o comentário Compartilhar em outros sites More sharing options...
jorgesamuel 4 Postado Maio 12, 2008 Share Postado Maio 12, 2008 Otimo ! Gostei em ! Mais so uma pergunta , ele realmente bloqueia nukers !? Link para o comentário Compartilhar em outros sites More sharing options...
Bananexx 0 Postado Maio 17, 2008 Share Postado Maio 17, 2008 Otimo ! Gostei em ! Mais so uma pergunta , ele realmente bloqueia nukers !? Bom, pelo que vi, não é bem assim! Parece que ele só não deixa o player perder skills/level, caso o server seja nukado e o player morra. ;P Acho que é isso mesmo! Mais mesmo assim, muito bom! É bem útil, só que pode gerar alguns bug's né ? Ou não.. ;P Att. God Jotape Link para o comentário Compartilhar em outros sites More sharing options...
iii 0 Postado Janeiro 4, 2009 Share Postado Janeiro 4, 2009 i como eu faço isso . poderia postar tutor? Link para o comentário Compartilhar em outros sites More sharing options...
Negu96 0 Postado Dezembro 9, 2011 Share Postado Dezembro 9, 2011 não entendi nda desse começo "depois de:" Link para o comentário Compartilhar em outros sites More sharing options...
k2lan 45 Postado Dezembro 9, 2011 Share Postado Dezembro 9, 2011 não entendi nda desse começo "depois de:" é antigo isso amigo, não funciona mais, pois existe maneiras atualizadas de burlar isso Link para o comentário Compartilhar em outros sites More sharing options...
dhenis 0 Postado Dezembro 10, 2011 Share Postado Dezembro 10, 2011 É pra servidores mysql? Consegue fazer? Abraços. Link para o comentário Compartilhar em outros sites More sharing options...
Posts Recomendados