Procházet zdrojové kódy

BETA: Code refactoring, fixes and cleanup by UnAfraid:
* Using improved sendPacket.
* Exploit fix at RequestWithDrawPremiumItem.

Zoey76 před 13 roky
rodič
revize
359d836a8f

+ 17 - 1
L2J_Server_BETA/java/com/l2jserver/gameserver/model/actor/L2Decoy.java

@@ -19,7 +19,9 @@ import java.util.Collection;
 
 import com.l2jserver.gameserver.model.L2ItemInstance;
 import com.l2jserver.gameserver.model.actor.instance.L2PcInstance;
+import com.l2jserver.gameserver.network.SystemMessageId;
 import com.l2jserver.gameserver.network.serverpackets.CharInfo;
+import com.l2jserver.gameserver.network.serverpackets.L2GameServerPacket;
 import com.l2jserver.gameserver.taskmanager.DecayTaskManager;
 import com.l2jserver.gameserver.templates.chars.L2CharTemplate;
 import com.l2jserver.gameserver.templates.chars.L2NpcTemplate;
@@ -43,7 +45,7 @@ public abstract class L2Decoy extends L2Character
 	public void onSpawn()
 	{
 		super.onSpawn();
-		this.getOwner().sendPacket(new CharInfo(this));
+		sendPacket(new CharInfo(this));
 	}
 	
 	@Override
@@ -152,4 +154,18 @@ public abstract class L2Decoy extends L2Character
 	{
 		activeChar.sendPacket(new CharInfo(this));
 	}
+	
+	@Override
+	public void sendPacket(L2GameServerPacket mov)
+	{
+		if (getOwner() != null)
+			getOwner().sendPacket(mov);
+	}
+	
+	@Override
+	public void sendPacket(SystemMessageId id)
+	{
+		if (getOwner() != null)
+			getOwner().sendPacket(id);
+	}
 }

+ 18 - 20
L2J_Server_BETA/java/com/l2jserver/gameserver/model/actor/L2Summon.java

@@ -123,13 +123,15 @@ public abstract class L2Summon extends L2Playable
 			
 			this.setFollowStatus(true);
 			updateAndBroadcastStatus(0);
-			getOwner().sendPacket(new RelationChanged(this, getOwner().getRelation(getOwner()), false));
+			sendPacket(new RelationChanged(this, getOwner().getRelation(getOwner()), false));
 			for (L2PcInstance player : getOwner().getKnownList().getKnownPlayersInRadius(800))
+			{
 				player.sendPacket(new RelationChanged(this, getOwner().getRelation(player), isAutoAttackable(player)));
+			}
 			L2Party party = this.getOwner().getParty();
 			if (party != null)
 			{
-				party.broadcastToPartyMembers(this.getOwner(), new ExPartyPetWindowAdd(this));
+				party.broadcastToPartyMembers(getOwner(), new ExPartyPetWindowAdd(this));
 			}
 		}
 		setShowSummonAnimation(false); // addVisibleObject created the info packets with summon animation
@@ -408,7 +410,7 @@ public abstract class L2Summon extends L2Playable
 			if (getInventory() != null && getInventory().getSize() > 0)
 			{
 				getOwner().setPetInvItems(true);
-				getOwner().sendPacket(SystemMessageId.ITEMS_IN_PET_INVENTORY);
+				sendPacket(SystemMessageId.ITEMS_IN_PET_INVENTORY);
 			}
 			else
 				getOwner().setPetInvItems(false);
@@ -628,8 +630,7 @@ public abstract class L2Summon extends L2Playable
 		// Check the validity of the target
 		if (target == null)
 		{
-			if (getOwner() != null)
-				getOwner().sendPacket(SystemMessage.getSystemMessage(SystemMessageId.TARGET_CANT_FOUND));
+			sendPacket(SystemMessage.getSystemMessage(SystemMessageId.TARGET_CANT_FOUND));
 			return false;
 		}
 		
@@ -638,8 +639,7 @@ public abstract class L2Summon extends L2Playable
 		// Check if this skill is enabled (e.g. reuse time)
 		if (isSkillDisabled(skill))
 		{
-			if (getOwner() != null)
-				getOwner().sendPacket(SystemMessage.getSystemMessage(SystemMessageId.PET_SKILL_CANNOT_BE_USED_RECHARCHING));
+			sendPacket(SystemMessage.getSystemMessage(SystemMessageId.PET_SKILL_CANNOT_BE_USED_RECHARCHING));
 			return false;
 		}
 		
