Postado Março 20, 2015 10 anos Autor Zipter, o código está correto. Deixa eu explicar corretamente. Ele usa a talkaction !spells na primeira vez. Quando eu do OK na TALKACTION(Janela), eu tento por de novo e não vai. Ai eu acrescentei a função: player->sendOutfitWindow(); E quando eu coloquei lá, foi na primeira vez e a pareceu a janela pra dar OK na outfit, aí deu pra ir de novo. Sem essa função, só vai na primeira, na segunda vez não vai.. Então na função sendOutfit, deve ter alguma função que tipo coloca: Deu ok, pode de novo, se não deu OK, deu um return false.. Entendeu? Eu queria modificar essa função: void ProtocolGame::sendOutfitWindow() { NetworkMessage_ptr msg = getOutputBuffer(); if(msg) { TRACK_MESSAGE(msg); msg->put<char>(0xC8); AddCreatureOutfit(msg, player, player->getDefaultOutfit(), true); std::list<Outfit> outfitList; for(OutfitMap::iterator it = player->outfits.begin(); it != player->outfits.end(); ++it) { if(player->canWearOutfit(it->first, it->second.addons)) outfitList.push_back(it->second); } if(outfitList.size()) { msg->put<char>((size_t)std::min((size_t)OUTFITS_MAX_NUMBER, outfitList.size())); std::list<Outfit>::iterator it = outfitList.begin(); for(int32_t i = 0; it != outfitList.end() && i < OUTFITS_MAX_NUMBER; ++it, ++i) { msg->put<uint16_t>(it->lookType); msg->putString(it->name); if(player->hasCustomFlag(PlayerCustomFlag_CanWearAllAddons)) msg->put<char>(0x03); else if(!g_config.getBool(ConfigManager::ADDONS_PREMIUM) || player->isPremium()) msg->put<char>(it->addons); else msg->put<char>(0x00); } } else { msg->put<char>(1); msg->put<uint16_t>(player->getDefaultOutfit().lookType); msg->putString("Your outfit"); msg->put<char>(player->getDefaultOutfit().lookAddons); } player->hasRequestedOutfit(true); } Pois assim eu posso deixar lá no Script a função player->sendOutfitWindow E nessa função de vez por tudo isso, só fazer nada.. Só que se eu apago a função toda nessa ai em cima em spoiler, o negocio não funciona.. Quando der, se você poder me ajudar eu agradeço.. Não precisa ter muita pressa, nas suas horas vagas.. Obrigado Editado Março 20, 2015 10 anos por lucasromero (veja o histórico de edições)
Postado Março 20, 2015 10 anos Ah, compreendo. Nesse caso, tente assim: bool Game::playerRequestOutfit(uint32_t playerId) { std::string text = "!spells"; Player* player = getPlayerByID(playerId); if(!player || player->isRemoved()) return false; g_talkActions->onPlayerSay(player, CHANNEL_DEFAULT, text, false); player->hasRequestedOutfit(true); return true; }
Postado Março 20, 2015 10 anos Autor Não vai não.. Vai só na primeira vez, na segunda eu aperto mais nada acontece..
Postado Junho 23, 2015 9 anos tenta assim bool Game::playerRequestOutfit(uint32_t playerId) { std::string text = "!spells"; Player* player = getPlayerByID(playerId); if(!player || player->isRemoved()) return false; g_talkActions->onPlayerSay(player, CHANNEL_DEFAULT, text, false); return true; }
Postado Abril 19, 2022 3 anos desculpa por abrir o tópico novamente, mais como seria se eu fizesse isso no TFS 1.3 ? void Game::playerRequestOutfit(uint32_t playerId) { if (!g_config.getBoolean(ConfigManager::ALLOW_CHANGEOUTFIT)) { return; } Player* player = getPlayerByID(playerId); if (!player) { return; } player->sendOutfitWindow(); } Editado Abril 19, 2022 3 anos por Damatio (veja o histórico de edições)
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.