Noticias:

Debes de estar registrado para poder ver el contenido indicado. Registrate o Conectate

Menú Principal

Level Up Reward

Iniciado por Swarlog, Ago 12, 2022, 02:25 AM

Tema anterior - Siguiente tema

Swarlog

BETA H5:

### Eclipse Workspace Patch 1.0
#P L2J_DataPack_BETA
Index: dist/game/data/scripts/custom/LevelUpReward/rewards.xsd
===================================================================
--- dist/game/data/scripts/custom/LevelUpReward/rewards.xsd (revision 0)
+++ dist/game/data/scripts/custom/LevelUpReward/rewards.xsd (working copy)
@@ -0,0 +1,32 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema">
+ <xs:element name="list">
+ <xs:complexType>
+ <xs:sequence minOccurs="1" maxOccurs="1">
+ <xs:element name="rewards" minOccurs="1" maxOccurs="unbounded">
+ <xs:complexType>
+ <xs:sequence minOccurs="1" maxOccurs="unbounded">
+ <xs:element name="item">
+ <xs:complexType>
+ <xs:attribute name="id" type="xs:integer"></xs:attribute>
+ <xs:attribute name="count" type="xs:long"></xs:attribute>
+ </xs:complexType>
+ </xs:element>
+ </xs:sequence>
+ <xs:attribute name="level" use="required">
+ <xs:simpleType>
+ <xs:restriction base="xs:integer">
+ <xs:minInclusive value="0" />
+ <xs:maxInclusive value="85" />
+ </xs:restriction>
+ </xs:simpleType>
+ </xs:attribute>
+ <xs:attribute name="message" use="optional"></xs:attribute>
+ <xs:attribute name="htmlFile" use="optional"></xs:attribute>
+                    </xs:complexType>
+ </xs:element>
+ </xs:sequence>
+ <xs:attribute name="rewardAll" use="required" type="xs:boolean"></xs:attribute>
+ </xs:complexType>
+ </xs:element>
+</xs:schema>
\ No newline at end of file
Index: dist/game/data/scripts/custom/LevelUpReward/LevelUpReward.java
===================================================================
--- dist/game/data/scripts/custom/LevelUpReward/LevelUpReward.java (revision 0)
+++ dist/game/data/scripts/custom/LevelUpReward/LevelUpReward.java (working copy)
@@ -0,0 +1,186 @@
+/*
+ * Copyright (C) 2004-2013 L2J DataPack
+ *
+ * This file is part of L2J DataPack.
+ *
+ * L2J DataPack 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.
+ *
+ * L2J DataPack 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 custom.LevelUpReward;
+
+import java.util.ArrayList;
+import java.util.HashMap;
+import java.util.List;
+import java.util.Map;
+
+import org.w3c.dom.Node;
+
+import com.l2jserver.gameserver.engines.DocumentParser;
+import com.l2jserver.gameserver.model.PlayerVariables;
+import com.l2jserver.gameserver.model.actor.instance.L2PcInstance;
+import com.l2jserver.gameserver.model.holders.ItemHolder;
+import com.l2jserver.gameserver.network.serverpackets.NpcHtmlMessage;
+import com.l2jserver.gameserver.scripting.scriptengine.events.PlayerLevelChangeEvent;
+import com.l2jserver.gameserver.scripting.scriptengine.impl.L2Script;
+
+/**
+ * This is a simple custom mod which allows you to give players some items when they level up.<br>
+ * Note: rewardAll attribute if set to true means if player is level 50 and has not yet recieved reward for level 45 he will recieve it.<br
+ * If rewardAll is set to false and new reward was added for level 45 and he is level 50 he will not recieve it.
+ * @author xban1x
+ */
+public final class LevelUpReward extends L2Script
+{
+ // Misc
+ private static final String HTML_PATH = "data/scripts/custom/LevelUpReward/";
+ protected static boolean rewardAll = false;
+ protected static final Map<Integer, LevelData> REWARDS = new HashMap<>();
+
+ private LevelUpReward(String name, String descr)
+ {
+ super(name, descr);
+ addPlayerLevelNotify(null);
+ new LevelUpRewardData();
+ }
+
+ @Override
+ public void onPlayerLevelChange(PlayerLevelChangeEvent event)
+ {
+ final L2PcInstance player = event.getPlayer();
+ if (player == null)
+ {
+ return;
+ }
+ final int newLevel = event.getNewLevel();
+ for (int oldLevel = (rewardAll) ? 1 : (event.getOldLevel() + 1); oldLevel <= newLevel; oldLevel++)
+ {
+ if (!REWARDS.containsKey(oldLevel))
+ {
+ continue;
+ }
+ final PlayerVariables vars = player.getVariables();
+ if (vars.getBool("LEVEL_UP_REWARD_" + oldLevel, false))
+ {
+ continue;
+ }
+ final LevelData rewards = REWARDS.get(oldLevel);
+ for (ItemHolder item : rewards.getItems())
+ {
+ player.addItem("Quest", item, player, true);
+ }
+ vars.set("LEVEL_UP_REWARD_" + oldLevel, true);
+ if (rewards.getMessage() != "")
+ {
+ player.sendMessage(rewards.getMessage());
+ }
+ if (rewards.getHtmlFile() != "")
+ {
+ final NpcHtmlMessage html = new NpcHtmlMessage(player.getObjectId());
+ html.setFile(player.getHtmlPrefix(), HTML_PATH + rewards.getHtmlFile());
+ player.sendPacket(html);
+ }
+ }
+ }
+
+ protected final class LevelUpRewardData extends DocumentParser
+ {
+ public LevelUpRewardData()
+ {
+ load();
+ }
+
+ @Override
+ public void load()
+ {
+ parseDatapackFile(HTML_PATH + "rewards.xml");
+ }
+
+ @Override
+ protected void parseDocument()
+ {
+ for (Node n = getCurrentDocument().getFirstChild(); n != null; n = n.getNextSibling())
+ {
+ if ("list".equals(n.getNodeName()))
+ {
+ for (Node d = n.getFirstChild(); d != null; d = d.getNextSibling())
+ {
+ if ("rewards".equals(d.getNodeName()))
+ {
+ LevelData data = new LevelData();
+ for (Node e = d.getFirstChild(); e != null; e = e.getNextSibling())
+ {
+ if ("item".equals(e.getNodeName()))
+ {
+ data.addItem(parseInteger(e.getAttributes(), "id"), parseLong(e.getAttributes(), "count"));
+ }
+ }
+ data.setMessage(parseString(d.getAttributes(), "message"));
+ data.setHtmlFile(parseString(d.getAttributes(), "htmlFile"));
+ REWARDS.put(parseInteger(d.getAttributes(), "level"), data);
+ }
+ }
+ rewardAll = parseBoolean(n.getAttributes(), "rewardAll");
+ }
+ }
+ }
+ }
+
+ protected final class LevelData
+ {
+ private String html;
+ private final List<ItemHolder> items;
+ private String message;
+
+ public LevelData()
+ {
+ html = "";
+ items = new ArrayList<>();
+ message = "";
+ }
+
+ public void addItem(int itemId, long itemCount)
+ {
+ items.add(new ItemHolder(itemId, itemCount));
+ }
+
+ public void setHtmlFile(String htmlFile)
+ {
+ html = htmlFile;
+ }
+
+ public void setMessage(String message)
+ {
+ this.message = message;
+ }
+
+ public String getHtmlFile()
+ {
+ return html;
+ }
+
+ public List<ItemHolder> getItems()
+ {
+ return items;
+ }
+
+ public String getMessage()
+ {
+ return message;
+ }
+ }
+
+ public static void main(String[] args)
+ {
+ new LevelUpReward(LevelUpReward.class.getSimpleName(), "custom");
+ }
+}
Index: dist/game/data/scripts.cfg
===================================================================
--- dist/game/data/scripts.cfg (revision 9774)
+++ dist/game/data/scripts.cfg (working copy)
@@ -755,6 +755,7 @@
 quests/Q10505_JewelOfValakas/Q10505_JewelOfValakas.java
 
 # Custom
