Changeset 1002
Author: lord_rex
(2010/02/08 19:20) About 2 years ago
PacketBroadcaster Update: - AbstractLockManager idea of MrPoke. - AbstractPeriodicTaskManager, like l2j-free. - I tested it with 2 players it was work fine for me. Please test with more players and report in forum. SQL Maintance FIX. Warning cleanup.
import com.aionemu.gameserver.model.gameobjects.player.Player;import java.util.ArrayList;import com.aionemu.gameserver.model.gameobjects.player.Player;ALTER TABLE `inventory` ADD `itemLocation` TINYINT( 1 ) DEFAULT '0';import com.aionemu.gameserver.model.gameobjects.player.Player;{{{import com.aionemu.gameserver.network.aion.serverpackets.SM_DELETE_ITEM;import com.aionemu.gameserver.network.aion.serverpackets.SM_UPDATE_ITEM;import com.aionemu.gameserver.model.gameobjects.player.Storage;import java.util.Collections;import com.aionemu.gameserver.model.gameobjects.Item;import com.aionemu.gameserver.network.aion.serverpackets.SM_EMOTION;{{@SuppressWarnings("unused")@SuppressWarnings("unused")@SuppressWarnings("unused")@SuppressWarnings("unused")import com.aionemu.gameserver.model.gameobjects.player.Player;import com.aionemu.gameserver.utils.MathUtil;import com.aionemu.gameserver.model.gameobjects.player.Player;import com.aionemu.gameserver.model.gameobjects.player.Player;import org.apache.log4j.Logger;*private static final Logger log = Logger.getLogger(CM_MOVE_ITEM.class);@SuppressWarnings("unused"){{@SuppressWarnings("unused")import com.aionemu.gameserver.model.gameobjects.player.Player;import com.aionemu.gameserver.model.gameobjects.player.Player;import java.nio.ByteBuffer;import com.aionemu.gameserver.network.aion.AionConnection;import com.aionemu.gameserver.model.items.ItemId;import com.aionemu.gameserver.network.aion.AionConnection;import java.util.ArrayList;import com.aionemu.gameserver.network.aion.AionConnection;import com.aionemu.gameserver.model.items.ItemId;import com.aionemu.gameserver.network.aion.AionConnection;import com.aionemu.gameserver.network.aion.clientpackets.CM_MOVE_ITEM;import com.aionemu.gameserver.model.gameobjects.player.Player;import com.aionemu.gameserver.model.gameobjects.player.Storage;import com.aionemu.gameserver.model.gameobjects.player.Player;import com.aionemu.gameserver.model.gameobjects.PersistentState;import com.aionemu.gameserver.model.gameobjects.player.Storage;import com.aionemu.gameserver.model.gameobjects.player.Storage;import com.aionemu.gameserver.model.gameobjects.player.Player;import com.aionemu.gameserver.model.gameobjects.player.Player;import com.aionemu.gameserver.model.gameobjects.player.Player;import com.aionemu.gameserver.restrictions.RestrictionsManager;import java.util.HashSet;import java.util.Iterator;import org.apache.log4j.Logger;import com.aionemu.gameserver.utils.ThreadPoolManager;public class PacketBroadcaster implements Runnablepublic class PacketBroadcaster extends AbstractPeriodicTaskManager<Creature>{{private static final Logger log = Logger.getLogger(PacketBroadcaster.class);private final HashSet<Creature> SET = new HashSet<Creature>();{{{{ThreadPoolManager.getInstance().scheduleAtFixedRate(this, 100, 100);super(100);log.info("PacketBroadcaster: Initialized.");public void add(Creature creature){synchronized(SET){SET.add(creature);}}public void run()protected void callTask(Creature creature){{Iterator<Creature> it = SET.iterator();for(byte mask; (mask = creature.getPacketBroadcastMask()) != 0;)while(it.hasNext()){{Creature creature = it.next();for(BroadcastMode mode : VALUES)synchronized(SET){{SET.remove(creature);mode.trySendPacket(creature, mask);for(byte mask; (mask = creature.getPacketBroadcastMask()) != 0;){for(BroadcastMode mode : VALUES) {mode.trySendPacket(creature, mask);}}import com.aionemu.gameserver.model.gameobjects.player.Player;