1
0
mirror of https://github.com/Rogiel/l2jserver2 synced 2025-12-05 23:22:47 +00:00

Fixes item pick animation and renames few packets

This commit is contained in:
2011-12-16 01:21:23 -02:00
parent 3059931d36
commit 82f6bcbc1c
39 changed files with 322 additions and 215 deletions

View File

@@ -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;
}

View File

@@ -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;

View File

@@ -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);
}
}

View File

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

View File

@@ -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);
}
}

View File

@@ -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;
}

View File

@@ -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;
}

View File

@@ -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;
}

View File

@@ -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;

View File

@@ -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;
}

View File

@@ -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;

View File

@@ -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;
}

View File

@@ -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;

View File

@@ -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;

View File

@@ -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
}
}

View File

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

View File

@@ -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;

View File

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

View File

@@ -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;
}
}

View File

@@ -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;
}
}

View File

@@ -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;
}
}

View File

@@ -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;
}
}

View File

@@ -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;
}
}

View File

@@ -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;
}
}

View File

@@ -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;
}
}

View File

@@ -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;
}
}

View File

@@ -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;
}
}

View File

@@ -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;
}
}

View File

@@ -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.
}

View File

@@ -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>
*/

View File

@@ -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;
}

View File

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

View File

@@ -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;