@@ -649,8 +649,7 @@ public abstract class L2Summon extends L2Playable
 		if (getCurrentMp() < getStat().getMpConsume(skill) + getStat().getMpInitialConsume(skill))
 		{
 			// Send a System Message to the caster
-			if (getOwner() != null)
-				getOwner().sendPacket(SystemMessage.getSystemMessage(SystemMessageId.NOT_ENOUGH_MP));
+			sendPacket(SystemMessage.getSystemMessage(SystemMessageId.NOT_ENOUGH_MP));
 			return false;
 		}
 		
@@ -658,8 +657,7 @@ public abstract class L2Summon extends L2Playable
 		if (getCurrentHp() <= skill.getHpConsume())
 		{
 			// Send a System Message to the caster
-			if (getOwner() != null)
-				getOwner().sendPacket(SystemMessage.getSystemMessage(SystemMessageId.NOT_ENOUGH_HP));
+			sendPacket(SystemMessage.getSystemMessage(SystemMessageId.NOT_ENOUGH_HP));
 			return false;
 		}
 		
@@ -753,9 +751,9 @@ public abstract class L2Summon extends L2Playable
 		{
 			if (pcrit || mcrit)
 				if (this instanceof L2SummonInstance)
-					getOwner().sendPacket(SystemMessage.getSystemMessage(SystemMessageId.CRITICAL_HIT_BY_SUMMONED_MOB));
+					sendPacket(SystemMessage.getSystemMessage(SystemMessageId.CRITICAL_HIT_BY_SUMMONED_MOB));
 				else
-					getOwner().sendPacket(SystemMessage.getSystemMessage(SystemMessageId.CRITICAL_HIT_BY_PET));
+					sendPacket(SystemMessage.getSystemMessage(SystemMessageId.CRITICAL_HIT_BY_PET));
 			
 			if (getOwner().isInOlympiadMode() && target instanceof L2PcInstance && ((L2PcInstance) target).isInOlympiadMode() && ((L2PcInstance) target).getOlympiadGameId() == getOwner().getOlympiadGameId())
 			{
@@ -774,7 +772,7 @@ public abstract class L2Summon extends L2Playable
 				sm.addNumber(damage);
 			}
 			
-			getOwner().sendPacket(sm);
+			sendPacket(sm);
 		}
 	}
 	
@@ -788,7 +786,7 @@ public abstract class L2Summon extends L2Playable
 			sm.addNpcName(this);
 			sm.addCharName(attacker);
 			sm.addNumber((int) damage);
-			getOwner().sendPacket(sm);
+			sendPacket(sm);
 		}
 	}
 	
@@ -845,16 +843,16 @@ public abstract class L2Summon extends L2Playable
 		if (getOwner() == null)
 			return;
 		
-		getOwner().sendPacket(new PetInfo(this, val));
-		getOwner().sendPacket(new PetStatusUpdate(this));
+		sendPacket(new PetInfo(this, val));
+		sendPacket(new PetStatusUpdate(this));
 		if (isVisible())
 		{
 			broadcastNpcInfo(val);
 		}
-		L2Party party = this.getOwner().getParty();
+		L2Party party = getOwner().getParty();
 		if (party != null)
 		{
-			party.broadcastToPartyMembers(this.getOwner(), new ExPartyPetWindowUpdate(this));
+			party.broadcastToPartyMembers(getOwner(), new ExPartyPetWindowUpdate(this));
 		}
 		updateEffectIcons(true);
 	}
@@ -916,7 +914,7 @@ public abstract class L2Summon extends L2Playable
 	public void onTeleported()
 	{
 		super.onTeleported();
-		getOwner().sendPacket(new TeleportToLocation(this, getPosition().getX(), getPosition().getY(), getPosition().getZ(), getPosition().getHeading()));
+		sendPacket(new TeleportToLocation(this, getPosition().getX(), getPosition().getY(), getPosition().getZ(), getPosition().getHeading()));
 	}
 	
 	@Override

+ 1 - 1
L2J_Server_BETA/java/com/l2jserver/gameserver/model/actor/instance/L2BabyPetInstance.java

@@ -191,7 +191,7 @@ public final class L2BabyPetInstance extends L2PetInstance
 		
 		SystemMessage msg = SystemMessage.getSystemMessage(SystemMessageId.PET_USES_S1);
 		msg.addSkillName(skill);
