yes i did practically that just take a look to add the system i created a task to calculate the time.
public void addNoCarrier(int duration)
{
if (isInStoreMode())
return;
NoCarrierTaskManager.getInstance().add(this);
setNoCarrier(true);
broadcastCharInfo();
setInvul(true);
if (isInParty())
getMemos().set("NoCarrierParty", System.currentTimeMillis() + TimeUnit.MINUTES.toMillis(duration));
else
getMemos().set("NoCarrier", System.currentTimeMillis() + TimeUnit.MINUTES.toMillis(duration));
}
when a player joins a party it is stored :
public Party(Player leader, Player target, LootRule lootRule)
{
super(leader);
_members.add(leader);
_members.add(target);
leader.setParty(this);
target.setParty(this);
_lootRule = lootRule;
leader.getMemos().set("NoCarrierPartyObjId", _partyObjId);
target.getMemos().set("NoCarrierPartyObjId", _partyObjId);
EnterWorld
if (player.getMemos().containsKey("NoCarrier") || player.getMemos().containsKey("NoCarrierParty") && player.getMemos().containsKey("NoCarrierPartyObjId"))
{
when entering the game I created 3 checks to verify the object Id of the party and if it really was in the party, if it is in the party ok you receive the party again
public void updateNoCarrierParty(Player player)
{
player.sendPacket(new PartySmallWindowAll(player, this));
// Add party to player.
player.setParty(this);
// Update icons.
for (Player member : _members)
{
member.updateEffectIcons(true);
member.broadcastUserInfo();
}
broadcastCreatureSay(new CreatureSay(SayType.PARTY, "[No Carrier]", "Player: " + player.getName() + " has logged in again."), player);
if (_commandChannel != null)
player.sendPacket(ExOpenMPCC.STATIC_PACKET);
}