potinho
Advanced OT User
I have a loot message in my server. The problem here is loot message isn't sent in party members screen, just in loot channel. I tried to adjust C++ but i cant understand the logic to keep sending message to screen and loot channel for party members, I want to send loot message on party members screen too, like is working for alone players:
C++:
void MonsterType::dropLoot(Container* corpse, int32_t monsterLevel)
{
ItemList items;
for(LootItems::const_iterator it = lootItems.begin(); it != lootItems.end() && !corpse->full(); ++it)
{
items = createLoot(*it, monsterLevel);
if(items.empty())
continue;
for(ItemList::iterator iit = items.begin(); iit != items.end(); ++iit)
{
Item* tmpItem = *iit;
if(Container* container = tmpItem->getContainer())
{
if(createChildLoot(container, *it, monsterLevel))
corpse->__internalAddThing(tmpItem);
else
delete container;
}
else
corpse->__internalAddThing(tmpItem);
}
}
corpse->__startDecaying();
uint32_t ownerId = corpse->getCorpseOwner();
if(!ownerId)
return;
Player* owner = g_game.getPlayerByGuid(ownerId);
if(!owner)
return;
LootMessage_t message = lootMessage;
if(message == LOOTMSG_IGNORE)
message = (LootMessage_t)g_config.getNumber(ConfigManager::LOOT_MESSAGE);
if(message < LOOTMSG_PLAYER)
return;
std::stringstream ss;
ss << "Loot of " << nameDescription << ": " << corpse->getContentDescription() << ".";
if(owner->getParty())
{
owner->getParty()->broadcastPartyLoot(ss.str());
}
else
{
owner->sendChannelMessage("", ss.str(), MSG_CHANNEL_HIGHLIGHT, uint16_t (12)); // 12 is number for loot channel
owner->sendTextMessage((MessageClasses)g_config.getNumber(ConfigManager::LOOT_MESSAGE_TYPE), ss.str());
}
}
C++:
void Party::broadcastPartyLoot(const std::string& loot)
{
PlayerVector::iterator it;
leader->sendChannelMessage("", loot, MSG_CHANNEL_HIGHLIGHT, 12); // 12 is number for loot channel
if(!memberList.empty())
{
for(it = memberList.begin(); it != memberList.end(); ++it)
(*it)-> sendChannelMessage("", loot, MSG_CHANNEL_HIGHLIGHT, 12);
}
}