-		getOwner().sendPacket(msg);
+		sendPacket(msg);
 		
 		// calling useMagic changes the follow status, if the babypet actually casts
 		// (as opposed to failing due some factors, such as too low MP, etc).

+ 1 - 1
L2J_Server_BETA/java/com/l2jserver/gameserver/model/actor/instance/L2PcInstance.java

@@ -3947,7 +3947,7 @@ public final class L2PcInstance extends L2Playable
 			else
 				petIU.addNewItem(newItem);
 			
-			((PetInventory)target).getOwner().getOwner().sendPacket(petIU);
+			((PetInventory)target).getOwner().sendPacket(petIU);
 		}
 		return newItem;
 	}

+ 37 - 36
L2J_Server_BETA/java/com/l2jserver/gameserver/model/actor/instance/L2PetInstance.java

@@ -162,11 +162,11 @@ public class L2PetInstance extends L2Summon
 						{
 							getOwner().setPkKills(Math.max(0, getOwner().getPkKills()-Rnd.get(1,6)));
 						}
-						getOwner().sendPacket(SystemMessage.getSystemMessage(SystemMessageId.THE_HELPER_PET_LEAVING));
+						sendPacket(SystemMessageId.THE_HELPER_PET_LEAVING);
 						deleteMe(getOwner());
 					}
 					else if (isHungry())
-						getOwner().sendPacket(SystemMessage.getSystemMessage(SystemMessageId.THERE_NOT_MUCH_TIME_REMAINING_UNTIL_HELPER_LEAVES));
+						sendPacket(SystemMessageId.THERE_NOT_MUCH_TIME_REMAINING_UNTIL_HELPER_LEAVES);
 					return;
 				}
 				L2ItemInstance food = null;
@@ -191,7 +191,7 @@ public class L2PetInstance extends L2Summon
 					{
 						SystemMessage sm = SystemMessage.getSystemMessage(SystemMessageId.PET_TOOK_S1_BECAUSE_HE_WAS_HUNGRY);
 						sm.addItemName(food.getItemId());
-						getOwner().sendPacket(sm);
+						sendPacket(sm);
 						handler.useItem(L2PetInstance.this, food, false);
 					}
 				}
