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();