Postado Julho 19, 2023 1 ano .Qual servidor ou website você utiliza como base? otxserver 2.4 Qual o motivo deste tópico? Estou tentando criar uma tela de login personalizada, onde seriam exibidas informações mais detalhadas do player. Sei + ou - em quais arquivos devo mexer para enviar e receber os dados do client para o servidor, mas como não sei muito de C não consigo enviar os dados para o client. Queria pegar informações tipo level, outfit, vida. Se alguem puder me ajudar me dando um caminho de como fazer essa alteração ou algum tutorial que ja exista sobre como editar o protocolo de login eu agradeço. protocollogin.cpp #ifndef __LOGIN_SERVER__ for(Characters::iterator it = account.charList.begin(); it != account.charList.end(); ++it) { output->putString((*it)); if(g_config.getBool(ConfigManager::ON_OR_OFF_CHARLIST)) { if(g_game.getPlayerByName((*it))) output->putString("Online"); else output->putString("Offline"); } else output->putString(g_config.getString(ConfigManager::SERVER_NAME)); output->put<uint32_t>(serverIp); IntegerVec games = vectorAtoi(explodeString(g_config.getString(ConfigManager::GAME_PORT), ",")); output->put<uint16_t>(games[random_range(0, games.size() - 1)]); } iologindata.cpp void IOLoginData::loadCharacters(Account& account) { Database* db = Database::getInstance(); DBQuery query; #ifndef __LOGIN_SERVER__ query << "SELECT `name`, `level`, `looktype` FROM `players` WHERE `account_id` = " << account.number << " AND `world_id` = " << g_config.getNumber(ConfigManager::WORLD_ID) << " AND `deleted` = 0"; #else query << "SELECT `id`, `name`, `world_id`, `online` FROM `players` WHERE `account_id` = " << account.number << " AND `deleted` = 0"; #endif DBResult* result; if(!(result = db->storeQuery(query.str()))) return; do { #ifndef __LOGIN_SERVER__ std::string name = result->getDataString("name"); std::string level = result->getDataString("level"); std::string outfit = result->getDataString("looktype"); account.charList.push_back(name); #else std::string name = result->getDataString("name"); if(GameServer* srv = GameServers::getInstance()->getServerById(result->getDataInt("world_id"))) account.charList[name] = Character(name, srv, result->getDataInt("online")); else std::clog << "[Warning - IOLoginData::loadAccount] Invalid server for player '" << name << "'." << std::endl; #endif } while(result->next()); result->free(); #ifndef __LOGIN_SERVER__ account.charList.sort(); #endif } account.h #ifndef __ACCOUNT__ #define __ACCOUNT__ #include "otsystem.h" #ifndef __LOGIN_SERVER__ typedef std::list<std::string> Characters; #else class GameServer; struct Character { Character(): server(NULL), status(0) {} Character(const std::string& _name, GameServer* _server, int8_t _status): name(_name), server(_server), status(_status) {} std::string name, level, outfit; GameServer* server; int8_t status; }; typedef std::map<std::string, Character> Characters; #endif class Account { public: Account() {premiumDays = warnings = number = lastDay = 0;} virtual ~Account() {charList.clear();} uint16_t premiumDays, warnings; uint32_t number, lastDay; std::string name, password, recoveryKey, salt; Characters charList; }; #endif
Participe da conversa
Você pode postar agora e se cadastrar mais tarde. Se você tem uma conta, faça o login para postar com sua conta.