@@ -200,12 +200,12 @@ public class L2PetInstance extends L2Summon
 					if (getCurrentFed() == 0)
 					{
 						SystemMessage sm = SystemMessage.getSystemMessage(SystemMessageId.YOUR_PET_IS_VERY_HUNGRY);
-						getOwner().sendPacket(sm);
+						sendPacket(sm);
 						if (Rnd.get(100) < 30)
 						{
 							stopFeed();
 							sm = SystemMessage.getSystemMessage(SystemMessageId.STARVING_GRUMPY_AND_FED_UP_YOUR_PET_HAS_LEFT);
-							getOwner().sendPacket(sm);
+							sendPacket(sm);
 							_log.info("Hungry pet ["+getTemplate().getName()+"]["+getLevel()+"] deleted for player: "+getOwner()+" Control Item Id :"+getControlObjectId());
 							deleteMe(getOwner());
 						}
@@ -213,12 +213,12 @@ public class L2PetInstance extends L2Summon
 					else if (getCurrentFed() < (0.10 * getPetLevelData().getPetMaxFeed()))
 					{
 						SystemMessage sm = SystemMessage.getSystemMessage(SystemMessageId.PET_CAN_RUN_AWAY_WHEN_HUNGER_BELOW_10_PERCENT);
-						getOwner().sendPacket(sm);
+						sendPacket(sm);
 						if (Rnd.get(100) < 3)
 						{
 							stopFeed();
 							sm = SystemMessage.getSystemMessage(SystemMessageId.STARVING_GRUMPY_AND_FED_UP_YOUR_PET_HAS_LEFT);
-							getOwner().sendPacket(sm);
+							sendPacket(sm);
 							_log.info("Hungry pet ["+getTemplate().getName()+"]["+getLevel()+"] deleted for player: "+getOwner()+" Control Item Id :"+getControlObjectId());
 							deleteMe(getOwner());
 						}
@@ -394,7 +394,7 @@ public class L2PetInstance extends L2Summon
 		if (item == null)
 		{
 			if (sendMessage)
-				getOwner().sendPacket(SystemMessage.getSystemMessage(SystemMessageId.NOT_ENOUGH_ITEMS));
+				sendPacket(SystemMessageId.NOT_ENOUGH_ITEMS);
 			
 			return false;
 		}
@@ -402,7 +402,7 @@ public class L2PetInstance extends L2Summon
 		// Send Pet inventory update packet
 		PetInventoryUpdate petIU = new PetInventoryUpdate();
 		petIU.addItem(item);
-		getOwner().sendPacket(petIU);
+		sendPacket(petIU);
 		
 		if (sendMessage)
 		{
@@ -411,13 +411,13 @@ public class L2PetInstance extends L2Summon
 				SystemMessage sm = SystemMessage.getSystemMessage(SystemMessageId.S2_S1_DISAPPEARED);
 				sm.addItemName(item.getItemId());
 				sm.addItemNumber(count);
-				getOwner().sendPacket(sm);
+				sendPacket(sm);
 			}
 			else 
 			{
 				SystemMessage sm = SystemMessage.getSystemMessage(SystemMessageId.S1_DISAPPEARED);
 				sm.addItemName(item.getItemId());
-				getOwner().sendPacket(sm);
+				sendPacket(sm);
 			}
 		}
 		return true;
@@ -439,14 +439,15 @@ public class L2PetInstance extends L2Summon
 		
 		if (item == null)
 		{
-			if (sendMessage) getOwner().sendPacket(SystemMessage.getSystemMessage(SystemMessageId.NOT_ENOUGH_ITEMS));
+			if (sendMessage) 
+				sendPacket(SystemMessageId.NOT_ENOUGH_ITEMS);
 			return false;
 		}
 		
 		// Send Pet inventory update packet
 		PetInventoryUpdate petIU = new PetInventoryUpdate();
 		petIU.addItem(item);
-		getOwner().sendPacket(petIU);
+		sendPacket(petIU);
 		
 		if (sendMessage)
 		{
@@ -455,13 +456,13 @@ public class L2PetInstance extends L2Summon
 				SystemMessage sm = SystemMessage.getSystemMessage(SystemMessageId.S2_S1_DISAPPEARED);
 				sm.addItemName(item.getItemId());
 				sm.addItemNumber(count);
-				getOwner().sendPacket(sm);
+				sendPacket(sm);
 			}
 			else 
 			{
 				SystemMessage sm = SystemMessage.getSystemMessage(SystemMessageId.S1_DISAPPEARED);
 				sm.addItemName(item.getItemId());
-				getOwner().sendPacket(sm);
+				sendPacket(sm);
 			}
 		}
 		
@@ -485,7 +486,7 @@ public class L2PetInstance extends L2Summon
 		{
 			// dont try to pickup anything that is not an item :)
 			_logPet.warning(this+" trying to pickup wrong target."+object);
-			getOwner().sendPacket(ActionFailed.STATIC_PACKET);
+			sendPacket(ActionFailed.STATIC_PACKET);
 			return;
 		}
 		
@@ -496,7 +497,7 @@ public class L2PetInstance extends L2Summon
 		{
 			SystemMessage smsg = SystemMessage.getSystemMessage(SystemMessageId.FAILED_TO_PICKUP_S1);
 			smsg.addItemName(target.getItemId());
-			getOwner().sendPacket(smsg);
+			sendPacket(smsg);
 			return;
 		}
 		
