void Item::UpdatePlayedTime(Player* owner) { /* Here we update our played time We simply add a number to the current played time, based on the time elapsed since the last update hereof. */ // Get current played time uint32 current_playtime = GetUInt32Value(ITEM_FIELD_CREATE_PLAYED_TIME); // Calculate time elapsed since last played time update time_t curtime = time(NULL); uint32 elapsed = uint32(curtime - m_lastPlayedTimeUpdate); uint32 new_playtime = current_playtime + elapsed; // Check if the refund timer has expired yet if (new_playtime <= 2*HOUR) { // No? Proceed. // Update the data field SetUInt32Value(ITEM_FIELD_CREATE_PLAYED_TIME, new_playtime); // Flag as changed to get saved to DB SetState(ITEM_CHANGED, owner); // Speaks for itself m_lastPlayedTimeUpdate = curtime; return; } // Yes SetNotRefundable(owner); }
bool Item::CheckRefundExpired(Player* owner) { if (!HasFlag(ITEM_FIELD_FLAGS, ITEM_FLAG_REFUNDABLE)) return true; if (IsRefundOrSoulboundTradeExpired(owner)) { SetNotRefundable(owner); return true; } return false; }