Galera alguem pode min da uma forca com isso ?
estou tentando colocar que o char apareça ali com todas as informações mais não estou conseguindo.

Aperte crtl+t você abrirá o terminal verifique se há algum erro
estou com esse problema também
Salve man, respondendo esse tópico com alguns anos de atraso mas isso foi um problema que acabei esbarrando também e consegui encontrar a solução. Podem estar acontecendo basicamente 2 coisas
1 - Erro no código do cliente, e ai precisariamos ver o console (ctrl+t) ou o debug (geralmente otclient.txt) para saber o que está acontecendo
2 - Muitos clientes podem até ja vir preparados para receber outfit nas devidas modules como, por exemplo, o OTClient do Edubart na module client_entergame:
if key == 'outfit' then -- it's an exception subWidget:setOutfit(value) else
Mas o servidor precisa mandar a seção "outfit" corretamente pelo protocolo de login, assim como o cliente deve receber essa mesma seção pelo mesmo protocolo, por exemplo:
2.1 Servidor:
Pegando, por exemplo as sources desse servidor (
) Notamos no arquivos protocollogin.cpp (sources server) na função ProtocolLogin::parseFirstPacket todos os dados que são enviados pro cliente em relação ao personagem. Precisamos apenas adicionar a seção de outfits aqui, como por exemplo, abaixo de output->AddU16(g_config.getNumber(ConfigManager::GAME_PORT)); (em relação ao player e NÃO ao Account Manager) você pode adicionar um código tipo assim (lembrando de adicionar o import #include "database.h" e #include "databasemanager.h" no topo do arquivo):
uint16_t lookType = 128; uint8_t lookHead = 0, lookBody = 0, lookLegs = 0, lookFeet = 0, lookAddons = 0; DBResult* result = Database::getInstance()->storeQuery( "SELECT looktype, lookhead, lookbody, looklegs, lookfeet, lookaddons " "FROM players WHERE name = " + Database::getInstance()->escapeString((*it)) + " LIMIT 1" ); if(result) { lookType = result->getDataInt("looktype"); lookHead = result->getDataInt("lookhead"); lookBody = result->getDataInt("lookbody"); lookLegs = result->getDataInt("looklegs"); lookFeet = result->getDataInt("lookfeet"); lookAddons = result->getDataInt("lookaddons"); result->free(); } output->AddU16(lookType); output->AddByte(lookHead); output->AddByte(lookBody); output->AddByte(lookLegs); output->AddByte(lookFeet); output->AddByte(lookAddons);
E na seção do Account Manager passar valores padrão:
2.2 Cliente:
Voltando pro cliente, precisamos captar essa nova seção no protocolo de Login. Pegando o OTClient do Edubart como exemplo, existe o arquivo modules/gamelib/protocollogin.lua (no cliente mesmo e não nas sources) que possui a função ProtocolLogin:parseCharacterList agora é só passar a nova seção de outfit aqui dentro, junto com os demais dados do personagem:
function ProtocolLogin:parseCharacterList(msg) local characters = {} local charactersCount = msg:getU8() for i = 1, charactersCount do local character = {} character.name = msg:getString() character.worldName = msg:getString() character.worldIp = iptostring(msg:getU32()) character.worldPort = msg:getU16() local lookType = msg:getU16() local lookHead = msg:getU8() local lookBody = msg:getU8() local lookLegs = msg:getU8() local lookFeet = msg:getU8() local lookAddons = msg:getU8() character.outfit = { type = lookType, head = lookHead, body = lookBody, legs = lookLegs, feet = lookFeet, addons = lookAddons, } characters[i] = character end local account = {} account.premDays = msg:getU16() signalcall(self.onCharacterList, self, characters, account) end
E ai é só ajustar sua module de listagem de personagens para o design/layout que quiser