@@ -504,49 +505,49 @@ public class L2PetInstance extends L2Summon
 		{
 			if (!target.isVisible())
 			{
-				getOwner().sendPacket(ActionFailed.STATIC_PACKET);
+				sendPacket(ActionFailed.STATIC_PACKET);
 				return;
 			}
 			if (!target.getDropProtection().tryPickUp(this))
 			{
-				getOwner().sendPacket(ActionFailed.STATIC_PACKET);
+				sendPacket(ActionFailed.STATIC_PACKET);
 				SystemMessage smsg = SystemMessage.getSystemMessage(SystemMessageId.FAILED_TO_PICKUP_S1);
 				smsg.addItemName(target);
-				getOwner().sendPacket(smsg);
+				sendPacket(smsg);
 				return;
 			}
 			if ( !_inventory.validateCapacity(target))
 			{
-				getOwner().sendPacket(SystemMessage.getSystemMessage(SystemMessageId.YOUR_PET_CANNOT_CARRY_ANY_MORE_ITEMS));
+				sendPacket(SystemMessageId.YOUR_PET_CANNOT_CARRY_ANY_MORE_ITEMS);
 				return;
 			}
 			if ( !_inventory.validateWeight(target, target.getCount()))
 			{
-				getOwner().sendPacket(SystemMessage.getSystemMessage(SystemMessageId.UNABLE_TO_PLACE_ITEM_YOUR_PET_IS_TOO_ENCUMBERED));
+				sendPacket(SystemMessageId.UNABLE_TO_PLACE_ITEM_YOUR_PET_IS_TOO_ENCUMBERED);
 				return;
 			}
 			if (target.getOwnerId() != 0 && target.getOwnerId() != getOwner().getObjectId() && !getOwner().isInLooterParty(target.getOwnerId()))
 			{
-				getOwner().sendPacket(ActionFailed.STATIC_PACKET);
+				sendPacket(ActionFailed.STATIC_PACKET);
 				
 				if (target.getItemId() == PcInventory.ADENA_ID)
 				{
 					SystemMessage smsg = SystemMessage.getSystemMessage(SystemMessageId.FAILED_TO_PICKUP_S1_ADENA);
 					smsg.addItemNumber(target.getCount());
-					getOwner().sendPacket(smsg);
+					sendPacket(smsg);
 				}
 				else if (target.getCount() > 1)
 				{
 					SystemMessage smsg = SystemMessage.getSystemMessage(SystemMessageId.FAILED_TO_PICKUP_S2_S1_S);
 					smsg.addItemName(target.getItemId());
 					smsg.addItemNumber(target.getCount());
-					getOwner().sendPacket(smsg);
+					sendPacket(smsg);
 				}
 				else
 				{
 					SystemMessage smsg = SystemMessage.getSystemMessage(SystemMessageId.FAILED_TO_PICKUP_S1);
 					smsg.addItemName(target.getItemId());
-					getOwner().sendPacket(smsg);
+					sendPacket(smsg);
 				}
 				
 				return;
@@ -580,32 +581,32 @@ public class L2PetInstance extends L2Summon
 			{
 				SystemMessage sm2 = SystemMessage.getSystemMessage(SystemMessageId.PET_PICKED_S1_ADENA);
 				sm2.addItemNumber(target.getCount());
-				getOwner().sendPacket(sm2);
+				sendPacket(sm2);
 			}
 			else if (target.getEnchantLevel() > 0)
 			{
 				SystemMessage sm2 = SystemMessage.getSystemMessage(SystemMessageId.PET_PICKED_S1_S2);
 				sm2.addNumber(target.getEnchantLevel());
 				sm2.addString(target.getName());
-				getOwner().sendPacket(sm2);
+				sendPacket(sm2);
 			}
 			else if (target.getCount() > 1)
 			{
 				SystemMessage sm2 = SystemMessage.getSystemMessage(SystemMessageId.PET_PICKED_S2_S1_S);
 				sm2.addItemNumber(target.getCount());
 				sm2.addString(target.getName());
-				getOwner().sendPacket(sm2);
+				sendPacket(sm2);
 			}
 			else
 			{
 				SystemMessage sm2 = SystemMessage.getSystemMessage(SystemMessageId.PET_PICKED_S1);
 				sm2.addString(target.getName());
-				getOwner().sendPacket(sm2);
+				sendPacket(sm2);
 			}
 			getInventory().addItem("Pickup", target, getOwner(), this);
 			//FIXME Just send the updates if possible (old way wasn't working though)
 			PetItemList iu = new PetItemList(this);
-			getOwner().sendPacket(iu);
+			sendPacket(iu);
 		}
 		
 		getAI().setIntention(CtrlIntention.AI_INTENTION_IDLE);
@@ -629,7 +630,7 @@ public class L2PetInstance extends L2Summon
 		if (!super.doDie(killer,true))
 			return false;
 		stopFeed();
-		getOwner().sendPacket(SystemMessage.getSystemMessage(SystemMessageId.MAKE_SURE_YOU_RESSURECT_YOUR_PET_WITHIN_24_HOURS));
+		sendPacket(SystemMessageId.MAKE_SURE_YOU_RESSURECT_YOUR_PET_WITHIN_24_HOURS);
 		DecayTaskManager.getInstance().addDecayTask(this, PET_DECAY_DELAY);
 		// do not decrease exp if is in duel, arena
 		L2PcInstance owner = getOwner();
@@ -687,20 +688,20 @@ public class L2PetInstance extends L2Summon
 		PetInventoryUpdate petIU = new PetInventoryUpdate();
 		if (oldItem.getCount() > 0 && oldItem != newItem) petIU.addModifiedItem(oldItem);
 		else petIU.addRemovedItem(oldItem);
-		getOwner().sendPacket(petIU);
+		sendPacket(petIU);
 		
 		// Send target update packet
 		if (!newItem.isStackable())
 		{
 			InventoryUpdate iu = new InventoryUpdate();
 			iu.addNewItem(newItem);
-			getOwner().sendPacket(iu);
+			sendPacket(iu);
 		}
 		else if (playerOldItem != null && newItem.isStackable())
 		{
 			InventoryUpdate iu = new InventoryUpdate();
 			iu.addModifiedItem(newItem);
-			getOwner().sendPacket(iu);
+			sendPacket(iu);
 		}
 		
 		return newItem;
@@ -1351,7 +1352,7 @@ public class L2PetInstance extends L2Summon
 			controlItem.updateDatabase();
 			InventoryUpdate iu = new InventoryUpdate();
 			iu.addModifiedItem(controlItem);
-			getOwner().sendPacket(iu);
+			sendPacket(iu);
 		}
 		super.setName(name);
 	}

