Description:
A simple Event which sort all players and give to the 3 Top by a count of Item (eg. 666666) a reward. It runs automaticaly every Sunday at 12:00 (24h)!.As reward it gives adena,though its easy to change it by yourself,also after that all items with id (eg. 666666) get destroyed.
MiniEvent.java
/*
* This program 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.
*
* This program 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
* this program. If not, see <http://www.gnu.org/licenses/>.
*/
package com.l2jserver.gameserver.model.entity;
import java.util.Calendar;
import com.l2jserver.gameserver.ThreadPoolManager;
import com.l2jserver.gameserver.model.L2World;
import com.l2jserver.gameserver.model.actor.instance.L2PcInstance;
/**
* @author Ventic & Hades
* @version 2.0
*
*/
public class MiniEvent
{
static int[] players = new int[L2World.getInstance().getAllPlayersArray().length];
static long[] itemCount = new long[L2World.getInstance().getAllPlayersArray().length];
public static void runEvent()
{
getPlayers();
getWinners();
giveReward();
removeSpecificItem();
}
public static void getInstance()
{
ThreadPoolManager.getInstance().scheduleGeneral(new Runnable()
{
@Override
public void run()
{
runEvent();
}
}, getRunTime());
}
public static long getRunTime()
{
Calendar c = Calendar.getInstance();
c.set(Calendar.DAY_OF_MONTH, Calendar.SUNDAY);
c.set(Calendar.HOUR, 12);
c.set(Calendar.MINUTE, 01);
long time = c.getTimeInMillis();
if (System.currentTimeMillis()- time < 0)
{
long delay = c.getTimeInMillis() - System.currentTimeMillis();
return delay;
}
return 0;
}
public static void getPlayers()
{
for (L2PcInstance p : L2World.getInstance().getAllPlayersArray())
{
for (int i = 0; i <= players[L2World.getInstance().getAllPlayersArray().length]; i++)
{
players[i] = p.getObjectId();
itemCount[i] = p.getInventory().getItemByItemId(666666).getCount();
}
}
}
public static void getWinners()
{
for (int pass = 1; pass <= players.length; pass++) // count how many times..This next loop becomes shorter and shorter
{
for (int i=0; i < players.length-pass; i++)
{
if (itemCount[i] > itemCount[i+1])
{
// exchange elements
long temp = itemCount[i];
itemCount[i] = itemCount[i+1];
itemCount[i+1] = temp;
int ids = players[i];
players[i] = players[i+1];
players[i+1] = ids;
}
}
}
}
public static void giveReward()
{
for (L2PcInstance p : L2World.getInstance().getAllPlayersArray())
{
L2World.getInstance().getPlayer(getFirst()).addItem("Server", 57, 5000, p, true);
L2World.getInstance().getPlayer(getSecond()).addItem("Server", 57, 2500, p, true);
L2World.getInstance().getPlayer(getThird()).addItem("Server", 57, 1000, p, true);
}
}
public static void removeSpecificItem()
{
for (L2PcInstance p : L2World.getInstance().getAllPlayersArray())
{
p.destroyItem("Server", 666666, p.getInventory().getItemByItemId(66666).getCount(), p, true);
}
}
public static int getFirst()
{
return players[1];
}
public static int getSecond()
{
return players[2];
}
public static int getThird()
{
return players[3];
}
}
GameServer.java
MiniEvent.getInstance();
Coded on H5 by Ventic and Hades.
Code isnt tested,any feedback is welcome.