Ir para conteúdo

SkyDarkyes

Infante
  • Total de itens

    1685
  • Registro em

  • Última visita

Tudo que SkyDarkyes postou

  1. Sim adicionei efeitos até 270 apenas para testar e nada, e outra efeitos 69+ não estão aparecendo, unica coisa que fiz de diferente foi nessa parte void ProtocolGame::AddMagicEffect(NetworkMessage_ptr msg,const Position& pos, uint16_t type) { msg->put<char>(0x83); msg->putPosition(pos); msg->put<uint16_t>(type + 1); } Apenas isso no console ERROR: Unable to send extended opcode 1, extended opcodes are not enabled
  2. O efeito é efeito normal ou distanceeffect?
  3. Você já tento usar o efeito com o mando /z? /z e o numero do efeito
  4. Adicionou o efeito no dat/spr?
  5. Alguem possui um map tracker na versão 8.54?
  6. Caraca man, tópico de 2011, tenta procurar um tópico mais recente, com certeza o autor nem entra mais.
  7. Não da erro, simplesmente não aumentou os efeitos, compilou sem erros
  8. Aumentei nas sources
  9. http://www.4shared.com/rar/71Pvu10_ba/arquivos.html?
  10. Tente <?xml version="1.0" encoding="UTF-8"?> <monster name="King minotaur" nameDescription="a king minotaur" race="blood" experience="50" speed="470" manacost="330"> <health now="20000" max="20000"/> <look type="25" head="20" body="30" legs="40" feet="50" corpse="5969"/> <targetchange interval="2000" chance="0"/> <strategy attack="100" defense="0"/> <flags> <flag summonable="1"/> <flag attackable="1"/> <flag hostile="1"/> <flag illusionable="1"/> <flag convinceable="1"/> <flag pushable="1"/> <flag canpushitems="0"/> <flag canpushcreatures="0"/> <flag targetdistance="1"/> <flag staticattack="90"/> <flag runonhealth="0"/> </flags> <attacks> <attack name="melee" interval="1000" skill="115" attack="105"/> </attacks> <defenses armor="11" defense="11"/> <immunities> <immunity physical="0"/> <immunity energy="0"/> <immunity fire="0"/> <immunity poison="0"/> <immunity lifedrain="0"/> <immunity paralyze="0"/> <immunity outfit="0"/> <immunity drunk="0"/> <immunity invisible="0"/> </immunities> <voices interval="5000" chance="10"> <voice sentence="kaplar!"/> </voices> <loot> <item id="3976" countmax="10" chance1="50000" chancemax="0"/> <item id="2148" countmax="28" chance1="100000" chancemax="0"/> <item id="2464" chance="10000"/> <item id="2386" chance="10000"/> <item id="2649" chance="10000"/> <item id="2554" chance="10000"/> <item id="5878" countmax="1" chance1="5000" chancemax="0"/> <item id="1987" chance="100000"> <inside> <item id="2458" chance="10000"/> <item id="2148" countmax="5" chance1="20000" chancemax="0"/> <item id="2460" chance="10000"/> <item id="2510" chance="10000"/> <item id="2398" chance="10000"/> <item id="2172" chance="2500"/> </inside> </item> </loot> </monster>
  11. function onSay(cid, words, param, channel) local func = doCreateMonster if(words:sub(2, 2) == "n") then func = doCreateNpc end local pid = cid local t = string.explode(param, ",") if(t[2]) then pid = getPlayerByNameWildcard(t[2]) if(not pid) then doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_BLUE, "Player " .. t[2] .. " not found.") return true end end local position = getCreaturePosition(pid) local effect = CONST_ME_MAGIC_RED local ret = func(t[1], position, false) if(tonumber(ret) == nil) then effect = CONST_ME_POFF doPlayerSendDefaultCancel(cid, (ret == false and RETURNVALUE_NOTPOSSIBLE or RETURNVALUE_NOTENOUGHROOM)) end doSendMagicEffect(position, effect) return true end
  12. SkyDarkyes

    Erros /m

    É normal esses erros? isso acontece se eu digitar o nome errado ou se eu tentar invocar onde não pode, pz etc....
  13. Man fiz tudo certo, não adiantou Quer os arquivos da source pra checar?
  14. SkyDarkyes

    First items

    Eu já havia resolvido, mas obrigado.
  15. SkyDarkyes

    Erro newtype

    Todos os newtypes 350+ está como items, pisos, paredes etc... mas no client está tudo certo, newtype que eu falo é o comando /newtype 350+ aparece com items #RESOLVIDO, aumentei a extenção no newtype.lua.
  16. É só trocar, e caso precise adicione dll, pode ser que de erro em alguns scripts
  17. Oque? Minha source void ProtocolGame::AddPlayerStats(NetworkMessage_ptr msg) { msg->put<char>(0xA0); msg->put<uint16_t>(player->getHealth()); msg->put<uint16_t>(player->getPlayerInfo(PLAYERINFO_MAXHEALTH)); msg->put<uint32_t>(uint32_t(player->getFreeCapacity() * 100)); uint64_t experience = player->getExperience(); if(experience > 0x7FFFFFFF) // client debugs after 2,147,483,647 exp msg->put<uint32_t>(0x7FFFFFFF); else msg->put<uint32_t>(experience); msg->put<uint16_t>(player->getPlayerInfo(PLAYERINFO_LEVEL)); msg->put<char>(player->getPlayerInfo(PLAYERINFO_LEVELPERCENT)); msg->put<uint16_t>(player->getPlayerInfo(PLAYERINFO_MANA)); msg->put<uint16_t>(player->getPlayerInfo(PLAYERINFO_MAXMANA)); msg->put<char>(player->getPlayerInfo(PLAYERINFO_MAGICLEVEL)); msg->put<char>(player->getPlayerInfo(PLAYERINFO_MAGICLEVELPERCENT)); msg->put<char>(player->getPlayerInfo(PLAYERINFO_SOUL)); msg->put<uint16_t>(player->getStaminaMinutes()); } Source do tópico void ProtocolGame::AddPlayerStats(NetworkMessage_ptr msg) { msg->AddByte(0xA0); msg->AddU16(player->getHealth()); msg->AddU16(player->getPlayerInfo(PLAYERINFO_MAXHEALTH)); msg->AddU32(uint32_t(player->getFreeCapacity() * 100)); uint64_t experience = player->getExperience(); if(experience > 0x7FFFFFFF) // client debugs after 2,147,483,647 exp msg->AddU32(0x7FFFFFFF); else msg->AddU32(experience); msg->AddU16(player->getPlayerInfo(PLAYERINFO_LEVEL)); msg->AddByte(player->getPlayerInfo(PLAYERINFO_LEVELPERCENT)); msg->AddU16(player->getPlayerInfo(PLAYERINFO_MANA)); msg->AddU16(player->getPlayerInfo(PLAYERINFO_MAXMANA)); msg->AddByte(player->getPlayerInfo(PLAYERINFO_MAGICLEVEL)); msg->AddByte(player->getPlayerInfo(PLAYERINFO_MAGICLEVELPERCENT)); msg->AddByte(player->getPlayerInfo(PLAYERINFO_SOUL)); msg->AddU16(player->getStaminaMinutes()); } Alguem? @up
  18. Quer mudar o icone?
  19. Minha source é 8.60, talvez seja esse um motivo Como adiciono? está falando disso? void ProtocolGame::AddPlayerStats(NetworkMessage_ptr msg) { msg->put<char>(0xA0); msg->put<uint16_t>(player->getHealth()); msg->put<uint16_t>(player->getPlayerInfo(PLAYERINFO_MAXHEALTH)); msg->put<uint32_t>(uint32_t(player->getFreeCapacity() * 100)); uint64_t experience = player->getExperience(); if(experience > 0x7FFFFFFF) // client debugs after 2,147,483,647 exp msg->put<uint32_t>(0x7FFFFFFF); else msg->put<uint32_t>(experience); msg->put<uint16_t>(player->getPlayerInfo(PLAYERINFO_LEVEL)); msg->put<char>(player->getPlayerInfo(PLAYERINFO_LEVELPERCENT)); msg->put<uint16_t>(player->getPlayerInfo(PLAYERINFO_MANA)); msg->put<uint16_t>(player->getPlayerInfo(PLAYERINFO_MAXMANA)); msg->put<char>(player->getPlayerInfo(PLAYERINFO_MAGICLEVEL)); msg->put<char>(player->getPlayerInfo(PLAYERINFO_MAGICLEVELPERCENT)); msg->put<char>(player->getPlayerInfo(PLAYERINFO_SOUL)); msg->put<uint16_t>(player->getStaminaMinutes());
  20. Mapa custom =x, não está lendo nenhum .dat
  21. //////////////////////////////////////////////////////////////////////// // 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 "otpch.h" #include "otsystem.h" #include <iostream> #include <fstream> #include <iomanip> #ifndef WINDOWS #include <unistd.h> #include <termios.h> #else #include <conio.h> #endif #include <boost/config.hpp> #include <openssl/rsa.h> #include <openssl/bn.h> #include <openssl/err.h> #include "server.h" #ifdef __LOGIN_SERVER__ #include "gameservers.h" #endif #include "networkmessage.h" #include "game.h" #include "chat.h" #include "tools.h" #include "protocollogin.h" #include "protocolgame.h" #include "protocolold.h" #include "protocolhttp.h" #include "status.h" #include "manager.h" #ifdef __OTADMIN__ #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 #ifndef __OTADMIN__ #include "textlogger.h" #endif #ifdef __NO_BOOST_EXCEPTIONS__ #include <exception> inline void boost::throw_exception(std::exception const & e) { std::clog << "Boost exception: " << e.what() << std::endl; } #endif RSA* g_RSA; ConfigManager g_config; Game g_game; Chat g_chat; Monsters g_monsters; Npcs g_npcs; boost::mutex g_loaderLock; boost::condition_variable g_loaderSignal; boost::unique_lock<boost::mutex> g_loaderUniqueLock(g_loaderLock); std::list<std::pair<uint32_t, uint32_t> > serverIps; bool argumentsHandler(StringVec args) { StringVec tmp; for(StringVec::iterator it = args.begin(); it != args.end(); ++it) { if((*it) == "--help") { std::clog << "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 the 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--manager-port=$1\tPort for manager server to listen on.\n" "\t--status-port=$1\tPort for status server to listen on.\n"; #ifndef WINDOWS std::clog << "\t--runfile=$1\t\tSpecifies run file. Will contain the pid\n" "\t\t\t\tof the server process as long as run status.\n"; #endif std::clog << "\t--log=$1\t\tWhole standard output will be logged to\n" "\t\t\t\tthis file.\n" "\t--closed\t\t\tStarts the server as closed.\n"; return false; } if((*it) == "--version" || (*it) == "-V") { std::clog << SOFTWARE_NAME << ", version " << SOFTWARE_VERSION << "\n" "A server developed by Skydarkyes.\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] == "--manager-port") g_config.setNumber(ConfigManager::MANAGER_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] == "--log") g_config.setString(ConfigManager::OUTPUT_LOG, tmp[1]); else if(tmp[0] == "--closed") g_config.setBool(ConfigManager::START_CLOSED, true); else if(tmp[0] == "--no-script") g_config.setBool(ConfigManager::SCRIPT_SYSTEM, false); } return true; } #ifndef WINDOWS int32_t getch() { struct termios oldt; tcgetattr(STDIN_FILENO, &oldt); struct termios newt = oldt; newt.c_lflag &= ~(ICANON | ECHO); tcsetattr(STDIN_FILENO, TCSANOW, &newt); int32_t ch = getchar(); tcsetattr(STDIN_FILENO, TCSANOW, &oldt); return ch; } void signalHandler(int32_t sig) { switch(sig) { case SIGHUP: Dispatcher::getInstance().addTask(createTask( boost::bind(&Game::saveGameState, &g_game, false))); break; case SIGTRAP: g_game.cleanMap(); break; case SIGCHLD: g_game.proceduralRefresh(); break; case SIGUSR1: Dispatcher::getInstance().addTask(createTask( boost::bind(&Game::setGameState, &g_game, GAMESTATE_CLOSED))); break; case SIGUSR2: g_game.setGameState(GAMESTATE_NORMAL); break; case SIGCONT: Dispatcher::getInstance().addTask(createTask( boost::bind(&Game::reloadInfo, &g_game, RELOAD_ALL, 0))); break; case SIGQUIT: Dispatcher::getInstance().addTask(createTask( boost::bind(&Game::setGameState, &g_game, GAMESTATE_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(); } #else int32_t getch() { return (int32_t)getchar(); } #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]; delete fgets(buffer, 1024, stdin); exit(-1); } void startupErrorMessage(std::string error = "") { if(error.length() > 0) std::clog << std::endl << "> ERROR: " << error << std::endl; getch(); exit(-1); } void otserv(StringVec args, ServiceManager* services); int main(int argc, char* argv[]) { StringVec args = StringVec(argv, argv + argc); if(argc > 1 && !argumentsHandler(args)) return 0; std::set_new_handler(allocationHandler); ServiceManager servicer; g_config.startup(); #ifdef __OTSERV_ALLOCATOR_STATS__ boost::thread(boost::bind(&allocatorStatsThread, (void*)NULL)); // TODO: shutdown 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 OutputHandler::getInstance(); Dispatcher::getInstance().addTask(createTask(boost::bind(otserv, args, &servicer))); g_loaderSignal.wait(g_loaderUniqueLock); if(servicer.isRunning()) { std::clog << ">> " << g_config.getString(ConfigManager::SERVER_NAME) << " server Online!" << std::endl << std::endl; servicer.run(); } else std::clog << ">> " << g_config.getString(ConfigManager::SERVER_NAME) << " server Offline! No services available..." << std::endl << std::endl; #ifdef __EXCEPTION_TRACER__ mainExceptionHandler.RemoveHandler(); #endif return 0; } void otserv(StringVec, ServiceManager* services) { srand((uint32_t)OTSYS_TIME()); #if defined(WINDOWS) SetConsoleTitle(SOFTWARE_NAME); #endif g_game.setGameState(GAMESTATE_STARTUP); #if !defined(WINDOWS) && !defined(__ROOT_PERMISSION__) if(!getuid() || !geteuid()) { std::clog << "> WARNING: " << SOFTWARE_NAME << " has been executed as super user! It is " << "recommended to run as a normal user." << std::endl << "Continue? (y/N)" << std::endl; char buffer = getch(); if(buffer != 121 && buffer != 89) startupErrorMessage("Aborted."); } #endif std::clog << SOFTWARE_NAME << ", version " << SOFTWARE_VERSION << "\n" "A server developed by Skydarkyes.\n"; 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::clog << ">> Debugging:" << debug << "." << std::endl; std::clog << ">> Loading config (" << g_config.getString(ConfigManager::CONFIG_FILE) << ")" << std::endl; if(!g_config.load()) startupErrorMessage("Unable to load " + g_config.getString(ConfigManager::CONFIG_FILE) + "!"); // silently append trailing slash std::string path = g_config.getString(ConfigManager::DATA_DIRECTORY); g_config.setString(ConfigManager::DATA_DIRECTORY, path.erase(path.find_last_not_of("/") + 1) + "/"); path = g_config.getString(ConfigManager::LOGS_DIRECTORY); g_config.setString(ConfigManager::LOGS_DIRECTORY, path.erase(path.find_last_not_of("/") + 1) + "/"); std::clog << "> Opening logs" << std::endl; 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 #ifndef MACOS 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); } #endif 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::clog << "> Using MD5 encryption" << std::endl; } else if(encryptionType == "sha1") { g_config.setNumber(ConfigManager::ENCRYPTION, ENCRYPTION_SHA1); std::clog << "> Using SHA1 encryption" << std::endl; } else if(encryptionType == "sha256") { g_config.setNumber(ConfigManager::ENCRYPTION, ENCRYPTION_SHA256); std::clog << "> Using SHA256 encryption" << std::endl; } else if(encryptionType == "sha512") { g_config.setNumber(ConfigManager::ENCRYPTION, ENCRYPTION_SHA512); std::clog << "> Using SHA512 encryption" << std::endl; } else { g_config.setNumber(ConfigManager::ENCRYPTION, ENCRYPTION_PLAIN); std::clog << "> Using plaintext encryption" << std::endl; } std::clog << ">> Loading RSA key" << std::endl; g_RSA = RSA_new(); BN_dec2bn(&g_RSA->p, g_config.getString(ConfigManager::RSA_PRIME1).c_str()); BN_dec2bn(&g_RSA->q, g_config.getString(ConfigManager::RSA_PRIME2).c_str()); BN_dec2bn(&g_RSA->d, g_config.getString(ConfigManager::RSA_PRIVATE).c_str()); BN_dec2bn(&g_RSA->n, g_config.getString(ConfigManager::RSA_MODULUS).c_str()); BN_dec2bn(&g_RSA->e, g_config.getString(ConfigManager::RSA_PUBLIC).c_str()); // TODO: dmp1, dmq1, iqmp? // This check will verify keys set in config.lua if(!RSA_check_key(g_RSA)) { std::stringstream s; s << "OpenSSL failed - "; ERR_load_crypto_strings(); s << ERR_error_string(ERR_get_error(), NULL); startupErrorMessage(s.str()); } std::clog << ">> Starting SQL connection" << std::endl; Database* db = Database::getInstance(); if(db && db->isConnected()) { std::clog << ">> Running Database Manager" << std::endl; if(DatabaseManager::getInstance()->isDatabaseSetup()) { uint32_t version = 0; do { version = DatabaseManager::getInstance()->updateDatabase(); if(!version) break; std::clog << "> Database has been updated to version: " << version << "." << std::endl; } while(version < VERSION_DATABASE); } else startupErrorMessage("The database you have specified in config.lua is empty, please import schemas/<engine>.sql to the database."); DatabaseManager::getInstance()->checkTriggers(); DatabaseManager::getInstance()->checkEncryption(); if(g_config.getBool(ConfigManager::OPTIMIZE_DATABASE) && !DatabaseManager::getInstance()->optimizeTables()) std::clog << "> No tables were optimized." << std::endl; } else startupErrorMessage("Couldn't estabilish connection to SQL database!"); std::clog << ">> Loading items (OTB)" << std::endl; if(Item::items.loadFromOtb(getFilePath(FILE_TYPE_OTHER, "items/items.otb"))) startupErrorMessage("Unable to load items (OTB)!"); std::clog << ">> Loading items (XML)" << std::endl; if(!Item::items.loadFromXml()) { std::clog << "Unable to load items (XML)! Continue? (y/N)" << std::endl; char buffer = getch(); if(buffer != 121 && buffer != 89) startupErrorMessage("Unable to load items (XML)!"); } std::clog << ">> Loading groups" << std::endl; if(!Groups::getInstance()->loadFromXml()) startupErrorMessage("Unable to load groups!"); std::clog << ">> Loading vocations" << std::endl; if(!Vocations::getInstance()->loadFromXml()) startupErrorMessage("Unable to load vocations!"); std::clog << ">> Loading outfits" << std::endl; if(!Outfits::getInstance()->loadFromXml()) startupErrorMessage("Unable to load outfits!"); std::clog << ">> Loading chat channels" << std::endl; if(!g_chat.loadFromXml()) startupErrorMessage("Unable to load chat channels!"); if(g_config.getBool(ConfigManager::SCRIPT_SYSTEM)) { std::clog << ">> Loading script systems" << std::endl; if(!ScriptManager::getInstance()->loadSystem()) startupErrorMessage(); } else ScriptManager::getInstance(); std::clog << ">> Loading mods..." << std::endl; if(!ScriptManager::getInstance()->loadMods()) startupErrorMessage(); #ifdef __LOGIN_SERVER__ std::clog << ">> Loading game servers" << std::endl; if(!GameServers::getInstance()->loadFromXml(true)) startupErrorMessage("Unable to load game servers!"); #endif std::clog << ">> Loading experience stages" << std::endl; if(!g_game.loadExperienceStages()) startupErrorMessage("Unable to load experience stages!"); std::clog << ">> Loading monsters" << std::endl; if(!g_monsters.loadFromXml()) { std::clog << "Unable to load monsters! Continue? (y/N)" << std::endl; char buffer = getch(); if(buffer != 121 && buffer != 89) startupErrorMessage("Unable to load monsters!"); } std::clog << ">> Loading map and spawns..." << std::endl; if(!g_game.loadMap(g_config.getString(ConfigManager::MAP_NAME))) startupErrorMessage(); std::clog << ">> Checking world type... "; std::string worldType = asLowerCaseString(g_config.getString(ConfigManager::WORLD_TYPE)); if(worldType == "open" || worldType == "2" || worldType == "openpvp") { g_game.setWorldType(WORLDTYPE_OPEN); std::clog << "Open PvP" << std::endl; } else if(worldType == "optional" || worldType == "1" || worldType == "optionalpvp") { g_game.setWorldType(WORLDTYPE_OPTIONAL); std::clog << "Optional PvP" << std::endl; } else if(worldType == "hardcore" || worldType == "3" || worldType == "hardcorepvp") { g_game.setWorldType(WORLDTYPE_HARDCORE); std::clog << "Hardcore PvP" << std::endl; } else { std::clog << std::endl; startupErrorMessage("Unknown world type: " + g_config.getString(ConfigManager::WORLD_TYPE)); } std::clog << ">> Initializing game state and binding services..." << std::endl; g_game.setGameState(GAMESTATE_INIT); IPAddressList ipList; std::string ip = g_config.getString(ConfigManager::IP); if(asLowerCaseString(ip) == "auto") { // TODO: automatic shit } IPAddress m_ip; if(ip.size()) { std::clog << "> Global IP address: "; uint32_t resolvedIp = inet_addr(ip.c_str()); if(resolvedIp == INADDR_NONE) { struct hostent* host = gethostbyname(ip.c_str()); if(!host) { std::clog << "..." << std::endl; startupErrorMessage("Cannot resolve " + ip + "!"); } resolvedIp = *(uint32_t*)host->h_addr; } serverIps.push_front(std::make_pair(resolvedIp, 0)); m_ip = boost::asio::ip::address_v4(swap_uint32(resolvedIp)); ipList.push_back(m_ip); std::clog << m_ip.to_string() << std::endl; } ipList.push_back(boost::asio::ip::address_v4(INADDR_LOOPBACK)); if(!g_config.getBool(ConfigManager::BIND_ONLY_GLOBAL_ADDRESS)) { char hostName[128]; if(!gethostname(hostName, 128)) { if(hostent* host = gethostbyname(hostName)) { std::stringstream s; for(uint8_t** addr = (uint8_t**)host->h_addr_list; addr[0] != NULL; addr++) { uint32_t resolved = swap_uint32(*(uint32_t*)(*addr)); if(m_ip.to_v4().to_ulong() == resolved) continue; ipList.push_back(boost::asio::ip::address_v4(resolved)); serverIps.push_front(std::make_pair(*(uint32_t*)(*addr), 0x0000FFFF)); s << (int32_t)(addr[0][0]) << "." << (int32_t)(addr[0][1]) << "." << (int32_t)(addr[0][2]) << "." << (int32_t)(addr[0][3]) << "\t"; } if(s.str().size()) std::clog << "> Local IP address(es): " << s.str() << std::endl; } } serverIps.push_front(std::make_pair(LOCALHOST, 0xFFFFFFFF)); if(m_ip.to_v4().to_ulong() != LOCALHOST) ipList.push_back(boost::asio::ip::address_v4(LOCALHOST)); } else if(ipList.size() < 2) startupErrorMessage("Unable to bind any IP address! You may want to disable \"bindOnlyGlobalAddress\" setting in config.lua"); services->add<ProtocolStatus>(g_config.getNumber(ConfigManager::STATUS_PORT), ipList); services->add<ProtocolManager>(g_config.getNumber(ConfigManager::MANAGER_PORT), ipList); #ifdef __OTADMIN__ services->add<ProtocolAdmin>(g_config.getNumber(ConfigManager::ADMIN_PORT), ipList); #endif //services->add<ProtocolHTTP>(8080, ipList); if( #ifdef __LOGIN_SERVER__ true #else !g_config.getBool(ConfigManager::LOGIN_ONLY_LOGINSERVER) #endif ) { services->add<ProtocolLogin>(g_config.getNumber(ConfigManager::LOGIN_PORT), ipList); services->add<ProtocolOldLogin>(g_config.getNumber(ConfigManager::LOGIN_PORT), ipList); } services->add<ProtocolGame>(g_config.getNumber(ConfigManager::GAME_PORT), ipList); services->add<ProtocolOldGame>(g_config.getNumber(ConfigManager::LOGIN_PORT), ipList); std::clog << "> Bound ports: "; std::list<uint16_t> ports = services->getPorts(); for(std::list<uint16_t>::iterator it = ports.begin(); it != ports.end(); ++it) std::clog << (*it) << "\t"; std::clog << std::endl << ">> Everything smells good, server is starting up..." << std::endl; g_game.start(services); g_game.setGameState(g_config.getBool(ConfigManager::START_CLOSED) ? GAMESTATE_CLOSED : GAMESTATE_NORMAL); g_loaderSignal.notify_all(); } @up
  22. #RESOLVIDO, eu havia cometido um erro, restaurei o original e modifiquei, obrigado,
  • Quem Está Navegando   0 membros estão online

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