+custom/LevelUpReward/LevelUpReward.java
 custom/Nottingale/Nottingale.java
 custom/EchoCrystals/EchoCrystals.java
 custom/ShadowWeapons/ShadowWeapons.java
Index: dist/game/data/scripts/custom/LevelUpReward/rewards.xml
===================================================================
--- dist/game/data/scripts/custom/LevelUpReward/rewards.xml (revision 0)
+++ dist/game/data/scripts/custom/LevelUpReward/rewards.xml (working copy)
@@ -0,0 +1,12 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<list rewardAll="true" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="rewards.xsd" >
+ <rewards level="5" htmlFile="Reward_5.html">
+ <item id="1060" count="1" />
+ </rewards>
+ <rewards level="10" message="Congratulations for level up">
+ <item id="57" count="10000" />
+ </rewards>
+ <rewards level="15" message="Congratulations for level up">
+ <item id="57" count="10000" />
+ </rewards>
+</list>
\ No newline at end of file
Index: dist/game/data/scripts/custom/LevelUpReward/Reward_5.html
===================================================================
--- dist/game/data/scripts/custom/LevelUpReward/Reward_5.html (revision 0)
+++ dist/game/data/scripts/custom/LevelUpReward/Reward_5.html (working copy)
@@ -0,0 +1,4 @@
+<html><body>
+Congratulations, you have gained another level!
+Check your inventory you will see some interesting rewards!
+</body></html>
\ No newline at end of file

