rendered paste bodyIndex: C:/workspace/L2_GameServer/java/config/command-privileges.properties
===================================================================
--- C:/workspace/L2_GameServer/java/config/command-privileges.properties (revision 1754)
+++ C:/workspace/L2_GameServer/java/config/command-privileges.properties (working copy)
@@ -61,6 +61,8 @@
###################
admin_itemcreate = 100
admin_create_item = 100
+admin_giveitem = 100
+admin_give_item = 100
##############
### DELETE ###
Index: C:/workspace/L2_GameServer/java/net/sf/l2j/loginserver/ClientThread.java
===================================================================
--- C:/workspace/L2_GameServer/java/net/sf/l2j/loginserver/ClientThread.java (revision 1754)
+++ C:/workspace/L2_GameServer/java/net/sf/l2j/loginserver/ClientThread.java (working copy)
@@ -414,7 +414,7 @@
_bannedIPs.add(ip);
int time = incorrectCount * incorrectCount * 1000;
//System.out.println("Banning ip "+ip+" for "+time/1000.0+" seconds.");
- ClientScheduler.getInstance().scheduleMed(new UnbanTask(ip), time);
+ ClientScheduler.getInstance().scheduleHigh(new UnbanTask(ip), time);
}
public static void addBannedIP(String ip)
Index: C:/workspace/L2_GameServer/java/net/sf/l2j/gameserver/ClientThread.java
===================================================================
--- C:/workspace/L2_GameServer/java/net/sf/l2j/gameserver/ClientThread.java (revision 1754)
+++ C:/workspace/L2_GameServer/java/net/sf/l2j/gameserver/ClientThread.java (working copy)
@@ -95,7 +95,7 @@
{
_sessionId = 0x12345678;
_connection = new Connection(this, socket, _cryptkey);
- _autoSaveInDB = ClientScheduler.getInstance().scheduleLowAtFixedRate(
+ _autoSaveInDB = ClientScheduler.getInstance().scheduleMedAtFixedRate(
new AutoSaveTask(), 5*60*1000L, 15*60*1000L
);
}
Index: C:/workspace/L2_GameServer/java/net/sf/l2j/gameserver/SelectorThread.java
===================================================================
--- C:/workspace/L2_GameServer/java/net/sf/l2j/gameserver/SelectorThread.java (revision 1754)
+++ C:/workspace/L2_GameServer/java/net/sf/l2j/gameserver/SelectorThread.java (working copy)
@@ -139,7 +139,7 @@
if (Config.ASSERT) assert instance == null;
if (Config.COUNT_PACKETS)
{
- packetMonitor = ClientScheduler.getInstance().scheduleLowAtFixedRate(new MonitorPackets(), 10000, 10000);
+ packetMonitor = ClientScheduler.getInstance().scheduleMedAtFixedRate(new MonitorPackets(), 10000, 10000);
}
instance = this;
this._hostname = hostname;
@@ -703,7 +703,7 @@
if(GameTimeController.getGameTicks() - player.getAttackEndTime() < 15 * GameTimeController.TICKS_PER_SECOND || player.isAttacked())
{
c.onlyClose();
- ClientScheduler.getInstance().scheduleLow(new DisconnectionTask(c), 15000);
+ ClientScheduler.getInstance().scheduleMed(new DisconnectionTask(c), 15000);
return;
}
}
@@ -752,7 +752,7 @@
packetHistory.clear();
byteHistory.clear();
- packetMonitor = ClientScheduler.getInstance().scheduleLowAtFixedRate(
+ packetMonitor = ClientScheduler.getInstance().scheduleMedAtFixedRate(
new Runnable()
{
public void run()
Index: C:/workspace/L2_GameServer/java/net/sf/l2j/gameserver/clientpackets/RequestRestartPoint.java
===================================================================
--- C:/workspace/L2_GameServer/java/net/sf/l2j/gameserver/clientpackets/RequestRestartPoint.java (revision 1754)
+++ C:/workspace/L2_GameServer/java/net/sf/l2j/gameserver/clientpackets/RequestRestartPoint.java (working copy)
@@ -122,21 +122,21 @@
&& castle.getSiege().checkIsAttacker(activeChar.getClan()))
{
// Schedule respawn delay for attacker
- ClientScheduler.getInstance().scheduleLow(new DeathTask(activeChar), castle.getSiege().getAttackerRespawnDelay());
+ ClientScheduler.getInstance().scheduleMed(new DeathTask(activeChar), castle.getSiege().getAttackerRespawnDelay());
sm.addString("You will be re-spawned in " + castle.getSiege().getAttackerRespawnDelay()/1000 + " seconds");
activeChar.sendPacket(sm);
}
else
{
// Schedule respawn delay for defender with penalty for CT lose
- ClientScheduler.getInstance().scheduleLow(new DeathTask(activeChar), castle.getSiege().getDefenderRespawnDelay());
+ ClientScheduler.getInstance().scheduleMed(new DeathTask(activeChar), castle.getSiege().getDefenderRespawnDelay());
sm.addString("You will be re-spawned in " + castle.getSiege().getDefenderRespawnDelay()/1000 + " seconds");
activeChar.sendPacket(sm);
}
return;
}
- ClientScheduler.getInstance().scheduleLow(new DeathTask(activeChar), 1);
+ ClientScheduler.getInstance().scheduleMed(new DeathTask(activeChar), 1);
}
Index: C:/workspace/L2_GameServer/java/net/sf/l2j/gameserver/model/L2Character.java
===================================================================
--- C:/workspace/L2_GameServer/java/net/sf/l2j/gameserver/model/L2Character.java (revision 1754)
+++ C:/workspace/L2_GameServer/java/net/sf/l2j/gameserver/model/L2Character.java (working copy)
@@ -137,7 +137,7 @@
private boolean _IsSleeping = false; // Cannot move/attack until sleep timed out or monster is attacked
private boolean _IsStunned = false; // Cannot move/attack until stun timed out
private boolean _IsTeleporting = false;
- private int _LastAttackChange = 0;
+ protected int _LastAttackChange = 0;
private CharStat _Stat;
private CharStatus _Status;
private L2CharTemplate _Template; // The link on the L2CharTemplate object containing generic and static properties of this L2Character type (ex : Max HP, Speed...)
@@ -438,7 +438,7 @@
else
{
// Cancel the action because the bow can't be re-use at this moment
- ClientScheduler.getInstance().scheduleMed(new NotifyAITask(CtrlEvent.EVT_READY_TO_ACT), 1000);
+ ClientScheduler.getInstance().scheduleHigh(new NotifyAITask(CtrlEvent.EVT_READY_TO_ACT), 1000);
ActionFailed af = new ActionFailed();
sendPacket(af);
@@ -524,7 +524,7 @@
int reuse = weaponItem==null ? 0 : weaponItem.getAttackReuseDelay();
// Notify AI with EVT_READY_TO_ACT
- ClientScheduler.getInstance().scheduleMed(new NotifyAITask(CtrlEvent.EVT_READY_TO_ACT), sAtk+reuse);
+ ClientScheduler.getInstance().scheduleHigh(new NotifyAITask(CtrlEvent.EVT_READY_TO_ACT), sAtk+reuse);
}
/**
@@ -600,7 +600,7 @@
}
// Create a new hit task with Medium priority
- ClientScheduler.getInstance().scheduleMed(new HitTask(target, damage1, crit1, miss1, attack._soulshot, shld1), sAtk);
+ ClientScheduler.getInstance().scheduleHigh(new HitTask(target, damage1, crit1, miss1, attack._soulshot, shld1), sAtk);
// Calculate and set the disable delay of the bow in function of the Attack Speed
_disableBowAttackEndTime = (sAtk+reuse)/GameTimeController.MILLIS_IN_TICK + GameTimeController.getGameTicks();
@@ -672,10 +672,10 @@
}
// Create a new hit task with Medium priority for hit 1
- ClientScheduler.getInstance().scheduleMed(new HitTask(target, damage1, crit1, miss1, attack._soulshot, shld1), 650);
+ ClientScheduler.getInstance().scheduleHigh(new HitTask(target, damage1, crit1, miss1, attack._soulshot, shld1), 650);
// Create a new hit task with Medium priority for hit 2 with a higher delay
- ClientScheduler.getInstance().scheduleMed(new HitTask(target, damage2, crit2, miss2, attack._soulshot, shld2), 1250);
+ ClientScheduler.getInstance().scheduleHigh(new HitTask(target, damage2, crit2, miss2, attack._soulshot, shld2), 1250);
// Add those hits to the Server-Client packet Attack
attack.addHit(target, damage1, miss1, crit1, shld1);
@@ -2541,7 +2541,7 @@
protected L2CharacterAI _ai;
/** Future Skill Cast */
- private Future _skillCast;
+ protected Future _skillCast;
/** Char Coords from Client */
private int _clientX;
@@ -3436,7 +3436,7 @@
// {
// if (_currentAttackTask == null )//&& !isInCombat())
// {
-// _currentAttackTask = ClientScheduler.getInstance().scheduleMed(new AttackTask(), 0);
+// _currentAttackTask = ClientScheduler.getInstance().scheduleHigh(new AttackTask(), 0);
// }
// else
// {
Index: C:/workspace/L2_GameServer/java/net/sf/l2j/gameserver/loginserverpackets/LoginServerBasePacket.java
===================================================================
--- C:/workspace/L2_GameServer/java/net/sf/l2j/gameserver/loginserverpackets/LoginServerBasePacket.java (revision 1754)
+++ C:/workspace/L2_GameServer/java/net/sf/l2j/gameserver/loginserverpackets/LoginServerBasePacket.java (working copy)
@@ -18,6 +18,8 @@
*/
package net.sf.l2j.gameserver.loginserverpackets;
+import net.sf.l2j.gameserver.TaskPriority;
+
/**
* @author -Wooden-
*
@@ -94,4 +96,6 @@
_off += length;
return result;
}
+
+ public TaskPriority getPriority() { return TaskPriority.PR_URGENT; }
}
Index: C:/workspace/L2_GameServer/java/net/sf/l2j/gameserver/handler/itemhandlers/ScrollOfEscape.java
===================================================================
--- C:/workspace/L2_GameServer/java/net/sf/l2j/gameserver/handler/itemhandlers/ScrollOfEscape.java (revision 1754)
+++ C:/workspace/L2_GameServer/java/net/sf/l2j/gameserver/handler/itemhandlers/ScrollOfEscape.java (working copy)
@@ -88,7 +88,7 @@
EscapeFinalizer ef = new EscapeFinalizer(activeChar, item.getItemId());
// continue execution later
- activeChar.setSkillCast(ClientScheduler.getInstance().scheduleLow(ef, skill.getSkillTime()));
+ activeChar.setSkillCast(ClientScheduler.getInstance().scheduleMed(ef, skill.getSkillTime()));
activeChar.setSkillCastEndTime(10+GameTimeController.getGameTicks()+skill.getSkillTime()/GameTimeController.MILLIS_IN_TICK);
}
Index: C:/workspace/L2_GameServer/java/net/sf/l2j/gameserver/handler/itemhandlers/MysteryPotion.java
===================================================================
--- C:/workspace/L2_GameServer/java/net/sf/l2j/gameserver/handler/itemhandlers/MysteryPotion.java (revision 1754)
+++ C:/workspace/L2_GameServer/java/net/sf/l2j/gameserver/handler/itemhandlers/MysteryPotion.java (working copy)
@@ -59,7 +59,7 @@
activeChar.sendPacket(sm);
MysteryPotionStop mp = new MysteryPotionStop(playable);
- ClientScheduler.getInstance().scheduleLow(mp, _effectDuration);
+ ClientScheduler.getInstance().scheduleMed(mp, _effectDuration);
}
public class MysteryPotionStop implements Runnable
Index: C:/workspace/L2_GameServer/java/net/sf/l2j/gameserver/handler/itemhandlers/SoulCrystals.java
===================================================================
--- C:/workspace/L2_GameServer/java/net/sf/l2j/gameserver/handler/itemhandlers/SoulCrystals.java (revision 1754)
+++ C:/workspace/L2_GameServer/java/net/sf/l2j/gameserver/handler/itemhandlers/SoulCrystals.java (working copy)
@@ -85,7 +85,7 @@
// Continue execution later
CrystalFinalizer cf = new CrystalFinalizer(activeChar, target, crystalId);
- ClientScheduler.getInstance().scheduleLow(cf, skill.getSkillTime());
+ ClientScheduler.getInstance().scheduleMed(cf, skill.getSkillTime());
}
Index: C:/workspace/L2_GameServer/java/net/sf/l2j/gameserver/handler/itemhandlers/PetSummon.java
===================================================================
--- C:/workspace/L2_GameServer/java/net/sf/l2j/gameserver/handler/itemhandlers/PetSummon.java (revision 1754)
+++ C:/workspace/L2_GameServer/java/net/sf/l2j/gameserver/handler/itemhandlers/PetSummon.java (working copy)
@@ -167,13 +167,13 @@
newpet.startFeed( false );
// continue execution in 1 seconds
- ClientScheduler.getInstance().scheduleLow(new SummonFinalizer(activeChar, newpet), 900);
+ ClientScheduler.getInstance().scheduleMed(new SummonFinalizer(activeChar, newpet), 900);
// if pet died of hunger last time it was summoned
if ( newpet.getCurrentFed() <= 0 )
{
// wait 1 minute for owner to feed
- ClientScheduler.getInstance().scheduleLow(new FeedWait(activeChar, newpet), 60000);
+ ClientScheduler.getInstance().scheduleMed(new FeedWait(activeChar, newpet), 60000);
}
else
{
Index: C:/workspace/L2_GameServer/java/net/sf/l2j/gameserver/handler/itemhandlers/ScrollOfResurrection.java
===================================================================
--- C:/workspace/L2_GameServer/java/net/sf/l2j/gameserver/handler/itemhandlers/ScrollOfResurrection.java (revision 1754)
+++ C:/workspace/L2_GameServer/java/net/sf/l2j/gameserver/handler/itemhandlers/ScrollOfResurrection.java (working copy)
@@ -141,7 +141,7 @@
activeChar.destroyItem("Consume", item.getObjectId(), 1, null, false);
//ResurrectFinalizer rf = new ResurrectFinalizer(target);
// continue execution later
- //ClientScheduler.getInstance().scheduleLow(rf, skill.getSkillTime() - 200);
+ //ClientScheduler.getInstance().scheduleMed(rf, skill.getSkillTime() - 200);
}
}
}
Index: C:/workspace/L2_GameServer/java/net/sf/l2j/gameserver/handler/usercommandhandlers/Escape.java
===================================================================
--- C:/workspace/L2_GameServer/java/net/sf/l2j/gameserver/handler/usercommandhandlers/Escape.java (revision 1754)
+++ C:/workspace/L2_GameServer/java/net/sf/l2j/gameserver/handler/usercommandhandlers/Escape.java (working copy)
@@ -64,7 +64,7 @@
EscapeFinalizer ef = new EscapeFinalizer(activeChar);
// continue execution later
- ClientScheduler.getInstance().scheduleLow(ef, unstuckTimer);
+ ClientScheduler.getInstance().scheduleMed(ef, unstuckTimer);
return true;
}
Index: C:/workspace/L2_GameServer/java/net/sf/l2j/gameserver/handler/admincommandhandlers/AdminCreateItem.java
===================================================================
--- C:/workspace/L2_GameServer/java/net/sf/l2j/gameserver/handler/admincommandhandlers/AdminCreateItem.java (revision 1754)
+++ C:/workspace/L2_GameServer/java/net/sf/l2j/gameserver/handler/admincommandhandlers/AdminCreateItem.java (working copy)
@@ -27,6 +27,8 @@
import net.sf.l2j.gameserver.serverpackets.ItemList;
import net.sf.l2j.gameserver.serverpackets.NpcHtmlMessage;
import net.sf.l2j.gameserver.serverpackets.SystemMessage;
+import net.sf.l2j.gameserver.model.L2Object;
+import net.sf.l2j.gameserver.model.L2World;
/**
* This class handles following admin commands:
@@ -39,7 +41,9 @@
private static String[] _adminCommands = {
"admin_itemcreate",
- "admin_create_item"
+ "admin_create_item",
+ "admin_giveitem",
+ "admin_give_item"
};
private static final int REQUIRED_LEVEL = Config.GM_CREATE_ITEM;
@@ -87,6 +91,49 @@
sm.addString("Wrong number entered.");
activeChar.sendPacket(sm);
}
+ } else if (command.startsWith("admin_giveitem") || command.startsWith("admin_give_item"))
+ {
+ try
+ {
+ String params = (command.startsWith("admin_give_item") ? command.substring(15) : command.substring(14));
+ StringTokenizer st = new StringTokenizer(params);
+ if (st.countTokens() == 3)
+ {
+ L2PcInstance player = net.sf.l2j.gameserver.model.L2World.getInstance().getPlayer(st.nextToken());
+ L2Object target = activeChar.getTarget();
+ if (target instanceof L2PcInstance)
+ {
+ player = (L2PcInstance) target;
+ }
+ int itemId = Integer.parseInt(st.nextToken());
+ int itemAmount = Integer.parseInt(st.nextToken());
+ giveItem(player, itemId, itemAmount, activeChar);
+ SystemMessage sm = new SystemMessage(614);
+ sm.addString("Spawned " + itemAmount + "items number " + itemId + " in " + player + "'s inventory.");
+ activeChar.sendPacket(sm);
+ }
+ else if (st.countTokens() == 2)
+ {
+ L2PcInstance player = L2World.getInstance().getPlayer(st.nextToken());
+ L2Object target = activeChar.getTarget();
+ if (target instanceof L2PcInstance)
+ {
+ player = (L2PcInstance) target;
+ }
+ int itemId = Integer.parseInt(st.nextToken());
+ giveItem(player, itemId, 1, activeChar);
+ SystemMessage sm = new SystemMessage(614);
+ sm.addString("Spawned item number " + itemId + " in " + player + "'s inventory.");
+ activeChar.sendPacket(sm);
+ }
+
+ }
+ catch (StringIndexOutOfBoundsException e)
+ {
+ SystemMessage sm = new SystemMessage(614);
+ sm.addString("Error while creating item.");
+ activeChar.sendPacket(sm);
+ }
}
String target = (activeChar.getTarget() != null?activeChar.getTarget().getName():"no-target");
GMAudit.auditGMAction(activeChar.getName(), command, target, "");
@@ -127,4 +174,16 @@
adminReply.setHtml(replyMSG.toString());
activeChar.sendPacket(adminReply);
}
+
+ private void giveItem(L2PcInstance selectedplayer, int itemId, int itemAmount, L2PcInstance admin)
+ {
+ selectedplayer.getInventory().addItem("AdminGiveItem", itemId, itemAmount, selectedplayer, admin);
+
+ ItemList il = new ItemList(selectedplayer, true);
+ selectedplayer.sendPacket(il);
+
+ SystemMessage sm = new SystemMessage(614);
+ sm.addString("An Admin has spawned " + itemAmount + " item(s) number " + itemId + " in your inventory.");
+ selectedplayer.sendPacket(sm);
+ }
}
Index: C:/workspace/L2_GameServer/java/net/sf/l2j/gameserver/CastleUpdater.java
===================================================================
--- C:/workspace/L2_GameServer/java/net/sf/l2j/gameserver/CastleUpdater.java (revision 1754)
+++ C:/workspace/L2_GameServer/java/net/sf/l2j/gameserver/CastleUpdater.java (working copy)
@@ -61,7 +61,7 @@
// re-run again in 1 hours
CastleUpdater cu = new CastleUpdater(_clan, _RunCount);
- ClientScheduler.getInstance().scheduleLow(cu, 3600000);
+ ClientScheduler.getInstance().scheduleMed(cu, 3600000);
}
} catch (Throwable e) {
e.printStackTrace();
Index: C:/workspace/L2_GameServer/java/net/sf/l2j/gameserver/ai/L2AttackableAI.java
===================================================================
--- C:/workspace/L2_GameServer/java/net/sf/l2j/gameserver/ai/L2AttackableAI.java (revision 1754)
+++ C:/workspace/L2_GameServer/java/net/sf/l2j/gameserver/ai/L2AttackableAI.java (working copy)
@@ -242,7 +242,7 @@
// If not idle - create an AI task (schedule onEvtThink repeatedly)
if (aiTask == null)
{
- aiTask = ClientScheduler.getInstance().scheduleLowAtFixedRate(this, 1000, 1000);
+ aiTask = ClientScheduler.getInstance().scheduleMedAtFixedRate(this, 1000, 1000);
}
}
Index: C:/workspace/L2_GameServer/java/net/sf/l2j/gameserver/ai/L2SiegeGuardAI.java
===================================================================
--- C:/workspace/L2_GameServer/java/net/sf/l2j/gameserver/ai/L2SiegeGuardAI.java (revision 1754)
+++ C:/workspace/L2_GameServer/java/net/sf/l2j/gameserver/ai/L2SiegeGuardAI.java (working copy)
@@ -200,7 +200,7 @@
// If not idle - create an AI task (schedule onEvtThink repeatedly)
if (aiTask == null)
{
- aiTask = ClientScheduler.getInstance().scheduleLowAtFixedRate(this, 1000, 1000);
+ aiTask = ClientScheduler.getInstance().scheduleMedAtFixedRate(this, 1000, 1000);
}
}
Index: C:/workspace/L2_GameServer/java/net/sf/l2j/gameserver/taskmanager/DecayTaskManager.java
===================================================================
--- C:/workspace/L2_GameServer/java/net/sf/l2j/gameserver/taskmanager/DecayTaskManager.java (revision 1754)
+++ C:/workspace/L2_GameServer/java/net/sf/l2j/gameserver/taskmanager/DecayTaskManager.java (working copy)
@@ -17,8 +17,8 @@
*/
public class DecayTaskManager
{
- private Map<L2Character,Long> _decayTasks = new FastMap<L2Character,Long>().setShared(true);
- private FastList<L2Character> _actorsToRemove = new FastList<L2Character>(); // put this as a field to avoid newing it every time
+ protected Map<L2Character,Long> _decayTasks = new FastMap<L2Character,Long>().setShared(true);
+ protected FastList<L2Character> _actorsToRemove = new FastList<L2Character>(); // put this as a field to avoid newing it every time
public static DecayTaskManager _instance;
@@ -54,7 +54,7 @@
catch(NoSuchElementException e){}
}
- private class DecayScheduler implements Runnable
+ protected class DecayScheduler implements Runnable
{
public void run()
{
Index: C:/workspace/L2_GameServer/java/net/sf/l2j/gameserver/gameserverpackets/GameServerBasePacket.java
===================================================================
--- C:/workspace/L2_GameServer/java/net/sf/l2j/gameserver/gameserverpackets/GameServerBasePacket.java (revision 1754)
+++ C:/workspace/L2_GameServer/java/net/sf/l2j/gameserver/gameserverpackets/GameServerBasePacket.java (working copy)
@@ -21,6 +21,8 @@
import java.io.ByteArrayOutputStream;
import java.io.IOException;
+import net.sf.l2j.gameserver.TaskPriority;
+
/**
* @author -Wooden-
*
@@ -118,5 +120,6 @@
return _bao.toByteArray();
}
+ public TaskPriority getPriority() { return TaskPriority.PR_HIGH; }
public abstract byte[] getContent() throws IOException;
}
Index: C:/workspace/L2_GameServer/java/net/sf/l2j/gameserver/GameTimeController.java
===================================================================
--- C:/workspace/L2_GameServer/java/net/sf/l2j/gameserver/GameTimeController.java (revision 1754)
+++ C:/workspace/L2_GameServer/java/net/sf/l2j/gameserver/GameTimeController.java (working copy)
@@ -72,8 +72,8 @@
_timer = new TimerThread();
_timer.start();
- ClientScheduler.getInstance().scheduleLowAtFixedRate(new TimerWatcher(), 0, 1000);
- ClientScheduler.getInstance().scheduleLowAtFixedRate(new BroadcastSunState(), 0, 60 * 60 * 1000);
+ ClientScheduler.getInstance().scheduleMedAtFixedRate(new TimerWatcher(), 0, 1000);
+ ClientScheduler.getInstance().scheduleMedAtFixedRate(new BroadcastSunState(), 0, 60 * 60 * 1000);
}
public boolean isNowNight()
@@ -147,7 +147,7 @@
// Create a task to update the _knownObject and _knowPlayers of each L2Character that finished its movement and of their already known L2Object
// then notify AI with EVT_ARRIVED
if (ended != null)
- ClientScheduler.getInstance().scheduleLow(new MovingObjectArrived(ended), 10);
+ ClientScheduler.getInstance().scheduleMed(new MovingObjectArrived(ended), 10);
}