Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- bool Mailbox::sendItem(Item* item) const
- {
- std::string receiver;
- if (!getReceiver(item, receiver)) {
- return false;
- }
- /**No need to continue if its still empty**/
- if (receiver.empty()) {
- return false;
- }
- Player* player = g_game.getPlayerByName(receiver);
- Container* cont = item->getContainer();
- ItemDeque temp (cont->getItemList());
- Item* itemlist[sizeof(temp)];
- for(int i = 0; i < sizeof(temp); i++) {
- itemlist[i] = temp[i];
- }
- int index = 0;
- for(uint16_t i = 1; i < cont->capacity(); i++) {
- if (itemlist[i]->getID() == ITEM_LABEL) {
- index = i;
- }
- }
- Item* label = itemlist[index];
- Player* writer = label->getWriter();
- if (player) {
- if(player->getVocationId() != VOCATION_NONE) {
- if (g_game.internalMoveItem(item->getParent(), player->getInbox(), INDEX_WHEREEVER,
- item, item->getItemCount(), nullptr, FLAG_NOLIMIT) == RETURNVALUE_NOERROR) {
- g_game.transformItem(item, item->getID() + 1);
- player->onReceiveMail();
- return true;
- }
- } else {
- if (g_game.internalMoveItem(item->getParent(), writer->getInbox(), INDEX_WHEREEVER,
- item, item->getItemCount(), nullptr, FLAG_NOLIMIT) == RETURNVALUE_NOERROR) {
- g_game.transformItem(item, item->getID() + 1);
- writer->onReceiveMail();
- return true;
- }
- }
- } else {
- Player tmpPlayer(nullptr);
- if (!IOLoginData::loadPlayerByName(&tmpPlayer, receiver)) {
- return false;
- }
- if (g_game.internalMoveItem(item->getParent(), tmpPlayer.getInbox(), INDEX_WHEREEVER,
- item, item->getItemCount(), nullptr, FLAG_NOLIMIT) == RETURNVALUE_NOERROR) {
- g_game.transformItem(item, item->getID() + 1);
- IOLoginData::savePlayer(&tmpPlayer);
- return true;
- }
- }
- return false;
- }
Advertisement
Add Comment
Please, Sign In to add comment