ESTABLE H5:

### Eclipse Workspace Patch 1.0
#P L2J_DataPack_BETA
Index: dist/game/data/scripts/custom/LevelUpReward/rewards.xsd
===================================================================
--- dist/game/data/scripts/custom/LevelUpReward/rewards.xsd (revision 0)
+++ dist/game/data/scripts/custom/LevelUpReward/rewards.xsd (working copy)
@@ -0,0 +1,32 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema">
+ <xs:element name="list">
+ <xs:complexType>
+ <xs:sequence minOccurs="1" maxOccurs="1">
+ <xs:element name="rewards" minOccurs="1" maxOccurs="unbounded">
+ <xs:complexType>
+ <xs:sequence minOccurs="1" maxOccurs="unbounded">
+ <xs:element name="item">
+ <xs:complexType>
+ <xs:attribute name="id" type="xs:integer"></xs:attribute>
+ <xs:attribute name="count" type="xs:long"></xs:attribute>
+ </xs:complexType>
+ </xs:element>
+ </xs:sequence>
+ <xs:attribute name="level" use="required">
+ <xs:simpleType>
+ <xs:restriction base="xs:integer">
+ <xs:minInclusive value="0" />
+ <xs:maxInclusive value="85" />
+ </xs:restriction>
+ </xs:simpleType>
+ </xs:attribute>
+ <xs:attribute name="message" use="optional"></xs:attribute>
+ <xs:attribute name="htmlFile" use="optional"></xs:attribute>
+                    </xs:complexType>
+ </xs:element>
+ </xs:sequence>
+ <xs:attribute name="rewardAll" use="required" type="xs:boolean"></xs:attribute>
+ </xs:complexType>
+ </xs:element>
+</xs:schema>
\ No newline at end of file
Index: dist/game/data/scripts/custom/LevelUpReward/LevelUpReward.java
===================================================================
--- dist/game/data/scripts/custom/LevelUpReward/LevelUpReward.java (revision 0)
+++ dist/game/data/scripts/custom/LevelUpReward/LevelUpReward.java (working copy)
@@ -0,0 +1,190 @@
+/*
+ * Copyright (C) 2004-2013 L2J DataPack
+ *
+ * This file is part of L2J DataPack.
+ *
+ * L2J DataPack 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.
+ *
+ * L2J DataPack 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 custom.LevelUpReward;
+
+import java.util.ArrayList;
+import java.util.HashMap;
+import java.util.List;
+import java.util.Map;
+
+import org.w3c.dom.Node;
+
+import com.l2jserver.gameserver.engines.DocumentParser;
+import com.l2jserver.gameserver.model.PlayerVariables;
+import com.l2jserver.gameserver.model.actor.instance.L2PcInstance;
+import com.l2jserver.gameserver.model.holders.ItemHolder;
+import com.l2jserver.gameserver.network.serverpackets.NpcHtmlMessage;
+import com.l2jserver.gameserver.scripting.scriptengine.events.PlayerLevelChangeEvent;
+import com.l2jserver.gameserver.scripting.scriptengine.impl.L2Script;
+
+/**
+ * This is a simple custom mod which allows you to give players some items when they level up.<br>
+ * Note: rewardAll attribute if set to true means if player is level 50 and has not yet recieved reward for level 45 he will recieve it.<br
+ * If rewardAll is set to false and new reward was added for level 45 and he is level 50 he will not recieve it.
+ * @author xban1x
+ */
+public final class LevelUpReward extends L2Script
+{
+ // Misc
+ private static final String HTML_PATH = "data/scripts/custom/LevelUpReward/";
+ protected static boolean rewardAll = false;
+ protected static final Map<Integer, LevelData> REWARDS = new HashMap<>();
+
+ private LevelUpReward(String name, String descr)
+ {
+ super(name, descr);
+ addPlayerLevelNotify(null);
+ new LevelUpRewardData();
+ }
+
+ @Override
+ public void onPlayerLevelChange(PlayerLevelChangeEvent event)
+ {
+ final L2PcInstance player = event.getPlayer();
+ if (player == null)
+ {
+ return;
+ }
+ final int newLevel = event.getNewLevel();
+ for (int oldLevel = (rewardAll) ? 1 : (event.getOldLevel() + 1); oldLevel <= newLevel; oldLevel++)
+ {
+ if (!REWARDS.containsKey(oldLevel))
+ {
+ continue;
+ }
+ PlayerVariables vars = player.getScript(PlayerVariables.class);
+ if (vars == null)
+ {
+ vars = player.addScript(new PlayerVariables(player.getObjectId()));
+ }
+ if (vars.getBool("LEVEL_UP_REWARD_" + oldLevel, false))
+ {
+ continue;
+ }
+ final LevelData rewards = REWARDS.get(oldLevel);
+ for (ItemHolder item : rewards.getItems())
+ {
+ player.addItem("Quest", item, player, true);
+ }
+ vars.set("LEVEL_UP_REWARD_" + oldLevel, true);
+ if (rewards.getMessage() != "")
+ {
+ player.sendMessage(rewards.getMessage());
+ }
+ if (rewards.getHtmlFile() != "")
+ {
+ final NpcHtmlMessage html = new NpcHtmlMessage(player.getObjectId());
+ html.setFile(player.getHtmlPrefix(), HTML_PATH + rewards.getHtmlFile());
+ player.sendPacket(html);
+ }
+ }
+ }
+
+ protected final class LevelUpRewardData extends DocumentParser
+ {
+ public LevelUpRewardData()
+ {
+ load();
+ }
+
+ @Override
+ public void load()
+ {
+ parseDatapackFile(HTML_PATH + "rewards.xml");
+ }
+
+ @Override
+ protected void parseDocument()
+ {
+ for (Node n = getCurrentDocument().getFirstChild(); n != null; n = n.getNextSibling())
+ {
+ if ("list".equals(n.getNodeName()))
+ {
+ for (Node d = n.getFirstChild(); d != null; d = d.getNextSibling())
+ {
+ if ("rewards".equals(d.getNodeName()))
+ {
+ LevelData data = new LevelData();
+ for (Node e = d.getFirstChild(); e != null; e = e.getNextSibling())
+ {
+ if ("item".equals(e.getNodeName()))
+ {
+ data.addItem(parseInteger(e.getAttributes(), "id"), parseLong(e.getAttributes(), "count"));
+ }
+ }
+ data.setMessage(parseString(d.getAttributes(), "message"));
+ data.setHtmlFile(parseString(d.getAttributes(), "htmlFile"));
+ REWARDS.put(parseInteger(d.getAttributes(), "level"), data);
+ }
+ }
+ rewardAll = parseBoolean(n.getAttributes(), "rewardAll");
+ }
+ }
+ }
+ }
+
+ protected final class LevelData
+ {
+ private String html;
+ private final List<ItemHolder> items;
+ private String message;
+
+ public LevelData()
+ {
+ html = "";
+ items = new ArrayList<>();
+ message = "";
+ }
+
+ public void addItem(int itemId, long itemCount)
+ {
+ items.add(new ItemHolder(itemId, itemCount));
+ }
+
+ public void setHtmlFile(String htmlFile)
+ {
+ html = htmlFile;
+ }
+
+ public void setMessage(String message)
+ {
+ this.message = message;
+ }
+
+ public String getHtmlFile()
+ {
+ return html;
+ }
+
+ public List<ItemHolder> getItems()
+ {
+ return items;
+ }
+
+ public String getMessage()
+ {
+ return message;
+ }
+ }
+
+ public static void main(String[] args)
+ {
+ new LevelUpReward(LevelUpReward.class.getSimpleName(), "custom");
+ }
+}
Index: dist/game/data/scripts.cfg
===================================================================
--- dist/game/data/scripts.cfg (revision 9774)
+++ dist/game/data/scripts.cfg (working copy)
@@ -755,6 +755,7 @@
 quests/Q10505_JewelOfValakas/Q10505_JewelOfValakas.java
 
 # Custom
