mirror of
https://github.com/Rogiel/l2jserver2
synced 2025-12-06 07:32:46 +00:00
Fixes item pick animation and renames few packets
This commit is contained in:
@@ -21,9 +21,7 @@ import static org.jboss.netty.channel.Channels.pipeline;
|
||||
import org.jboss.netty.channel.ChannelPipeline;
|
||||
import org.jboss.netty.channel.ChannelPipelineFactory;
|
||||
import org.jboss.netty.handler.logging.LoggingHandler;
|
||||
import org.jboss.netty.handler.timeout.IdleStateHandler;
|
||||
import org.jboss.netty.logging.InternalLogLevel;
|
||||
import org.jboss.netty.util.HashedWheelTimer;
|
||||
|
||||
import com.google.inject.Guice;
|
||||
import com.google.inject.Inject;
|
||||
@@ -81,9 +79,9 @@ public class Lineage2PipelineFactory implements ChannelPipelineFactory {
|
||||
@Override
|
||||
public ChannelPipeline getPipeline() throws Exception {
|
||||
final ChannelPipeline pipeline = pipeline();
|
||||
|
||||
pipeline.addLast("timeout.tiner", new IdleStateHandler(
|
||||
new HashedWheelTimer(), 30, 30, 0));
|
||||
|
||||
// pipeline.addLast("timeout.tiner", new IdleStateHandler(
|
||||
// new HashedWheelTimer(), 30, 30, 0));
|
||||
|
||||
pipeline.addLast("frame.encoder", new Lineage2FrameEncoder());
|
||||
pipeline.addLast("frame.decoder", new Lineage2FrameDecoder());
|
||||
@@ -104,7 +102,7 @@ public class Lineage2PipelineFactory implements ChannelPipelineFactory {
|
||||
final Lineage2TimeoutHandler timeoutHandler = new Lineage2TimeoutHandler();
|
||||
pipeline.addLast("packet.handler", new Lineage2PacketHandler(
|
||||
nettyNetworkService, worldService, timeoutHandler));
|
||||
pipeline.addLast("timeout.handler", timeoutHandler);
|
||||
//pipeline.addLast("timeout.handler", timeoutHandler);
|
||||
|
||||
return pipeline;
|
||||
}
|
||||
|
||||
@@ -29,7 +29,7 @@ import com.l2jserver.game.net.Lineage2Client;
|
||||
import com.l2jserver.game.net.packet.ClientPacket;
|
||||
import com.l2jserver.game.net.packet.client.CM_ACTION_USE;
|
||||
import com.l2jserver.game.net.packet.client.CM_ADMIN_COMMAND;
|
||||
import com.l2jserver.game.net.packet.client.CM_ATTACK;
|
||||
import com.l2jserver.game.net.packet.client.CM_CHAR_ATTACK;
|
||||
import com.l2jserver.game.net.packet.client.CM_AUTH_LOGIN;
|
||||
import com.l2jserver.game.net.packet.client.CM_BYPASS;
|
||||
import com.l2jserver.game.net.packet.client.CM_CHAR_ACTION;
|
||||
@@ -40,8 +40,8 @@ import com.l2jserver.game.net.packet.client.CM_CHAR_OPEN_MAP;
|
||||
import com.l2jserver.game.net.packet.client.CM_CHAR_POSITION;
|
||||
import com.l2jserver.game.net.packet.client.CM_CHAR_REQ_INVENTORY;
|
||||
import com.l2jserver.game.net.packet.client.CM_CHAR_SELECT;
|
||||
import com.l2jserver.game.net.packet.client.CM_CHAT;
|
||||
import com.l2jserver.game.net.packet.client.CM_DROP_ITEM;
|
||||
import com.l2jserver.game.net.packet.client.CM_CHAR_CHAT;
|
||||
import com.l2jserver.game.net.packet.client.CM_ITEM_DROP;
|
||||
import com.l2jserver.game.net.packet.client.CM_ENTER_WORLD;
|
||||
import com.l2jserver.game.net.packet.client.CM_EXT_REQ_ALL_FORTRESS_INFO;
|
||||
import com.l2jserver.game.net.packet.client.CM_EXT_REQ_KEY_MAPPING;
|
||||
@@ -166,8 +166,8 @@ public class Lineage2PacketReader extends OneToOneDecoder {
|
||||
return CM_CHAR_MOVE.class;
|
||||
case CM_RESTART.OPCODE:
|
||||
return CM_RESTART.class;
|
||||
case CM_CHAT.OPCODE:
|
||||
return CM_CHAT.class;
|
||||
case CM_CHAR_CHAT.OPCODE:
|
||||
return CM_CHAR_CHAT.class;
|
||||
case CM_CHAR_POSITION.OPCODE:
|
||||
return CM_CHAR_POSITION.class;
|
||||
case CM_ENTER_WORLD.OPCODE:
|
||||
@@ -186,10 +186,10 @@ public class Lineage2PacketReader extends OneToOneDecoder {
|
||||
return CM_ACTION_USE.class;
|
||||
case CM_CHAR_OPEN_MAP.OPCODE:
|
||||
return CM_CHAR_OPEN_MAP.class;
|
||||
case CM_ATTACK.OPCODE:
|
||||
return CM_ATTACK.class;
|
||||
case CM_DROP_ITEM.OPCODE:
|
||||
return CM_DROP_ITEM.class;
|
||||
case CM_CHAR_ATTACK.OPCODE:
|
||||
return CM_CHAR_ATTACK.class;
|
||||
case CM_ITEM_DROP.OPCODE:
|
||||
return CM_ITEM_DROP.class;
|
||||
default:
|
||||
logger.warn("Unknown packet for 0x{}", Integer.toHexString(opcode));
|
||||
break;
|
||||
|
||||
@@ -1,33 +0,0 @@
|
||||
/*
|
||||
* This file is part of l2jserver2 <l2jserver2.com>.
|
||||
*
|
||||
* 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 <http://www.gnu.org/licenses/>.
|
||||
*/
|
||||
package com.l2jserver.game.net.packet;
|
||||
|
||||
import com.google.inject.AbstractModule;
|
||||
import com.google.inject.Module;
|
||||
import com.l2jserver.game.net.packet.client.CM_PROTOCOL_VERSION;
|
||||
|
||||
/**
|
||||
* Google Guice {@link Module} for client packets
|
||||
*
|
||||
* @author <a href="http://www.rogiel.com">Rogiel</a>
|
||||
*/
|
||||
public class ClientPacketModule extends AbstractModule {
|
||||
@Override
|
||||
protected void configure() {
|
||||
bind(CM_PROTOCOL_VERSION.class);
|
||||
}
|
||||
}
|
||||
@@ -1,33 +0,0 @@
|
||||
/*
|
||||
* This file is part of l2jserver2 <l2jserver2.com>.
|
||||
*
|
||||
* 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 <http://www.gnu.org/licenses/>.
|
||||
*/
|
||||
package com.l2jserver.game.net.packet;
|
||||
|
||||
import com.google.inject.AbstractModule;
|
||||
import com.google.inject.Module;
|
||||
|
||||
/**
|
||||
* Google Guice {@link Module} for packets
|
||||
*
|
||||
* @author <a href="http://www.rogiel.com">Rogiel</a>
|
||||
*/
|
||||
public class PacketModule extends AbstractModule {
|
||||
@Override
|
||||
protected void configure() {
|
||||
install(new ClientPacketModule());
|
||||
install(new ServerPacketModule());
|
||||
}
|
||||
}
|
||||
@@ -1,33 +0,0 @@
|
||||
/*
|
||||
* This file is part of l2jserver2 <l2jserver2.com>.
|
||||
*
|
||||
* 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 <http://www.gnu.org/licenses/>.
|
||||
*/
|
||||
package com.l2jserver.game.net.packet;
|
||||
|
||||
import com.google.inject.AbstractModule;
|
||||
import com.google.inject.Module;
|
||||
import com.l2jserver.game.net.packet.client.CM_PROTOCOL_VERSION;
|
||||
|
||||
/**
|
||||
* Google Guice {@link Module} for server packets
|
||||
*
|
||||
* @author <a href="http://www.rogiel.com">Rogiel</a>
|
||||
*/
|
||||
public class ServerPacketModule extends AbstractModule {
|
||||
@Override
|
||||
protected void configure() {
|
||||
bind(CM_PROTOCOL_VERSION.class);
|
||||
}
|
||||
}
|
||||
@@ -41,7 +41,7 @@ import com.l2jserver.util.geometry.Coordinate;
|
||||
*
|
||||
* @author <a href="http://www.rogiel.com">Rogiel</a>
|
||||
*/
|
||||
public class CM_ATTACK extends AbstractClientPacket {
|
||||
public class CM_CHAR_ATTACK extends AbstractClientPacket {
|
||||
/**
|
||||
* The packet OPCODE
|
||||
*/
|
||||
@@ -127,7 +127,7 @@ public class CM_ATTACK extends AbstractClientPacket {
|
||||
* the object id resolver
|
||||
*/
|
||||
@Inject
|
||||
public CM_ATTACK(CharacterService charService, ObjectIDResolver idResolver) {
|
||||
public CM_CHAR_ATTACK(CharacterService charService, ObjectIDResolver idResolver) {
|
||||
this.charService = charService;
|
||||
this.idResolver = idResolver;
|
||||
}
|
||||
@@ -37,7 +37,7 @@ import com.l2jserver.util.BufferUtils;
|
||||
*
|
||||
* @author <a href="http://www.rogiel.com">Rogiel</a>
|
||||
*/
|
||||
public class CM_CHAT extends AbstractClientPacket {
|
||||
public class CM_CHAR_CHAT extends AbstractClientPacket {
|
||||
/**
|
||||
* The packet OPCODE
|
||||
*/
|
||||
@@ -55,7 +55,7 @@ public class CM_CHAT extends AbstractClientPacket {
|
||||
private String target;
|
||||
|
||||
@Inject
|
||||
public CM_CHAT(ChatService chatService) {
|
||||
public CM_CHAR_CHAT(ChatService chatService) {
|
||||
this.chatService = chatService;
|
||||
}
|
||||
|
||||
@@ -37,7 +37,7 @@ import com.l2jserver.util.geometry.Point3D;
|
||||
*
|
||||
* @author <a href="http://www.rogiel.com">Rogiel</a>
|
||||
*/
|
||||
public class CM_DROP_ITEM extends AbstractClientPacket {
|
||||
public class CM_ITEM_DROP extends AbstractClientPacket {
|
||||
/**
|
||||
* The packet OPCODE
|
||||
*/
|
||||
@@ -69,7 +69,7 @@ public class CM_DROP_ITEM extends AbstractClientPacket {
|
||||
* the item id provider
|
||||
*/
|
||||
@Inject
|
||||
public CM_DROP_ITEM(ItemService itemService, ItemIDProvider itemIdProvider) {
|
||||
public CM_ITEM_DROP(ItemService itemService, ItemIDProvider itemIdProvider) {
|
||||
this.itemService = itemService;
|
||||
this.itemIdProvider = itemIdProvider;
|
||||
}
|
||||
@@ -31,7 +31,7 @@ import com.l2jserver.util.BufferUtils;
|
||||
*
|
||||
* @author <a href="http://www.rogiel.com">Rogiel</a>
|
||||
*/
|
||||
public class SM_CHAT extends AbstractServerPacket {
|
||||
public class SM_ACTOR_CHAT extends AbstractServerPacket {
|
||||
/**
|
||||
* The packet OPCODE
|
||||
*/
|
||||
@@ -54,14 +54,14 @@ public class SM_CHAT extends AbstractServerPacket {
|
||||
*/
|
||||
private int messageID = 0;
|
||||
|
||||
public SM_CHAT(Actor character, ChatMessageType destination, String message) {
|
||||
public SM_ACTOR_CHAT(Actor character, ChatMessageType destination, String message) {
|
||||
super(OPCODE);
|
||||
this.actor = character;
|
||||
this.destination = destination;
|
||||
this.message = message;
|
||||
}
|
||||
|
||||
public SM_CHAT(Actor actor, ChatMessageType destination, int messageID) {
|
||||
public SM_ACTOR_CHAT(Actor actor, ChatMessageType destination, int messageID) {
|
||||
super(OPCODE);
|
||||
this.actor = actor;
|
||||
this.destination = destination;
|
||||
@@ -29,7 +29,7 @@ import com.l2jserver.model.world.Actor;
|
||||
* @author <a href="http://www.rogiel.com">Rogiel</a>
|
||||
* @see AttackHit
|
||||
*/
|
||||
public class SM_DIE extends AbstractServerPacket {
|
||||
public class SM_ACTOR_DIE extends AbstractServerPacket {
|
||||
/**
|
||||
* The packet OPCODE
|
||||
*/
|
||||
@@ -40,7 +40,7 @@ public class SM_DIE extends AbstractServerPacket {
|
||||
*/
|
||||
private final Actor actor;
|
||||
|
||||
public SM_DIE(Actor actor) {
|
||||
public SM_ACTOR_DIE(Actor actor) {
|
||||
super(OPCODE);
|
||||
this.actor = actor;
|
||||
}
|
||||
@@ -30,7 +30,7 @@ import com.l2jserver.util.geometry.Coordinate;
|
||||
*
|
||||
* @author <a href="http://www.rogiel.com">Rogiel</a> O
|
||||
*/
|
||||
public class SM_MOVE extends AbstractServerPacket {
|
||||
public class SM_ACTOR_MOVE extends AbstractServerPacket {
|
||||
/**
|
||||
* The packet OPCODE
|
||||
*/
|
||||
@@ -45,7 +45,7 @@ public class SM_MOVE extends AbstractServerPacket {
|
||||
*/
|
||||
private Coordinate target;
|
||||
|
||||
public SM_MOVE(Actor actor, Coordinate target) {
|
||||
public SM_ACTOR_MOVE(Actor actor, Coordinate target) {
|
||||
super(OPCODE);
|
||||
this.actor = actor;
|
||||
this.target = target;
|
||||
@@ -32,7 +32,7 @@ import com.l2jserver.util.factory.CollectionFactory;
|
||||
*
|
||||
* @author <a href="http://www.rogiel.com">Rogiel</a>
|
||||
*/
|
||||
public class SM_STATUS_UPDATE extends AbstractServerPacket {
|
||||
public class SM_ACTOR_STATUS_UPDATE extends AbstractServerPacket {
|
||||
/**
|
||||
* The packet OPCODE
|
||||
*/
|
||||
@@ -67,7 +67,7 @@ public class SM_STATUS_UPDATE extends AbstractServerPacket {
|
||||
private final Map<Stat, Integer> update = CollectionFactory.newMap();
|
||||
private final Actor actor;
|
||||
|
||||
public SM_STATUS_UPDATE(Actor actor) {
|
||||
public SM_ACTOR_STATUS_UPDATE(Actor actor) {
|
||||
super(OPCODE);
|
||||
this.actor = actor;
|
||||
}
|
||||
@@ -83,7 +83,7 @@ public class SM_STATUS_UPDATE extends AbstractServerPacket {
|
||||
}
|
||||
}
|
||||
|
||||
public SM_STATUS_UPDATE add(Stat stat, int value) {
|
||||
public SM_ACTOR_STATUS_UPDATE add(Stat stat, int value) {
|
||||
update.put(stat, value);
|
||||
return this;
|
||||
}
|
||||
@@ -29,7 +29,7 @@ import com.l2jserver.util.BufferUtils;
|
||||
*
|
||||
* @author <a href="http://www.rogiel.com">Rogiel</a>
|
||||
*/
|
||||
public class SM_ENTER_WORLD extends AbstractServerPacket {
|
||||
public class SM_CHAR_ENTER_WORLD extends AbstractServerPacket {
|
||||
/**
|
||||
* The packet OPCODE
|
||||
*/
|
||||
@@ -52,7 +52,7 @@ public class SM_ENTER_WORLD extends AbstractServerPacket {
|
||||
* @param sessionId
|
||||
* the session id
|
||||
*/
|
||||
public SM_ENTER_WORLD(L2Character character, int sessionId) {
|
||||
public SM_CHAR_ENTER_WORLD(L2Character character, int sessionId) {
|
||||
super(OPCODE);
|
||||
this.character = character;
|
||||
this.sessionId = sessionId;
|
||||
@@ -29,7 +29,7 @@ import com.l2jserver.util.geometry.Point3D;
|
||||
*
|
||||
* @author <a href="http://www.rogiel.com">Rogiel</a>
|
||||
*/
|
||||
public class SM_TELEPORT extends AbstractServerPacket {
|
||||
public class SM_CHAR_TELEPORT extends AbstractServerPacket {
|
||||
/**
|
||||
* The packet OPCODE
|
||||
*/
|
||||
@@ -44,7 +44,7 @@ public class SM_TELEPORT extends AbstractServerPacket {
|
||||
*/
|
||||
private final Point3D point;
|
||||
|
||||
public SM_TELEPORT(L2Character character, Point3D point) {
|
||||
public SM_CHAR_TELEPORT(L2Character character, Point3D point) {
|
||||
super(OPCODE);
|
||||
this.character = character;
|
||||
this.point = point;
|
||||
@@ -53,6 +53,6 @@ public class SM_ITEM_GROUND extends AbstractServerPacket {
|
||||
buffer.writeInt(0x01); // show count
|
||||
buffer.writeLong(item.getCount()); // count
|
||||
|
||||
buffer.writeInt(1); // unknown
|
||||
buffer.writeInt(0); // unknown
|
||||
}
|
||||
}
|
||||
|
||||
@@ -0,0 +1,69 @@
|
||||
/*
|
||||
* This file is part of l2jserver2 <l2jserver2.com>.
|
||||
*
|
||||
* 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 <http://www.gnu.org/licenses/>.
|
||||
*/
|
||||
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.server.AttackHit;
|
||||
import com.l2jserver.model.world.Item;
|
||||
import com.l2jserver.model.world.L2Character;
|
||||
|
||||
/**
|
||||
* This packet makes an character pick up an item
|
||||
*
|
||||
* @author <a href="http://www.rogiel.com">Rogiel</a>
|
||||
* @see AttackHit
|
||||
*/
|
||||
public class SM_ITEM_PICK extends AbstractServerPacket {
|
||||
/**
|
||||
* The packet OPCODE
|
||||
*/
|
||||
public static final int OPCODE = 0x17;
|
||||
|
||||
/**
|
||||
* The {@link Item} being picked up
|
||||
*/
|
||||
private final Item item;
|
||||
/**
|
||||
* The {@link L2Character} picking the item
|
||||
*/
|
||||
private final L2Character character;
|
||||
|
||||
/**
|
||||
* @param character
|
||||
* the character that is picking the <code>item</code>
|
||||
* @param item
|
||||
* the item that is being picked
|
||||
*/
|
||||
public SM_ITEM_PICK(L2Character character, Item item) {
|
||||
super(OPCODE);
|
||||
this.item = item;
|
||||
this.character = character;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void write(Lineage2Client conn, ChannelBuffer buffer) {
|
||||
buffer.writeInt(character.getID().getID());
|
||||
buffer.writeInt(item.getID().getID());
|
||||
|
||||
buffer.writeInt(item.getPoint().getX());
|
||||
buffer.writeInt(item.getPoint().getY());
|
||||
buffer.writeInt(item.getPoint().getZ());
|
||||
}
|
||||
}
|
||||
@@ -29,7 +29,7 @@ import com.l2jserver.model.world.character.event.CharacterEvent;
|
||||
*
|
||||
* @author <a href="http://www.rogiel.com">Rogiel</a>
|
||||
*/
|
||||
public class ItemPickUpEvent implements ItemEvent, CharacterEvent {
|
||||
public class ItemPickEvent implements ItemEvent, CharacterEvent {
|
||||
/**
|
||||
* The pickupping character
|
||||
*/
|
||||
@@ -52,7 +52,7 @@ public class ItemPickUpEvent implements ItemEvent, CharacterEvent {
|
||||
* the picked up item
|
||||
* @param newItem the new {@link Item}
|
||||
*/
|
||||
public ItemPickUpEvent(L2Character character, Item item, Item newItem) {
|
||||
public ItemPickEvent(L2Character character, Item item, Item newItem) {
|
||||
this.character = character;
|
||||
this.item = item;
|
||||
this.newItem = newItem;
|
||||
@@ -18,8 +18,8 @@ package com.l2jserver.model.world.npc.controller;
|
||||
|
||||
import com.google.inject.Inject;
|
||||
import com.l2jserver.game.net.Lineage2Client;
|
||||
import com.l2jserver.game.net.packet.server.SM_STATUS_UPDATE;
|
||||
import com.l2jserver.game.net.packet.server.SM_STATUS_UPDATE.Stat;
|
||||
import com.l2jserver.game.net.packet.server.SM_ACTOR_STATUS_UPDATE;
|
||||
import com.l2jserver.game.net.packet.server.SM_ACTOR_STATUS_UPDATE.Stat;
|
||||
import com.l2jserver.model.world.L2Character;
|
||||
import com.l2jserver.model.world.NPC;
|
||||
import com.l2jserver.service.game.character.CharacterService;
|
||||
@@ -51,7 +51,7 @@ public class MonsterController extends BaseNPCController {
|
||||
charService.attack(character, mob);
|
||||
} else {
|
||||
charService.target(character, mob);
|
||||
conn.write(new SM_STATUS_UPDATE(mob).add(Stat.MAX_HP,
|
||||
conn.write(new SM_ACTOR_STATUS_UPDATE(mob).add(Stat.MAX_HP,
|
||||
(int) mob.getTemplate().getMaximumHP()).add(Stat.HP,
|
||||
(int) mob.getHP()));
|
||||
}
|
||||
|
||||
@@ -23,6 +23,7 @@ import java.sql.Types;
|
||||
import java.util.List;
|
||||
|
||||
import com.google.inject.Inject;
|
||||
import com.l2jserver.model.Model;
|
||||
import com.l2jserver.model.dao.CharacterDAO;
|
||||
import com.l2jserver.model.id.AccountID;
|
||||
import com.l2jserver.model.id.object.CharacterID;
|
||||
@@ -430,4 +431,14 @@ public abstract class JDBCCharacterDAO extends
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
@Override
|
||||
protected L2Character[] wrap(Model<?>... objects) {
|
||||
final L2Character[] array = new L2Character[objects.length];
|
||||
int i = 0;
|
||||
for (final Model<?> object : objects) {
|
||||
array[i++] = (L2Character) object;
|
||||
}
|
||||
return array;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -22,6 +22,7 @@ import java.sql.SQLException;
|
||||
import java.util.List;
|
||||
|
||||
import com.google.inject.Inject;
|
||||
import com.l2jserver.model.Model;
|
||||
import com.l2jserver.model.dao.CharacterFriendDAO;
|
||||
import com.l2jserver.model.game.CharacterFriend;
|
||||
import com.l2jserver.model.id.FriendID;
|
||||
@@ -213,7 +214,7 @@ public abstract class JDBCCharacterFriendDAO extends
|
||||
@Override
|
||||
public boolean save(final CharacterFriendList friends) {
|
||||
for (final CharacterFriend friend : friends) {
|
||||
if (!save(friend))
|
||||
if (save(friend) == 0)
|
||||
return false;
|
||||
}
|
||||
return true;
|
||||
@@ -222,9 +223,19 @@ public abstract class JDBCCharacterFriendDAO extends
|
||||
@Override
|
||||
public boolean delete(final CharacterFriendList friends) {
|
||||
for (final CharacterFriend friend : friends) {
|
||||
if (!delete(friend))
|
||||
if (deleteObjects(friend) == 0)
|
||||
return false;
|
||||
}
|
||||
return true;
|
||||
}
|
||||
|
||||
@Override
|
||||
protected CharacterFriend[] wrap(Model<?>... objects) {
|
||||
final CharacterFriend[] array = new CharacterFriend[objects.length];
|
||||
int i = 0;
|
||||
for (final Model<?> object : objects) {
|
||||
array[i++] = (CharacterFriend) object;
|
||||
}
|
||||
return array;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -24,6 +24,7 @@ import java.util.Date;
|
||||
import java.util.List;
|
||||
|
||||
import com.google.inject.Inject;
|
||||
import com.l2jserver.model.Model;
|
||||
import com.l2jserver.model.dao.CharacterDAO;
|
||||
import com.l2jserver.model.dao.ChatMessageDAO;
|
||||
import com.l2jserver.model.id.ChatMessageID;
|
||||
@@ -225,4 +226,14 @@ public abstract class JDBCChatMessageDAO extends
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
@Override
|
||||
protected ChatMessage[] wrap(Model<?>... objects) {
|
||||
final ChatMessage[] array = new ChatMessage[objects.length];
|
||||
int i = 0;
|
||||
for (final Model<?> object : objects) {
|
||||
array[i++] = (ChatMessage) object;
|
||||
}
|
||||
return array;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -22,6 +22,7 @@ import java.sql.SQLException;
|
||||
import java.util.List;
|
||||
|
||||
import com.google.inject.Inject;
|
||||
import com.l2jserver.model.Model;
|
||||
import com.l2jserver.model.dao.CharacterDAO;
|
||||
import com.l2jserver.model.dao.ClanDAO;
|
||||
import com.l2jserver.model.id.object.CharacterID;
|
||||
@@ -175,4 +176,14 @@ public abstract class JDBCClanDAO extends AbstractJDBCDAO<Clan, ClanID>
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
@Override
|
||||
protected Clan[] wrap(Model<?>... objects) {
|
||||
final Clan[] array = new Clan[objects.length];
|
||||
int i = 0;
|
||||
for (final Model<?> object : objects) {
|
||||
array[i++] = (Clan) object;
|
||||
}
|
||||
return array;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -26,6 +26,7 @@ import org.slf4j.Logger;
|
||||
import org.slf4j.LoggerFactory;
|
||||
|
||||
import com.google.inject.Inject;
|
||||
import com.l2jserver.model.Model;
|
||||
import com.l2jserver.model.dao.ItemDAO;
|
||||
import com.l2jserver.model.id.object.CharacterID;
|
||||
import com.l2jserver.model.id.object.ItemID;
|
||||
@@ -343,4 +344,14 @@ public abstract class JDBCItemDAO extends AbstractJDBCDAO<Item, ItemID>
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
@Override
|
||||
protected Item[] wrap(Model<?>... objects) {
|
||||
final Item[] array = new Item[objects.length];
|
||||
int i = 0;
|
||||
for (final Model<?> object : objects) {
|
||||
array[i++] = (Item) object;
|
||||
}
|
||||
return array;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -25,6 +25,7 @@ import org.slf4j.Logger;
|
||||
import org.slf4j.LoggerFactory;
|
||||
|
||||
import com.google.inject.Inject;
|
||||
import com.l2jserver.model.Model;
|
||||
import com.l2jserver.model.dao.CharacterDAO;
|
||||
import com.l2jserver.model.dao.NPCDAO;
|
||||
import com.l2jserver.model.id.object.NPCID;
|
||||
@@ -300,4 +301,14 @@ public abstract class JDBCNPCDAO extends AbstractJDBCDAO<NPC, NPCID> implements
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
@Override
|
||||
protected NPC[] wrap(Model<?>... objects) {
|
||||
final NPC[] array = new NPC[objects.length];
|
||||
int i = 0;
|
||||
for (final Model<?> object : objects) {
|
||||
array[i++] = (NPC) object;
|
||||
}
|
||||
return array;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -21,6 +21,7 @@ import java.util.Collection;
|
||||
import java.util.List;
|
||||
|
||||
import com.google.inject.Inject;
|
||||
import com.l2jserver.model.Model;
|
||||
import com.l2jserver.model.dao.CharacterDAO;
|
||||
import com.l2jserver.model.id.AccountID;
|
||||
import com.l2jserver.model.id.object.CharacterID;
|
||||
@@ -462,4 +463,14 @@ public class OrientDBCharacterDAO extends
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
@Override
|
||||
protected L2Character[] wrap(Model<?>... objects) {
|
||||
final L2Character[] array = new L2Character[objects.length];
|
||||
int i = 0;
|
||||
for (final Model<?> object : objects) {
|
||||
array[i++] = (L2Character) object;
|
||||
}
|
||||
return array;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -20,6 +20,7 @@ import java.sql.SQLException;
|
||||
import java.util.List;
|
||||
|
||||
import com.google.inject.Inject;
|
||||
import com.l2jserver.model.Model;
|
||||
import com.l2jserver.model.dao.CharacterFriendDAO;
|
||||
import com.l2jserver.model.game.CharacterFriend;
|
||||
import com.l2jserver.model.id.FriendID;
|
||||
@@ -265,7 +266,7 @@ public class OrientDBCharacterFriendDAO extends
|
||||
@Override
|
||||
public boolean save(final CharacterFriendList friends) {
|
||||
for (final CharacterFriend friend : friends) {
|
||||
if (!save(friend))
|
||||
if (save(friend) == 0)
|
||||
return false;
|
||||
}
|
||||
return true;
|
||||
@@ -274,9 +275,19 @@ public class OrientDBCharacterFriendDAO extends
|
||||
@Override
|
||||
public boolean delete(final CharacterFriendList friends) {
|
||||
for (final CharacterFriend friend : friends) {
|
||||
if (!delete(friend))
|
||||
if (deleteObjects(friend) == 0)
|
||||
return false;
|
||||
}
|
||||
return true;
|
||||
}
|
||||
|
||||
@Override
|
||||
protected CharacterFriend[] wrap(Model<?>... objects) {
|
||||
final CharacterFriend[] array = new CharacterFriend[objects.length];
|
||||
int i = 0;
|
||||
for (final Model<?> object : objects) {
|
||||
array[i++] = (CharacterFriend) object;
|
||||
}
|
||||
return array;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -21,6 +21,7 @@ import java.util.Date;
|
||||
import java.util.List;
|
||||
|
||||
import com.google.inject.Inject;
|
||||
import com.l2jserver.model.Model;
|
||||
import com.l2jserver.model.dao.CharacterDAO;
|
||||
import com.l2jserver.model.dao.ChatMessageDAO;
|
||||
import com.l2jserver.model.id.ChatMessageID;
|
||||
@@ -256,4 +257,14 @@ public class OrientDBChatMessageDAO extends
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
@Override
|
||||
protected ChatMessage[] wrap(Model<?>... objects) {
|
||||
final ChatMessage[] array = new ChatMessage[objects.length];
|
||||
int i = 0;
|
||||
for (final Model<?> object : objects) {
|
||||
array[i++] = (ChatMessage) object;
|
||||
}
|
||||
return array;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -20,6 +20,7 @@ import java.sql.SQLException;
|
||||
import java.util.List;
|
||||
|
||||
import com.google.inject.Inject;
|
||||
import com.l2jserver.model.Model;
|
||||
import com.l2jserver.model.dao.CharacterDAO;
|
||||
import com.l2jserver.model.dao.ClanDAO;
|
||||
import com.l2jserver.model.id.ChatMessageID;
|
||||
@@ -223,4 +224,14 @@ public class OrientDBClanDAO extends AbstractOrientDBDAO<Clan, ClanID>
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
@Override
|
||||
protected Clan[] wrap(Model<?>... objects) {
|
||||
final Clan[] array = new Clan[objects.length];
|
||||
int i = 0;
|
||||
for (final Model<?> object : objects) {
|
||||
array[i++] = (Clan) object;
|
||||
}
|
||||
return array;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -26,8 +26,8 @@ import com.l2jserver.game.net.SystemMessage;
|
||||
import com.l2jserver.game.net.packet.server.SM_CHAR_INFO;
|
||||
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_CHAT;
|
||||
import com.l2jserver.game.net.packet.server.SM_MOVE;
|
||||
import com.l2jserver.game.net.packet.server.SM_ACTOR_CHAT;
|
||||
import com.l2jserver.game.net.packet.server.SM_ACTOR_MOVE;
|
||||
import com.l2jserver.game.net.packet.server.SM_MOVE_TYPE;
|
||||
import com.l2jserver.game.net.packet.server.SM_TARGET;
|
||||
import com.l2jserver.model.dao.CharacterDAO;
|
||||
@@ -242,7 +242,7 @@ public class CharacterServiceImpl extends AbstractService implements
|
||||
character.getAppearance().setHairColor(hairColor);
|
||||
character.getAppearance().setFace(face);
|
||||
|
||||
if (characterDao.save(character))
|
||||
if (characterDao.save(character) > 0)
|
||||
return character;
|
||||
return null;
|
||||
}
|
||||
@@ -275,14 +275,14 @@ public class CharacterServiceImpl extends AbstractService implements
|
||||
final ChatChannelListener globalChatListener = new ChatChannelListener() {
|
||||
@Override
|
||||
public void onMessage(ChatChannel channel, ChatMessage message) {
|
||||
conn.write(new SM_CHAT(message.getSender().getObject(),
|
||||
conn.write(new SM_ACTOR_CHAT(message.getSender().getObject(),
|
||||
ChatMessageType.ALL, message.getMessage()));
|
||||
}
|
||||
};
|
||||
final ChatChannelListener tradeChatListener = new ChatChannelListener() {
|
||||
@Override
|
||||
public void onMessage(ChatChannel channel, ChatMessage message) {
|
||||
conn.write(new SM_CHAT(message.getSender().getObject(),
|
||||
conn.write(new SM_ACTOR_CHAT(message.getSender().getObject(),
|
||||
ChatMessageType.TRADE, message.getMessage()));
|
||||
}
|
||||
};
|
||||
@@ -474,7 +474,7 @@ public class CharacterServiceImpl extends AbstractService implements
|
||||
// for now, let's just write the packet, we don't have much validation
|
||||
// to be done yet. With character validation packet, another packet of
|
||||
// these will be broadcasted.
|
||||
conn.write(new SM_MOVE(character, coordinate));
|
||||
conn.write(new SM_ACTOR_MOVE(character, coordinate));
|
||||
// we don't dispatch events here, they will be dispatched by
|
||||
// with the same packet referred up here.
|
||||
}
|
||||
|
||||
@@ -16,8 +16,8 @@
|
||||
*/
|
||||
package com.l2jserver.service.game.chat;
|
||||
|
||||
import com.l2jserver.game.net.packet.client.CM_CHAT;
|
||||
import com.l2jserver.game.net.packet.server.SM_CHAT;
|
||||
import com.l2jserver.game.net.packet.client.CM_CHAR_CHAT;
|
||||
import com.l2jserver.game.net.packet.server.SM_ACTOR_CHAT;
|
||||
import com.l2jserver.model.id.object.CharacterID;
|
||||
import com.l2jserver.model.id.object.ClanID;
|
||||
import com.l2jserver.model.server.ChatMessage;
|
||||
@@ -54,8 +54,8 @@ import com.l2jserver.service.Service;
|
||||
* {@link ChatBanActiveChatServiceException} will be thrown.
|
||||
*
|
||||
* <h1>Packets</h1>
|
||||
* Messages are received (from the clients) with {@link CM_CHAT} and sent (to
|
||||
* the clients) with {@link SM_CHAT}.
|
||||
* Messages are received (from the clients) with {@link CM_CHAR_CHAT} and sent (to
|
||||
* the clients) with {@link SM_ACTOR_CHAT}.
|
||||
*
|
||||
* @author <a href="http://www.rogiel.com">Rogiel</a>
|
||||
*/
|
||||
|
||||
@@ -32,7 +32,7 @@ import com.l2jserver.model.world.Item;
|
||||
import com.l2jserver.model.world.L2Character;
|
||||
import com.l2jserver.model.world.character.CharacterInventory.ItemLocation;
|
||||
import com.l2jserver.model.world.item.ItemDropEvent;
|
||||
import com.l2jserver.model.world.item.ItemPickUpEvent;
|
||||
import com.l2jserver.model.world.item.ItemPickEvent;
|
||||
import com.l2jserver.service.AbstractService;
|
||||
import com.l2jserver.service.AbstractService.Depends;
|
||||
import com.l2jserver.service.ServiceStartException;
|
||||
@@ -176,10 +176,10 @@ public class ItemServiceImpl extends AbstractService implements ItemService {
|
||||
stackItems[items.length] = item;
|
||||
try {
|
||||
item = stack(stackItems);
|
||||
Item[] removedItems = character.getInventory().remove(
|
||||
stackItems);
|
||||
Item[] databaseDeleteItems = ArrayUtils.copyArrayExcept(removedItems, item);
|
||||
itemDao.deleteObjects(databaseDeleteItems);
|
||||
Item[] deleteItems = ArrayUtils.copyArrayExcept(
|
||||
Item[].class, stackItems, item);
|
||||
character.getInventory().remove(deleteItems);
|
||||
itemDao.deleteObjects(deleteItems);
|
||||
character.getInventory().add(item);
|
||||
} catch (NonStackableItemsServiceException e) {
|
||||
character.getInventory().add(item);
|
||||
@@ -196,8 +196,8 @@ public class ItemServiceImpl extends AbstractService implements ItemService {
|
||||
itemDao.save(originalItem);
|
||||
}
|
||||
spawnService.unspawn(originalItem);
|
||||
eventDispatcher.dispatch(new ItemPickUpEvent(character,
|
||||
originalItem, item));
|
||||
eventDispatcher.dispatch(new ItemPickEvent(character, originalItem,
|
||||
item));
|
||||
|
||||
return item;
|
||||
}
|
||||
|
||||
@@ -27,7 +27,7 @@ import com.google.inject.Inject;
|
||||
import com.l2jserver.game.net.Lineage2Client;
|
||||
import com.l2jserver.game.net.packet.server.SM_CHAR_INFO;
|
||||
import com.l2jserver.game.net.packet.server.SM_CHAR_INFO_EXTRA;
|
||||
import com.l2jserver.game.net.packet.server.SM_TELEPORT;
|
||||
import com.l2jserver.game.net.packet.server.SM_CHAR_TELEPORT;
|
||||
import com.l2jserver.model.id.object.CharacterID;
|
||||
import com.l2jserver.model.world.Actor;
|
||||
import com.l2jserver.model.world.Actor.ActorState;
|
||||
@@ -234,7 +234,7 @@ public class SpawnServiceImpl extends AbstractService implements SpawnService {
|
||||
if (conn == null)
|
||||
// TODO throw an exception here
|
||||
return;
|
||||
conn.write(new SM_TELEPORT(conn.getCharacter(), coordinate
|
||||
conn.write(new SM_CHAR_TELEPORT(conn.getCharacter(), coordinate
|
||||
.toPoint()));
|
||||
((L2Character) actor).setState(ActorState.TELEPORTING);
|
||||
((L2Character) actor).setTargetLocation(coordinate.toPoint());
|
||||
|
||||
@@ -25,9 +25,10 @@ import com.l2jserver.game.net.Lineage2Client;
|
||||
import com.l2jserver.game.net.SystemMessage;
|
||||
import com.l2jserver.game.net.packet.server.SM_ATTACK;
|
||||
import com.l2jserver.game.net.packet.server.SM_CHAR_INFO_BROADCAST;
|
||||
import com.l2jserver.game.net.packet.server.SM_DIE;
|
||||
import com.l2jserver.game.net.packet.server.SM_ACTOR_DIE;
|
||||
import com.l2jserver.game.net.packet.server.SM_ITEM_GROUND;
|
||||
import com.l2jserver.game.net.packet.server.SM_MOVE;
|
||||
import com.l2jserver.game.net.packet.server.SM_ITEM_PICK;
|
||||
import com.l2jserver.game.net.packet.server.SM_ACTOR_MOVE;
|
||||
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;
|
||||
@@ -47,7 +48,7 @@ import com.l2jserver.model.world.character.event.CharacterMoveEvent;
|
||||
import com.l2jserver.model.world.character.event.CharacterRunningEvent;
|
||||
import com.l2jserver.model.world.character.event.CharacterWalkingEvent;
|
||||
import com.l2jserver.model.world.item.ItemDropEvent;
|
||||
import com.l2jserver.model.world.item.ItemPickUpEvent;
|
||||
import com.l2jserver.model.world.item.ItemPickEvent;
|
||||
import com.l2jserver.model.world.npc.event.NPCSpawnEvent;
|
||||
import com.l2jserver.model.world.player.event.PlayerTeleportedEvent;
|
||||
import com.l2jserver.service.AbstractService;
|
||||
@@ -120,15 +121,18 @@ public class BroadcastServiceImpl extends AbstractService implements
|
||||
broadcast(conn, e.getObject());
|
||||
} else if (e instanceof CharacterMoveEvent) {
|
||||
final CharacterMoveEvent evt = (CharacterMoveEvent) e;
|
||||
conn.write(new SM_MOVE((L2Character) object, evt.getPoint()
|
||||
conn.write(new SM_ACTOR_MOVE((L2Character) object, evt.getPoint()
|
||||
.getCoordinate()));
|
||||
} else if (e instanceof PlayerTeleportedEvent
|
||||
|| e instanceof CharacterEnterWorldEvent) {
|
||||
broadcast(conn, e.getObject());
|
||||
} else if (e instanceof ItemPickEvent) {
|
||||
conn.write(new SM_ITEM_PICK(((ItemPickEvent) e)
|
||||
.getCharacter(), (Item) object));
|
||||
conn.write(new SM_OBJECT_REMOVE(object));
|
||||
} else if (e instanceof ActorTeleportingEvent
|
||||
|| e instanceof CharacterLeaveWorldEvent
|
||||
|| e instanceof ActorUnspawnEvent
|
||||
|| e instanceof ItemPickUpEvent) {
|
||||
|| e instanceof ActorUnspawnEvent) {
|
||||
// object is now out of sight
|
||||
// FIXME pick up animation is not happening
|
||||
conn.write(new SM_OBJECT_REMOVE(object));
|
||||
@@ -139,7 +143,7 @@ public class BroadcastServiceImpl extends AbstractService implements
|
||||
conn.write(new SM_MOVE_TYPE(((CharacterRunningEvent) e)
|
||||
.getCharacter()));
|
||||
} else if (e instanceof ActorDieEvent) {
|
||||
conn.write(new SM_DIE(((ActorDieEvent) e).getActor()));
|
||||
conn.write(new SM_ACTOR_DIE(((ActorDieEvent) e).getActor()));
|
||||
}
|
||||
// keep listener alive
|
||||
return true;
|
||||
|
||||
Reference in New Issue
Block a user