diff --git a/l2jserver2-gameserver/src/main/java/com/l2jserver/game/net/packet/server/SM_TARGET.java b/l2jserver2-gameserver/src/main/java/com/l2jserver/game/net/packet/server/SM_CHAR_TARGET.java
similarity index 91%
rename from l2jserver2-gameserver/src/main/java/com/l2jserver/game/net/packet/server/SM_TARGET.java
rename to l2jserver2-gameserver/src/main/java/com/l2jserver/game/net/packet/server/SM_CHAR_TARGET.java
index 8bb9e6033..934b8bd33 100644
--- a/l2jserver2-gameserver/src/main/java/com/l2jserver/game/net/packet/server/SM_TARGET.java
+++ b/l2jserver2-gameserver/src/main/java/com/l2jserver/game/net/packet/server/SM_CHAR_TARGET.java
@@ -28,7 +28,7 @@ import com.l2jserver.model.world.Actor;
*
* @author Rogiel
*/
-public class SM_TARGET extends AbstractServerPacket {
+public class SM_CHAR_TARGET extends AbstractServerPacket {
/**
* The packet OPCODE
*/
@@ -40,13 +40,13 @@ public class SM_TARGET extends AbstractServerPacket {
private final Actor object;
private int color;
- public SM_TARGET(Actor object, int color) {
+ public SM_CHAR_TARGET(Actor object, int color) {
super(OPCODE);
this.object = object;
this.color = color;
}
- public SM_TARGET(Actor object) {
+ public SM_CHAR_TARGET(Actor object) {
this(object, 0);
}
diff --git a/l2jserver2-gameserver/src/main/java/com/l2jserver/game/net/packet/server/SM_CHAR_TARGET_UNSELECT.java b/l2jserver2-gameserver/src/main/java/com/l2jserver/game/net/packet/server/SM_CHAR_TARGET_UNSELECT.java
new file mode 100644
index 000000000..e073cd8ae
--- /dev/null
+++ b/l2jserver2-gameserver/src/main/java/com/l2jserver/game/net/packet/server/SM_CHAR_TARGET_UNSELECT.java
@@ -0,0 +1,55 @@
+/*
+ * This file is part of l2jserver2 .
+ *
+ * l2jserver2 is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 3 of the License, or
+ * (at your option) any later version.
+ *
+ * l2jserver2 is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with l2jserver2. If not, see .
+ */
+package com.l2jserver.game.net.packet.server;
+
+import org.jboss.netty.buffer.ChannelBuffer;
+
+import com.l2jserver.game.net.Lineage2Client;
+import com.l2jserver.game.net.packet.AbstractServerPacket;
+import com.l2jserver.model.world.L2Character;
+
+/**
+ * This packet notifies the client that the chosen character has been
+ * successfully selected.
+ *
+ * @author Rogiel
+ */
+public class SM_CHAR_TARGET_UNSELECT extends AbstractServerPacket {
+ /**
+ * The packet OPCODE
+ */
+ public static final int OPCODE = 0x24;
+
+ /**
+ * The character that as unselected an object
+ */
+ private final L2Character character;
+
+ public SM_CHAR_TARGET_UNSELECT(L2Character character) {
+ super(OPCODE);
+ this.character = character;
+ }
+
+ @Override
+ public void write(Lineage2Client conn, ChannelBuffer buffer) {
+ buffer.writeInt(character.getID().getID());
+ buffer.writeInt(character.getPoint().getX());
+ buffer.writeInt(character.getPoint().getY());
+ buffer.writeInt(character.getPoint().getZ());
+ buffer.writeInt(0x00); // ??
+ }
+}
diff --git a/l2jserver2-gameserver/src/main/java/com/l2jserver/service/network/broadcast/BroadcastServiceImpl.java b/l2jserver2-gameserver/src/main/java/com/l2jserver/service/network/broadcast/BroadcastServiceImpl.java
index a4b80922a..139680958 100644
--- a/l2jserver2-gameserver/src/main/java/com/l2jserver/service/network/broadcast/BroadcastServiceImpl.java
+++ b/l2jserver2-gameserver/src/main/java/com/l2jserver/service/network/broadcast/BroadcastServiceImpl.java
@@ -33,6 +33,8 @@ import com.l2jserver.game.net.packet.server.SM_CHAR_INFO;
import com.l2jserver.game.net.packet.server.SM_CHAR_INFO_BROADCAST;
import com.l2jserver.game.net.packet.server.SM_CHAR_INFO_EXTRA;
import com.l2jserver.game.net.packet.server.SM_CHAR_INVENTORY;
+import com.l2jserver.game.net.packet.server.SM_CHAR_TARGET;
+import com.l2jserver.game.net.packet.server.SM_CHAR_TARGET_UNSELECT;
import com.l2jserver.game.net.packet.server.SM_CHAR_TELEPORT;
import com.l2jserver.game.net.packet.server.SM_HTML;
import com.l2jserver.game.net.packet.server.SM_ITEM_GROUND;
@@ -40,7 +42,6 @@ import com.l2jserver.game.net.packet.server.SM_ITEM_PICK;
import com.l2jserver.game.net.packet.server.SM_MOVE_TYPE;
import com.l2jserver.game.net.packet.server.SM_NPC_INFO;
import com.l2jserver.game.net.packet.server.SM_OBJECT_REMOVE;
-import com.l2jserver.game.net.packet.server.SM_TARGET;
import com.l2jserver.model.id.object.CharacterID;
import com.l2jserver.model.server.ChatMessage;
import com.l2jserver.model.world.Actor;
@@ -60,6 +61,7 @@ import com.l2jserver.model.world.character.event.CharacterListener;
import com.l2jserver.model.world.character.event.CharacterMoveEvent;
import com.l2jserver.model.world.character.event.CharacterRunningEvent;
import com.l2jserver.model.world.character.event.CharacterStartMovingEvent;
+import com.l2jserver.model.world.character.event.CharacterTargetDeselectedEvent;
import com.l2jserver.model.world.character.event.CharacterTargetSelectedEvent;
import com.l2jserver.model.world.character.event.CharacterWalkingEvent;
import com.l2jserver.model.world.item.ItemDropEvent;
@@ -204,7 +206,7 @@ public class BroadcastServiceImpl extends AbstractService implements
final CharacterTargetSelectedEvent evt = (CharacterTargetSelectedEvent) e;
final Actor target = evt.getTarget();
final L2Character character = evt.getCharacter();
- conn.write(new SM_TARGET(target, character.getLevel()
+ conn.write(new SM_CHAR_TARGET(target, character.getLevel()
- target.getLevel()));
if (target instanceof NPC) {
final NPC mob = (NPC) target;
@@ -213,6 +215,9 @@ public class BroadcastServiceImpl extends AbstractService implements
(int) mob.getTemplate().getMaximumHP()).add(
Stat.HP, (int) mob.getHP()));
}
+ } else if (e instanceof CharacterTargetDeselectedEvent) {
+ conn.write(new SM_CHAR_TARGET_UNSELECT(
+ ((CharacterTargetDeselectedEvent) e).getCharacter()));
} else if (e instanceof PlayerTeleportedEvent) {
final L2Character character = (L2Character) ((PlayerTeleportedEvent) e)
.getPlayer();