Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- diff --git a/aCis/java/net/sf/l2j/gameserver/model/actor/instance/Merchant.java b/aCis/java/net/sf/l2j/gameserver/model/actor/instance/Merchant.java
- index 7a627a1..be5333b 100644
- --- a/aCis/java/net/sf/l2j/gameserver/model/actor/instance/Merchant.java
- +++ b/aCis/java/net/sf/l2j/gameserver/model/actor/instance/Merchant.java
- @@ -6,12 +6,17 @@
- import net.sf.l2j.Config;
- import net.sf.l2j.gameserver.data.cache.HtmCache;
- import net.sf.l2j.gameserver.data.manager.BuyListManager;
- +import net.sf.l2j.gameserver.data.xml.MerchantSayData;
- import net.sf.l2j.gameserver.data.xml.MultisellData;
- +import net.sf.l2j.gameserver.enums.FloodProtector;
- +import net.sf.l2j.gameserver.model.MerchantSay;
- import net.sf.l2j.gameserver.model.actor.Player;
- import net.sf.l2j.gameserver.model.actor.template.NpcTemplate;
- import net.sf.l2j.gameserver.model.buylist.NpcBuyList;
- import net.sf.l2j.gameserver.model.item.instance.ItemInstance;
- import net.sf.l2j.gameserver.network.serverpackets.BuyList;
- +import net.sf.l2j.gameserver.network.serverpackets.CreatureSay;
- +import net.sf.l2j.gameserver.network.serverpackets.MagicSkillUse;
- import net.sf.l2j.gameserver.network.serverpackets.NpcHtmlMessage;
- import net.sf.l2j.gameserver.network.serverpackets.SellList;
- import net.sf.l2j.gameserver.network.serverpackets.ShopPreviewList;
- @@ -32,6 +37,15 @@
- @Override
- public String getHtmlPath(int npcId, int val)
- {
- + final MerchantSay says = MerchantSayData.getInstance().getNpc(getNpcId());
- + if (says == null)
- + return "";
- +
- + broadcastPacket(new CreatureSay(getObjectId(), says.getType(), getName(), says.getText()));
- +
- + if (says.isEffects())
- + broadcastPacket(new MagicSkillUse(this, this, 2024, 1, 5, 0));
- +
- String filename = "";
- if (val == 0)
- @@ -148,6 +162,9 @@
- @Override
- public void showChatWindow(Player player, int val)
- {
- + if (!player.getClient().performAction(FloodProtector.SOCIAL))
- + return;
- +
- // Generic PK check. Send back the HTM if found and cancel current action.
- if (!Config.KARMA_PLAYER_CAN_SHOP && player.getKarma() > 0 && showPkDenyChatWindow(player, "merchant"))
- return;
- diff --git a/aCis/java/net/sf/l2j/gameserver/data/xml/MerchantSayData.java b/aCis/java/net/sf/l2j/gameserver/data/xml/MerchantSayData.java
- new file mode 100644
- index 0000000..8d089c8
- --- /dev/null
- +++ b/aCis/java/net/sf/l2j/gameserver/data/xml/MerchantSayData.java
- @@ -0,0 +1,70 @@
- +package net.sf.l2j.gameserver.data.xml;
- +
- +import java.nio.file.Path;
- +import java.util.HashMap;
- +import java.util.Map;
- +
- +import net.sf.l2j.commons.data.xml.IXmlReader;
- +
- +import net.sf.l2j.gameserver.enums.SayType;
- +import net.sf.l2j.gameserver.model.MerchantSay;
- +import org.w3c.dom.Document;
- +import org.w3c.dom.NamedNodeMap;
- +
- +/**
- + * @author willi
- + *
- + */
- +public class MerchantSayData implements IXmlReader
- +{
- + private final Map<Integer, MerchantSay> _says = new HashMap<>();
- +
- + public MerchantSayData()
- + {
- + load();
- + }
- +
- + public void reload()
- + {
- + _says.clear();
- + load();
- + }
- +
- + @Override
- + public void load()
- + {
- + parseFile("./data/xml/merchantSays.xml");
- + LOGGER.info("Loaded {} merchants says.", _says.size());
- + }
- +
- + @Override
- + public void parseDocument(Document doc, Path path)
- + {
- + forEach(doc, "list", listNode -> forEach(listNode, "settings", enchantNode ->
- + {
- + NamedNodeMap attrs = enchantNode.getAttributes();
- +
- + final int npcId = Integer.valueOf(attrs.getNamedItem("npcId").getNodeValue());
- + final String text = attrs.getNamedItem("text").getNodeValue();
- + final SayType say = Enum.valueOf(SayType.class, attrs.getNamedItem("sayType").getNodeValue());
- + final boolean effect = Boolean.valueOf(attrs.getNamedItem("effect").getNodeValue());
- +
- + _says.put(npcId, new MerchantSay(npcId, text, say, effect));
- + }));
- + }
- +
- + public MerchantSay getNpc(int npcId)
- + {
- + return _says.get(npcId);
- + }
- +
- + public static MerchantSayData getInstance()
- + {
- + return SingletonHolder.INSTANCE;
- + }
- +
- + private static class SingletonHolder
- + {
- + protected static final MerchantSayData INSTANCE = new MerchantSayData();
- + }
- +}
- \ No newline at end of file
- diff --git a/aCis/java/net/sf/l2j/gameserver/model/MerchantSay.java b/aCis/java/net/sf/l2j/gameserver/model/MerchantSay.java
- new file mode 100644
- index 0000000..256d7af
- --- /dev/null
- +++ b/aCis/java/net/sf/l2j/gameserver/model/MerchantSay.java
- @@ -0,0 +1,43 @@
- +package net.sf.l2j.gameserver.model;
- +
- +import net.sf.l2j.gameserver.enums.SayType;
- +
- +/**
- + * @author willi
- + *
- + */
- +public class MerchantSay
- +{
- + private final int _npcId;
- + private final String _text;
- + private final SayType _type;
- + private final boolean _effect;
- +
- + public MerchantSay(int npcId, String text, SayType type, boolean effect)
- + {
- + _npcId = npcId;
- + _text = text;
- + _type = type;
- + _effect = effect;
- + }
- +
- + public int getNpcId()
- + {
- + return _npcId;
- + }
- +
- + public String getText()
- + {
- + return _text;
- + }
- +
- + public SayType getType()
- + {
- + return _type;
- + }
- +
- + public boolean isEffects()
- + {
- + return _effect;
- + }
- +}
- \ No newline at end of file
- diff --git a/aCis/java/net/sf/l2j/gameserver/handler/admincommandhandlers/AdminReload.java b/aCis/java/net/sf/l2j/gameserver/handler/admincommandhandlers/AdminReload.java
- index 2dc7f5c..4234d11 100644
- --- a/aCis/java/net/sf/l2j/gameserver/handler/admincommandhandlers/AdminReload.java
- +++ b/aCis/java/net/sf/l2j/gameserver/handler/admincommandhandlers/AdminReload.java
- @@ -17,6 +17,7 @@
- import net.sf.l2j.gameserver.data.xml.EnchantData;
- import net.sf.l2j.gameserver.data.xml.InstantTeleportData;
- import net.sf.l2j.gameserver.data.xml.ItemData;
- +import net.sf.l2j.gameserver.data.xml.MerchantSayData;
- import net.sf.l2j.gameserver.data.xml.MultisellData;
- import net.sf.l2j.gameserver.data.xml.NpcData;
- import net.sf.l2j.gameserver.data.xml.PolymorphData;
- @@ -105,6 +106,11 @@
- ItemData.getInstance().reload();
- player.sendMessage("Items' templates have been reloaded.");
- }
- + else if (type.equals("merchantsay"))
- + {
- + MerchantSayData.getInstance().reload();
- + player.sendMessage("The merchant say has been reloaded.");
- + }
- else if (type.equals("multisell"))
- {
- MultisellData.getInstance().reload();
- @@ -166,7 +172,7 @@
- public void sendUsage(Player player)
- {
- player.sendMessage("Usage : //reload <admin|announcement|buylist|config>");
- - player.sendMessage("Usage : //reload <crest|cw|drop|door|dress|enchant|htm|item|multisell|npc>");
- + player.sendMessage("Usage : //reload <crest|cw|drop|door|dress|enchant|htm|item|merchantsay|multisell|npc>");
- player.sendMessage("Usage : //reload <npcwalker|poly|script|skill|spree|teleport|zone>");
- }
- diff --git a/aCis/java/net/sf/l2j/gameserver/GameServer.java b/aCis/java/net/sf/l2j/gameserver/GameServer.java
- index 80ff747..3d7df81 100644
- --- a/aCis/java/net/sf/l2j/gameserver/GameServer.java
- +++ b/aCis/java/net/sf/l2j/gameserver/GameServer.java
- @@ -61,12 +61,14 @@
- import net.sf.l2j.gameserver.data.xml.DoorData;
- import net.sf.l2j.gameserver.data.xml.DressMeData;
- import net.sf.l2j.gameserver.data.xml.DropTypeData;
- import net.sf.l2j.gameserver.data.xml.FishData;
- import net.sf.l2j.gameserver.data.xml.HennaData;
- import net.sf.l2j.gameserver.data.xml.HerbDropData;
- import net.sf.l2j.gameserver.data.xml.InstantTeleportData;
- import net.sf.l2j.gameserver.data.xml.ItemData;
- import net.sf.l2j.gameserver.data.xml.MapRegionData;
- +import net.sf.l2j.gameserver.data.xml.MerchantSayData;
- import net.sf.l2j.gameserver.data.xml.MultisellData;
- import net.sf.l2j.gameserver.data.xml.NewbieBuffData;
- import net.sf.l2j.gameserver.data.xml.NpcData;
- @@ -255,6 +258,7 @@
- TeleportData.getInstance();
- RaidBossInfoManager.getInstance();
- PolymorphData.getInstance();
- + MerchantSayData.getInstance();
- if (Config.FIND_COOL_NPCS_EASY)
- {
- diff --git a/aCis/data/xml/merchantSays.xml b/aCis/data/xml/merchantSays.xml
- new file mode 100644
- index 0000000..73f515e
- --- /dev/null
- +++ b/aCis/data/xml/merchantSays.xml
- @@ -0,0 +1,26 @@
- +<?xml version="1.0" encoding="UTF-8"?>
- +<list>
- +<!-- SayType
- +
- + ALL,
- + SHOUT, // !
- + TELL, // "
- + PARTY, // #
- + CLAN, // @
- + GM,
- + PETITION_PLAYER,
- + PETITION_GM,
- + TRADE, // +
- + ALLIANCE, // $
- + ANNOUNCEMENT,
- + BOAT,
- + L2FRIEND,
- + MSNCHAT,
- + PARTYMATCH_ROOM,
- + PARTYROOM_COMMANDER, // (Yellow)
- + PARTYROOM_ALL, // (Red)
- + HERO_VOICE,
- + CRITICAL_ANNOUNCE;
- + -->
- + <settings npcId="30001" text="Hello what do you want ?" sayType="SHOUT" effect="true" />
- +</list>
- \ No newline at end of file
- diff --git a/aCis/data/html/admin/server_menu.htm b/aCis/data/html/admin/server_menu.htm
- index 03c1fa2..e54b9b5 100644
- --- a/aCis/data/html/admin/server_menu.htm
- +++ b/aCis/data/html/admin/server_menu.htm
- @@ -18,7 +18,7 @@
- Reload
- <table width=240>
- <tr>
- - <td><combobox width=160 height=21 var="cb" list=admin;announcement;buylist;config;crest;cw;door;dress;drop;enchant;htm;item;multisell;npc;npcwalker;poly;script;skill;spree;teleport;zone;></td>
- + <td><combobox width=160 height=21 var="cb" list=admin;announcement;buylist;config;crest;cw;door;dress;drop;enchant;htm;item;merchantsay;multisell;npc;npcwalker;poly;script;skill;spree;teleport;zone;></td>
- <td><button value="Reload" action="bypass -h admin_reload $cb" width=65 height=19 back="L2UI_ch3.smallbutton2_over" fore="L2UI_ch3.smallbutton2"></td>
- </tr>
- </table><br>
Add Comment
Please, Sign In to add comment