📢 OBT Success – Get Ready for Launch: November 28!!
The Open Beta was an absolute blast!
Over 160+ Master Accounts successfully claimed their reward from The Judge, proving once again how strong and loyal this community truly is.
🔥 Missed the event?
Don’t worry — because so many players asked for another chance, we will host an additional Event very soon! Stay tuned for details.
Community Growth
We’ve already surpassed 500 Master Accounts registered on our forums — and the numbers keep rising every hour.
It feels like the old days… the same energy, the same hype, the same love for Lineage II.
Let’s rebuild L2Elixir the way we remember it:
No shortcuts, no nonsense — just pure old nostalgic gameplay, community spirit, and that classic adventure we all grew up with.
✨ The journey continues…
Launch: November 28, 21:00 UTC+2
Be there when the legend returns.
🔗 Website: https://l2elixir.org/
💬 Discord: https://discord.gg/5ydPHvhbxs
Question
lazzytr
I want to give 1 GCM per hour to online players.
I am editing the java code I found for this, but it does not give an hourly reward.
package services;
import java.text.DateFormat;
import java.text.SimpleDateFormat;
import java.util.Date;
import java.util.concurrent.ScheduledFuture;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import l2f.gameserver.Config;
import l2f.gameserver.ThreadPoolManager;
import l2f.gameserver.database.mysql;
import l2f.gameserver.model.GameObjectsStorage;
import l2f.gameserver.model.Player;
import l2f.gameserver.scripts.ScriptFile;
/**
*
* @author Special
*/
public class AutoReward implements ScriptFile, Runnable
{
private static final Logger _log = LoggerFactory.getLogger(Player.class);
private static final int REWARD_DELAY = 3600000; // 1h.
private static final int REQUIRED_ONLINE = Config.DAILY_REWARD_REQUIRED_ONLINE * 3600000; // 1h.
private static final int NOT_REWARD_AFK_DELAY = Config.DAILY_REWARD_AFK_TIME * 60000; // 10 mins.(Config 10)
private static final DateFormat TIME_FORMAT = new SimpleDateFormat("HH");
private boolean CLEANED = false;
private ScheduledFuture<?> _task = null;
@Override
public void run()
{
if(CLEANED && time() >= Config.DAILY_REWARD_END_HOUR || time() < Config.DAILY_REWARD_START_HOUR)
CLEANED = false;
if(time() >= Config.DAILY_REWARD_START_HOUR && time() <= Config.DAILY_REWARD_END_HOUR)
{
for(Player player : GameObjectsStorage.getAllPlayersForIterate()) {
if(player.isOnline() && player.getUptime() >= REQUIRED_ONLINE
&& (System.currentTimeMillis() - player.getLastNotAfkTime()) > NOT_REWARD_AFK_DELAY) {
if(!isRewardedDB(player)) {
player.sendMessage("You have been rewarded for online time!");
setRewardDB(player);
}
}
}
}
if(CLEANED == false && time() <= Config.DAILY_REWARD_START_HOUR) {
CLEANED = true;
wipeRewardDB();
}
}
public static int time()
{
return Integer.parseInt(TIME_FORMAT.format(new Date(System.currentTimeMillis())));
}
public static boolean isRewardedDB(Player player) {
String value = Config.DAILY_REWARD_PROTECTION.equals("HWID") ? player.getHWID() : player.getIP();
if(player.getVar("daily_reward") != null)
return true;
if(mysql.get("SELECT value FROM character_variables WHERE name='daily_reward' AND value='"+value+"'") != null)
return true;
return false;
}
public static void setRewardDB(Player player) {
String value = Config.DAILY_REWARD_PROTECTION.equals("HWID") ? player.getHWID() : player.getIP();
mysql.set("INSERT INTO character_variables (obj_id, type, name, value, expire_time) VALUES (?,?,?,?,?)", player.getObjectId(), "user-var", "daily_reward", value, -1);
}
public static void wipeRewardDB() {
mysql.set("DELETE FROM `character_variables` WHERE `type`='user-var' and `name`='daily_reward'");
}
@Override
public void onLoad()
{
_log.info("Loaded Service: AutoReward");
if(_task == null)
_task = ThreadPoolManager.getInstance().scheduleAtFixedDelay(this, REWARD_DELAY, REWARD_DELAY);
}
@Override
public void onReload()
{
if(_task != null)
{
_task.cancel(true);
_task = null;
}
_task = ThreadPoolManager.getInstance().scheduleAtFixedDelay(this, REWARD_DELAY, REWARD_DELAY);
}
@Override
public void onShutdown()
{
//
}
}
1 answer to this question
Recommended Posts
Create an account or sign in to comment
You need to be a member in order to leave a comment
Create an account
Sign up for a new account in our community. It's easy!
Register a new accountSign in
Already have an account? Sign in here.
Sign In Now