Ir para conteúdo

andrefelphes

Campones
  • Total de itens

    74
  • Registro em

  • Última visita

Tudo que andrefelphes postou

  1. Sim com mapa pequeno vai, estou usando o 2.2 ---- só que o mapa é grandezinho, n tanto mais é ! só que deve existir alguma forma de exportar
  2. Não manim, ali eu estou selecionando o lugar de salvar a imagem ai ela iria salvar em BMP
  3. Ei baixei aqui e continua dando o msm erro ... N sei mais oq fazer
  4. GALERA ESTOU COM UM PROBLEMA ! QUANDO VOU EXPORTAR O MAPA DO MEU SERVIDOR O "RME" PARA DE FUNCIONAR E FECHA ! ME AJUDA !
  5. Servidor aberto dia 04/03/2019 ! Base de Mega e Shiny! [+] Adicionado Pokémons Virus. [+] Virus Adicionados, Virus Alakazam, bronzong, flygon, gardevoir, gengar, honchkrow, lucario, metagross, scizor, steelix, tyranitar, vileplume. [+] Adicionado Area up free no centro pokémon. [+] Client mais estável e menos lag. [+] Adicionado Premier Ball e Sora Ball com 50x de caught ! [+] Sistema de caught reformulado. [+] Adicionado Virus Stone. [+] Adicionado Npc que troca 10 virus stone por 1 virus box. [+] Virus stone sera 10 R$15,00 Reais! [+] Virus stone conseguindo também com Honored Tokens, assim movimento o dinheiro entre os players! [+] Adicionado comando !virus que podera trocar 500 Honored Tokens por 1 virus stone, sendo assim 5000 para conseguir 1 virus box. [+] Adicionado Robô Fire. [+] Adicionado Robô Leaf. [+] Adicionado Item Robô custando 20 pontos. [+] Remake Tropius e Shiny Tropius. [+] Remake das notas de 1kk pra cima. [-] Retirado o comando !bug e colocado um báu no centro pokémon com um item! QUEST NOVAS !!! \/ °Leaf Quest - Abrindo todos os dias as 13:00 ! °Fire Quest - Abrindo todos os dias as 16:00 ! °Water Quest - Abrindo todos os dias as 19:00 ! ------------------------------------------------------------------------- °Cidades reformuladas, com graficos melhores e mais bonitos ! °Sistema de Loteria a cada 1 hora ! °Auto Loot Reformulado 100%, porém foi zerado do game inteiro ! tendo que adicionar novamente tudo de novo ! Shop Free Adicionado ! ° Mega Stone. ° Stamina Restore. ° Bike. ° Shiny Box. ----- Rare Candy ----- Rare Candies podendo ser comprada pelo npc Ziraldo ! Podendo dar boost até +200. °Black Wobbuffet - teve sua defesa e alguns attacks nerfados. °Black Tangrowth - teve sua defesa e alguns attacks nerfados. °Arrumado Spawns global do servidor! °Adicionado 3 npc's que levam pra 3 ilhas onde os resp são mais rapidos, Fire - Thunder e Water. °Reebalanceado Bosses de quests. °Shiny Scizor e Shiny Scyther teve suas skill's reefeiteas... ChangeLog 08/01/2019 ----- QUEST'S ------------ °Embbeded Tower 100% feita e pronta para o uso ! °Mewtwo Quest 100 % feita e pronta para o uso ! °Parades de saffron reformadas e algumas portas de houses foram desbugadas. °Novos blacks pokémons... Lucario, Tyranitar, Manectric e Sceptile °X-Return Retirado do game por motivos obvios... °Adicionar Y-Wing TIER 1 ao 7 ! 100%. °Adicionado novo Sistema de conseguir held's por tokens e assim podendo conseguir ate o held tier 6 sendo free! °Cdbar do otclient teve suas imagens reefeitas! °Algumas sprites de pokémons teve sua performa mudada. °Adicionado npc FaceBook. °Adicionado Barra de Teleport OtClient. °Adicionado Janela de HeldSystem Otclient. °E varias outras coisas que você tera que descobrir Site para você acessar o jogo: http://pcore.ddns.net/ Site para você acessar o jogo: http://pcore.ddns.net/ Site para você acessar o jogo: http://pcore.ddns.net/ Site para você acessar o jogo: http://pcore.ddns.net/ Site para você acessar o jogo: http://pcore.ddns.net/ Site para você acessar o jogo: http://pcore.ddns.net/ Site para você acessar o jogo: http://pcore.ddns.net/ Site para você acessar o jogo: http://pcore.ddns.net/ Site para você acessar o jogo: http://pcore.ddns.net/ Site para você acessar o jogo: http://pcore.ddns.net/
  6. Galera por favor eu to precisando de um script pra bau ! qnd clica ganha um pokemon e retira x points ou seja ! ( bau por points systema que da o pokemon que eu configurar) me ajudem pfv up
  7. Galera ontem tava caçando uma função que quando colocasse o tal pokemon nao tomava status negativo, miss etc... deu certo ! obg gente ! so que tem gente que ta indo na quest com Return, o cara foi la com wobbuffet com return t5 e o boss morreu facil, tem como tirar pro "boss" ter status negativo contra return ?
  8. Novo Servidor Pokemon, (POKE CORE) Aberto dia 19/12/2018 EDITADO POR MIN BASE SHINY/MEGA Contem \/ 89 quest proprias feitas ! Mewtwo Quest Zapdos Quest Articuno Quest Moltres Quest Boost stone ! Etc !!! Site : https://pokecore.webnode.com Venha se dirvertir com a gente !
  9. Trago o mais novo e inovador baiak, com areas vips, supremes, donates etc! Ainda mais, sem lag, 24/7hrs online, venha se divertir e chamar seus amigos ( baiakroxnew.zapto.org )
  10. Fiz isso e o erro continua kkkk, na vdd essa source que te mandei, ja ta com esse procedimento kkk
  11. Ola, ja tentei de tudo e n foi kkkk, se puder me ajudar ta ai a soure //////////////////////////////////////////////////////////////////////// // OpenTibia - an opensource roleplaying game //////////////////////////////////////////////////////////////////////// // This program is free software: you can redistribute it and/or modify // it under the terms of the GNU General Public License as published by // the Free Software Foundation, either version 3 of the License, or // (at your option) any later version. // // This program is distributed in the hope that it will be useful, // but WITHOUT ANY WARRANTY; without even the implied warranty of // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the // GNU General Public License for more details. // // You should have received a copy of the GNU General Public License // along with this program. If not, see <http://www.gnu.org/licenses/>. //////////////////////////////////////////////////////////////////////// //#include <sys/signal.h> //#include <sys/socket.h> #include "otpch.h" #include "otsystem.h" #include <iostream> #include <fstream> #include <iomanip> #ifndef WINDOWS #include <unistd.h> #endif #include <boost/config.hpp> #include "server.h" #ifdef __LOGIN_SERVER__ #include "gameservers.h" #endif #include "networkmessage.h" #include "game.h" #include "chat.h" #include "tools.h" #include "rsa.h" #include "textlogger.h" #include "protocollogin.h" #include "protocolgame.h" #include "protocolold.h" #include "status.h" #ifdef __REMOTE_CONTROL__ #include "admin.h" #endif #include "configmanager.h" #include "scriptmanager.h" #include "databasemanager.h" #include "iologindata.h" #include "ioban.h" #include "outfit.h" #include "vocation.h" #include "group.h" #include "monsters.h" #ifdef __OTSERV_ALLOCATOR__ #include "allocator.h" #endif #ifdef __EXCEPTION_TRACER__ #include "exception.h" #endif #if defined(WINDOWS) && !defined(__CONSOLE__) #include "shellapi.h" #include "gui.h" #include "inputbox.h" #include "commctrl.h" #else #include "resources.h" #endif #ifdef __NO_BOOST_EXCEPTIONS__ #include <exception> void boost::throw_exception(std::exception const & e) { std::cout << "Boost exception: " << e.what() << std::endl; } #endif ConfigManager g_config; Game g_game; Monsters g_monsters; Npcs g_npcs; RSA g_RSA; Chat g_chat; #if defined(WINDOWS) && !defined(__CONSOLE__) GUILogger g_logger; NOTIFYICONDATA NID; #endif IpList serverIps; boost::mutex g_loaderLock; boost::condition_variable g_loaderSignal; boost::unique_lock<boost::mutex> g_loaderUniqueLock(g_loaderLock); #ifdef __REMOTE_CONTROL__ extern Admin* g_admin; #endif #if !defined(WINDOWS) || defined(__CONSOLE__) bool argumentsHandler(StringVec args) { StringVec tmp; for(StringVec::iterator it = args.begin(); it != args.end(); ++it) { if((*it) == "--help") { std::cout << "Usage:\n" "\n" "\t--config=$1\t\tAlternate configuration file path.\n" "\t--data-directory=$1\tAlternate data directory path.\n" "\t--ip=$1\t\t\tIP address of gameworld server.\n" "\t\t\t\tShould be equal to the global IP.\n" "\t--login-port=$1\tPort for login server to listen on.\n" "\t--game-port=$1\tPort for game server to listen on.\n" "\t--admin-port=$1\tPort for admin server to listen on.\n" "\t--status-port=$1\tPort for status server to listen on.\n"; #ifndef WINDOWS std::cout << "\t--runfile=$1\t\tSpecifies run file. Will contain the pid\n" "\t\t\t\tof the server process as long as it is running.\n"; #endif std::cout << "\t--output-log=$1\t\tAll standard output will be logged to\n" "\t\t\t\tthis file.\n" "\t--error-log=$1\t\tAll standard errors will be logged to\n" "\t\t\t\tthis file.\n"; return false; } if((*it) == "--version") { std::cout << STATUS_SERVER_NAME << ", version " << STATUS_SERVER_VERSION << " (" << STATUS_SERVER_CODENAME << ")\n" "Compiled with " << BOOST_COMPILER << " at " << __DATE__ << ", " << __TIME__ << ".\n"; return false; } tmp = explodeString((*it), "="); if(tmp[0] == "--config") g_config.setString(ConfigManager::CONFIG_FILE, tmp[1]); else if(tmp[0] == "--data-directory") g_config.setString(ConfigManager::DATA_DIRECTORY, tmp[1]); else if(tmp[0] == "--ip") g_config.setString(ConfigManager::IP, tmp[1]); else if(tmp[0] == "--login-port") g_config.setNumber(ConfigManager::LOGIN_PORT, atoi(tmp[1].c_str())); else if(tmp[0] == "--game-port") g_config.setNumber(ConfigManager::GAME_PORT, atoi(tmp[1].c_str())); else if(tmp[0] == "--admin-port") g_config.setNumber(ConfigManager::ADMIN_PORT, atoi(tmp[1].c_str())); else if(tmp[0] == "--status-port") g_config.setNumber(ConfigManager::STATUS_PORT, atoi(tmp[1].c_str())); #ifndef WINDOWS else if(tmp[0] == "--runfile") g_config.setString(ConfigManager::RUNFILE, tmp[1]); #endif else if(tmp[0] == "--output-log") g_config.setString(ConfigManager::OUT_LOG, tmp[1]); else if(tmp[0] == "--error-log") g_config.setString(ConfigManager::ERROR_LOG, tmp[1]); } return true; } #endif #ifndef WINDOWS void signalHandler(int32_t sig) { uint32_t tmp = 0; switch(sig) { case SIGHUP: Dispatcher::getInstance().addTask(createTask( boost::bind(&Game::saveGameState, &g_game, false))); break; case SIGTRAP: g_game.cleanMap(tmp); break; case SIGCHLD: g_game.proceduralRefresh(); break; case SIGUSR1: Dispatcher::getInstance().addTask(createTask( boost::bind(&Game::setGameState, &g_game, GAME_STATE_CLOSED))); break; case SIGUSR2: g_game.setGameState(GAME_STATE_NORMAL); break; case SIGCONT: g_game.reloadInfo(RELOAD_ALL); break; case SIGQUIT: Dispatcher::getInstance().addTask(createTask( boost::bind(&Game::setGameState, &g_game, GAME_STATE_SHUTDOWN))); break; case SIGTERM: Dispatcher::getInstance().addTask(createTask( boost::bind(&Game::shutdown, &g_game))); break; default: break; } } void runfileHandler(void) { std::ofstream runfile(g_config.getString(ConfigManager::RUNFILE).c_str(), std::ios::trunc | std::ios::out); runfile.close(); } #endif void allocationHandler() { puts("Allocation failed, server out of memory!\nDecrease size of your map or compile in a 64-bit mode."); char buffer[1024]; fgets(buffer, 1024, stdin); exit(-1); } void startupErrorMessage(const std::string& error) { if(error.length() > 0) std::cout << std::endl << "> ERROR: " << error << std::endl; #if defined(WINDOWS) && !defined(__CONSOLE__) MessageBox(GUI::getInstance()->m_mainWindow, error.c_str(), "Error", MB_OK); system("pause"); #else getchar(); #endif exit(-1); } void otserv( #if !defined(WINDOWS) || defined(__CONSOLE__) StringVec args, #endif ServiceManager* services); #if !defined(WINDOWS) || defined(__CONSOLE__) int main(int argc, char *argv[]) { StringVec args = StringVec(argv, argv + argc); if(argc > 1 && !argumentsHandler(args)) return 0; #else void serverMain(void* param) { std::cout.rdbuf(&g_logger); std::cerr.rdbuf(&g_logger); #endif std::set_new_handler(allocationHandler); ServiceManager servicer; g_config.startup(); #ifdef __OTSERV_ALLOCATOR_STATS__ boost::thread(boost::bind(&allocatorStatsThread, (void*)NULL)); // TODO: destruct this thread... #endif #ifdef __EXCEPTION_TRACER__ ExceptionHandler mainExceptionHandler; mainExceptionHandler.InstallHandler(); #endif #ifndef WINDOWS // ignore sigpipe... struct sigaction sigh; sigh.sa_handler = SIG_IGN; sigh.sa_flags = 0; sigemptyset(&sigh.sa_mask); sigaction(SIGPIPE, &sigh, NULL); // register signals signal(SIGHUP, signalHandler); //save signal(SIGTRAP, signalHandler); //clean signal(SIGCHLD, signalHandler); //refresh signal(SIGUSR1, signalHandler); //close server signal(SIGUSR2, signalHandler); //open server signal(SIGCONT, signalHandler); //reload all signal(SIGQUIT, signalHandler); //save & shutdown signal(SIGTERM, signalHandler); //shutdown #endif Dispatcher::getInstance().addTask(createTask(boost::bind(otserv, #if !defined(WINDOWS) || defined(__CONSOLE__) args, #endif &servicer))); g_loaderSignal.wait(g_loaderUniqueLock); #if !defined(WINDOWS) || defined(__CONSOLE__) std::string outPath = g_config.getString(ConfigManager::OUT_LOG), errPath = g_config.getString(ConfigManager::ERROR_LOG); if(outPath.length() < 3) outPath = ""; else if(outPath[0] != '/' && outPath[1] != ':') { outPath = getFilePath(FILE_TYPE_LOG, outPath); std::cout << "> Logging output to file: " << outPath << std::endl; } if(errPath.length() < 3) errPath = ""; else if(errPath[0] != '/' && errPath[1] != ':') { errPath = getFilePath(FILE_TYPE_LOG, errPath); std::cout << "> Logging errors to file: " << errPath << std::endl; } if(outPath != "") { boost::shared_ptr<std::ofstream> outFile; outFile.reset(new std::ofstream(outPath.c_str(), (g_config.getBool(ConfigManager::TRUNCATE_LOGS) ? std::ios::trunc : std::ios::app) | std::ios::out)); if(!outFile->is_open()) startupErrorMessage("Could not open output log file for writing!"); std::cout.rdbuf(outFile->rdbuf()); } if(errPath != "") { boost::shared_ptr<std::ofstream> errFile; errFile.reset(new std::ofstream(errPath.c_str(), (g_config.getBool(ConfigManager::TRUNCATE_LOGS) ? std::ios::trunc : std::ios::app) | std::ios::out)); if(!errFile->is_open()) startupErrorMessage("Could not open error log file for writing!"); std::cerr.rdbuf(errFile->rdbuf()); } #endif if(servicer.isRunning()) { std::cout << ">> " << g_config.getString(ConfigManager::SERVER_NAME) << " server Online!" << std::endl << std::endl; #if defined(WINDOWS) && !defined(__CONSOLE__) SendMessage(GUI::getInstance()->m_statusBar, WM_SETTEXT, 0, (LPARAM)">> Status: Online!"); GUI::getInstance()->m_connections = true; #endif servicer.run(); } else { std::cout << ">> " << g_config.getString(ConfigManager::SERVER_NAME) << " server Offline! No services available..." << std::endl << std::endl; #if defined(WINDOWS) && !defined(__CONSOLE__) SendMessage(GUI::getInstance()->m_statusBar, WM_SETTEXT, 0, (LPARAM)">> Status: Offline!"); GUI::getInstance()->m_connections = true; #endif } #ifdef __EXCEPTION_TRACER__ mainExceptionHandler.RemoveHandler(); #endif #if !defined(WINDOWS) || defined(__CONSOLE__) return 0; #endif } void otserv( #if !defined(WINDOWS) || defined(__CONSOLE__) StringVec args, #endif ServiceManager* services) { srand((uint32_t)OTSYS_TIME()); #if defined(WINDOWS) #if defined(__CONSOLE__) SetConsoleTitle(STATUS_SERVER_NAME); #else GUI::getInstance()->m_connections = false; #endif #endif g_game.setGameState(GAME_STATE_STARTUP); #if !defined(WINDOWS) && !defined(__ROOT_PERMISSION__) if(!getuid() || !geteuid()) { std::cout << "> WARNING: " << STATUS_SERVER_NAME << " has been executed as root user! It is recommended to execute as a normal user." << std::endl; std::cout << "Continue? (y/N)" << std::endl; char buffer = getchar(); if(buffer == 10 || (buffer != 121 && buffer != 89)) startupErrorMessage("Aborted."); } #endif std::cout << STATUS_SERVER_NAME << ", version " << STATUS_SERVER_VERSION << " (" << STATUS_SERVER_CODENAME << ")" << std::endl; std::cout << "Compiled with " << BOOST_COMPILER << " at " << __DATE__ << ", " << __TIME__ << "." << std::endl; std::stringstream ss; #ifdef __DEBUG__ ss << " GLOBAL"; #endif #ifdef __DEBUG_MOVESYS__ ss << " MOVESYS"; #endif #ifdef __DEBUG_CHAT__ ss << " CHAT"; #endif #ifdef __DEBUG_EXCEPTION_REPORT__ ss << " EXCEPTION-REPORT"; #endif #ifdef __DEBUG_HOUSES__ ss << " HOUSES"; #endif #ifdef __DEBUG_LUASCRIPTS__ ss << " LUA-SCRIPTS"; #endif #ifdef __DEBUG_MAILBOX__ ss << " MAILBOX"; #endif #ifdef __DEBUG_NET__ ss << " NET"; #endif #ifdef __DEBUG_NET_DETAIL__ ss << " NET-DETAIL"; #endif #ifdef __DEBUG_RAID__ ss << " RAIDS"; #endif #ifdef __DEBUG_SCHEDULER__ ss << " SCHEDULER"; #endif #ifdef __DEBUG_SPAWN__ ss << " SPAWNS"; #endif #ifdef __SQL_QUERY_DEBUG__ ss << " SQL-QUERIES"; #endif std::string debug = ss.str(); if(!debug.empty()) { std::cout << ">> Debugging:"; #if defined(WINDOWS) && !defined(__CONSOLE__) SendMessage(GUI::getInstance()->m_statusBar, WM_SETTEXT, 0, (LPARAM)">> Displaying debugged components"); #endif std::cout << debug << "." << std::endl; } std::cout << ">> Loading config (" << g_config.getString(ConfigManager::CONFIG_FILE) << ")" << std::endl; #if defined(WINDOWS) && !defined(__CONSOLE__) SendMessage(GUI::getInstance()->m_statusBar, WM_SETTEXT, 0, (LPARAM)">> Loading config"); #endif if(!g_config.load()) startupErrorMessage("Unable to load " + g_config.getString(ConfigManager::CONFIG_FILE) + "!"); Logger::getInstance()->open(); IntegerVec cores = vectorAtoi(explodeString(g_config.getString(ConfigManager::CORES_USED), ",")); if(cores[0] != -1) { #ifdef WINDOWS int32_t mask = 0; for(IntegerVec::iterator it = cores.begin(); it != cores.end(); ++it) mask += 1 << (*it); SetProcessAffinityMask(GetCurrentProcess(), mask); } std::stringstream mutexName; mutexName << "forgottenserver_" << g_config.getNumber(ConfigManager::WORLD_ID); CreateMutex(NULL, FALSE, mutexName.str().c_str()); if(GetLastError() == ERROR_ALREADY_EXISTS) startupErrorMessage("Another instance of The Forgotten Server is already running with the same worldId.\nIf you want to run multiple servers, please change the worldId in configuration file."); std::string defaultPriority = asLowerCaseString(g_config.getString(ConfigManager::DEFAULT_PRIORITY)); if(defaultPriority == "realtime") SetPriorityClass(GetCurrentProcess(), REALTIME_PRIORITY_CLASS); else if(defaultPriority == "high") SetPriorityClass(GetCurrentProcess(), HIGH_PRIORITY_CLASS); else if(defaultPriority == "higher") SetPriorityClass(GetCurrentProcess(), ABOVE_NORMAL_PRIORITY_CLASS); #else cpu_set_t mask; CPU_ZERO(&mask); for(IntegerVec::iterator it = cores.begin(); it != cores.end(); ++it) CPU_SET((*it), &mask); sched_setaffinity(getpid(), (int32_t)sizeof(mask), &mask); } std::string runPath = g_config.getString(ConfigManager::RUNFILE); if(runPath != "" && runPath.length() > 2) { std::ofstream runFile(runPath.c_str(), std::ios::trunc | std::ios::out); runFile << getpid(); runFile.close(); atexit(runfileHandler); } if(!nice(g_config.getNumber(ConfigManager::NICE_LEVEL))) {} #endif std::string encryptionType = asLowerCaseString(g_config.getString(ConfigManager::ENCRYPTION_TYPE)); if(encryptionType == "md5") { g_config.setNumber(ConfigManager::ENCRYPTION, ENCRYPTION_MD5); std::cout << "> Using MD5 encryption" << std::endl; } else if(encryptionType == "sha1") { g_config.setNumber(ConfigManager::ENCRYPTION, ENCRYPTION_SHA1); std::cout << "> Using SHA1 encryption" << std::endl; } else { g_config.setNumber(ConfigManager::ENCRYPTION, ENCRYPTION_PLAIN); std::cout << "> Using plaintext encryption" << std::endl; } // std::cout << ">> Checking software version... "; // #if defined(WINDOWS) && !defined(__CONSOLE__) // SendMessage(GUI::getInstance()->m_statusBar, WM_SETTEXT, 0, (LPARAM)">> Checking software version"); // #endif // if(xmlDocPtr doc = xmlParseFile(VERSION_CHECK)) // { // xmlNodePtr p, root = xmlDocGetRootElement(doc); // if(!xmlStrcmp(root->name, (const xmlChar*)"versions")) // { // p = root->children->next; // if(!xmlStrcmp(p->name, (const xmlChar*)"entry")) // { // std::string version; // int32_t patch, build, timestamp; // bool tmp = false; // if(readXMLString(p, "version", version) && version != STATUS_SERVER_VERSION) // tmp = true; // if(readXMLInteger(p, "patch", patch) && patch > VERSION_PATCH) // tmp = true; // if(readXMLInteger(p, "build", build) && build > VERSION_BUILD) // tmp = true; // if(readXMLInteger(p, "timestamp", timestamp) && timestamp > VERSION_TIMESTAMP) // tmp = true; // if(tmp) // { // std::cout << "outdated, please consider updating!" << std::endl; // std::cout << "> Current version information - version: " << STATUS_SERVER_VERSION << ", patch: " << VERSION_PATCH; // std::cout << ", build: " << VERSION_BUILD << ", timestamp: " << VERSION_TIMESTAMP << "." << std::endl; // std::cout << "> Latest version information - version: " << version << ", patch: " << patch; // std::cout << ", build: " << build << ", timestamp: " << timestamp << "." << std::endl; // if(g_config.getBool(ConfigManager::CONFIM_OUTDATED_VERSION) && version.find("_SVN") == std::string::npos) // { // #if defined(WINDOWS) && !defined(__CONSOLE__) // if(MessageBox(GUI::getInstance()->m_mainWindow, "Continue?", "Outdated software", MB_YESNO) == IDNO) // #else // std::cout << "Continue? (y/N)" << std::endl; // char buffer = getchar(); // if(buffer == 10 || (buffer != 121 && buffer != 89)) // #endif // startupErrorMessage("Aborted."); // } // } // else // std::cout << "up to date!" << std::endl; // } // else // std::cout << "failed checking - malformed entry." << std::endl; // } // else // std::cout << "failed checking - malformed file." << std::endl; // xmlFreeDoc(doc); // } // else // std::cout << "failed - could not parse remote file (are you connected to the internet?)" << std::endl; /*std::cout << ">> Fetching blacklist" << std::endl; #if defined(WINDOWS) && !defined(__CONSOLE__) SendMessage(GUI::getInstance()->m_statusBar, WM_SETTEXT, 0, (LPARAM)">> Fetching blacklist"); #endif if(!g_game.fetchBlacklist()) /*{ #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!"); }*/ std::cout << ">> Loading RSA key" << std::endl; #if defined(WINDOWS) && !defined(__CONSOLE__) SendMessage(GUI::getInstance()->m_statusBar, WM_SETTEXT, 0, (LPARAM)">> Loading RSA Key"); #endif const char* p("14299623962416399520070177382898895550795403345466153217470516082934737582776038882967213386204600674145392845853859217990626450972452084065728686565928113"); const char* q("7630979195970404721891201847792002125535401292779123937207447574596692788513647179235335529307251350570728407373705564708871762033017096809910315212884101"); const char* d("46730330223584118622160180015036832148732986808519344675210555262940258739805766860224610646919605860206328024326703361630109888417839241959507572247284807035235569619173792292786907845791904955103601652822519121908367187885509270025388641700821735345222087940578381210879116823013776808975766851829020659073"); g_RSA.setKey(p, q, d); std::cout << ">> Starting SQL connection" << std::endl; #if defined(WINDOWS) && !defined(__CONSOLE__) SendMessage(GUI::getInstance()->m_statusBar, WM_SETTEXT, 0, (LPARAM)">> Starting SQL connection"); #endif Database* db = Database::getInstance(); if(db && db->isConnected()) { std::cout << ">> Running Database Manager" << std::endl; if(!DatabaseManager::getInstance()->isDatabaseSetup()) startupErrorMessage("The database you specified in config.lua is empty, please import schemas/<dbengine>.sql to the database (if you are using MySQL, please read doc/MYSQL_HELP for more information)."); else { uint32_t version = 0; do { version = DatabaseManager::getInstance()->updateDatabase(); if(version == 0) break; std::cout << "> Database has been updated to version: " << version << "." << std::endl; } while(version < VERSION_DATABASE); } DatabaseManager::getInstance()->checkTriggers(); DatabaseManager::getInstance()->checkEncryption(); if(g_config.getBool(ConfigManager::OPTIMIZE_DB_AT_STARTUP) && !DatabaseManager::getInstance()->optimizeTables()) std::cout << "> No tables were optimized." << std::endl; } else startupErrorMessage("Couldn't estabilish connection to SQL database!"); std::cout << ">> Loading items" << std::endl; #if defined(WINDOWS) && !defined(__CONSOLE__) SendMessage(GUI::getInstance()->m_statusBar, WM_SETTEXT, 0, (LPARAM)">> Loading items"); #endif if(Item::items.loadFromOtb(getFilePath(FILE_TYPE_OTHER, "items/items.otb"))) startupErrorMessage("Unable to load items (OTB)!"); if(!Item::items.loadFromXml()) { #if defined(WINDOWS) && !defined(__CONSOLE__) if(MessageBox(GUI::getInstance()->m_mainWindow, "Unable to load items (XML)! Continue?", "Items (XML)", MB_YESNO) == IDNO) #else std::cout << "Unable to load items (XML)! Continue? (y/N)" << std::endl; char buffer = getchar(); if(buffer == 10 || (buffer != 121 && buffer != 89)) #endif startupErrorMessage("Unable to load items (XML)!"); } std::cout << ">> Loading groups" << std::endl; #if defined(WINDOWS) && !defined(__CONSOLE__) SendMessage(GUI::getInstance()->m_statusBar, WM_SETTEXT, 0, (LPARAM)">> Loading groups"); #endif if(!Groups::getInstance()->loadFromXml()) startupErrorMessage("Unable to load groups!"); std::cout << ">> Loading vocations" << std::endl; #if defined(WINDOWS) && !defined(__CONSOLE__) SendMessage(GUI::getInstance()->m_statusBar, WM_SETTEXT, 0, (LPARAM)">> Loading vocations"); #endif if(!Vocations::getInstance()->loadFromXml()) startupErrorMessage("Unable to load vocations!"); std::cout << ">> Loading script systems" << std::endl; #if defined(WINDOWS) && !defined(__CONSOLE__) SendMessage(GUI::getInstance()->m_statusBar, WM_SETTEXT, 0, (LPARAM)">> Loading script systems"); #endif if(!ScriptingManager::getInstance()->load()) startupErrorMessage(""); std::cout << ">> Loading chat channels" << std::endl; #if defined(WINDOWS) && !defined(__CONSOLE__) SendMessage(GUI::getInstance()->m_statusBar, WM_SETTEXT, 0, (LPARAM)">> Loading chat channels"); #endif if(!g_chat.loadFromXml()) startupErrorMessage("Unable to load chat channels!"); std::cout << ">> Loading outfits" << std::endl; #if defined(WINDOWS) && !defined(__CONSOLE__) SendMessage(GUI::getInstance()->m_statusBar, WM_SETTEXT, 0, (LPARAM)">> Loading outfits"); #endif if(!Outfits::getInstance()->loadFromXml()) startupErrorMessage("Unable to load outfits!"); std::cout << ">> Loading experience stages" << std::endl; #if defined(WINDOWS) && !defined(__CONSOLE__) SendMessage(GUI::getInstance()->m_statusBar, WM_SETTEXT, 0, (LPARAM)">> Loading experience stages"); #endif if(!g_game.loadExperienceStages()) startupErrorMessage("Unable to load experience stages!"); std::cout << ">> Loading monsters" << std::endl; #if defined(WINDOWS) && !defined(__CONSOLE__) SendMessage(GUI::getInstance()->m_statusBar, WM_SETTEXT, 0, (LPARAM)">> Loading monsters"); #endif if(!g_monsters.loadFromXml()) { #if defined(WINDOWS) && !defined(__CONSOLE__) if(MessageBox(GUI::getInstance()->m_mainWindow, "Unable to load monsters! Continue?", "Monsters", MB_YESNO) == IDNO) #else std::cout << "Unable to load monsters! Continue? (y/N)" << std::endl; char buffer = getchar(); if(buffer == 10 || (buffer != 121 && buffer != 89)) #endif startupErrorMessage("Unable to load monsters!"); } std::cout << ">> Loading mods..." << std::endl; #if defined(WINDOWS) && !defined(__CONSOLE__) SendMessage(GUI::getInstance()->m_statusBar, WM_SETTEXT, 0, (LPARAM)">> Loading mods..."); #endif if(!ScriptingManager::getInstance()->loadMods()) startupErrorMessage("Unable to load mods!"); std::cout << ">> Loading map and spawns..." << std::endl; #if defined(WINDOWS) && !defined(__CONSOLE__) SendMessage(GUI::getInstance()->m_statusBar, WM_SETTEXT, 0, (LPARAM)">> Loading map and spawns..."); #endif if(!g_game.loadMap(g_config.getString(ConfigManager::MAP_NAME))) startupErrorMessage(""); #ifdef __LOGIN_SERVER__ std::cout << ">> Loading game servers" << std::endl; #if defined(WINDOWS) && !defined(__CONSOLE__) SendMessage(GUI::getInstance()->m_statusBar, WM_SETTEXT, 0, (LPARAM)">> Loading game servers"); #endif if(!GameServers::getInstance()->loadFromXml(true)) startupErrorMessage("Unable to load game servers!"); #endif #ifdef __REMOTE_CONTROL__ std::cout << ">> Loading administration protocol" << std::endl; #if defined(WINDOWS) && !defined(__CONSOLE__) SendMessage(GUI::getInstance()->m_statusBar, WM_SETTEXT, 0, (LPARAM)">> Loading administration protocol"); #endif g_admin = new Admin(); if(!g_admin->loadFromXml()) startupErrorMessage("Unable to load administration protocol!"); services->add<ProtocolAdmin>(g_config.getNumber(ConfigManager::ADMIN_PORT)); #endif std::cout << ">> Checking world type... "; std::string worldType = asLowerCaseString(g_config.getString(ConfigManager::WORLD_TYPE)); if(worldType == "pvp" || worldType == "2" || worldType == "normal") { g_game.setWorldType(WORLD_TYPE_PVP); std::cout << "PvP" << std::endl; } else if(worldType == "no-pvp" || worldType == "nopvp" || worldType == "non-pvp" || worldType == "nonpvp" || worldType == "1" || worldType == "safe") { g_game.setWorldType(WORLD_TYPE_NO_PVP); std::cout << "NoN-PvP" << std::endl; } else if(worldType == "pvp-enforced" || worldType == "pvpenforced" || worldType == "pvp-enfo" || worldType == "pvpenfo" || worldType == "pvpe" || worldType == "enforced" || worldType == "enfo" || worldType == "3" || worldType == "war") { g_game.setWorldType(WORLD_TYPE_PVP_ENFORCED); std::cout << "PvP-Enforced" << std::endl; } else { std::cout << std::endl; startupErrorMessage("Unknown world type: " + g_config.getString(ConfigManager::WORLD_TYPE)); } std::cout << ">> Initializing game state modules and registering services..." << std::endl; #if defined(WINDOWS) && !defined(__CONSOLE__) SendMessage(GUI::getInstance()->m_statusBar, WM_SETTEXT, 0, (LPARAM)">> Initializing game state and registering services..."); #endif g_game.setGameState(GAME_STATE_INIT); std::string ip = g_config.getString(ConfigManager::IP); std::cout << "> Global address: " << ip << std::endl; serverIps.push_back(std::make_pair(LOCALHOST, 0xFFFFFFFF)); char hostName[128]; hostent* host = NULL; if(!gethostname(hostName, 128) && (host = gethostbyname(hostName))) { uint8_t** address = (uint8_t**)host->h_addr_list; while(address[0] != NULL) { serverIps.push_back(std::make_pair(*(uint32_t*)(*address), 0x0000FFFF)); address++; } } uint32_t resolvedIp = inet_addr(ip.c_str()); if(resolvedIp == INADDR_NONE) { if((host = gethostbyname(ip.c_str()))) resolvedIp = *(uint32_t*)host->h_addr; else startupErrorMessage("Cannot resolve " + ip + "!"); } serverIps.push_back(std::make_pair(resolvedIp, 0)); Status::getInstance()->setMapName(g_config.getString(ConfigManager::MAP_NAME)); services->add<ProtocolStatus>(g_config.getNumber(ConfigManager::STATUS_PORT)); if( #ifdef __LOGIN_SERVER__ true #else !g_config.getBool(ConfigManager::LOGIN_ONLY_LOGINSERVER) #endif ) { services->add<ProtocolLogin>(g_config.getNumber(ConfigManager::LOGIN_PORT)); services->add<ProtocolOldLogin>(g_config.getNumber(ConfigManager::LOGIN_PORT)); } services->add<ProtocolGame>(g_config.getNumber(ConfigManager::GAME_PORT)); services->add<ProtocolOldGame>(g_config.getNumber(ConfigManager::LOGIN_PORT)); std::cout << "> Local ports: "; std::list<uint16_t> ports = services->getPorts(); for(std::list<uint16_t>::iterator it = ports.begin(); it != ports.end(); ++it) std::cout << (*it) << "\t"; std::cout << std::endl << ">> All modules were loaded, server is starting up..." << std::endl; #if defined(WINDOWS) && !defined(__CONSOLE__) SendMessage(GUI::getInstance()->m_statusBar, WM_SETTEXT, 0, (LPARAM)">> All modules were loaded, server is starting up..."); #endif g_game.setGameState(GAME_STATE_NORMAL); g_game.start(services); g_loaderSignal.notify_all(); } #if defined(WINDOWS) && !defined(__CONSOLE__) LRESULT CALLBACK WindowProcedure(HWND hwnd, UINT message, WPARAM wParam, LPARAM lParam) { CInputBox iBox(hwnd); switch(message) { case WM_CREATE: { GUI::getInstance()->m_logWindow = CreateWindow("edit", NULL, WS_CHILD | WS_VSCROLL | WS_HSCROLL | WS_VISIBLE | ES_MULTILINE | DS_CENTER, 0, 0, 640, 450, hwnd, (HMENU)ID_LOG, NULL, NULL); GUI::getInstance()->m_statusBar = CreateWindowEx(0, STATUSCLASSNAME, NULL, WS_CHILD | WS_VISIBLE | SBARS_SIZEGRIP, 0, 0, 0, 0, hwnd, (HMENU)ID_STATUS_BAR, GetModuleHandle(NULL), NULL); int32_t statusBarWidthLine[] = {150, -1}; GUI::getInstance()->m_lineCount = 0; SendMessage(GUI::getInstance()->m_statusBar, SB_SETPARTS, sizeof(statusBarWidthLine) / sizeof(int32_t), (LPARAM)statusBarWidthLine); SendMessage(GUI::getInstance()->m_statusBar, SB_SETTEXT, 0, (LPARAM)"Not loaded"); GUI::getInstance()->m_minimized = false; GUI::getInstance()->m_pBox.setParent(hwnd); SendMessage(GUI::getInstance()->m_logWindow, WM_SETFONT, (WPARAM)GUI::getInstance()->m_font, 0); NID.hWnd = hwnd; NID.hIcon = LoadIcon(GetModuleHandle(NULL), MAKEINTRESOURCE(ID_ICON)); NID.uCallbackMessage = WM_USER + 1; NID.uFlags = NIF_TIP | NIF_ICON | NIF_MESSAGE; strcpy(NID.szTip, STATUS_SERVER_NAME); Shell_NotifyIcon(NIM_ADD, &NID); boost::thread(boost::bind(&serverMain, (void*)hwnd)); break; } case WM_SIZE: { if(wParam == SIZE_MINIMIZED) { GUI::getInstance()->m_minimized = true; ShowWindow(hwnd, SW_HIDE); ModifyMenu(GUI::getInstance()->m_trayMenu, ID_TRAY_HIDE, MF_STRING, ID_TRAY_HIDE, "&Show window"); } else { RECT rcStatus; int32_t iStatusHeight; int32_t iEditHeight; RECT rcClient; GUI::getInstance()->m_statusBar = GetDlgItem(hwnd, ID_STATUS_BAR); SendMessage(GUI::getInstance()->m_statusBar, WM_SIZE, 0, 0); GetWindowRect(GUI::getInstance()->m_statusBar, &rcStatus); iStatusHeight = rcStatus.bottom - rcStatus.top; GetClientRect(hwnd, &rcClient); iEditHeight = rcClient.bottom - iStatusHeight; GUI::getInstance()->m_logWindow = GetDlgItem(hwnd, ID_LOG); SetWindowPos(GUI::getInstance()->m_logWindow, NULL, 0, rcClient.top, rcClient.right, iEditHeight, SWP_NOZORDER); } break; } case WM_COMMAND: { switch(LOWORD(wParam)) { case ID_TRAY_HIDE: { if(GUI::getInstance()->m_minimized) { ShowWindow(hwnd, SW_SHOW); ShowWindow(hwnd, SW_RESTORE); ModifyMenu(GUI::getInstance()->m_trayMenu, ID_TRAY_HIDE, MF_STRING, ID_TRAY_HIDE, "&Hide window"); GUI::getInstance()->m_minimized = false; } else { ShowWindow(hwnd, SW_HIDE); ModifyMenu(GUI::getInstance()->m_trayMenu, ID_TRAY_HIDE, MF_STRING, ID_TRAY_HIDE, "&Show window"); GUI::getInstance()->m_minimized = true; } break; } case ID_MENU_MAIN_ACCEPT: { if(g_game.getGameState() != GAME_STATE_STARTUP && !GUI::getInstance()->m_connections) { GUI::getInstance()->m_connections = true; ModifyMenu(GetMenu(hwnd), ID_MENU_MAIN_ACCEPT, MF_STRING, ID_MENU_MAIN_REJECT, "&Reject connections"); } break; } case ID_MENU_MAIN_REJECT: { if(g_game.getGameState() != GAME_STATE_STARTUP && GUI::getInstance()->m_connections) { GUI::getInstance()->m_connections = false; ModifyMenu(GetMenu(hwnd), ID_MENU_MAIN_REJECT, MF_STRING, ID_MENU_MAIN_ACCEPT, "&Accept connections"); } break; } case ID_MENU_MAIN_CLEARLOG: { if(g_game.getGameState() != GAME_STATE_STARTUP) { GUI::getInstance()->m_logText = ""; GUI::getInstance()->m_lineCount = 0; std::cout << STATUS_SERVER_NAME << ", version " << STATUS_SERVER_VERSION << " (" << STATUS_SERVER_CODENAME << ")" << std::endl; std::cout << "Compiled with " << BOOST_COMPILER << " at " << __DATE__ << ", " << __TIME__ << "." << std::endl; std::cout << "A server developed by Elf, slawkens, Talaturen, Lithium, KaczooH, Kiper, Kornholijo." << std::endl; std::cout << "Visit our forum for updates, support and resources: http://otland.net." << std::endl; std::cout << std::endl; } break; } case ID_TRAY_SHUTDOWN: case ID_MENU_MAIN_SHUTDOWN: { if(MessageBox(hwnd, "Are you sure you want to shutdown the server?", "Shutdown", MB_YESNO) == IDYES) { Dispatcher::getInstance().addTask( createTask(boost::bind(&Game::setGameState, &g_game, GAME_STATE_SHUTDOWN))); Shell_NotifyIcon(NIM_DELETE, &NID); } break; } case ID_MENU_SERVER_WORLDTYPE_PVP: { if(g_game.getGameState() != GAME_STATE_STARTUP) { g_game.setWorldType(WORLD_TYPE_PVP); std::cout << "WorldType set to 'PVP'." << std::endl; } break; } case ID_MENU_SERVER_WORLDTYPE_NOPVP: { if(g_game.getGameState() != GAME_STATE_STARTUP) { g_game.setWorldType(WORLD_TYPE_NO_PVP); std::cout << "WorldType set to 'Non-PVP'." << std::endl; } break; } case ID_MENU_SERVER_WORLDTYPE_PVPENFORCED: { if(g_game.getGameState() != GAME_STATE_STARTUP) { g_game.setWorldType(WORLD_TYPE_PVP_ENFORCED); std::cout << "WorldType set to 'PVP-Enforced'." << std::endl; } break; } case ID_MENU_SERVER_BROADCAST: { if(g_game.getGameState() != GAME_STATE_STARTUP) { if(iBox.DoModal("Broadcast message", "What would you like to broadcast?")) g_game.broadcastMessage(iBox.Text, MSG_STATUS_WARNING); } break; } case ID_MENU_SERVER_SAVE: { if(g_game.getGameState() != GAME_STATE_STARTUP) { Dispatcher::getInstance().addTask(createTask( boost::bind(&Game::saveGameState, &g_game, false))); MessageBox(NULL, "Server has been saved.", "Server save", MB_OK); } break; } case ID_MENU_SERVER_CLEAN: { if(g_game.getGameState() != GAME_STATE_STARTUP) { uint32_t count = 0; g_game.cleanMap(count); char buffer[100]; sprintf(buffer, "Map has been cleaned, collected %u items.", count); MessageBox(NULL, buffer, "Map clean", MB_OK); } break; } case ID_MENU_SERVER_REFRESH: { if(g_game.getGameState() != GAME_STATE_STARTUP) { g_game.proceduralRefresh(); MessageBox(NULL, "Map will now refresh in a while.", "Map refresh", MB_OK); } break; } case ID_MENU_SERVER_OPEN: { if(g_game.getGameState() != GAME_STATE_STARTUP && GUI::getInstance()->m_connections) { g_game.setGameState(GAME_STATE_NORMAL); ModifyMenu(GetMenu(hwnd), ID_MENU_SERVER_OPEN, MF_STRING, ID_MENU_SERVER_CLOSE, "&Close server"); } break; } case ID_MENU_SERVER_CLOSE: { if(g_game.getGameState() != GAME_STATE_STARTUP && GUI::getInstance()->m_connections) { Dispatcher::getInstance().addTask(createTask( boost::bind(&Game::setGameState, &g_game, GAME_STATE_CLOSED))); ModifyMenu(GetMenu(hwnd), ID_MENU_SERVER_CLOSE, MF_STRING, ID_MENU_SERVER_OPEN, "&Open server"); } break; } case ID_MENU_SERVER_PLAYERBOX: { if(g_game.getGameState() != GAME_STATE_STARTUP && GUI::getInstance()->m_connections) { if(g_game.getPlayersOnline() == 0) MessageBox(NULL, "No players online.", "Player management", MB_OK); else GUI::getInstance()->m_pBox.popUp("Player management"); } break; } case ID_MENU_RELOAD_ACTIONS: { if(g_game.getGameState() != GAME_STATE_STARTUP) { if(g_game.reloadInfo(RELOAD_ACTIONS)) std::cout << "Reloaded actions." << std::endl; } break; } case ID_MENU_RELOAD_CHAT: { if(g_game.getGameState() != GAME_STATE_STARTUP) { if(g_game.reloadInfo(RELOAD_CHAT)) std::cout << "Reloaded chat channels." << std::endl; } break; } case ID_MENU_RELOAD_CONFIG: { if(g_game.getGameState() != GAME_STATE_STARTUP) { if(g_game.reloadInfo(RELOAD_CONFIG)) std::cout << "Reloaded config." << std::endl; } break; } case ID_MENU_RELOAD_CREATUREEVENTS: { if(g_game.getGameState() != GAME_STATE_STARTUP) { if(g_game.reloadInfo(RELOAD_CREATUREEVENTS)) std::cout << "Reloaded creature events." << std::endl; } break; } #ifdef __LOGIN_SERVER__ case ID_MENU_RELOAD_GAMESERVERS: { if(g_game.getGameState() != GAME_STATE_STARTUP) { if(g_game.reloadInfo(RELOAD_GAMESERVERS)) std::cout << "Reloaded game servers." << std::endl; } break; } #endif case ID_MENU_RELOAD_GLOBALEVENTS: { if(g_game.getGameState() != GAME_STATE_STARTUP) { if(g_game.reloadInfo(RELOAD_GLOBALEVENTS)) std::cout << "Reloaded global events." << std::endl; } break; } case ID_MENU_RELOAD_GROUPS: { if(g_game.getGameState() != GAME_STATE_STARTUP) { if(g_game.reloadInfo(RELOAD_GROUPS)) std::cout << "Reloaded groups." << std::endl; } break; } case ID_MENU_RELOAD_HIGHSCORES: { if(g_game.getGameState() != GAME_STATE_STARTUP) { if(g_game.reloadInfo(RELOAD_HIGHSCORES)) std::cout << "Reloaded highscores." << std::endl; } break; } case ID_MENU_RELOAD_HOUSEPRICES: { if(g_game.getGameState() != GAME_STATE_STARTUP) { if(g_game.reloadInfo(RELOAD_HOUSEPRICES)) std::cout << "Reloaded house prices." << std::endl; } break; } case ID_MENU_RELOAD_ITEMS: { if(g_game.getGameState() != GAME_STATE_STARTUP) { if(g_game.reloadInfo(RELOAD_ITEMS)) std::cout << "Reloaded items." << std::endl; } break; } case ID_MENU_RELOAD_MODS: { if(g_game.getGameState() != GAME_STATE_STARTUP) { if(g_game.reloadInfo(RELOAD_MODS)) std::cout << "Reloaded mods." << std::endl; } break; } case ID_MENU_RELOAD_MONSTERS: { if(g_game.getGameState() != GAME_STATE_STARTUP) { if(g_game.reloadInfo(RELOAD_MONSTERS)) std::cout << "Reloaded monsters." << std::endl; } break; } case ID_MENU_RELOAD_MOVEMENTS: { if(g_game.getGameState() != GAME_STATE_STARTUP) { if(g_game.reloadInfo(RELOAD_MOVEEVENTS)) std::cout << "Reloaded movements." << std::endl; } break; } case ID_MENU_RELOAD_NPCS: { if(g_game.getGameState() != GAME_STATE_STARTUP) { if(g_game.reloadInfo(RELOAD_NPCS)) std::cout << "Reloaded npcs." << std::endl; } break; } case ID_MENU_RELOAD_OUTFITS: { if(g_game.getGameState() != GAME_STATE_STARTUP) { if(g_game.reloadInfo(RELOAD_OUTFITS)) std::cout << "Reloaded outfits." << std::endl; } break; } case ID_MENU_RELOAD_QUESTS: { if(g_game.getGameState() != GAME_STATE_STARTUP) { if(g_game.reloadInfo(RELOAD_QUESTS)) std::cout << "Reloaded quests." << std::endl; } break; } case ID_MENU_RELOAD_RAIDS: { if(g_game.getGameState() != GAME_STATE_STARTUP) { if(g_game.reloadInfo(RELOAD_RAIDS)) std::cout << "Reloaded raids." << std::endl; } break; } case ID_MENU_RELOAD_SPELLS: { if(g_game.getGameState() != GAME_STATE_STARTUP) { if(g_game.reloadInfo(RELOAD_SPELLS)) std::cout << "Reloaded spells." << std::endl; } break; } case ID_MENU_RELOAD_STAGES: { if(g_game.getGameState() != GAME_STATE_STARTUP) { if(g_game.reloadInfo(RELOAD_STAGES)) std::cout << "Reloaded stages." << std::endl; } break; } case ID_MENU_RELOAD_TALKACTIONS: { if(g_game.getGameState() != GAME_STATE_STARTUP) { if(g_game.reloadInfo(RELOAD_TALKACTIONS)) std::cout << "Reloaded talk actions." << std::endl; } break; } case ID_MENU_RELOAD_VOCATIONS: { if(g_game.getGameState() != GAME_STATE_STARTUP) { if(g_game.reloadInfo(RELOAD_VOCATIONS)) std::cout << "Reloaded vocations." << std::endl; } break; } case ID_MENU_RELOAD_WEAPONS: { if(g_game.getGameState() != GAME_STATE_STARTUP) { if(g_game.reloadInfo(RELOAD_WEAPONS)) std::cout << "Reloaded weapons." << std::endl; } break; } case ID_MENU_RELOAD_ALL: { if(g_game.getGameState() != GAME_STATE_STARTUP) { if(g_game.reloadInfo(RELOAD_ALL)) std::cout << "Reloaded all." << std::endl; } break; } default: break; } break; } case WM_CLOSE: case WM_DESTROY: { if(MessageBox(hwnd, "Are you sure you want to shutdown the server?", "Shutdown", MB_YESNO) == IDYES) { Shell_NotifyIcon(NIM_DELETE, &NID); Dispatcher::getInstance().addTask(createTask(boost::bind(&Game::setGameState, &g_game, GAME_STATE_SHUTDOWN))); } break; } case WM_USER + 1: // tray icon messages { switch(lParam) { case WM_RBUTTONUP: // right click { POINT mp; GetCursorPos(&mp); TrackPopupMenu(GetSubMenu(GUI::getInstance()->m_trayMenu, 0), 0, mp.x, mp.y, 0, hwnd, 0); break; } case WM_LBUTTONUP: // left click { if(GUI::getInstance()->m_minimized) { ShowWindow(hwnd, SW_SHOW); ShowWindow(hwnd, SW_RESTORE); ModifyMenu(GUI::getInstance()->m_trayMenu, ID_TRAY_HIDE, MF_STRING, ID_TRAY_HIDE, "&Hide window"); GUI::getInstance()->m_minimized = false; } break; } } break; } default: return DefWindowProc(hwnd, message, wParam, lParam); } return 0; } int32_t WINAPI WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, LPSTR lpszArgument, int32_t WindowStyle) { MSG messages; WNDCLASSEX wincl; GUI::getInstance()->initTrayMenu(); GUI::getInstance()->initFont(); wincl.hInstance = hInstance; wincl.lpszClassName = "forgottenserver_gui"; wincl.lpfnWndProc = WindowProcedure; wincl.style = CS_DBLCLKS; wincl.cbSize = sizeof(WNDCLASSEX); wincl.hIcon = LoadIcon(GetModuleHandle(NULL), MAKEINTRESOURCE(ID_ICON)); wincl.hIconSm = (HICON)LoadImage(GetModuleHandle(NULL), MAKEINTRESOURCE(ID_ICON), IMAGE_ICON, 16, 16, 0); wincl.hCursor = LoadCursor(NULL, IDC_ARROW); wincl.lpszMenuName = MAKEINTRESOURCE(ID_MENU); wincl.cbClsExtra = 0; wincl.cbWndExtra = 0; wincl.hbrBackground = (HBRUSH)COLOR_BACKGROUND; if(!RegisterClassEx(&wincl)) return 0; GUI::getInstance()->m_mainWindow = CreateWindowEx(0, "forgottenserver_gui", STATUS_SERVER_NAME, WS_OVERLAPPEDWINDOW, CW_USEDEFAULT, CW_USEDEFAULT, 640, 450, HWND_DESKTOP, NULL, hInstance, NULL); ShowWindow(GUI::getInstance()->m_mainWindow, 1); while(GetMessage(&messages, NULL, 0, 0)) { TranslateMessage(&messages); DispatchMessage(&messages); } return messages.wParam; } #endif
  12. ja coloquei ele online po, serve ta editadinho, varios players jogavam nele, so que dai do nada começou dar esse erro, porem n é so esse server... esse erro da em todos que eu tento abrir e os players n conseguem conectar
  13. Normal mano, so que os players n conseguem conectar, e tenho quase ctz q é por causa desse error ai
  14. ele termina de carregar accountManager = "yes" namelockManager = "yes" newPlayerChooseVoc = "yes" newPlayerSpawnPosX = 155 newPlayerSpawnPosY = 52 newPlayerSpawnPosZ = 7 newPlayerTownId = 1 newPlayerLevel = 8 newPlayerMagicLevel = 0 generateAccountNumber = "no" redSkullLength = 50 * 62 * 70 * 90 blackSkullLength = 64 * 72 * 80 * 95 dailyFragsToRedSkull = 55 weeklyFragsToRedSkull = 80 monthlyFragsToRedSkull = 90 dailyFragsToBlackSkull = dailyFragsToRedSkull weeklyFragsToBlackSkull = weeklyFragsToRedSkull monthlyFragsToBlackSkull = monthlyFragsToRedSkull dailyFragsToBanishment = dailyFragsToRedSkull weeklyFragsToBanishment = weeklyFragsToRedSkull monthlyFragsToBanishment = monthlyFragsToRedSkull blackSkulledDeathHealth = 40 blackSkulledDeathMana = 0 useBlackSkull = true useFragHandler = true advancedFragList = false notationsToBan = 3 warningsToFinalBan = 4 warningsToDeletion = 5 banLength = 7 * 24 * 60 * 60 killsBanLength = 8 * 24 * 60 * 60 finalBanLength = 30 * 24 * 60 * 60 ipBanishmentLength = 1 * 24 * 60 * 60 broadcastBanishments = true maxViolationCommentSize = 200 violationNameReportActionType = 2 autoBanishUnknownBytes = false worldType = "pvp" protectionLevel = 80 pvpTileIgnoreLevelAndVocationProtection = true pzLocked = 20 * 700 huntingDuration = 60 * 1000 criticalHitChance = 7 criticalHitMultiplier = 1 displayCriticalHitNotify = true removeWeaponAmmunition = false removeWeaponCharges = false removeRuneCharges = "no" whiteSkullTime = 5 * 10 * 100 noDamageToSameLookfeet = false showHealingDamage = true showHealingDamageForMonsters = true fieldOwnershipDuration = 5 * 1000 stopAttackingAtExit = false oldConditionAccuracy = false loginProtectionPeriod = 10 * 1000 deathLostPercent = 10 stairhopDelay = 2 * 1000 pushCreatureDelay = 0 * 1000 deathContainerId = 1987 gainExperienceColor = 205 addManaSpentInPvPZone = true squareColor = 0 allowFightback = true worldId = 0 ip = "127.0.0.1" bindOnlyConfiguredIpAddress = false loginPort = 7171 gamePort = 7172 adminPort = 7171 statusPort = 7171 loginTries = 10 retryTimeout = 5 * 1000 loginTimeout = 60 * 1000 maxPlayers = 800 motd = "Bem Vindo ao Melhor Baiak Zik VIP 15 Editado por DeathRocks Tibiking" displayOnOrOffAtCharlist = false onePlayerOnlinePerAccount = true allowClones = false serverName = "Baiak Zik" loginMessage = "Voce esta Jogando o Melhor Baiak Zik com Vip 15 e com Castle 24Horas" statusTimeout = 5 * 60 * 1000 replaceKickOnLogin = true forceSlowConnectionsToDisconnect = false loginOnlyWithLoginServer = false premiumPlayerSkipWaitList = false sqlType = "sqlite" sqlHost = "localhost" sqlPort = 3306 sqlUser = "root" sqlPass = "88379409an" sqlDatabase = "vip15" sqlFile = "forgottenserver.s3db" sqlKeepAlive = 0 mysqlReadTimeout = 10 mysqlWriteTimeout = 10 encryptionType = "plain" deathListEnabled = true deathListRequiredTime = 1 * 60 * 1000 deathAssistCount = 19 maxDeathRecords = 5 ingameGuildManagement = true levelToFormGuild = 500 premiumDaysToFormGuild = 0 guildNameMinLength = 4 guildNameMaxLength = 20 highscoreDisplayPlayers = 100 updateHighscoresAfterMinutes = 2 buyableAndSellableHouses = true houseNeedPremium = true bedsRequirePremium = true levelToBuyHouse = 80 housesPerAccount = 0 houseRentAsPrice = false housePriceAsRent = false housePriceEachSquare = 1000 houseRentPeriod = "never" houseCleanOld = 0 guildHalls = false timeBetweenActions = 200 timeBetweenExActions = 1000 checkCorpseOwner = true hotkeyAimbotEnabled = true maximumDoorLevel = 500 mapName = "Baiak Yurots" mapAuthor = "DeathRocks TibiaKing" randomizeTiles = true useHouseDataStorage = false storeTrash = true cleanProtectedZones = true mailboxDisabledTowns = "-1" defaultPriority = "high" niceLevel = 5 coresUsed = "-1" optimizeDatabaseAtStartup = true removePremiumOnInit = true confirmOutdatedVersion = false maxMessageBuffer = 4 bufferMutedOnSpellFailure = false dataDirectory = "data/" allowChangeOutfit = true allowChangeColors = true allowChangeAddons = true disableOutfitsForPrivilegedPlayers = false bankSystem = true saveGlobalStorage = true displaySkillLevelOnAdvance = true spellNameInsteadOfWords = true emoteSpells = true promptExceptionTracerErrorBox = true storePlayerDirection = false monsterLootMessage = 3 monsterLootMessageType = 25 separateViplistPerCharacter = false ghostModeInvisibleEffect = true ghostModeSpellEffects = true idleWarningTime = 9 * 60 * 1000 idleKickTime = 10 * 60 * 1000 expireReportsAfterReads = 1 playerQueryDeepness = 2 maxItemsPerPZTile = 0 maxItemsPerHouseTile = 0 freePremium = true premiumForPromotion = true blessingOnlyPremium = true blessingReductionBase = 30 blessingReductionDecreament = 5 eachBlessReduction = 8 experienceStages = "yes" rateExperience = 8 rateExperienceFromPlayers = 0 rateSkill = 150 rateMagic = 120 rateLoot = 25 rateSpawn = 80 rateMonsterHealth = 1.0 rateMonsterMana = 1.0 rateMonsterAttack = 1.0 rateMonsterDefense = 1.0 minLevelThresholdForKilledPlayer = 0.9 maxLevelThresholdForKilledPlayer = 1.1 rateStaminaLoss = 1 rateStaminaGain = 3 rateStaminaThresholdGain = 12 staminaRatingLimitTop = 41 * 60 staminaRatingLimitBottom = 14 * 60 rateStaminaAboveNormal = 1.5 rateStaminaUnderNormal = 0.5 staminaThresholdOnlyPremium = true experienceShareRadiusX = 30 experienceShareRadiusY = 30 experienceShareRadiusZ = 1 experienceShareLevelDifference = 2 / 3 extraPartyExperienceLimit = 20 extraPartyExperiencePercent = 5 experienceShareActivity = 2 * 60 * 1000 globalSaveEnabled = false globalSaveHour = 5 shutdownAtGlobalSave = true cleanMapAtGlobalSave = false deSpawnRange = 2 deSpawnRadius = 50 maxPlayerSummons = 0 teleportAllSummons = false teleportPlayerSummons = false ownerName = "Baiak Zik VIP 15" ownerEmail = "" url = "ygnusbaiak.tk" location = "usa" displayGamemastersWithOnlineCommand = false adminLogsEnabled = false displayPlayersLogging = true prefixChannelLogs = "" runFile = "" outLogName = "" errorLogName = "" truncateLogsOnStartup = false
  15. Galera por favor alguem me da uma ajuda, ja faz varios meses que ta assim, é o seguinte, eu conseguia abrir servidor normal, porem do nada ficou assim!... parece que o problema é na internet... Alguem me ajuda ?  FOTO DO ERROR
  16. [23/06/2015 23:08:29] Anng has logged in. [23/06/2015 23:08:29] [Error - CreatureScript Interface] [23/06/2015 23:08:29] data/creaturescripts/scripts/login.lua:onLogin [23/06/2015 23:08:29] Description: [23/06/2015 23:08:29] (luaGetItemAttribute) Item not found [23/06/2015 23:08:30] [Error - CreatureScript Interface] [23/06/2015 23:08:30] data/creaturescripts/scripts/login.lua:onLogin [23/06/2015 23:08:30] Description: [23/06/2015 23:08:30] (luaGetItemAttribute) Item not found [23/06/2015 23:08:30] [Error - CreatureScript Interface] [23/06/2015 23:08:30] data/creaturescripts/scripts/login.lua:onLogin [23/06/2015 23:08:30] Description: [23/06/2015 23:08:30] (luaGetItemAttribute) Item not found Toda hora que um player entra no servidor ou Cria acc da esse error local config = { loginMessage = getConfigValue('loginMessage'), useFragHandler = getBooleanFromString(getConfigValue('useFragHandler')) } function onLogin(cid) local accountManager = getPlayerAccountManager(cid) if getPlayerLevel(cid) >= 1 and getPlayerLevel(cid) <= 80 then doPlayerSetLossPercent(cid, PLAYERLOSS_EXPERIENCE, 90) doCreatureSetDropLoot(cid, false) end if getPlayerLevel(cid) >= 81 and getPlayerLevel(cid) <= 149 then doPlayerSetLossPercent(cid, PLAYERLOSS_EXPERIENCE, 80) doCreatureSetDropLoot(cid, false) end if getPlayerLevel(cid) >= 150 then doPlayerSetLossPercent(cid, PLAYERLOSS_EXPERIENCE, 75) doCreatureSetDropLoot(cid, false) end if(accountManager == MANAGER_NONE) then local lastLogin, str = getPlayerLastLoginSaved(cid), config.loginMessage if(lastLogin > 0) then doPlayerSendTextMessage(cid, MESSAGE_STATUS_DEFAULT, str) str = "Your last visit was on " .. os.date("%a %b %d %X %Y", lastLogin) .. "." else str = str end doPlayerSendTextMessage(cid, MESSAGE_STATUS_DEFAULT, str) elseif(accountManager == MANAGER_NAMELOCK) then doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_ORANGE, "Hello, it appears that your character has been namelocked, what would you like as your new name?") elseif(accountManager == MANAGER_ACCOUNT) then doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_ORANGE, "Hello, type 'account' to manage your account and if you want to start over then type 'cancel'.") else doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_ORANGE, "Hello, type 'account' to create an account or type 'recover' to recover an account.") end if getCreatureName(cid) == "Account Manager" then local outfit = {} if accountManagerRandomPokemonOutfit then outfit = {lookType = getPokemonXMLOutfit(oldpokedex[math.random(151)][1])} else outfit = accountManagerOutfit end doSetCreatureOutfit(cid, outfit, -1) return true end if(not isPlayerGhost(cid)) then doSendMagicEffect(getCreaturePosition(cid), CONST_ME_TELEPORT) end local outfit = {} if getPlayerVocation(cid) == 0 then doPlayerSetMaxCapacity(cid, 0) doPlayerSetVocation(cid, 1) setCreatureMaxMana(cid, 6) doPlayerAddSoul(cid, -getPlayerSoul(cid)) setPlayerStorageValue(cid, 19898, 0) if getCreatureOutfit(cid).lookType == 128 then outfit = {lookType = 510, lookHead = math.random(0, 132), lookBody = math.random(0, 132), lookLegs = math.random(0, 132), lookFeet = math.random(0, 132)} elseif getCreatureOutfit(cid).lookType == 136 then outfit = {lookType = 511, lookHead = math.random(0, 132), lookBody = math.random(0, 132), lookLegs = math.random(0, 132), lookFeet = math.random(0, 132)} end doCreatureChangeOutfit(cid, outfit) end registerCreatureEvent(cid, "dropStone") registerCreatureEvent(cid, "ShowPokedex") --alterado v1.6 registerCreatureEvent(cid, "ClosePokedex") --alterado v1.6 registerCreatureEvent(cid, "WatchTv") registerCreatureEvent(cid, "StopWatchingTv") registerCreatureEvent(cid, "WalkTv") registerCreatureEvent(cid, "RecordTv") registerCreatureEvent(cid, "PlayerLogout") registerCreatureEvent(cid, "WildAttack") registerCreatureEvent(cid, "Idle") registerCreatureEvent(cid, "PokemonIdle") registerCreatureEvent(cid, "EffectOnAdvance") registerCreatureEvent(cid, "GeneralConfiguration") registerCreatureEvent(cid, "ReportBug") registerCreatureEvent(cid, "LookSystem") registerCreatureEvent(cid, "T1") registerCreatureEvent(cid, "T2") registerCreatureEvent(cid, "task_count") registerCreatureEvent(cid, "pokemons") addEvent(doSendAnimatedText, 500, getThingPosWithDebug(cid), "Bem Vindo!!", COLOR_BURN) if getPlayerStorageValue(cid, 99284) == 1 then setPlayerStorageValue(cid, 99284, -1) end if getPlayerStorageValue(cid, 6598754) >= 1 or getPlayerStorageValue(cid, 6598755) >= 1 then setPlayerStorageValue(cid, 6598754, -1) setPlayerStorageValue(cid, 6598755, -1) doRemoveCondition(cid, CONDITION_OUTFIT) --alterado v1.9 \/ doTeleportThing(cid, posBackPVP, false) doCreatureAddHealth(cid, getCreatureMaxHealth(cid)) end doChangeSpeed(cid, -(getCreatureSpeed(cid))) --///////////////////////////////////////////////////////////////////////////-- local storages = {17000, 63215, 17001, 13008, 5700} for s = 1, #storages do if not tonumber(getPlayerStorageValue(cid, storages)) then if s == 3 then setPlayerStorageValue(cid, storages, 1) elseif s == 4 then setPlayerStorageValue(cid, storages, -1) else if isBeingUsed(getPlayerSlotItem(cid, 8).itemid) then setPlayerStorageValue(cid, storages, 1) else setPlayerStorageValue(cid, storages, -1) end end doPlayerSendTextMessage(cid, 27, "Sorry, but a problem occurred on the server, but now it's alright") end end --/////////////////////////////////////////////////////////////////////////-- if getPlayerStorageValue(cid, 17000) >= 1 then -- fly local item = getPlayerSlotItem(cid, 8) local poke = getItemAttribute(item.uid, "poke") doChangeSpeed(cid, getPlayerStorageValue(cid, 54844)) doRemoveCondition(cid, CONDITION_OUTFIT) doSetCreatureOutfit(cid, {lookType = flys[poke][1] + 351}, -1) local apos = getFlyingMarkedPos(cid) apos.stackpos = 0 if getTileThingByPos(apos).itemid <= 2 then doCombatAreaHealth(cid, FIREDAMAGE, getFlyingMarkedPos(cid), 0, 0, 0, CONST_ME_NONE) doCreateItem(460, 1, getFlyingMarkedPos(cid)) end doTeleportThing(cid, apos, false) if getItemAttribute(item.uid, "boost") and getItemAttribute(item.uid, "boost") >= 50 and getPlayerStorageValue(cid, 42368) >= 1 then sendAuraEffect(cid, auraSyst[getItemAttribute(item.uid, "aura")]) --alterado v1.8 end local posicao = getTownTemplePosition(getPlayerTown(cid)) markFlyingPos(cid, posicao) elseif getPlayerStorageValue(cid, 63215) >= 1 then -- surf local item = getPlayerSlotItem(cid, 8) local poke = getItemAttribute(item.uid, "poke") doSetCreatureOutfit(cid, {lookType = surfs[poke].lookType + 351}, -1) --alterado v1.6 doChangeSpeed(cid, getPlayerStorageValue(cid, 54844)) if getItemAttribute(item.uid, "boost") and getItemAttribute(item.uid, "boost") >= 50 and getPlayerStorageValue(cid, 42368) >= 1 then sendAuraEffect(cid, auraSyst[getItemAttribute(item.uid, "aura")]) --alterado v1.8 end elseif getPlayerStorageValue(cid, 17001) >= 1 then -- ride local item = getPlayerSlotItem(cid, 8) local poke = getItemAttribute(item.uid, "poke") if rides[poke] then doChangeSpeed(cid, getPlayerStorageValue(cid, 54844)) doRemoveCondition(cid, CONDITION_OUTFIT) doSetCreatureOutfit(cid, {lookType = rides[poke][1] + 351}, -1) if getItemAttribute(item.uid, "boost") and getItemAttribute(item.uid, "boost") >= 50 and getPlayerStorageValue(cid, 42368) >= 1 then sendAuraEffect(cid, auraSyst[getItemAttribute(item.uid, "aura")]) --alterado v1.8 end else setPlayerStorageValue(cid, 17001, -1) doRegainSpeed(cid) end local posicao2 = getTownTemplePosition(getPlayerTown(cid)) markFlyingPos(cid, posicao2) elseif getPlayerStorageValue(cid, 13008) >= 1 then -- dive if not isInArray({5405, 5406, 5407, 5408, 5409, 5410}, getTileInfo(getThingPos(cid)).itemid) then setPlayerStorageValue(cid, 13008, 0) doRegainSpeed(cid) doRemoveCondition(cid, CONDITION_OUTFIT) return true end if getPlayerSex(cid) == 1 then doSetCreatureOutfit(cid, {lookType = 1034, lookHead = getCreatureOutfit(cid).lookHead, lookBody = getCreatureOutfit(cid).lookBody, lookLegs = getCreatureOutfit(cid).lookLegs, lookFeet = getCreatureOutfit(cid).lookFeet}, -1) else doSetCreatureOutfit(cid, {lookType = 1035, lookHead = getCreatureOutfit(cid).lookHead, lookBody = getCreatureOutfit(cid).lookBody, lookLegs = getCreatureOutfit(cid).lookLegs, lookFeet = getCreatureOutfit(cid).lookFeet}, -1) end doChangeSpeed(cid, 800) elseif getPlayerStorageValue(cid, 5700) > 0 then --bike doChangeSpeed(cid, -getCreatureSpeed(cid)) doChangeSpeed(cid, getPlayerStorageValue(cid, 5700)) --alterado v1.8 if getPlayerSex(cid) == 1 then doSetCreatureOutfit(cid, {lookType = 1394}, -1) else doSetCreatureOutfit(cid, {lookType = 1393}, -1) end elseif getPlayerStorageValue(cid, 75846) >= 1 then --alterado v1.9 \/ doTeleportThing(cid, getTownTemplePosition(getPlayerTown(cid)), false) setPlayerStorageValue(cid, 75846, -1) sendMsgToPlayer(cid, 20, "You have been moved to your town!") else doRegainSpeed(cid) end if getPlayerStorageValue(cid, 22545) >= 1 then setPlayerStorageValue(cid, 22545, -1) doTeleportThing(cid, getClosestFreeTile(cid, posBackGolden), false) setPlayerRecordWaves(cid) end if useKpdoDlls then doUpdateMoves(cid) doUpdatePokemonsBar(cid) onPokeHealthChange(cid) end doPlayerChangeModeIcon(cid) return true end
  17. Como mudar o id do item ? Como mudar o id do item ? Como mudar o id do item ?
  18. Olá galera hoje dia 21/06 Inaugurei meu servidor Baiakplus ele é um baiak como ja sabem pelo nome... o mapa é rox com as armas de 20kk Ip : Baiakplus.zapto.org gogo galera me ajudem a divulgar
  • Quem Está Navegando   0 membros estão online

    • Nenhum usuário registrado visualizando esta página.
×
×
  • Criar Novo...