Jump to content

Recommended Posts

Posted

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.

Posted

"players" table isnt needed at all, its better to create long[][] playerItems = new long[allPlayersSize][2];//[x][0] - player id, [x][1] - player Items Count.

 

Why are u sorting whole table when u just need top 3? Its better to just make loop run 3 times and catch best score.

Posted

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.

 

 

So how exactly this event work? For what I understood it will sort all players and find who have more of one item, the reward then with another item, Am I right.

 

Lets say the item is Gold Bar (3470), it will sort all players by how many gold bars they have and then it will reward the 3 players that have more of it. right? Just to clear because the way you explain was a little confused.

Thank you for share

Posted

 

So how exactly this event work? For what I understood it will sort all players and find who have more of one item, the reward then with another item, Am I right.

 

Lets say the item is Gold Bar (3470), it will sort all players by how many gold bars they have and then it will reward the 3 players that have more of it. right? Just to clear because the way you explain was a little confused.

Thank you for share

yes right :)

 

also please delete the code from your quote

Guest Elfocrash
Posted

nice event!  I have a question.

 

where should I put the java file in the project?

package com.l2jserver.gameserver.model.entity;

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.
Note: Your post will require moderator approval before it will be visible.

Guest
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.



  • Posts

    • if you are sending him clients i have no words mate that means you know him.
    • Looking to hire a skilled L2J developer or team to build a custom private server for solo play with advanced server-side AI bots. This is NOT for public launch — just a self-hosted project where I can simulate a full L2 experience alone or with a few friends. 🔹 What I Need A private L2J server ( High Five preferred, newer versions can work as well) with bots that: Farm 24/7 on their own (solo or in bot parties) Can be invited into party and follow basic orders (attack, follow, res, heal, etc.) Are able to join Olympiad, fight with proper logic (per class), and rank up Can coordinate for Raid Bosses (check spawn, move, assist, heal, DPS, etc.) Act like real players: town routines, rebuffing, restocking, even chatting if possible Have different roles: tanks, healers, nukers, archers, etc. Can interact through simple in-game commands or NPC interface 🔹 Your Job Set up the server and geodata Integrate a scalable bot system (written in Java or scriptable) Write clean, modular AI behavior (farming, PvP, party play, raid logic, etc.) Allow me to control/assign bots easily (in-game or config) Bonus: basic UI or GM panel for bot config 🔹 Payment Serious budget for serious work PayPal, crypto, or preferred method Project-based or hourly, negotiable Milestone-based OK 🔹 Contact Send me: Your experience with L2J or similar projects Any bot/AI systems you've built before Estimated timeframe Pricing expectations
    • Yeah, it’s wild how much gambling has changed. When I was growing up, even scratch-off tickets felt like a big thing, but now with so many casino apps and betting sites, it’s just everywhere. I know a few people who got caught up in online slots during lockdown and really struggled to stop, just because it was always on their phone.   I stick to in-game stuff like skin trading for games like CS2 or Dota, which to me feels less risky, especially if you know the value of the items. If you’re curious how these trades work or want to see some guides, just visit website—there’s a lot of info about trading without real gambling involved.
  • Topics

×
×
  • Create New...

AdBlock Extension Detected!

Our website is made possible by displaying online advertisements to our members.

Please disable AdBlock browser extension first, to be able to use our community.

I've Disabled AdBlock