+custom/LevelUpReward/LevelUpReward.java
 custom/Nottingale/Nottingale.java
 custom/EchoCrystals/EchoCrystals.java
 custom/ShadowWeapons/ShadowWeapons.java
Index: dist/game/data/scripts/custom/LevelUpReward/rewards.xml
===================================================================
--- dist/game/data/scripts/custom/LevelUpReward/rewards.xml (revision 0)
+++ dist/game/data/scripts/custom/LevelUpReward/rewards.xml (working copy)
@@ -0,0 +1,12 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<list rewardAll="true" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="rewards.xsd" >
+ <rewards level="5" htmlFile="Reward_5.html">
+ <item id="1060" count="1" />
+ </rewards>
+ <rewards level="10" message="Congratulations for level up">
+ <item id="57" count="10000" />
+ </rewards>
+ <rewards level="15" message="Congratulations for level up">
+ <item id="57" count="10000" />
+ </rewards>
+</list>
\ No newline at end of file
Index: dist/game/data/scripts/custom/LevelUpReward/Reward_5.html
===================================================================
--- dist/game/data/scripts/custom/LevelUpReward/Reward_5.html (revision 0)
+++ dist/game/data/scripts/custom/LevelUpReward/Reward_5.html (working copy)
@@ -0,0 +1,4 @@
+<html><body>
+Congratulations, you have gained another level!
+Check your inventory you will see some interesting rewards!
+</body></html>
\ No newline at end of file