Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- package net.sf.l2j.gameserver.event.others;
- import java.io.File;
- import java.io.IOException;
- import java.sql.Connection;
- import java.sql.PreparedStatement;
- import java.sql.ResultSet;
- import java.sql.SQLException;
- import java.util.logging.Logger;
- import net.sf.l2j.commons.config.ExProperties;
- import net.sf.l2j.L2DatabaseFactory;
- import net.sf.l2j.gameserver.idfactory.IdFactory;
- import net.sf.l2j.gameserver.model.World;
- import net.sf.l2j.gameserver.model.actor.instance.L2PcInstance;
- import net.sf.l2j.gameserver.model.item.instance.ItemInstance;
- import net.sf.l2j.gameserver.model.memo.PlayerMemo;
- import net.sf.l2j.gameserver.network.SystemMessageId;
- import net.sf.l2j.gameserver.network.serverpackets.ItemList;
- import net.sf.l2j.gameserver.network.serverpackets.NpcHtmlMessage;
- import net.sf.l2j.gameserver.network.serverpackets.SystemMessage;
- import net.sf.l2j.gameserver.util.Broadcast;
- import net.sf.l2j.gameserver.util.Mysql;
- import net.sf.l2j.log.Log;
- /**
- * @author Katara*
- */
- public class TopDailyLord implements EventTask
- {
- protected static final Logger _log = Logger.getLogger(TopDailyLord.class.getName());
- private static int winner_id;
- private static String winner_name;
- private static int winner_kills;
- // private TopPvpStartTask _task;
- public static final String CONFIGS_FILE = "./config/events/others/topdailylord.properties";
- public static int TOP_DAILY_LORD_LIST_LENGTH;
- public static boolean TOP_DAILY_LORD_ADD_REWARD;
- public static int TOP_DAILY_LORD_REWARD_ID;
- public static int TOP_DAILY_LORD_REWARD_AMOUNT;
- public static boolean TOP_DAILY_LORD_TAKE_REWARD_FROM_PREVIOUS;
- public static boolean TOP_DAILY_LORD_ADD_SKILL;
- public static int TOP_DAILY_LORD_SKILL_ID;
- public static int TOP_DAILY_LORD_SKILL_LEVEL;
- public static boolean TOP_DAILY_LORD_TAKE_SKILL_FROM_PREVIOUS;
- private String startEventTime;
- public static void LoadConfig()
- {
- ExProperties configs = load(CONFIGS_FILE);
- TOP_DAILY_LORD_LIST_LENGTH = configs.getProperty("TopDailyLordListLength", 10);
- TOP_DAILY_LORD_ADD_REWARD = configs.getProperty("TopDailyLordAddReward", false);
- TOP_DAILY_LORD_REWARD_ID = configs.getProperty("TopDailyLordRewardId", 10);
- TOP_DAILY_LORD_REWARD_AMOUNT = configs.getProperty("TopDailyLordRewardAmount", 10);
- TOP_DAILY_LORD_TAKE_REWARD_FROM_PREVIOUS = configs.getProperty("TopDailyLordTakePreviousReward", false);
- TOP_DAILY_LORD_ADD_SKILL = configs.getProperty("TopDailyLordAddSkill", false);
- TOP_DAILY_LORD_SKILL_ID = configs.getProperty("TopDailyLordSkillId", 10);
- TOP_DAILY_LORD_SKILL_LEVEL = configs.getProperty("TopDailyLordSkillLevel", 10);
- TOP_DAILY_LORD_TAKE_SKILL_FROM_PREVIOUS = configs.getProperty("TopDailyLordTakePreviousSkill", false);
- }
- public static ExProperties load(String filename)
- {
- return load(new File(filename));
- }
- public static ExProperties load(File file)
- {
- ExProperties result = new ExProperties();
- try
- {
- result.load(file);
- }
- catch (IOException e)
- {
- _log.warning("Error loading config : " + file.getName() + "!");
- }
- return result;
- }
- public void setEventStartTime(String newTime)
- {
- startEventTime = newTime;
- }
- public static TopDailyLord getNewInstance()
- {
- return new TopDailyLord();
- }
- public static String get_eventName()
- {
- return "TopDailyPLord";
- }
- private TopDailyLord()
- {
- // scheduleEventStart();
- }
- @Override
- public void run()
- {
- waiter(10 * 60 * 1000); // Minutes start counting
- boolean rewarded = false;
- String list = "";
- Connection con = null;
- PreparedStatement statement = null;
- ResultSet rset = null;
- try
- {
- con = L2DatabaseFactory.getInstance().getConnection();
- statement = con.prepareStatement("SELECT obj_Id,char_name,pvpkills,dailykills FROM characters WHERE dailykills>0 AND accesslevel=0 order by dailykills desc, pvpkills desc limit " + Integer.toString(TOP_DAILY_LORD_LIST_LENGTH));
- rset = statement.executeQuery();
- if (rset.next())
- {
- int count = 1;
- winner_id = rset.getInt("obj_Id");
- winner_name = rset.getString("char_name");
- winner_kills = rset.getInt("dailykills");
- String color_text = "<font color =\"LEVEL\">";
- list = list + "<tr><td><center>" + color_text + count + "</font></center></td><td><center>" + color_text + winner_name + "</font></center></td><td><center>" + color_text + winner_kills + "</font></center></td><td><center>" + color_text + rset.getInt("pvpkills") + "</font></center></td></tr>";
- list = list + "<tr><td></td><td></td><td></td></tr>";
- while (rset.next())
- {
- count++;
- color_text = "<font color =\"FFFFFF\">";
- list = list + "<tr><td><center>" + color_text + count + "</font></center></td><td><center>" + color_text + rset.getString("char_name") + "</font></center></td><td><center>" + color_text + rset.getInt("dailykills") + "</font></center></td><td><center>" + color_text + rset.getInt("pvpkills") + "</font></center></td></tr>";
- }
- }
- else
- list = "<tr><td><center>-</center></td><td><center>-</center></td><td><center>-</center></td></tr>";
- // FIXME: It's noob way :D
- if (TOP_DAILY_LORD_ADD_REWARD && TOP_DAILY_LORD_TAKE_REWARD_FROM_PREVIOUS)
- {
- for (L2PcInstance onlinePlayer : World.getInstance().getPlayers())
- {
- if (onlinePlayer.getInventory().getInventoryItemCount(TOP_DAILY_LORD_REWARD_ID, 0) >= TOP_DAILY_LORD_REWARD_AMOUNT)
- {
- onlinePlayer.getInventory().destroyItemByItemId("Lord PvP", TOP_DAILY_LORD_REWARD_ID, TOP_DAILY_LORD_REWARD_AMOUNT, onlinePlayer, null);
- onlinePlayer.sendPacket(new ItemList(onlinePlayer, false));
- }
- }
- statement = con.prepareStatement("DELETE FROM items WHERE item_id=?");
- statement.setInt(1, TOP_DAILY_LORD_REWARD_ID);
- statement.execute();
- }
- if (TOP_DAILY_LORD_ADD_SKILL)
- {
- for (L2PcInstance onlinePlayer : World.getInstance().getPlayers())
- onlinePlayer.removeSkill(TOP_DAILY_LORD_SKILL_ID);
- }
- for (L2PcInstance onlinePlayer : World.getInstance().getPlayers())
- {
- if (onlinePlayer.isOnline() == true)
- {
- onlinePlayer.setDailyKills(0);
- if (onlinePlayer.getObjectId() == winner_id)
- {
- if (TOP_DAILY_LORD_ADD_REWARD)
- {
- onlinePlayer.addItem("TopPvP Reward", TOP_DAILY_LORD_REWARD_ID, TOP_DAILY_LORD_REWARD_AMOUNT, onlinePlayer, false);
- onlinePlayer.sendPacket(SystemMessage.getSystemMessage(SystemMessageId.EARNED_S2_S1_S).addItemName(TOP_DAILY_LORD_REWARD_ID).addNumber(TOP_DAILY_LORD_REWARD_AMOUNT));
- }
- long expire = ((long) 60 * 1000 * 59 * 29);
- PlayerMemo.setVar(onlinePlayer, "topdailylord", "true", System.currentTimeMillis() + expire);
- if (TOP_DAILY_LORD_ADD_SKILL)
- onlinePlayer.rewardSkills();
- rewarded = true;
- }
- NpcHtmlMessage notice = new NpcHtmlMessage(1);
- notice.setFile("data/html/java/event/TopPvp.htm");
- notice.replace("%name%", onlinePlayer.getName());
- notice.replace("%n%", Integer.toString(TOP_DAILY_LORD_LIST_LENGTH));
- notice.replace("%list%", list);
- onlinePlayer.sendPacket(notice);
- }
- }
- if (rewarded == false)
- {
- int count = 0;
- statement = con.prepareStatement("SELECT owner_id, item_id, count FROM items WHERE owner_id = '" + winner_id + "' AND item_id='" + TOP_DAILY_LORD_REWARD_ID + "'");
- rset = statement.executeQuery();
- while (rset.next())
- {
- count = rset.getInt("count");
- }
- ItemInstance item = new ItemInstance(IdFactory.getInstance().getNextId(), TOP_DAILY_LORD_REWARD_ID);
- try
- {
- statement = con.prepareStatement("INSERT INTO items VALUES (?, ?, " + TOP_DAILY_LORD_REWARD_ID + ", " + (count + TOP_DAILY_LORD_REWARD_AMOUNT) + ", 0, 'INVENTORY', 0, 0, 0, 0, -1, 0)");
- statement.setInt(1, winner_id);
- statement.setInt(2, item.getObjectId());
- statement.execute();
- }
- catch (SQLException e)
- {
- e.printStackTrace();
- }
- finally
- {
- Mysql.closeQuietly(statement);
- }
- }
- statement = con.prepareStatement("UPDATE characters SET dailykills = 0");
- statement.execute();
- }
- catch (Exception e)
- {
- e.printStackTrace();
- }
- finally
- {
- Mysql.closeQuietly(con, statement, rset);
- }
- String topPvP_text = "Top PvP Event: Rewards done successfully";
- Log.add(topPvP_text, "events");
- }
- @Override
- public String getEventIdentifier()
- {
- return "TopDailyLord";
- }
- @Override
- public String getEventStartTime()
- {
- return startEventTime;
- }
- private static void waiter(long interval)
- {
- long startWaiterTime = System.currentTimeMillis();
- int seconds = (int) (interval / 1000);
- seconds++; // Because we lose 1 second on the while
- while (startWaiterTime + interval > System.currentTimeMillis())
- {
- seconds--; // Here because we don't want to see two time announce at the same time
- switch (seconds)
- {
- case 600: // 10 minutes left
- case 300: // 5 minutes left
- case 240: // 4 minutes left
- case 180: // 3 minutes left
- case 120: // 2 minutes left
- case 60: // 1 minute left
- Broadcast.announceToOnlinePlayers(seconds / 60 + " minute(s) till Daily Lord come out!", false);
- break;
- case 30: // 30 seconds left
- case 10: // 10 seconds left
- Broadcast.announceToOnlinePlayers(seconds + " second(s) till Daily Lord come out!", false);
- break;
- /*
- * case 5: // 3 seconds left case 4: // 3 seconds left
- */
- case 3: // 3 seconds left
- case 2: // 2 seconds left
- case 1: // 1 seconds left
- Broadcast.announceToOnlinePlayers(seconds + " second(s) till Daily Lord COME OUT!!!", false);
- break;
- }
- long startOneSecondWaiterStartTime = System.currentTimeMillis();
- while (startOneSecondWaiterStartTime + 1000 > System.currentTimeMillis())
- {
- try
- {
- Thread.sleep(1);
- }
- catch (InterruptedException ie)
- {
- ie.printStackTrace();
- }
- }
- }
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement