Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- ### Eclipse Workspace Patch 1.0
- #P aCis_gameserver
- Index: java/net/sf/l2j/gameserver/model/actor/Player.java
- ===================================================================
- --- java/net/sf/l2j/gameserver/model/actor/Player.java (revision 3)
- +++ java/net/sf/l2j/gameserver/model/actor/Player.java (working copy)
- @@ -44,6 +44,7 @@
- import net.sf.l2j.gameserver.data.manager.ZoneManager;
- import net.sf.l2j.gameserver.data.sql.ClanTable;
- import net.sf.l2j.gameserver.data.sql.PlayerInfoTable;
- +import net.sf.l2j.gameserver.data.xml.AchievementData;
- import net.sf.l2j.gameserver.data.xml.AdminData;
- import net.sf.l2j.gameserver.data.xml.ItemData;
- import net.sf.l2j.gameserver.data.xml.MapRegionData;
- @@ -477,6 +478,8 @@
- private Door _requestedGate;
- + private List<Integer> _completedAchievements = new ArrayList<>();
- +
- private boolean _expGain = true;
- private final double[] _premium = new double[12];
- @@ -1580,6 +1583,11 @@
- _onlineBeginTime = System.currentTimeMillis();
- }
- + public long getOnlineTime()
- + {
- + return _onlineTime;
- + }
- +
- /**
- * Return the PcInventory Inventory of the Player contained in _inventory.
- */
- @@ -7908,4 +7916,88 @@
- {
- _offlineShopStart = time;
- }
- +
- +
- + public boolean readyAchievementsList()
- + {
- + return _completedAchievements.isEmpty();
- + }
- +
- + public List<Integer> getCompletedAchievements()
- + {
- + return _completedAchievements;
- + }
- +
- + public void saveAchievementData(int achievementID)
- + {
- + try (Connection con = ConnectionPool.getConnection();
- + PreparedStatement ps = con.prepareStatement("UPDATE achievements SET a" + achievementID + "=1 WHERE owner_id=" + getObjectId()))
- + {
- + if (!_completedAchievements.contains(achievementID))
- + _completedAchievements.add(achievementID);
- +
- + ps.executeUpdate();
- + }
- + catch (Exception e)
- + {
- + LOGGER.warn("AchievementData: Save" + e);
- + }
- + }
- +
- + public void getAchievemntData()
- + {
- + int ilosc = AchievementData.getInstance().getAchievementList().size();
- +
- + try (Connection con = ConnectionPool.getConnection())
- + {
- + try (PreparedStatement ps = con.prepareStatement("SELECT * FROM achievements WHERE owner_id=?"))
- + {
- + ps.setInt(1, getObjectId());
- +
- + try (ResultSet rs = ps.executeQuery())
- + {
- + while (rs.next())
- + {
- + _completedAchievements.clear();
- +
- + for (int i=1; i <=ilosc; i++)
- + {
- + int a = rs.getInt("a" + i);
- +
- + if (!_completedAchievements.contains(i))
- + {
- + if (a == 1)
- + _completedAchievements.add(i);
- + }
- + }
- + }
- + }
- + }
- +
- + try (PreparedStatement ps = con.prepareStatement("INSERT INTO achievements (owner_id,a1,a2,a3,a4,a5,a6,a7,a8,a9,a10,a11,a12,a13,a14,a15) VALUES (?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?) ON DUPLICATE KEY UPDATE owner_id=VALUES(owner_id)"))
- + {
- + ps.setInt(1, getObjectId());
- + ps.setInt(2, getObjectId());
- + ps.setInt(3, getObjectId());
- + ps.setInt(4, getObjectId());
- + ps.setInt(5, getObjectId());
- + ps.setInt(6, getObjectId());
- + ps.setInt(7, getObjectId());
- + ps.setInt(8, getObjectId());
- + ps.setInt(9, getObjectId());
- + ps.setInt(10, getObjectId());
- + ps.setInt(11, getObjectId());
- + ps.setInt(12, getObjectId());
- + ps.setInt(13, getObjectId());
- + ps.setInt(14, getObjectId());
- + ps.setInt(15, getObjectId());
- + ps.setInt(16, getObjectId());
- + ps.executeUpdate();
- + }
- + }
- + catch (Exception e)
- + {
- + LOGGER.warn("Achievemnt Data: " + e);
- + }
- + }
- }
- \ No newline at end of file
- Index: java/net/sf/l2j/gameserver/model/entity/achievement/condition/Gloves.java
- ===================================================================
- --- java/net/sf/l2j/gameserver/model/entity/achievement/condition/Gloves.java (nonexistent)
- +++ java/net/sf/l2j/gameserver/model/entity/achievement/condition/Gloves.java (working copy)
- @@ -0,0 +1,24 @@
- +package net.sf.l2j.gameserver.model.entity.achievement.condition;
- +
- +import net.sf.l2j.gameserver.enums.Paperdoll;
- +import net.sf.l2j.gameserver.model.actor.Player;
- +import net.sf.l2j.gameserver.model.item.instance.ItemInstance;
- +
- +public class Gloves extends Condition
- +{
- + public Gloves(Object value)
- + {
- + super(value);
- + setName("Gloves");
- + }
- +
- + @Override
- + public boolean meetConditionRequirements(Player player)
- + {
- + if (getValue() == null)
- + return false;
- +
- + final ItemInstance armor = player.getInventory().getItemFrom(Paperdoll.GLOVES);
- + return armor != null && armor.getEnchantLevel() >= Integer.parseInt(getValue().toString());
- + }
- +}
- \ No newline at end of file
- Index: java/net/sf/l2j/gameserver/model/entity/achievement/condition/Crp.java
- ===================================================================
- --- java/net/sf/l2j/gameserver/model/entity/achievement/condition/Crp.java (nonexistent)
- +++ java/net/sf/l2j/gameserver/model/entity/achievement/condition/Crp.java (working copy)
- @@ -0,0 +1,21 @@
- +package net.sf.l2j.gameserver.model.entity.achievement.condition;
- +
- +import net.sf.l2j.gameserver.model.actor.Player;
- +
- +public class Crp extends Condition
- +{
- + public Crp(Object value)
- + {
- + super(value);
- + setName("Clan Reputation");
- + }
- +
- + @Override
- + public boolean meetConditionRequirements(Player player)
- + {
- + if (getValue() == null)
- + return false;
- +
- + return player.getClan() != null && player.getClan().getReputationScore() >= Integer.parseInt(getValue().toString());
- + }
- +}
- \ No newline at end of file
- Index: java/net/sf/l2j/gameserver/model/entity/achievement/condition/Level.java
- ===================================================================
- --- java/net/sf/l2j/gameserver/model/entity/achievement/condition/Level.java (nonexistent)
- +++ java/net/sf/l2j/gameserver/model/entity/achievement/condition/Level.java (working copy)
- @@ -0,0 +1,21 @@
- +package net.sf.l2j.gameserver.model.entity.achievement.condition;
- +
- +import net.sf.l2j.gameserver.model.actor.Player;
- +
- +public class Level extends Condition
- +{
- + public Level(Object value)
- + {
- + super(value);
- + setName("Level");
- + }
- +
- + @Override
- + public boolean meetConditionRequirements(Player player)
- + {
- + if (getValue() == null)
- + return false;
- +
- + return player.getStatus().getLevel() >= Integer.parseInt(getValue().toString());
- + }
- +}
- \ No newline at end of file
- Index: java/net/sf/l2j/gameserver/model/entity/achievement/condition/OnlineTime.java
- ===================================================================
- --- java/net/sf/l2j/gameserver/model/entity/achievement/condition/OnlineTime.java (nonexistent)
- +++ java/net/sf/l2j/gameserver/model/entity/achievement/condition/OnlineTime.java (working copy)
- @@ -0,0 +1,21 @@
- +package net.sf.l2j.gameserver.model.entity.achievement.condition;
- +
- +import net.sf.l2j.gameserver.model.actor.Player;
- +
- +public class OnlineTime extends Condition
- +{
- + public OnlineTime(Object value)
- + {
- + super(value);
- + setName("Online Time");
- + }
- +
- + @Override
- + public boolean meetConditionRequirements(Player player)
- + {
- + if (getValue() == null)
- + return false;
- +
- + return player.getOnlineTime() >= Integer.parseInt(getValue().toString());
- + }
- +}
- \ No newline at end of file
- Index: java/net/sf/l2j/gameserver/model/entity/achievement/condition/Sub.java
- ===================================================================
- --- java/net/sf/l2j/gameserver/model/entity/achievement/condition/Sub.java (nonexistent)
- +++ java/net/sf/l2j/gameserver/model/entity/achievement/condition/Sub.java (working copy)
- @@ -0,0 +1,21 @@
- +package net.sf.l2j.gameserver.model.entity.achievement.condition;
- +
- +import net.sf.l2j.gameserver.model.actor.Player;
- +
- +public class Sub extends Condition
- +{
- + public Sub(Object value)
- + {
- + super(value);
- + setName("Subclass Count");
- + }
- +
- + @Override
- + public boolean meetConditionRequirements(Player player)
- + {
- + if (getValue() == null)
- + return false;
- +
- + return player.getSubClasses().size() >= Integer.parseInt(getValue().toString());
- + }
- +}
- \ No newline at end of file
- Index: java/net/sf/l2j/gameserver/model/entity/achievement/condition/ClanLevel.java
- ===================================================================
- --- java/net/sf/l2j/gameserver/model/entity/achievement/condition/ClanLevel.java (nonexistent)
- +++ java/net/sf/l2j/gameserver/model/entity/achievement/condition/ClanLevel.java (working copy)
- @@ -0,0 +1,21 @@
- +package net.sf.l2j.gameserver.model.entity.achievement.condition;
- +
- +import net.sf.l2j.gameserver.model.actor.Player;
- +
- +public class ClanLevel extends Condition
- +{
- + public ClanLevel(Object value)
- + {
- + super(value);
- + setName("Clan Level");
- + }
- +
- + @Override
- + public boolean meetConditionRequirements(Player player)
- + {
- + if (getValue() == null)
- + return false;
- +
- + return player.getClan() != null && player.getClan().getLevel() >= Integer.parseInt(getValue().toString());
- + }
- +}
- \ No newline at end of file
- Index: java/net/sf/l2j/gameserver/model/entity/achievement/condition/Legs.java
- ===================================================================
- --- java/net/sf/l2j/gameserver/model/entity/achievement/condition/Legs.java (nonexistent)
- +++ java/net/sf/l2j/gameserver/model/entity/achievement/condition/Legs.java (working copy)
- @@ -0,0 +1,24 @@
- +package net.sf.l2j.gameserver.model.entity.achievement.condition;
- +
- +import net.sf.l2j.gameserver.enums.Paperdoll;
- +import net.sf.l2j.gameserver.model.actor.Player;
- +import net.sf.l2j.gameserver.model.item.instance.ItemInstance;
- +
- +public class Legs extends Condition
- +{
- + public Legs(Object value)
- + {
- + super(value);
- + setName("Legs");
- + }
- +
- + @Override
- + public boolean meetConditionRequirements(Player player)
- + {
- + if (getValue() == null)
- + return false;
- +
- + final ItemInstance armor = player.getInventory().getItemFrom(Paperdoll.LEGS);
- + return armor != null && armor.getEnchantLevel() >= Integer.parseInt(getValue().toString());
- + }
- +}
- \ No newline at end of file
- Index: java/net/sf/l2j/gameserver/model/entity/achievement/condition/Pk.java
- ===================================================================
- --- java/net/sf/l2j/gameserver/model/entity/achievement/condition/Pk.java (nonexistent)
- +++ java/net/sf/l2j/gameserver/model/entity/achievement/condition/Pk.java (working copy)
- @@ -0,0 +1,21 @@
- +package net.sf.l2j.gameserver.model.entity.achievement.condition;
- +
- +import net.sf.l2j.gameserver.model.actor.Player;
- +
- +public class Pk extends Condition
- +{
- + public Pk(Object value)
- + {
- + super(value);
- + setName("PK Count");
- + }
- +
- + @Override
- + public boolean meetConditionRequirements(Player player)
- + {
- + if (getValue() == null)
- + return false;
- +
- + return player.getPkKills() >= Integer.parseInt(getValue().toString());
- + }
- +}
- \ No newline at end of file
- Index: java/net/sf/l2j/gameserver/model/entity/achievement/condition/WeaponEnchant.java
- ===================================================================
- --- java/net/sf/l2j/gameserver/model/entity/achievement/condition/WeaponEnchant.java (nonexistent)
- +++ java/net/sf/l2j/gameserver/model/entity/achievement/condition/WeaponEnchant.java (working copy)
- @@ -0,0 +1,24 @@
- +package net.sf.l2j.gameserver.model.entity.achievement.condition;
- +
- +import net.sf.l2j.gameserver.enums.Paperdoll;
- +import net.sf.l2j.gameserver.model.actor.Player;
- +import net.sf.l2j.gameserver.model.item.instance.ItemInstance;
- +
- +public class WeaponEnchant extends Condition
- +{
- + public WeaponEnchant(Object value)
- + {
- + super(value);
- + setName("Weapon Enchant");
- + }
- +
- + @Override
- + public boolean meetConditionRequirements(Player player)
- + {
- + if (getValue() == null)
- + return false;
- +
- + final ItemInstance armor = player.getInventory().getItemFrom(Paperdoll.RHAND);
- + return armor != null && armor.getEnchantLevel() >= Integer.parseInt(getValue().toString());
- + }
- +}
- \ No newline at end of file
- Index: java/net/sf/l2j/gameserver/model/entity/achievement/condition/Chest.java
- ===================================================================
- --- java/net/sf/l2j/gameserver/model/entity/achievement/condition/Chest.java (nonexistent)
- +++ java/net/sf/l2j/gameserver/model/entity/achievement/condition/Chest.java (working copy)
- @@ -0,0 +1,24 @@
- +package net.sf.l2j.gameserver.model.entity.achievement.condition;
- +
- +import net.sf.l2j.gameserver.enums.Paperdoll;
- +import net.sf.l2j.gameserver.model.actor.Player;
- +import net.sf.l2j.gameserver.model.item.instance.ItemInstance;
- +
- +public class Chest extends Condition
- +{
- + public Chest(Object value)
- + {
- + super(value);
- + setName("Chests");
- + }
- +
- + @Override
- + public boolean meetConditionRequirements(Player player)
- + {
- + if (getValue() == null)
- + return false;
- +
- + final ItemInstance armor = player.getInventory().getItemFrom(Paperdoll.CHEST);
- + return armor != null && armor.getEnchantLevel() >= Integer.parseInt(getValue().toString());
- + }
- +}
- \ No newline at end of file
- Index: java/net/sf/l2j/gameserver/model/entity/achievement/condition/Pvp.java
- ===================================================================
- --- java/net/sf/l2j/gameserver/model/entity/achievement/condition/Pvp.java (nonexistent)
- +++ java/net/sf/l2j/gameserver/model/entity/achievement/condition/Pvp.java (working copy)
- @@ -0,0 +1,21 @@
- +package net.sf.l2j.gameserver.model.entity.achievement.condition;
- +
- +import net.sf.l2j.gameserver.model.actor.Player;
- +
- +public class Pvp extends Condition
- +{
- + public Pvp(Object value)
- + {
- + super(value);
- + setName("PvP Count");
- + }
- +
- + @Override
- + public boolean meetConditionRequirements(Player player)
- + {
- + if (getValue() == null)
- + return false;
- +
- + return player.getPvpKills() >= Integer.parseInt(getValue().toString());
- + }
- +}
- \ No newline at end of file
- Index: java/net/sf/l2j/gameserver/model/entity/achievement/condition/Adena.java
- ===================================================================
- --- java/net/sf/l2j/gameserver/model/entity/achievement/condition/Adena.java (nonexistent)
- +++ java/net/sf/l2j/gameserver/model/entity/achievement/condition/Adena.java (working copy)
- @@ -0,0 +1,21 @@
- +package net.sf.l2j.gameserver.model.entity.achievement.condition;
- +
- +import net.sf.l2j.gameserver.model.actor.Player;
- +
- +public class Adena extends Condition
- +{
- + public Adena(Object value)
- + {
- + super(value);
- + setName("Adena");
- + }
- +
- + @Override
- + public boolean meetConditionRequirements(Player player)
- + {
- + if (getValue() == null)
- + return false;
- +
- + return player.getInventory().getAdena() >= Integer.parseInt(getValue().toString());
- + }
- +}
- \ No newline at end of file
- Index: java/net/sf/l2j/gameserver/model/entity/achievement/condition/Feet.java
- ===================================================================
- --- java/net/sf/l2j/gameserver/model/entity/achievement/condition/Feet.java (nonexistent)
- +++ java/net/sf/l2j/gameserver/model/entity/achievement/condition/Feet.java (working copy)
- @@ -0,0 +1,24 @@
- +package net.sf.l2j.gameserver.model.entity.achievement.condition;
- +
- +import net.sf.l2j.gameserver.enums.Paperdoll;
- +import net.sf.l2j.gameserver.model.actor.Player;
- +import net.sf.l2j.gameserver.model.item.instance.ItemInstance;
- +
- +public class Feet extends Condition
- +{
- + public Feet(Object value)
- + {
- + super(value);
- + setName("Boots");
- + }
- +
- + @Override
- + public boolean meetConditionRequirements(Player player)
- + {
- + if (getValue() == null)
- + return false;
- +
- + final ItemInstance armor = player.getInventory().getItemFrom(Paperdoll.FEET);
- + return armor != null && armor.getEnchantLevel() >= Integer.parseInt(getValue().toString());
- + }
- +}
- \ No newline at end of file
- Index: java/net/sf/l2j/gameserver/data/xml/AchievementData.java
- ===================================================================
- --- java/net/sf/l2j/gameserver/data/xml/AchievementData.java (nonexistent)
- +++ java/net/sf/l2j/gameserver/data/xml/AchievementData.java (working copy)
- @@ -0,0 +1,140 @@
- +package net.sf.l2j.gameserver.data.xml;
- +
- +import java.nio.file.Path;
- +import java.util.ArrayList;
- +import java.util.HashMap;
- +import java.util.List;
- +import java.util.Map;
- +
- +import net.sf.l2j.commons.data.xml.IXmlReader;
- +import net.sf.l2j.commons.util.StatsSet;
- +
- +import net.sf.l2j.gameserver.model.actor.Player;
- +import net.sf.l2j.gameserver.model.entity.Achievement;
- +import net.sf.l2j.gameserver.model.entity.achievement.condition.Adena;
- +import net.sf.l2j.gameserver.model.entity.achievement.condition.Castle;
- +import net.sf.l2j.gameserver.model.entity.achievement.condition.Chest;
- +import net.sf.l2j.gameserver.model.entity.achievement.condition.ClanLevel;
- +import net.sf.l2j.gameserver.model.entity.achievement.condition.CompleteAchievements;
- +import net.sf.l2j.gameserver.model.entity.achievement.condition.Condition;
- +import net.sf.l2j.gameserver.model.entity.achievement.condition.Crp;
- +import net.sf.l2j.gameserver.model.entity.achievement.condition.Feet;
- +import net.sf.l2j.gameserver.model.entity.achievement.condition.Gloves;
- +import net.sf.l2j.gameserver.model.entity.achievement.condition.Head;
- +import net.sf.l2j.gameserver.model.entity.achievement.condition.Hero;
- +import net.sf.l2j.gameserver.model.entity.achievement.condition.Legs;
- +import net.sf.l2j.gameserver.model.entity.achievement.condition.Level;
- +import net.sf.l2j.gameserver.model.entity.achievement.condition.Noble;
- +import net.sf.l2j.gameserver.model.entity.achievement.condition.OnlineTime;
- +import net.sf.l2j.gameserver.model.entity.achievement.condition.Pk;
- +import net.sf.l2j.gameserver.model.entity.achievement.condition.Pvp;
- +import net.sf.l2j.gameserver.model.entity.achievement.condition.Sub;
- +import net.sf.l2j.gameserver.model.entity.achievement.condition.Vip;
- +import net.sf.l2j.gameserver.model.entity.achievement.condition.WeaponEnchant;
- +import net.sf.l2j.gameserver.model.holder.IntIntHolder;
- +
- +import org.w3c.dom.Document;
- +import org.w3c.dom.NamedNodeMap;
- +
- +public final class AchievementData implements IXmlReader
- +{
- + private Map<Integer, Achievement> _achievementList = new HashMap<>();
- +
- + protected AchievementData()
- + {
- + load();
- + }
- +
- + @Override
- + public void load()
- + {
- + parseFile("./data/xml/achievements.xml");
- + LOGGER.info("Loaded {} achievements.", _achievementList.size());
- + }
- +
- + @Override
- + public void parseDocument(Document doc, Path path)
- + {
- + forEach(doc, "list", listNode -> forEach(listNode, "achievement", achievement ->
- + {
- + final StatsSet set = parseAttributes(achievement);
- + List<Condition> conditions = conditionList(achievement.getAttributes());
- + _achievementList.put(set.getInteger("id"), new Achievement(set, conditions));
- + }));
- + }
- +
- + public void rewardForAchievement(int achievementID, Player player)
- + {
- + final Achievement achievement = _achievementList.get(achievementID);
- +
- + for (IntIntHolder reward: achievement.getReward())
- + player.addItem(achievement.getName(), reward.getId(), reward.getValue(), player, true);
- + }
- +
- + public static List<Condition> conditionList(NamedNodeMap attributesList)
- + {
- + List<Condition> conditions = new ArrayList<>();
- +
- + for (int j = 0; j < attributesList.getLength(); j++)
- + addToConditionList(attributesList.item(j).getNodeName(), attributesList.item(j).getNodeValue(), conditions);
- +
- + return conditions;
- + }
- +
- + private static void addToConditionList(String nodeName, Object value, List<Condition> conditions)
- + {
- + if (nodeName.equals("minLevel"))
- + conditions.add(new Level(value));
- + else if (nodeName.equals("minPvPCount"))
- + conditions.add(new Pvp(value));
- + else if (nodeName.equals("minPkCount"))
- + conditions.add(new Pk(value));
- + else if (nodeName.equals("minClanLevel"))
- + conditions.add(new ClanLevel(value));
- + else if (nodeName.equals("mustBeHero"))
- + conditions.add(new Hero(value));
- + else if (nodeName.equals("mustBeNoble"))
- + conditions.add(new Noble(value));
- + else if (nodeName.equals("minWeaponEnchant"))
- + conditions.add(new WeaponEnchant(value));
- + else if (nodeName.equals("minAdenaCount"))
- + conditions.add(new Adena(value));
- + else if (nodeName.equals("crpAmmount"))
- + conditions.add(new Crp(value));
- + else if (nodeName.equals("lordOfCastle"))
- + conditions.add(new Castle(value));
- + else if (nodeName.equals("mustBeVip"))
- + conditions.add(new Vip(value));
- + else if (nodeName.equals("CompleteAchievements"))
- + conditions.add(new CompleteAchievements(value));
- + else if (nodeName.equals("minSubclassCount"))
- + conditions.add(new Sub(value));
- + else if (nodeName.equals("minOnlineTime"))
- + conditions.add(new OnlineTime(value));
- + else if (nodeName.equals("minHeadEnchant"))
- + conditions.add(new Head(value));
- + else if (nodeName.equals("minChestEnchant"))
- + conditions.add(new Chest(value));
- + else if (nodeName.equals("minFeetEnchant"))
- + conditions.add(new Feet(value));
- + else if (nodeName.equals("minLegsEnchant"))
- + conditions.add(new Legs(value));
- + else if (nodeName.equals("minGlovestEnchant"))
- + conditions.add(new Gloves(value));
- + }
- +
- + public Map<Integer, Achievement> getAchievementList()
- + {
- + return _achievementList;
- + }
- +
- + public static AchievementData getInstance()
- + {
- + return SingletonHolder._instance;
- + }
- +
- + private static class SingletonHolder
- + {
- + protected static final AchievementData _instance = new AchievementData();
- + }
- +}
- \ No newline at end of file
- Index: java/net/sf/l2j/gameserver/model/entity/achievement/condition/Head.java
- ===================================================================
- --- java/net/sf/l2j/gameserver/model/entity/achievement/condition/Head.java (nonexistent)
- +++ java/net/sf/l2j/gameserver/model/entity/achievement/condition/Head.java (working copy)
- @@ -0,0 +1,24 @@
- +package net.sf.l2j.gameserver.model.entity.achievement.condition;
- +
- +import net.sf.l2j.gameserver.enums.Paperdoll;
- +import net.sf.l2j.gameserver.model.actor.Player;
- +import net.sf.l2j.gameserver.model.item.instance.ItemInstance;
- +
- +public class Head extends Condition
- +{
- + public Head(Object value)
- + {
- + super(value);
- + setName("Helmets");
- + }
- +
- + @Override
- + public boolean meetConditionRequirements(Player player)
- + {
- + if (getValue() == null)
- + return false;
- +
- + final ItemInstance armor = player.getInventory().getItemFrom(Paperdoll.HEAD);
- + return armor != null && armor.getEnchantLevel() >= Integer.parseInt(getValue().toString());
- + }
- +}
- \ No newline at end of file
- Index: java/net/sf/l2j/gameserver/model/entity/achievement/condition/Vip.java
- ===================================================================
- --- java/net/sf/l2j/gameserver/model/entity/achievement/condition/Vip.java (nonexistent)
- +++ java/net/sf/l2j/gameserver/model/entity/achievement/condition/Vip.java (working copy)
- @@ -0,0 +1,23 @@
- +package net.sf.l2j.gameserver.model.entity.achievement.condition;
- +
- +import net.sf.l2j.gameserver.model.actor.Player;
- +
- +public class Vip extends Condition
- +{
- + public Vip(Object value)
- + {
- + super(value);
- + setName("Vip");
- + }
- +
- + @Override
- + public boolean meetConditionRequirements(Player player)
- + {
- + if (getValue() == null)
- + return false;
- +
- +// return player.calculatePremiumAttributes();
- + player.getPremiumAttribute(1);
- + return false;
- + }
- +}
- \ No newline at end of file
- Index: java/net/sf/l2j/gameserver/data/manager/AchievementsManager.java
- ===================================================================
- --- java/net/sf/l2j/gameserver/data/manager/AchievementsManager.java (nonexistent)
- +++ java/net/sf/l2j/gameserver/data/manager/AchievementsManager.java (working copy)
- @@ -0,0 +1,243 @@
- +package net.sf.l2j.gameserver.data.manager;
- +
- +import java.util.StringTokenizer;
- +
- +import net.sf.l2j.gameserver.data.xml.AchievementData;
- +import net.sf.l2j.gameserver.model.actor.Player;
- +import net.sf.l2j.gameserver.model.actor.instance.Folk;
- +import net.sf.l2j.gameserver.model.actor.template.NpcTemplate;
- +import net.sf.l2j.gameserver.model.entity.Achievement;
- +import net.sf.l2j.gameserver.model.entity.achievement.condition.Condition;
- +import net.sf.l2j.gameserver.network.serverpackets.NpcHtmlMessage;
- +
- +public class AchievementsManager extends Folk
- +{
- + public AchievementsManager(int objectId, NpcTemplate template)
- + {
- + super(objectId, template);
- + }
- +
- + @Override
- + public void onBypassFeedback(Player player, String command)
- + {
- + StringTokenizer st = new StringTokenizer(command, " ");
- + st.nextToken();
- +
- + if (command.startsWith("showMyAchievements"))
- + {
- + player.getAchievemntData();
- + showMyAchievements(player);
- + }
- + else if (command.startsWith("achievementInfo"))
- + showAchievementInfo(Integer.parseInt(st.nextToken()), player);
- + else if (command.startsWith("topList"))
- + showTopListWindow(player);
- + else if (command.startsWith("showMainWindow"))
- + showChatWindow(player, 0);
- + else if (command.startsWith("getReward"))
- + {
- + int id = Integer.parseInt(st.nextToken());
- + AchievementData.getInstance().rewardForAchievement(id, player);
- + player.saveAchievementData(id);
- + showMyAchievements(player);
- + }
- + else if (command.startsWith ("showMyStats"))
- + showMyStatsWindow(player);
- + else if (command.startsWith("showHelpWindow"))
- + showHelpWindow(player);
- + }
- +
- + @Override
- + public void showChatWindow(Player player, int val)
- + {
- + StringBuilder tb = new StringBuilder();
- + tb.append("<html><title>Achievements Manager</title><body><center><br>");
- + tb.append("<img src=\"l2font-e.replay_logo-e\" width=250 height=80><br1><center><img src=\"L2UI.SquareGray\" width=300 height=1></center><table bgcolor=000000 width=319><tr><td><center><font color=\"LEVEL\">Hello <font color=\"LEVEL\">" + player.getName() + "</font></center></td></font></tr></table><center><img src=\"L2UI.SquareGray\" width=300 height=1></center>");
- + tb.append("<br><font color=\"LEVEL\">Are you looking for challenge?</font>");
- + tb.append("<br><img src=\"l2ui.squaregray\" width=\"270\" height=\"1\"><br>");
- + tb.append("<button value=\"My Achievements\" action=\"bypass -h npc_%objectId%_showMyAchievements\" width=134 height=21 back=\"L2UI_ch3.BigButton3_over\" fore=\"L2UI_ch3.BigButton3\">");
- + tb.append("<button value=\"Statistics\" action=\"bypass -h npc_%objectId%_showMyStats\" width=134 height=21 back=\"L2UI_ch3.BigButton3_over\" fore=\"L2UI_ch3.BigButton3\">");
- + tb.append("<button value=\"Help\" action=\"bypass -h npc_%objectId%_showHelpWindow\" width=134 height=21 back=\"L2UI_ch3.BigButton3_over\" fore=\"L2UI_ch3.BigButton3\">");
- + tb.append("<br><img src=\"l2ui.squaregray\" width=\"270\" height=\"1\"><br>");
- + tb.append("<center><br><img src=l2ui.bbs_lineage2 height=16 width=80></center>");
- +
- + NpcHtmlMessage msg = new NpcHtmlMessage(this.getObjectId());
- + msg.setHtml(tb.toString());
- + msg.replace("%objectId%", String.valueOf(this.getObjectId()));
- +
- + player.sendPacket(msg);
- + }
- +
- + private void showMyAchievements(Player player)
- + {
- + StringBuilder tb = new StringBuilder();
- + tb.append("<html><title>Achievements Manager</title><body><br>");
- +
- + tb.append("<center><font color=\"LEVEL\">My achievements</font>:</center><br>");
- +
- + if (AchievementData.getInstance().getAchievementList().isEmpty())
- + tb.append("There are no Achievements created yet!");
- + else
- + {
- + int i = 0;
- +
- + tb.append("<table width=270 border=0 bgcolor=\"33FF33\">");
- + tb.append("<tr><td width=270 align=\"left\">Name:</td><td width=60 align=\"right\">Info:</td><td width=200 align=\"center\">Status:</td></tr></table>");
- + tb.append("<br><img src=\"l2ui.squaregray\" width=\"270\" height=\"1\"><br>");
- +
- + for (Achievement a: AchievementData.getInstance().getAchievementList().values())
- + {
- + tb.append(getTableColor(i));
- + tb.append("<tr><td width=270 align=\"left\">" + a.getName() + "</td><td width=50 align=\"right\"><a action=\"bypass -h npc_%objectId%_achievementInfo "
- + + a.getId() + "\">info</a></td><td width=200 align=\"center\">" + getStatusString(a.getId(), player) + "</td></tr></table>");
- + i++;
- + }
- +
- + tb.append("<br><img src=\"l2ui.squaregray\" width=\"270\" height=\"1s\"><br>");
- + tb.append("<center><button value=\"Back\" action=\"bypass -h npc_%objectId%_showMainWindow\" width=134 height=21 back=\"L2UI_ch3.BigButton3_over\" fore=\"L2UI_ch3.BigButton3\"><center>");
- + }
- +
- + NpcHtmlMessage msg = new NpcHtmlMessage(this.getObjectId());
- + msg.setHtml(tb.toString());
- + msg.replace("%objectId%", String.valueOf(this.getObjectId()));
- +
- + player.sendPacket(msg);
- + }
- +
- + private void showAchievementInfo(int achievementID, Player player)
- + {
- + Achievement a = AchievementData.getInstance().getAchievementList().get(achievementID);
- +
- + StringBuilder tb = new StringBuilder();
- + tb.append("<html><title>Achievements Manager</title><body><br>");
- +
- + tb.append("<table width=270 border=0 bgcolor=\"33FF33\">");
- + tb.append("<tr><td width=270 align=\"center\">" + a.getName() + "</td></tr></table><br>");
- + tb.append("<center>Status: " + getStatusString(achievementID, player));
- +
- + if (a.achievementRequirements(player) && !player.getCompletedAchievements().contains(achievementID))
- + tb.append("<button value=\"Receive Reward!\" action=\"bypass -h npc_%objectId%_getReward " + a.getId() + "\" width=134 height=21 back=\"L2UI_ch3.BigButton3_over\" fore=\"L2UI_ch3.BigButton3\">");
- +
- + tb.append("<br><img src=\"l2ui.squaregray\" width=\"270\" height=\"1s\"><br>");
- +
- + tb.append("<table width=270 border=0 bgcolor=\"33FF33\">");
- + tb.append("<tr><td width=270 align=\"center\">Description</td></tr></table><br>");
- + tb.append(a.getDescription());
- + tb.append("<br><img src=\"l2ui.squaregray\" width=\"270\" height=\"1s\"><br>");
- +
- + tb.append("<table width=270 border=0 bgcolor=\"33FF33\">");
- + tb.append("<tr><td width=270 align=\"left\">Condition:</td><td width=100 align=\"right\">Value:</td><td width=200 align=\"center\">Status:</td></tr></table>");
- + tb.append(getConditionsStatus(achievementID, player));
- + tb.append("<br><img src=\"l2ui.squaregray\" width=\"270\" height=\"1s\"><br>");
- + tb.append("<center><button value=\"Back\" action=\"bypass -h npc_%objectId%_showMyAchievements\" width=134 height=21 back=\"L2UI_ch3.BigButton3_over\" fore=\"L2UI_ch3.BigButton3\"><center>");
- +
- + NpcHtmlMessage msg = new NpcHtmlMessage(this.getObjectId());
- + msg.setHtml(tb.toString());
- + msg.replace("%objectId%", String.valueOf(this.getObjectId()));
- +
- + player.sendPacket(msg);
- + }
- +
- + private void showMyStatsWindow(Player player)
- + {
- + StringBuilder tb = new StringBuilder();
- + tb.append("<html><title>Achievements Manager</title><body><center><br>");
- + tb.append("Check your <font color=\"LEVEL\">Achievements </font>statistics:");
- + tb.append("<br><img src=\"l2ui.squaregray\" width=\"270\" height=\"1\"><br>");
- +
- + player.getAchievemntData();
- + int completedCount = player.getCompletedAchievements().size();
- +
- + tb.append("You have completed: " + completedCount + "/<font color=\"LEVEL\">" + AchievementData.getInstance().getAchievementList().size() + "</font>");
- +
- + tb.append("<br><img src=\"l2ui.squaregray\" width=\"270\" height=\"1s\"><br>");
- + tb.append("<center><button value=\"Back\" action=\"bypass -h npc_%objectId%_showMainWindow\" width=134 height=21 back=\"L2UI_ch3.BigButton3_over\" fore=\"L2UI_ch3.BigButton3\"><center>");
- +
- + NpcHtmlMessage msg = new NpcHtmlMessage(this.getObjectId());
- + msg.setHtml(tb.toString());
- + msg.replace("%objectId%", String.valueOf(this.getObjectId()));
- +
- + player.sendPacket(msg);
- + }
- +
- + private void showTopListWindow(Player player )
- + {
- + StringBuilder tb = new StringBuilder();
- + tb.append("<html><title>Achievements Manager</title><body><center><br>");
- + tb.append("Check your <font color=\"LEVEL\">Achievements </font>Top List:");
- + tb.append("<br><img src=\"l2ui.squaregray\" width=\"270\" height=\"1\"><br>");
- +
- + tb.append("List Player " + player.getCompletedAchievements() + " ");
- +
- + tb.append("<br><img src=\"l2ui.squaregray\" width=\"270\" height=\"1s\"><br>");
- + tb.append("<center><button value=\"Back\" action=\"bypass -h npc_%objectId%_showMainWindow\" width=134 height=21 back=\"L2UI_ch3.BigButton3_over\" fore=\"L2UI_ch3.BigButton3\"><center>");
- +
- + NpcHtmlMessage msg = new NpcHtmlMessage(this.getObjectId());
- + msg.setHtml(tb.toString());
- + msg.replace("%objectId%", String.valueOf(this.getObjectId()));
- +
- + player.sendPacket(msg);
- + }
- +
- + private void showHelpWindow(Player player)
- + {
- + StringBuilder tb = new StringBuilder();
- + tb.append("<html><title>Achievements Manager</title><body><center><br>");
- + tb.append("Achievements <font color=\"LEVEL\">Help </font>page:");
- + tb.append("<br><img src=\"l2ui.squaregray\" width=\"270\" height=\"1\"><br>");
- +
- + tb.append("<center>You can check status of your achievements, receive reward if every condition of achievement is meet, if not you can check which condition is still not meet, by using info button");
- + tb.append("<br><img src=\"l2ui.squaregray\" width=\"270\" height=\"1s\"><br>");
- + tb.append("<font color=\"FF0000\">Not Completed</font> - you did not meet the achivement requirements.<br>");
- + tb.append("<font color=\"LEVEL\">Get Reward</font> - you may receive reward, click info.<br>");
- + tb.append("<font color=\"5EA82E\">Completed</font> - achievement completed, reward received.<br></center>");
- +
- + tb.append("Achievements Engine by <font color=\"LEVEL\">One Games</font>");
- + tb.append("<br><img src=\"l2ui.squaregray\" width=\"270\" height=\"1s\"><br>");
- + tb.append("<center><button value=\"Back\" action=\"bypass -h npc_%objectId%_showMainWindow\" width=134 height=21 back=\"L2UI_ch3.BigButton3_over\" fore=\"L2UI_ch3.BigButton3\"><center>");
- +
- + NpcHtmlMessage msg = new NpcHtmlMessage(this.getObjectId());
- + msg.setHtml(tb.toString());
- + msg.replace("%objectId%", String.valueOf(this.getObjectId()));
- +
- + player.sendPacket(msg);
- + }
- +
- + private static String getStatusString(int achievementID, Player player)
- + {
- + if (player.getCompletedAchievements().contains(achievementID))
- + return "<font color=\"5EA82E\">Completed</font>";
- +
- + if (AchievementData.getInstance().getAchievementList().get(achievementID).achievementRequirements(player))
- + return "<font color=\"LEVEL\">Get Reward</font>";
- +
- + return "<font color=\"FF0000\">Not Completed</font>";
- + }
- +
- + private static String getTableColor(int i)
- + {
- + return (i % 2 == 0) ? "<table width=270 border=0 bgcolor=\"444444\">" : "<table width=270 border=0>";
- + }
- +
- + private static String getConditionsStatus(int achievementID, Player player)
- + {
- + int i = 0;
- + String s = "</center>";
- + Achievement a = AchievementData.getInstance().getAchievementList().get(achievementID);
- + String completed = "<font color=\"5EA82E\">Completed</font></td></tr></table>";
- + String notcompleted = "<font color=\"FF0000\">Not Completed</font></td></tr></table>";
- +
- + for (Condition c: a.getConditions())
- + {
- + s+= getTableColor(i);
- + s+= "<tr><td width=270 align=\"left\">" + c.getName() + "</td><td width=50 align=\"right\">" + c.getValue() + "</td><td width=200 align=\"center\">";
- + i++;
- +
- + if (c.meetConditionRequirements(player))
- + s+= completed;
- + else
- + s+= notcompleted;
- + }
- + return s;
- + }
- +}
- \ No newline at end of file
- Index: java/net/sf/l2j/gameserver/model/entity/achievement/condition/Castle.java
- ===================================================================
- --- java/net/sf/l2j/gameserver/model/entity/achievement/condition/Castle.java (nonexistent)
- +++ java/net/sf/l2j/gameserver/model/entity/achievement/condition/Castle.java (working copy)
- @@ -0,0 +1,21 @@
- +package net.sf.l2j.gameserver.model.entity.achievement.condition;
- +
- +import net.sf.l2j.gameserver.model.actor.Player;
- +
- +public class Castle extends Condition
- +{
- + public Castle(Object value)
- + {
- + super(value);
- + setName("Have Castle");
- + }
- +
- + @Override
- + public boolean meetConditionRequirements(Player player)
- + {
- + if (getValue() == null)
- + return false;
- +
- + return player.getClan() != null && (player.isCastleLord(5)) || (player.isCastleLord(3)) || (player.isCastleLord(7));
- + }
- +}
- \ No newline at end of file
- Index: java/net/sf/l2j/gameserver/GameServer.java
- ===================================================================
- --- java/net/sf/l2j/gameserver/GameServer.java (revision 3)
- +++ java/net/sf/l2j/gameserver/GameServer.java (working copy)
- @@ -53,6 +53,7 @@
- import net.sf.l2j.gameserver.data.sql.PlayerInfoTable;
- import net.sf.l2j.gameserver.data.sql.ServerMemoTable;
- import net.sf.l2j.gameserver.data.sql.SpawnTable;
- +import net.sf.l2j.gameserver.data.xml.AchievementData;
- import net.sf.l2j.gameserver.data.xml.AdminData;
- import net.sf.l2j.gameserver.data.xml.AnnouncementData;
- import net.sf.l2j.gameserver.data.xml.ArmorSetData;
- @@ -143,6 +144,9 @@
- StringUtil.printSection("Config");
- Config.loadGameServer();
- + StringUtil.printSection("Achievement");
- + AchievementData.getInstance();
- +
- StringUtil.printSection("Poolers");
- ConnectionPool.init();
- ThreadPool.init();
- Index: java/net/sf/l2j/gameserver/model/entity/achievement/condition/CompleteAchievements.java
- ===================================================================
- --- java/net/sf/l2j/gameserver/model/entity/achievement/condition/CompleteAchievements.java (nonexistent)
- +++ java/net/sf/l2j/gameserver/model/entity/achievement/condition/CompleteAchievements.java (working copy)
- @@ -0,0 +1,21 @@
- +package net.sf.l2j.gameserver.model.entity.achievement.condition;
- +
- +import net.sf.l2j.gameserver.model.actor.Player;
- +
- +public class CompleteAchievements extends Condition
- +{
- + public CompleteAchievements(Object value)
- + {
- + super(value);
- + setName("Complete Achievements");
- + }
- +
- + @Override
- + public boolean meetConditionRequirements(Player player)
- + {
- + if (getValue() == null)
- + return false;
- +
- + return player.getCompletedAchievements().size() >= Integer.parseInt(getValue().toString());
- + }
- +}
- \ No newline at end of file
- Index: java/net/sf/l2j/gameserver/model/entity/achievement/condition/Condition.java
- ===================================================================
- --- java/net/sf/l2j/gameserver/model/entity/achievement/condition/Condition.java (nonexistent)
- +++ java/net/sf/l2j/gameserver/model/entity/achievement/condition/Condition.java (working copy)
- @@ -0,0 +1,31 @@
- +package net.sf.l2j.gameserver.model.entity.achievement.condition;
- +
- +import net.sf.l2j.gameserver.model.actor.Player;
- +
- +public abstract class Condition
- +{
- + public abstract boolean meetConditionRequirements(Player param);
- +
- + private Object _value;
- + private String _name;
- +
- + public Condition(Object value)
- + {
- + _value = value;
- + }
- +
- + public Object getValue()
- + {
- + return _value;
- + }
- +
- + public void setName(String s)
- + {
- + _name = s;
- + }
- +
- + public String getName()
- + {
- + return _name;
- + }
- +}
- \ No newline at end of file
- Index: java/net/sf/l2j/gameserver/model/entity/achievement/condition/Adena.java
- ===================================================================
- --- java/net/sf/l2j/gameserver/model/entity/achievement/condition/Adena.java (nonexistent)
- +++ java/net/sf/l2j/gameserver/model/entity/achievement/condition/Adena.java (working copy)
- @@ -0,0 +1,21 @@
- +package net.sf.l2j.gameserver.model.entity.achievement.condition;
- +
- +import net.sf.l2j.gameserver.model.actor.Player;
- +
- +public class Adena extends Condition
- +{
- + public Adena(Object value)
- + {
- + super(value);
- + setName("Adena");
- + }
- +
- + @Override
- + public boolean meetConditionRequirements(Player player)
- + {
- + if (getValue() == null)
- + return false;
- +
- + return player.getInventory().getAdena() >= Integer.parseInt(getValue().toString());
- + }
- +}
- \ No newline at end of file
- Index: java/net/sf/l2j/gameserver/model/entity/achievement/condition/Castle.java
- ===================================================================
- --- java/net/sf/l2j/gameserver/model/entity/achievement/condition/Castle.java (nonexistent)
- +++ java/net/sf/l2j/gameserver/model/entity/achievement/condition/Castle.java (working copy)
- @@ -0,0 +1,21 @@
- +package net.sf.l2j.gameserver.model.entity.achievement.condition;
- +
- +import net.sf.l2j.gameserver.model.actor.Player;
- +
- +public class Castle extends Condition
- +{
- + public Castle(Object value)
- + {
- + super(value);
- + setName("Have Castle");
- + }
- +
- + @Override
- + public boolean meetConditionRequirements(Player player)
- + {
- + if (getValue() == null)
- + return false;
- +
- + return player.getClan() != null && (player.isCastleLord(5)) || (player.isCastleLord(3)) || (player.isCastleLord(7));
- + }
- +}
- \ No newline at end of file
- Index: java/net/sf/l2j/gameserver/model/entity/achievement/condition/Chest.java
- ===================================================================
- --- java/net/sf/l2j/gameserver/model/entity/achievement/condition/Chest.java (nonexistent)
- +++ java/net/sf/l2j/gameserver/model/entity/achievement/condition/Chest.java (working copy)
- @@ -0,0 +1,24 @@
- +package net.sf.l2j.gameserver.model.entity.achievement.condition;
- +
- +import net.sf.l2j.gameserver.enums.Paperdoll;
- +import net.sf.l2j.gameserver.model.actor.Player;
- +import net.sf.l2j.gameserver.model.item.instance.ItemInstance;
- +
- +public class Chest extends Condition
- +{
- + public Chest(Object value)
- + {
- + super(value);
- + setName("Chests");
- + }
- +
- + @Override
- + public boolean meetConditionRequirements(Player player)
- + {
- + if (getValue() == null)
- + return false;
- +
- + final ItemInstance armor = player.getInventory().getItemFrom(Paperdoll.CHEST);
- + return armor != null && armor.getEnchantLevel() >= Integer.parseInt(getValue().toString());
- + }
- +}
- \ No newline at end of file
- Index: java/net/sf/l2j/gameserver/model/entity/achievement/condition/ClanLevel.java
- ===================================================================
- --- java/net/sf/l2j/gameserver/model/entity/achievement/condition/ClanLevel.java (nonexistent)
- +++ java/net/sf/l2j/gameserver/model/entity/achievement/condition/ClanLevel.java (working copy)
- @@ -0,0 +1,21 @@
- +package net.sf.l2j.gameserver.model.entity.achievement.condition;
- +
- +import net.sf.l2j.gameserver.model.actor.Player;
- +
- +public class ClanLevel extends Condition
- +{
- + public ClanLevel(Object value)
- + {
- + super(value);
- + setName("Clan Level");
- + }
- +
- + @Override
- + public boolean meetConditionRequirements(Player player)
- + {
- + if (getValue() == null)
- + return false;
- +
- + return player.getClan() != null && player.getClan().getLevel() >= Integer.parseInt(getValue().toString());
- + }
- +}
- \ No newline at end of file
- Index: java/net/sf/l2j/gameserver/model/entity/achievement/condition/CompleteAchievements.java
- ===================================================================
- --- java/net/sf/l2j/gameserver/model/entity/achievement/condition/CompleteAchievements.java (nonexistent)
- +++ java/net/sf/l2j/gameserver/model/entity/achievement/condition/CompleteAchievements.java (working copy)
- @@ -0,0 +1,21 @@
- +package net.sf.l2j.gameserver.model.entity.achievement.condition;
- +
- +import net.sf.l2j.gameserver.model.actor.Player;
- +
- +public class CompleteAchievements extends Condition
- +{
- + public CompleteAchievements(Object value)
- + {
- + super(value);
- + setName("Complete Achievements");
- + }
- +
- + @Override
- + public boolean meetConditionRequirements(Player player)
- + {
- + if (getValue() == null)
- + return false;
- +
- + return player.getCompletedAchievements().size() >= Integer.parseInt(getValue().toString());
- + }
- +}
- \ No newline at end of file
- Index: java/net/sf/l2j/gameserver/model/entity/achievement/condition/Condition.java
- ===================================================================
- --- java/net/sf/l2j/gameserver/model/entity/achievement/condition/Condition.java (nonexistent)
- +++ java/net/sf/l2j/gameserver/model/entity/achievement/condition/Condition.java (working copy)
- @@ -0,0 +1,31 @@
- +package net.sf.l2j.gameserver.model.entity.achievement.condition;
- +
- +import net.sf.l2j.gameserver.model.actor.Player;
- +
- +public abstract class Condition
- +{
- + public abstract boolean meetConditionRequirements(Player param);
- +
- + private Object _value;
- + private String _name;
- +
- + public Condition(Object value)
- + {
- + _value = value;
- + }
- +
- + public Object getValue()
- + {
- + return _value;
- + }
- +
- + public void setName(String s)
- + {
- + _name = s;
- + }
- +
- + public String getName()
- + {
- + return _name;
- + }
- +}
- \ No newline at end of file
- Index: java/net/sf/l2j/gameserver/model/entity/achievement/condition/Crp.java
- ===================================================================
- --- java/net/sf/l2j/gameserver/model/entity/achievement/condition/Crp.java (nonexistent)
- +++ java/net/sf/l2j/gameserver/model/entity/achievement/condition/Crp.java (working copy)
- @@ -0,0 +1,21 @@
- +package net.sf.l2j.gameserver.model.entity.achievement.condition;
- +
- +import net.sf.l2j.gameserver.model.actor.Player;
- +
- +public class Crp extends Condition
- +{
- + public Crp(Object value)
- + {
- + super(value);
- + setName("Clan Reputation");
- + }
- +
- + @Override
- + public boolean meetConditionRequirements(Player player)
- + {
- + if (getValue() == null)
- + return false;
- +
- + return player.getClan() != null && player.getClan().getReputationScore() >= Integer.parseInt(getValue().toString());
- + }
- +}
- \ No newline at end of file
- Index: java/net/sf/l2j/gameserver/model/entity/achievement/condition/Feet.java
- ===================================================================
- --- java/net/sf/l2j/gameserver/model/entity/achievement/condition/Feet.java (nonexistent)
- +++ java/net/sf/l2j/gameserver/model/entity/achievement/condition/Feet.java (working copy)
- @@ -0,0 +1,24 @@
- +package net.sf.l2j.gameserver.model.entity.achievement.condition;
- +
- +import net.sf.l2j.gameserver.enums.Paperdoll;
- +import net.sf.l2j.gameserver.model.actor.Player;
- +import net.sf.l2j.gameserver.model.item.instance.ItemInstance;
- +
- +public class Feet extends Condition
- +{
- + public Feet(Object value)
- + {
- + super(value);
- + setName("Boots");
- + }
- +
- + @Override
- + public boolean meetConditionRequirements(Player player)
- + {
- + if (getValue() == null)
- + return false;
- +
- + final ItemInstance armor = player.getInventory().getItemFrom(Paperdoll.FEET);
- + return armor != null && armor.getEnchantLevel() >= Integer.parseInt(getValue().toString());
- + }
- +}
- \ No newline at end of file
- Index: java/net/sf/l2j/gameserver/model/entity/achievement/condition/Gloves.java
- ===================================================================
- --- java/net/sf/l2j/gameserver/model/entity/achievement/condition/Gloves.java (nonexistent)
- +++ java/net/sf/l2j/gameserver/model/entity/achievement/condition/Gloves.java (working copy)
- @@ -0,0 +1,24 @@
- +package net.sf.l2j.gameserver.model.entity.achievement.condition;
- +
- +import net.sf.l2j.gameserver.enums.Paperdoll;
- +import net.sf.l2j.gameserver.model.actor.Player;
- +import net.sf.l2j.gameserver.model.item.instance.ItemInstance;
- +
- +public class Gloves extends Condition
- +{
- + public Gloves(Object value)
- + {
- + super(value);
- + setName("Gloves");
- + }
- +
- + @Override
- + public boolean meetConditionRequirements(Player player)
- + {
- + if (getValue() == null)
- + return false;
- +
- + final ItemInstance armor = player.getInventory().getItemFrom(Paperdoll.GLOVES);
- + return armor != null && armor.getEnchantLevel() >= Integer.parseInt(getValue().toString());
- + }
- +}
- \ No newline at end of file
- Index: java/net/sf/l2j/gameserver/model/entity/achievement/condition/Head.java
- ===================================================================
- --- java/net/sf/l2j/gameserver/model/entity/achievement/condition/Head.java (nonexistent)
- +++ java/net/sf/l2j/gameserver/model/entity/achievement/condition/Head.java (working copy)
- @@ -0,0 +1,24 @@
- +package net.sf.l2j.gameserver.model.entity.achievement.condition;
- +
- +import net.sf.l2j.gameserver.enums.Paperdoll;
- +import net.sf.l2j.gameserver.model.actor.Player;
- +import net.sf.l2j.gameserver.model.item.instance.ItemInstance;
- +
- +public class Head extends Condition
- +{
- + public Head(Object value)
- + {
- + super(value);
- + setName("Helmets");
- + }
- +
- + @Override
- + public boolean meetConditionRequirements(Player player)
- + {
- + if (getValue() == null)
- + return false;
- +
- + final ItemInstance armor = player.getInventory().getItemFrom(Paperdoll.HEAD);
- + return armor != null && armor.getEnchantLevel() >= Integer.parseInt(getValue().toString());
- + }
- +}
- \ No newline at end of file
- Index: java/net/sf/l2j/gameserver/model/entity/achievement/condition/Hero.java
- ===================================================================
- --- java/net/sf/l2j/gameserver/model/entity/achievement/condition/Hero.java (nonexistent)
- +++ java/net/sf/l2j/gameserver/model/entity/achievement/condition/Hero.java (working copy)
- @@ -0,0 +1,21 @@
- +package net.sf.l2j.gameserver.model.entity.achievement.condition;
- +
- +import net.sf.l2j.gameserver.model.actor.Player;
- +
- +public class Hero extends Condition
- +{
- + public Hero(Object value)
- + {
- + super(value);
- + setName("Hero");
- + }
- +
- + @Override
- + public boolean meetConditionRequirements(Player player)
- + {
- + if (getValue() == null)
- + return false;
- +
- + return player.isHero();
- + }
- +}
- \ No newline at end of file
- Index: java/net/sf/l2j/gameserver/model/entity/achievement/condition/Legs.java
- ===================================================================
- --- java/net/sf/l2j/gameserver/model/entity/achievement/condition/Legs.java (nonexistent)
- +++ java/net/sf/l2j/gameserver/model/entity/achievement/condition/Legs.java (working copy)
- @@ -0,0 +1,24 @@
- +package net.sf.l2j.gameserver.model.entity.achievement.condition;
- +
- +import net.sf.l2j.gameserver.enums.Paperdoll;
- +import net.sf.l2j.gameserver.model.actor.Player;
- +import net.sf.l2j.gameserver.model.item.instance.ItemInstance;
- +
- +public class Legs extends Condition
- +{
- + public Legs(Object value)
- + {
- + super(value);
- + setName("Legs");
- + }
- +
- + @Override
- + public boolean meetConditionRequirements(Player player)
- + {
- + if (getValue() == null)
- + return false;
- +
- + final ItemInstance armor = player.getInventory().getItemFrom(Paperdoll.LEGS);
- + return armor != null && armor.getEnchantLevel() >= Integer.parseInt(getValue().toString());
- + }
- +}
- \ No newline at end of file
- Index: java/net/sf/l2j/gameserver/model/entity/achievement/condition/Level.java
- ===================================================================
- --- java/net/sf/l2j/gameserver/model/entity/achievement/condition/Level.java (nonexistent)
- +++ java/net/sf/l2j/gameserver/model/entity/achievement/condition/Level.java (working copy)
- @@ -0,0 +1,21 @@
- +package net.sf.l2j.gameserver.model.entity.achievement.condition;
- +
- +import net.sf.l2j.gameserver.model.actor.Player;
- +
- +public class Level extends Condition
- +{
- + public Level(Object value)
- + {
- + super(value);
- + setName("Level");
- + }
- +
- + @Override
- + public boolean meetConditionRequirements(Player player)
- + {
- + if (getValue() == null)
- + return false;
- +
- + return player.getStatus().getLevel() >= Integer.parseInt(getValue().toString());
- + }
- +}
- \ No newline at end of file
- Index: java/net/sf/l2j/gameserver/model/entity/achievement/condition/Noble.java
- ===================================================================
- --- java/net/sf/l2j/gameserver/model/entity/achievement/condition/Noble.java (nonexistent)
- +++ java/net/sf/l2j/gameserver/model/entity/achievement/condition/Noble.java (working copy)
- @@ -0,0 +1,21 @@
- +package net.sf.l2j.gameserver.model.entity.achievement.condition;
- +
- +import net.sf.l2j.gameserver.model.actor.Player;
- +
- +public class Noble extends Condition
- +{
- + public Noble(Object value)
- + {
- + super(value);
- + setName("Noble");
- + }
- +
- + @Override
- + public boolean meetConditionRequirements(Player player)
- + {
- + if (getValue() == null)
- + return false;
- +
- + return player.isNoble();
- + }
- +}
- \ No newline at end of file
- Index: java/net/sf/l2j/gameserver/model/entity/achievement/condition/OnlineTime.java
- ===================================================================
- --- java/net/sf/l2j/gameserver/model/entity/achievement/condition/OnlineTime.java (nonexistent)
- +++ java/net/sf/l2j/gameserver/model/entity/achievement/condition/OnlineTime.java (working copy)
- @@ -0,0 +1,21 @@
- +package net.sf.l2j.gameserver.model.entity.achievement.condition;
- +
- +import net.sf.l2j.gameserver.model.actor.Player;
- +
- +public class OnlineTime extends Condition
- +{
- + public OnlineTime(Object value)
- + {
- + super(value);
- + setName("Online Time");
- + }
- +
- + @Override
- + public boolean meetConditionRequirements(Player player)
- + {
- + if (getValue() == null)
- + return false;
- +
- + return player.getOnlineTime() >= Integer.parseInt(getValue().toString());
- + }
- +}
- \ No newline at end of file
- Index: java/net/sf/l2j/gameserver/model/entity/achievement/condition/Pk.java
- ===================================================================
- --- java/net/sf/l2j/gameserver/model/entity/achievement/condition/Pk.java (nonexistent)
- +++ java/net/sf/l2j/gameserver/model/entity/achievement/condition/Pk.java (working copy)
- @@ -0,0 +1,21 @@
- +package net.sf.l2j.gameserver.model.entity.achievement.condition;
- +
- +import net.sf.l2j.gameserver.model.actor.Player;
- +
- +public class Pk extends Condition
- +{
- + public Pk(Object value)
- + {
- + super(value);
- + setName("PK Count");
- + }
- +
- + @Override
- + public boolean meetConditionRequirements(Player player)
- + {
- + if (getValue() == null)
- + return false;
- +
- + return player.getPkKills() >= Integer.parseInt(getValue().toString());
- + }
- +}
- \ No newline at end of file
- Index: java/net/sf/l2j/gameserver/model/entity/achievement/condition/Pvp.java
- ===================================================================
- --- java/net/sf/l2j/gameserver/model/entity/achievement/condition/Pvp.java (nonexistent)
- +++ java/net/sf/l2j/gameserver/model/entity/achievement/condition/Pvp.java (working copy)
- @@ -0,0 +1,21 @@
- +package net.sf.l2j.gameserver.model.entity.achievement.condition;
- +
- +import net.sf.l2j.gameserver.model.actor.Player;
- +
- +public class Pvp extends Condition
- +{
- + public Pvp(Object value)
- + {
- + super(value);
- + setName("PvP Count");
- + }
- +
- + @Override
- + public boolean meetConditionRequirements(Player player)
- + {
- + if (getValue() == null)
- + return false;
- +
- + return player.getPvpKills() >= Integer.parseInt(getValue().toString());
- + }
- +}
- \ No newline at end of file
- Index: java/net/sf/l2j/gameserver/model/entity/achievement/condition/Sub.java
- ===================================================================
- --- java/net/sf/l2j/gameserver/model/entity/achievement/condition/Sub.java (nonexistent)
- +++ java/net/sf/l2j/gameserver/model/entity/achievement/condition/Sub.java (working copy)
- @@ -0,0 +1,21 @@
- +package net.sf.l2j.gameserver.model.entity.achievement.condition;
- +
- +import net.sf.l2j.gameserver.model.actor.Player;
- +
- +public class Sub extends Condition
- +{
- + public Sub(Object value)
- + {
- + super(value);
- + setName("Subclass Count");
- + }
- +
- + @Override
- + public boolean meetConditionRequirements(Player player)
- + {
- + if (getValue() == null)
- + return false;
- +
- + return player.getSubClasses().size() >= Integer.parseInt(getValue().toString());
- + }
- +}
- \ No newline at end of file
- Index: java/net/sf/l2j/gameserver/model/entity/achievement/condition/Vip.java
- ===================================================================
- --- java/net/sf/l2j/gameserver/model/entity/achievement/condition/Vip.java (nonexistent)
- +++ java/net/sf/l2j/gameserver/model/entity/achievement/condition/Vip.java (working copy)
- @@ -0,0 +1,23 @@
- +package net.sf.l2j.gameserver.model.entity.achievement.condition;
- +
- +import net.sf.l2j.gameserver.model.actor.Player;
- +
- +public class Vip extends Condition
- +{
- + public Vip(Object value)
- + {
- + super(value);
- + setName("Vip");
- + }
- +
- + @Override
- + public boolean meetConditionRequirements(Player player)
- + {
- + if (getValue() == null)
- + return false;
- +
- +// return player.calculatePremiumAttributes();
- + player.getPremiumAttribute(1);
- + return false;
- + }
- +}
- \ No newline at end of file
- Index: java/net/sf/l2j/gameserver/model/entity/achievement/condition/WeaponEnchant.java
- ===================================================================
- --- java/net/sf/l2j/gameserver/model/entity/achievement/condition/WeaponEnchant.java (nonexistent)
- +++ java/net/sf/l2j/gameserver/model/entity/achievement/condition/WeaponEnchant.java (working copy)
- @@ -0,0 +1,24 @@
- +package net.sf.l2j.gameserver.model.entity.achievement.condition;
- +
- +import net.sf.l2j.gameserver.enums.Paperdoll;
- +import net.sf.l2j.gameserver.model.actor.Player;
- +import net.sf.l2j.gameserver.model.item.instance.ItemInstance;
- +
- +public class WeaponEnchant extends Condition
- +{
- + public WeaponEnchant(Object value)
- + {
- + super(value);
- + setName("Weapon Enchant");
- + }
- +
- + @Override
- + public boolean meetConditionRequirements(Player player)
- + {
- + if (getValue() == null)
- + return false;
- +
- + final ItemInstance armor = player.getInventory().getItemFrom(Paperdoll.RHAND);
- + return armor != null && armor.getEnchantLevel() >= Integer.parseInt(getValue().toString());
- + }
- +}
- \ No newline at end of file
- Index: java/net/sf/l2j/gameserver/model/entity/achievement/condition/Hero.java
- ===================================================================
- --- java/net/sf/l2j/gameserver/model/entity/achievement/condition/Hero.java (nonexistent)
- +++ java/net/sf/l2j/gameserver/model/entity/achievement/condition/Hero.java (working copy)
- @@ -0,0 +1,21 @@
- +package net.sf.l2j.gameserver.model.entity.achievement.condition;
- +
- +import net.sf.l2j.gameserver.model.actor.Player;
- +
- +public class Hero extends Condition
- +{
- + public Hero(Object value)
- + {
- + super(value);
- + setName("Hero");
- + }
- +
- + @Override
- + public boolean meetConditionRequirements(Player player)
- + {
- + if (getValue() == null)
- + return false;
- +
- + return player.isHero();
- + }
- +}
- \ No newline at end of file
- Index: java/net/sf/l2j/gameserver/model/entity/achievement/condition/Noble.java
- ===================================================================
- --- java/net/sf/l2j/gameserver/model/entity/achievement/condition/Noble.java (nonexistent)
- +++ java/net/sf/l2j/gameserver/model/entity/achievement/condition/Noble.java (working copy)
- @@ -0,0 +1,21 @@
- +package net.sf.l2j.gameserver.model.entity.achievement.condition;
- +
- +import net.sf.l2j.gameserver.model.actor.Player;
- +
- +public class Noble extends Condition
- +{
- + public Noble(Object value)
- + {
- + super(value);
- + setName("Noble");
- + }
- +
- + @Override
- + public boolean meetConditionRequirements(Player player)
- + {
- + if (getValue() == null)
- + return false;
- +
- + return player.isNoble();
- + }
- +}
- \ No newline at end of file
- Index: java/net/sf/l2j/gameserver/model/entity/Achievement.java
- ===================================================================
- --- java/net/sf/l2j/gameserver/model/entity/Achievement.java (nonexistent)
- +++ java/net/sf/l2j/gameserver/model/entity/Achievement.java (working copy)
- @@ -0,0 +1,70 @@
- +package net.sf.l2j.gameserver.model.entity;
- +
- +import java.util.List;
- +
- +import net.sf.l2j.commons.util.StatsSet;
- +
- +import net.sf.l2j.gameserver.model.actor.Player;
- +import net.sf.l2j.gameserver.model.entity.achievement.condition.Condition;
- +import net.sf.l2j.gameserver.model.holder.IntIntHolder;
- +
- +public class Achievement
- +{
- + private final int _id;
- + private final String _name;
- + private final List<IntIntHolder> _reward;
- + private String _description = "No Description!";
- + private final boolean _repeatable;
- +
- + private List<Condition> _conditions;
- +
- + public Achievement(StatsSet set, List<Condition> conditions)
- + {
- + _id = set.getInteger("id", 0);
- + _name = set.getString("name", null);
- + _reward = set.getIntIntHolderList("reward");
- + _description = set.getString("description", null);
- + _repeatable = set.getBool("repeatable", false);
- + _conditions = conditions;
- + }
- +
- + public int getId()
- + {
- + return _id;
- + }
- +
- + public String getName()
- + {
- + return _name;
- + }
- +
- + public List<IntIntHolder> getReward()
- + {
- + return _reward;
- + }
- +
- + public String getDescription()
- + {
- + return _description;
- + }
- +
- + public boolean getRepeatable()
- + {
- + return _repeatable;
- + }
- +
- + public List<Condition> getConditions()
- + {
- + return _conditions;
- + }
- +
- + public boolean achievementRequirements(Player player)
- + {
- + for (Condition c: getConditions())
- + {
- + if (!c.meetConditionRequirements(player))
- + return false;
- + }
- + return true;
- + }
- +}
- \ No newline at end of file
- Index: sql/achievements.sql
- ===================================================================
- --- sql/achievements.sql (nonexistent)
- +++ sql/achievements.sql (working copy)
- @@ -0,0 +1,19 @@
- +CREATE TABLE `achievements` (
- + `owner_id` int(11) NOT NULL default '0',
- + `a1` int(11) default '0',
- + `a2` int(11) default '0',
- + `a3` int(11) default '0',
- + `a4` int(11) default '0',
- + `a5` int(11) default '0',
- + `a6` int(11) default '0',
- + `a7` int(11) default '0',
- + `a8` int(11) default '0',
- + `a9` int(11) default '0',
- + `a10` int(11) default '0',
- + `a11` int(11) default '0',
- + `a12` int(11) default '0',
- + `a13` int(11) default '0',
- + `a14` int(11) default '0',
- + `a15` int(11) default '0',
- + PRIMARY KEY (`owner_id`)
- +)
- \ No newline at end of file
- Index: data/xml/achievements.xml
- ===================================================================
- --- data/xml/achievements.xml (nonexistent)
- +++ data/xml/achievements.xml (working copy)
- @@ -0,0 +1,18 @@
- +<?xml version='1.0' encoding='UTF-8'?>
- +<list>
- + <achievement id="1" name="Champion" description="Player level 80" reward="3470-5" minLevel="80"/>
- + <achievement id="2" name="Hero" description="player hero status" reward="3470-10" mustBeHero="true"/>
- + <achievement id="3" name="Noble" description="Player noblesse status" reward="3470-10" mustBeNoble="true"/>
- + <achievement id="4" name="Weapon" description="Enchant a weapon min + 20" reward="3470-15" minWeaponEnchant="16" />
- + <achievement id="5" name="Pvp's" description="Need 1,000 PvPs" reward="3470-15" minPvPCount="1000"/>
- + <achievement id="6" name="Pk's" description="Need 1,000 Pks" reward="3470-15" minPkCount="1000"/>
- + <achievement id="7" name="Comander" description="Be clan leader of a clan level 8" reward="3470-10" minClanLevel="8" mustBeClanLeader="true"/>
- + <achievement id="8" name="Adena Player" description="Min adena cout" reward="3470-5" minAdenaCount="100"/>
- + <achievement id="9" name="Achievements" description="Complete all personal achievements" reward="3470-40" CompleteAchievements="15"/>
- + <achievement id="10" name="Reputation Clan" description="Reputation in his clan" reward="3470-5" crpAmmount="100"/>
- + <achievement id="11" name="Leader Of Clan" description="Ter Castle" reward="3470-5" lordOfCastle="true"/>
- + <achievement id="12" name="SubClasses" description="Have 1 subclasses" reward="3470-5" minSubclassCount="1"/>
- + <achievement id="13" name="Gamer" description="Be online for 1 days" reward="3470-10" minOnlineTime="1"/>
- + <achievement id="14" name="Armor" description="Complete the enchantment of armor" reward="3470-10" minHeadEnchant="16" minChestEnchant="16" minFeetEnchant="16" minLegsEnchant="16" minGlovestEnchant="16"/>
- + <achievement id="15" name="Vip" description="Become a VIP player" reward="3470-10" mustBeVip="true"/>
- +</list>
- \ No newline at end of file
Advertisement
Add Comment
Please, Sign In to add comment