+ 1 - 1
L2J_Server_BETA/java/com/l2jserver/gameserver/model/actor/instance/L2SummonInstance.java

@@ -550,7 +550,7 @@ public class L2SummonInstance extends L2Summon
 				// prevent useless packet-sending when the difference isn't visible.
 				if ((_summon.lastShowntimeRemaining - newTimeRemaining) > maxTime / 352)
 				{
-					_summon.getOwner().sendPacket(new SetSummonRemainTime(maxTime, (int) newTimeRemaining));
+					_summon.sendPacket(new SetSummonRemainTime(maxTime, (int) newTimeRemaining));
 					_summon.lastShowntimeRemaining = (int) newTimeRemaining;
 					_summon.updateEffectIcons();
 				}

+ 1 - 1
L2J_Server_BETA/java/com/l2jserver/gameserver/model/actor/stat/PetStat.java

@@ -51,7 +51,7 @@ public class PetStat extends SummonStat
 		SystemMessage sm = SystemMessage.getSystemMessage(SystemMessageId.PET_EARNED_S1_EXP);
 		sm.addNumber((int)addToExp);
 		getActiveChar().updateAndBroadcastStatus(1);
-		getActiveChar().getOwner().sendPacket(sm);
+		getActiveChar().sendPacket(sm);
 		
 		return true;
 	}

+ 1 - 1
L2J_Server_BETA/java/com/l2jserver/gameserver/model/actor/status/PetStatus.java

@@ -50,7 +50,7 @@ public class PetStatus extends SummonStatus
 				SystemMessage sm = SystemMessage.getSystemMessage(SystemMessageId.PET_RECEIVED_S2_DAMAGE_BY_C1);
 				sm.addCharName(attacker);
 				sm.addNumber((int)value);
-				getActiveChar().getOwner().sendPacket(sm);
+				getActiveChar().sendPacket(sm);
 			}
 			getActiveChar().getAI().notifyEvent(CtrlEvent.EVT_ATTACKED, attacker);
 		}

+ 1 - 1
L2J_Server_BETA/java/com/l2jserver/gameserver/network/clientpackets/RequestActionUse.java

@@ -213,7 +213,7 @@ public final class RequestActionUse extends L2GameClientPacket
 					
 					if (pet.isLockedTarget())
 					{
-						pet.getOwner().sendPacket(SystemMessageId.FAILED_CHANGE_TARGET);
+						pet.sendPacket(SystemMessageId.FAILED_CHANGE_TARGET);
 						return;
 					}
 					

+ 2 - 2
L2J_Server_BETA/java/com/l2jserver/gameserver/network/clientpackets/RequestWithDrawPremiumItem.java

@@ -79,11 +79,11 @@ public final class RequestWithDrawPremiumItem extends L2GameClientPacket
 		
 		long itemsLeft = (_item.getCount() - _itemCount);
 		
-		activeChar.addItem("PremiumItem", _item.getItemId(), _itemCount, null, true);
+		activeChar.addItem("PremiumItem", _item.getItemId(), _itemCount, activeChar.getTarget(), true);
 		
 		if (itemsLeft > 0)
 		{
-			activeChar.getPremiumItemList().get(_itemNum).updateCount(itemsLeft);
+			_item.updateCount(itemsLeft);
 			activeChar.updatePremiumItem(_itemNum, itemsLeft);
 		}
 		else