L2JMobius

Interlude Promo Code

lovepako · 1 · 1066

Offline lovepako

  • Heir
  • **
    • Posts: 30
There are some parts missing but for those who know it is easy to do the configuration part.

Code: (diff) [Select]
diff --git a/L2J_Mobius_CT_0_Interlude/java/org/l2jmobius/gameserver/model/PromoCode.java b/L2J_Mobius_CT_0_Interlude/java/org/l2jmobius/gameserver/model/PromoCode.java
new file mode 100644
index 0000000..751e507
--- /dev/null
+++ b/L2J_Mobius_CT_0_Interlude/java/org/l2jmobius/gameserver/model/PromoCode.java
@@ -0,0 +1,92 @@
+package org.l2jmobius.gameserver.model;
+
+import java.util.List;
+
+import l2.gameserver.model.promoCode.PromoCodeReward;
+
+public class PromoCode
+{
+ private final String _name;
+
+ private final int it;
+
+ private final long bo;
+
+ private final long bp;
+
+ private final List<PromoCodeReward> aU;
+
+ private final boolean ce;
+
+ private final boolean cf;
+
+ private final boolean cg;
+
+ private final int iu;
+
+ private final int iv;
+
+ public PromoCode(String paramString, int paramInt1, long paramLong1, long paramLong2, List<PromoCodeReward> paramList, boolean paramBoolean1, boolean paramBoolean2, boolean paramBoolean3, int paramInt2, int paramInt3)
+ {
+ this._name = paramString;
+ this.it = paramInt1;
+ this.bo = paramLong1;
+ this.bp = paramLong2;
+ this.aU = paramList;
+ this.ce = paramBoolean1;
+ this.cf = paramBoolean2;
+ this.cg = paramBoolean3;
+ this.iu = paramInt2;
+ this.iv = paramInt3;
+ }
+
+ public String getName()
+ {
+ return this._name;
+ }
+
+ public long getFromDate()
+ {
+ return this.bo;
+ }
+
+ public long getToDate()
+ {
+ return this.bp;
+ }
+
+ public List<PromoCodeReward> getRewards()
+ {
+ return this.aU;
+ }
+
+ public int getLimit()
+ {
+ return this.it;
+ }
+
+ public boolean isLimitByUser()
+ {
+ return this.ce;
+ }
+
+ public boolean isLimitByHWID()
+ {
+ return this.cf;
+ }
+
+ public boolean isLimitByIP()
+ {
+ return this.cg;
+ }
+
+ public int getMinLevel()
+ {
+ return this.iu;
+ }
+
+ public int getMaxLevel()
+ {
+ return this.iv;
+ }
+}
diff --git a/L2J_Mobius_CT_0_Interlude/java/org/l2jmobius/gameserver/model/PromoCode/AddLevelPromoCodeReward.java b/L2J_Mobius_CT_0_Interlude/java/org/l2jmobius/gameserver/model/PromoCode/AddLevelPromoCodeReward.java
new file mode 100644
index 0000000..aafa7bf
--- /dev/null
+++ b/L2J_Mobius_CT_0_Interlude/java/org/l2jmobius/gameserver/model/PromoCode/AddLevelPromoCodeReward.java
@@ -0,0 +1,21 @@
+package org.l2jmobius.gameserver.model.PromoCode;
+
+import org.l2jmobius.gameserver.model.actor.Player;
+
+import l2.gameserver.model.base.Experience;
+
+public class AddLevelPromoCodeReward extends PromoCodeReward
+{
+ public int _level;
+
+ public AddLevelPromoCodeReward(Element paramElement)
+ {
+ this._level = Integer.parseInt(paramElement.attributeValue("val"));
+ }
+
+ public void giveReward(Player paramPlayer)
+ {
+ long l = Experience.LEVEL[Math.min(paramPlayer.getLevel() + this._level, Experience.LEVEL.length - 1)] - paramPlayer.getExp();
+ paramPlayer.addExpAndSp(l, 0L);
+ }
+}
diff --git a/L2J_Mobius_CT_0_Interlude/java/org/l2jmobius/gameserver/model/PromoCode/ExpPromoCodeReward.java b/L2J_Mobius_CT_0_Interlude/java/org/l2jmobius/gameserver/model/PromoCode/ExpPromoCodeReward.java
new file mode 100644
index 0000000..7b0e036
--- /dev/null
+++ b/L2J_Mobius_CT_0_Interlude/java/org/l2jmobius/gameserver/model/PromoCode/ExpPromoCodeReward.java
@@ -0,0 +1,18 @@
+package org.l2jmobius.gameserver.model.PromoCode;
+
+import org.l2jmobius.gameserver.model.actor.Player;
+
+public class ExpPromoCodeReward extends PromoCodeReward
+{
+ public long _value;
+
+ public ExpPromoCodeReward(Element paramElement)
+ {
+ this._value = Long.parseLong(paramElement.attributeValue("val"));
+ }
+
+ public void giveReward(Player paramPlayer)
+ {
+ paramPlayer.addExpAndSp(this._value, 0L);
+ }
+}
diff --git a/L2J_Mobius_CT_0_Interlude/java/org/l2jmobius/gameserver/model/PromoCode/ItemPromoCodeReward.java b/L2J_Mobius_CT_0_Interlude/java/org/l2jmobius/gameserver/model/PromoCode/ItemPromoCodeReward.java
new file mode 100644
index 0000000..1e22e4f
--- /dev/null
+++ b/L2J_Mobius_CT_0_Interlude/java/org/l2jmobius/gameserver/model/PromoCode/ItemPromoCodeReward.java
@@ -0,0 +1,51 @@
+package org.l2jmobius.gameserver.model.PromoCode;
+
+import org.l2jmobius.gameserver.model.actor.Player;
+import org.l2jmobius.gameserver.model.holders.ItemHolder;
+import org.l2jmobius.gameserver.model.item.ItemTemplate;
+import org.l2jmobius.gameserver.network.serverpackets.InventoryUpdate;
+
+import l2.gameserver.model.items.ItemInstance;
+import l2.gameserver.network.l2.components.IStaticPacket;
+import l2.gameserver.network.l2.s2c.SystemMessage2;
+
+public class ItemPromoCodeReward extends PromoCodeReward
+{
+ public int _itemId;
+
+ public int _itemCount;
+
+ private int nw;
+
+ public ItemPromoCodeReward(Element paramElement)
+ {
+ this._itemId = Integer.parseInt(paramElement.attributeValue("id"));
+ this._itemCount = Integer.parseInt(paramElement.attributeValue("count", "1"));
+ this.nw = Integer.parseInt(paramElement.attributeValue("enchant", "0"));
+ }
+
+ public void giveReward(Player paramPlayer)
+ {
+ ItemTemplate itemTemplate = ItemHolder.getInstance().getTemplate(this._itemId);
+ if (itemTemplate.isStackable())
+ {
+ paramPlayer.getInventory().addItem(this._itemId, this._itemCount);
+ }
+ else
+ {
+ InventoryUpdate inventoryUpdate = new InventoryUpdate();
+ long l;
+ for (l = 0L; l < this._itemCount; l++)
+ {
+ ItemInstance itemInstance = paramPlayer.getInventory().addItem(this._itemId, 1L);
+ if (this.nw > 0)
+ {
+ itemInstance.setEnchantLevel(this.nw);
+ }
+ inventoryUpdate.addModifiedItem(itemInstance);
+ }
+ paramPlayer.sendPacket((IStaticPacket) inventoryUpdate);
+ }
+ paramPlayer.sendPacket((IStaticPacket) SystemMessage2.obtainItems(this._itemId, this._itemCount, this.nw));
+ }
+}
diff --git a/L2J_Mobius_CT_0_Interlude/java/org/l2jmobius/gameserver/model/PromoCode/PremiumPromoCodeReward.java b/L2J_Mobius_CT_0_Interlude/java/org/l2jmobius/gameserver/model/PromoCode/PremiumPromoCodeReward.java
new file mode 100644
index 0000000..8b14c68
--- /dev/null
+++ b/L2J_Mobius_CT_0_Interlude/java/org/l2jmobius/gameserver/model/PromoCode/PremiumPromoCodeReward.java
@@ -0,0 +1,54 @@
+package org.l2jmobius.gameserver.model.PromoCode;
+
+import com.mysql.cj.log.Log;
+
+import org.l2jmobius.gameserver.model.actor.Player;
+
+import l2.gameserver.dao.AccountBonusDAO;
+import l2.gameserver.network.l2.components.CustomMessage;
+
+public class PremiumPromoCodeReward extends PromoCodeReward
+{
+ public int _premiumId;
+
+ public PremiumPromoCodeReward(Element paramElement)
+ {
+ this._premiumId = Integer.parseInt(paramElement.attributeValue("id"));
+ }
+
+ public void giveReward(Player paramPlayer)
+ {
+ if (!Config.SERVICES_RATE_ENABLED)
+ {
+ paramPlayer.sendMessage("Service Premium Account is Disabled");
+ return;
+ }
+ Config.RateBonusInfo rateBonusInfo = null;
+ for (Config.RateBonusInfo rateBonusInfo1 : Config.SERVICES_RATE_BONUS_INFO)
+ {
+ if (rateBonusInfo1.id == this._premiumId)
+ {
+ rateBonusInfo = rateBonusInfo1;
+ }
+ }
+ if (rateBonusInfo == null)
+ {
+ paramPlayer.sendMessage("Undefined bonus!");
+ return;
+ }
+ if (paramPlayer.hasBonus())
+ {
+ paramPlayer.sendMessage(new CustomMessage("promo.box.already.premium", paramPlayer, new Object[0]));
+ return;
+ }
+ AccountBonusDAO.getInstance().store(paramPlayer.getAccountName(), rateBonusInfo.makeBonus());
+ paramPlayer.stopBonusTask();
+ paramPlayer.startBonusTask();
+ if (paramPlayer.getParty() != null)
+ {
+ paramPlayer.getParty().recalculatePartyData();
+ }
+ paramPlayer.broadcastUserInfo(true, new l2.gameserver.network.l2.s2c.UserInfoType[0]);
+ Log.add("Promo Code Bonus added " + paramPlayer.getName() + "|" + paramPlayer.getObjectId() + "|rate bonus|" + rateBonusInfo.id + "|" + rateBonusInfo.bonusTimeSeconds + "|", "services");
+ }
+}
diff --git a/L2J_Mobius_CT_0_Interlude/java/org/l2jmobius/gameserver/model/PromoCode/PromoCodeReward.java b/L2J_Mobius_CT_0_Interlude/java/org/l2jmobius/gameserver/model/PromoCode/PromoCodeReward.java
new file mode 100644
index 0000000..b912fd2
--- /dev/null
+++ b/L2J_Mobius_CT_0_Interlude/java/org/l2jmobius/gameserver/model/PromoCode/PromoCodeReward.java
@@ -0,0 +1,13 @@
+package org.l2jmobius.gameserver.model.PromoCode;
+
+import org.l2jmobius.gameserver.model.actor.Player;
+
+public abstract class PromoCodeReward
+{
+ public boolean validate()
+ {
+ return true;
+ }
+
+ public abstract void giveReward(Player paramPlayer);
+}
diff --git a/L2J_Mobius_CT_0_Interlude/java/org/l2jmobius/gameserver/model/PromoCode/SetLevelPromoCodeReward.java b/L2J_Mobius_CT_0_Interlude/java/org/l2jmobius/gameserver/model/PromoCode/SetLevelPromoCodeReward.java
new file mode 100644
index 0000000..e518ca3
--- /dev/null
+++ b/L2J_Mobius_CT_0_Interlude/java/org/l2jmobius/gameserver/model/PromoCode/SetLevelPromoCodeReward.java
@@ -0,0 +1,25 @@
+package org.l2jmobius.gameserver.model.PromoCode;
+
+import org.l2jmobius.gameserver.model.actor.Player;
+
+import l2.gameserver.model.base.Experience;
+
+public class SetLevelPromoCodeReward extends PromoCodeReward
+{
+ public int _level;
+
+ public SetLevelPromoCodeReward(Element paramElement)
+ {
+ this._level = Integer.parseInt(paramElement.attributeValue("val"));
+ }
+
+ public void giveReward(Player paramPlayer)
+ {
+ if (paramPlayer.getLevel() == this._level)
+ {
+ return;
+ }
+ long l = Experience.LEVEL[this._level] - paramPlayer.getExp();
+ paramPlayer.addExpAndSp(l, 0L);
+ }
+}
diff --git a/L2J_Mobius_CT_0_Interlude/java/org/l2jmobius/gameserver/model/PromoCode/SpPromoCodeReward.java b/L2J_Mobius_CT_0_Interlude/java/org/l2jmobius/gameserver/model/PromoCode/SpPromoCodeReward.java
new file mode 100644
index 0000000..ef792a8
--- /dev/null
+++ b/L2J_Mobius_CT_0_Interlude/java/org/l2jmobius/gameserver/model/PromoCode/SpPromoCodeReward.java
@@ -0,0 +1,19 @@
+package org.l2jmobius.gameserver.model.PromoCode;
+
+import org.l2jmobius.gameserver.model.actor.Player;
+
+public class SpPromoCodeReward extends PromoCodeReward
+{
+ public int _value;
+
+ public SpPromoCodeReward(Element paramElement)
+ {
+ this._value = Integer.parseInt(paramElement.attributeValue("val"));
+ }
+
+ [member=79]override[/member]
+ public void giveReward(Player paramPlayer)
+ {
+ paramPlayer.addExpAndSp(0L, this._value);
+ }
+}
diff --git a/L2J_Mobius_CT_0_Interlude/java/org/l2jmobius/gameserver/model/actor/instance/Prophet.java b/L2J_Mobius_CT_0_Interlude/java/org/l2jmobius/gameserver/model/actor/instance/Prophet.java
new file mode 100644
index 0000000..567638e
--- /dev/null
+++ b/L2J_Mobius_CT_0_Interlude/java/org/l2jmobius/gameserver/model/actor/instance/Prophet.java
@@ -0,0 +1,90 @@
+/**This file is part of the L2J Mobius project.**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 org.l2jmobius.gameserver.model.actor.instance;
+
+import java.util.StringTokenizer;
+
+import org.l2jmobius.gameserver.data.xml.SkillData;
+import org.l2jmobius.gameserver.model.actor.Npc;
+import org.l2jmobius.gameserver.model.actor.Player;
+import org.l2jmobius.gameserver.model.actor.templates.NpcTemplate;
+import org.l2jmobius.gameserver.network.serverpackets.MagicSkillUse;
+import org.l2jmobius.gameserver.network.serverpackets.NpcHtmlMessage;
+
+/**
+ * @author LucasDesigner
+ */
+public final class Prophet extends Npc
+{
+ public Prophet(NpcTemplate template)
+ {
+ super(template);
+ }
+
+ [member=79]override[/member]
+ public void onBypassFeedback(Player player, String command)
+ {
+ StringTokenizer st = new StringTokenizer(command, " ");
+ String actualCommand = st.nextToken();
+
+ int buffid = 0, bufflevel = 1;
+ if (st.countTokens() == 2)
+ {
+ buffid = Integer.valueOf(st.nextToken());
+ bufflevel = Integer.valueOf(st.nextToken());
+ }
+ else if (st.countTokens() == 1)
+ {
+ buffid = Integer.valueOf(st.nextToken());
+ }
+
+ if (actualCommand.equalsIgnoreCase("getbuff"))
+ {
+ SkillData.getInstance().getSkill(buffid, bufflevel).applyEffects(this, player);
+ broadcastPacket(new MagicSkillUse(this, player, buffid, bufflevel, 500, 0));
+ final NpcHtmlMessage html = new NpcHtmlMessage(getObjectId());
+ html.setFile(player, getHtmlPath(getId(), 0));
+ html.replace("%objectId%", getObjectId());
+ player.sendPacket(html);
+ }
+ else if (actualCommand.equalsIgnoreCase("restore"))
+ {
+ player.setCurrentHpMp(player.getMaxHp(), player.getMaxMp());
+ player.setCurrentCp(player.getMaxCp());
+
+ broadcastPacket(new MagicSkillUse(this, player, 1258, 4, 500, 0));
+ final NpcHtmlMessage html = new NpcHtmlMessage(getObjectId());
+ html.setFile(player, getHtmlPath(getId(), 0));
+ html.replace("%objectId%", getObjectId());
+ player.sendPacket(html);
+ }
+ else if (actualCommand.equalsIgnoreCase("cancel"))
+ {
+ player.stopAllEffects();
+ broadcastPacket(new MagicSkillUse(this, player, 1056, 12, 500, 0));
+ final NpcHtmlMessage html = new NpcHtmlMessage(getObjectId());
+ html.setFile(player, getHtmlPath(getId(), 0));
+ html.replace("%objectId%", getObjectId());
+ player.sendPacket(html);
+ }
+ else
+ {
+ super.onBypassFeedback(player, command);
+ }
+ }
+
+ [member=79]override[/member]
+ public String getHtmlPath(int npcId, int value)
+ {
+ String filename = "";
+ if (value == 0)
+ {
+ filename = Integer.toString(npcId);
+ }
+ else
+ {
+ filename = npcId + "-" + value;
+ }
+ return "data/html/mods/Buffer/" + filename + ".htm";
+ }
+}
\ No newline at end of file
diff --git a/L2J_Mobius_CT_0_Interlude/java/org/l2jmobius/gameserver/model/actor/instance/SongDance.java b/L2J_Mobius_CT_0_Interlude/java/org/l2jmobius/gameserver/model/actor/instance/SongDance.java
new file mode 100644
index 0000000..c09a3a7
--- /dev/null
+++ b/L2J_Mobius_CT_0_Interlude/java/org/l2jmobius/gameserver/model/actor/instance/SongDance.java
@@ -0,0 +1,90 @@
+/**This file is part of the L2J Mobius project.**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 org.l2jmobius.gameserver.model.actor.instance;
+
+import java.util.StringTokenizer;
+
+import org.l2jmobius.gameserver.data.xml.SkillData;
+import org.l2jmobius.gameserver.model.actor.Npc;
+import org.l2jmobius.gameserver.model.actor.Player;
+import org.l2jmobius.gameserver.model.actor.templates.NpcTemplate;
+import org.l2jmobius.gameserver.network.serverpackets.MagicSkillUse;
+import org.l2jmobius.gameserver.network.serverpackets.NpcHtmlMessage;
+
+/**
+ * @author LucasDesigner
+ */
+public final class SongDance extends Npc
+{
+ public SongDance(NpcTemplate template)
+ {
+ super(template);
+ }
+
+ [member=79]override[/member]
+ public void onBypassFeedback(Player player, String command)
+ {
+ StringTokenizer st = new StringTokenizer(command, " ");
+ String actualCommand = st.nextToken();
+
+ int buffid = 0, bufflevel = 1;
+ if (st.countTokens() == 2)
+ {
+ buffid = Integer.valueOf(st.nextToken());
+ bufflevel = Integer.valueOf(st.nextToken());
+ }
+ else if (st.countTokens() == 1)
+ {
+ buffid = Integer.valueOf(st.nextToken());
+ }
+
+ if (actualCommand.equalsIgnoreCase("getbuff"))
+ {
+ SkillData.getInstance().getSkill(buffid, bufflevel).applyEffects(this, player);
+ broadcastPacket(new MagicSkillUse(this, player, buffid, bufflevel, 500, 0));
+ final NpcHtmlMessage html = new NpcHtmlMessage(getObjectId());
+ html.setFile(player, getHtmlPath(getId(), 0));
+ html.replace("%objectId%", getObjectId());
+ player.sendPacket(html);
+ }
+ else if (actualCommand.equalsIgnoreCase("restore"))
+ {
+ player.setCurrentHpMp(player.getMaxHp(), player.getMaxMp());
+ player.setCurrentCp(player.getMaxCp());
+
+ broadcastPacket(new MagicSkillUse(this, player, 1258, 4, 500, 0));
+ final NpcHtmlMessage html = new NpcHtmlMessage(getObjectId());
+ html.setFile(player, getHtmlPath(getId(), 0));
+ html.replace("%objectId%", getObjectId());
+ player.sendPacket(html);
+ }
+ else if (actualCommand.equalsIgnoreCase("cancel"))
+ {
+ player.stopAllEffects();
+ broadcastPacket(new MagicSkillUse(this, player, 1056, 12, 500, 0));
+ final NpcHtmlMessage html = new NpcHtmlMessage(getObjectId());
+ html.setFile(player, getHtmlPath(getId(), 0));
+ html.replace("%objectId%", getObjectId());
+ player.sendPacket(html);
+ }
+ else
+ {
+ super.onBypassFeedback(player, command);
+ }
+ }
+
+ [member=79]override[/member]
+ public String getHtmlPath(int npcId, int value)
+ {
+ String filename = "";
+ if (value == 0)
+ {
+ filename = Integer.toString(npcId);
+ }
+ else
+ {
+ filename = npcId + "-" + value;
+ }
+ return "data/html/mods/Buffer/" + filename + ".htm";
+ }
+}
\ No newline at end of file

promocodes.xml


Code: [Select]
<?xml version='1.0' encoding='utf-8'?>
<!DOCTYPE list SYSTEM "promocodes.dtd">
<list>
<code name="HELLO" limitByUser="True" limit="100">
<date from="12:00 12.12.2012" to="12:00 13.13.2026" /> <!-- format HH:mm dd.MM.yyyy -->
<item id="57" count="212" /> <!-- Min: 1 Max: 2147483647 -->
<exp val="11" /> <!-- Min: 1 Max: 2147483647 -->
<sp val="111" /> <!-- Min: 1 Max: 2147483647 -->
<addLevel val="76" /> <!-- Min: 1 Max: 80 -->
<!-- <premium id="1" /> -->
</code>

</list>