View difference between Paste ID: LrPDfuMf and SUmfgHN3
SHOW: | | - or go back to the newest paste.
1
### Eclipse Workspace Patch 1.0
2
#P aCis_gameserver
3
Index: java/net/sf/l2j/gameserver/model/actor/Player.java
4
===================================================================
5
--- java/net/sf/l2j/gameserver/model/actor/Player.java	(revision 3)
6
+++ java/net/sf/l2j/gameserver/model/actor/Player.java	(working copy)
7
 import net.sf.l2j.gameserver.data.xml.RecipeData;
8
 import net.sf.l2j.gameserver.data.xml.ScriptData;
9
+import net.sf.l2j.gameserver.data.xml.SpreeKillsData;
10
+import net.sf.l2j.gameserver.data.xml.SpreeKillsData.SpreeKills;
11
 import net.sf.l2j.gameserver.enums.AiEventType;
12
 import net.sf.l2j.gameserver.enums.CabalType;
13
 import net.sf.l2j.gameserver.enums.GaugeColor;
14
 
15
@@ -313,6 +334,7 @@
16
 	private byte _pvpFlag;
17
 	private byte _siegeState;
18
 	private int _curWeightPenalty;
19
+	private int _spreeKills;
20
 	
21
 	private int _lastCompassZone; // the last compass zone update send to the client
22
 	
23
@@ -3724,7 +3760,29 @@
24
 			{
25
 				// Add PvP point to attacker.
26
 				setPvpKills(getPvpKills() + 1);
27
+
28
+				if (Config.ENABLE_SPREEKILLS)
29
+				{
30
+					_spreeKills += 1;
31
+					
32
+					for (SpreeKills kills : SpreeKillsData.getInstance().getSpreeKills())
33
+					{
34
+						if (kills.getKills() == _spreeKills)
35
+						{
36
+							World.announceToOnlinePlayers(getName() + " marcou " + kills.getMsg(), true);
37
+							
38
+							if (!kills.getSound().isEmpty())
39
+								sendPacket(new PlaySound(2, kills.getSound()));
40
+							
41
+							if (kills.getItemId() > 0)
42
+								addItem("Reward", kills.getItemId(), kills.getItemCount(), null, true);
43
+						}
44
+					}
45
+				}
46
+				
47
\ No newline at end of file
48
Index: java/net/sf/l2j/gameserver/data/xml/SpreeKillsData.java
49
===================================================================
50
--- java/net/sf/l2j/gameserver/data/xml/SpreeKillsData.java	(revision 0)
51
+++ java/net/sf/l2j/gameserver/data/xml/SpreeKillsData.java	(working copy)
52
@@ -0,0 +1,106 @@
53
+package net.sf.l2j.gameserver.data.xml;
54
+
55
+import java.nio.file.Path;
56
+import java.util.ArrayList;
57
+import java.util.List;
58
+import net.sf.l2j.commons.data.xml.IXmlReader;
59
+import net.sf.l2j.commons.util.StatsSet;
60
+
61
+import org.w3c.dom.Document;
62
+
63
+/**
64
+ * @author Williams
65
+ *
66
+ */
67
+public class SpreeKillsData implements IXmlReader
68
+{
69
+	private final List<SpreeKills> _spree = new ArrayList<>();
70
+	
71
+	public SpreeKillsData()
72
+	{
73
+		load();
74
+	}
75
+	
76
+	public void reload()
77
+	{
78
+		_spree.clear();
79
+		load();
80
+	}
81
+	
82
+	@Override
83
+	public void load()
84
+	{
85
+		parseFile("./data/xml/spreeKills.xml");
86
+		LOGGER.info("Loaded {} spreeKills data.", _spree.size());
87
+	}
88
+	
89
+	@Override
90
+	public void parseDocument(Document doc, Path path)
91
+	{
92
+		forEach(doc, "list", listNode -> forEach(listNode, "pvp", node ->
93
+		{
94
+			final StatsSet set = parseAttributes(node);
95
+			forEach(node, "SpreeKills", setNode -> set.putAll(parseAttributes(setNode)));
96
+			_spree.add(new SpreeKills(set));
97
+		}));
98
+		
99
+	}
100
+
101
+	public List<SpreeKills> getSpreeKills()
102
+	{
103
+		return _spree;
104
+	}
105
+
106
+	public class SpreeKills
107
+	{
108
+		private final int _kill;
109
+		private final String _msg;
110
+		private final String _sound;
111
+		private final int _itemId;
112
+		private final int _itemCount;
113
+		
114
+		public SpreeKills(StatsSet set)
115
+		{
116
+			_kill = set.getInteger("kills");
117
+			_msg = set.getString("msg");
118
+			_sound = set.getString("sound");
119
+			_itemId = set.getInteger("itemId");
120
+			_itemCount = set.getInteger("itemCount");
121
+		}
122
+
123
+		public int getKills()
124
+		{
125
+			return _kill;
126
+		}
127
+		
128
+		public String getMsg()
129
+		{
130
+			return _msg;
131
+		}
132
+
133
+		public String getSound()
134
+		{
135
+			return _sound;
136
+		}
137
+
138
+		public int getItemId()
139
+		{
140
+			return _itemId;
141
+		}
142
+		
143
+		public int getItemCount()
144
+		{
145
+			return _itemCount;
146
+		}	
147
+	}
148
+	
149
+	public static SpreeKillsData getInstance()
150
+	{
151
+		return SingletonHolder.INSTANCE;
152
+	}
153
+	
154
+	private static class SingletonHolder
155
+	{
156
+		protected static final SpreeKillsData INSTANCE = new SpreeKillsData();
157
+	}
158
+}
159
\ No newline at end of file
160
Index: java/net/sf/l2j/gameserver/GameServer.java
161
===================================================================
162
--- java/net/sf/l2j/gameserver/GameServer.java	(revision 3)
163
+++ java/net/sf/l2j/gameserver/GameServer.java	(working copy)
164
@@ -69,6 +74,7 @@
165
 import net.sf.l2j.gameserver.data.xml.SkillTreeData;
166
 import net.sf.l2j.gameserver.data.xml.SoulCrystalData;
167
 import net.sf.l2j.gameserver.data.xml.SpellbookData;
168
+import net.sf.l2j.gameserver.data.xml.SpreeKillsData;
169
 import net.sf.l2j.gameserver.data.xml.StaticObjectData;
170
 import net.sf.l2j.gameserver.data.xml.SummonItemData;
171
 import net.sf.l2j.gameserver.data.xml.TeleportLocationData;
172
@@ -187,6 +194,11 @@
173
 		PartyMatchWaitingList.getInstance();
174
 		PartyMatchRoomList.getInstance();
175
 		RaidPointManager.getInstance();
176
+		SpreeKillsData.getInstance();
177
+		
178
 		StringUtil.printSection("Community server");
179
 		if (Config.ENABLE_COMMUNITY_BOARD) // Forums has to be loaded before clan data
180
Index: java/net/sf/l2j/gameserver/handler/admincommandhandlers/AdminAdmin.java
181
===================================================================
182
--- java/net/sf/l2j/gameserver/handler/admincommandhandlers/AdminAdmin.java	(revision 3)
183
+++ java/net/sf/l2j/gameserver/handler/admincommandhandlers/AdminAdmin.java	(working copy)
184
@@ -15,6 +15,8 @@
185
 import net.sf.l2j.gameserver.data.xml.AnnouncementData;
186
 import net.sf.l2j.gameserver.data.xml.DoorData;
187
 import net.sf.l2j.gameserver.data.xml.PolymorphData;
188
+import net.sf.l2j.gameserver.data.xml.PvPData;
189
+import net.sf.l2j.gameserver.data.xml.SpreeKillsData;
190
 import net.sf.l2j.gameserver.data.xml.MultisellData;
191
 import net.sf.l2j.gameserver.data.xml.NpcData;
192
 import net.sf.l2j.gameserver.data.xml.TeleportLocationData;
193
@@ -233,6 +235,16 @@
194
 						TeleportLocationData.getInstance().reload();
195
 						activeChar.sendMessage("Teleport locations have been reloaded.");
196
 					}
197
+					else if (type.startsWith("spreekills"))
198
+					{
199
+						SpreeKillsData.getInstance().reload();
200
+						activeChar.sendMessage("SpreeKills have been reloaded.");
201
+					}
202
 					else if (type.startsWith("zone"))
203
 					{
204
 						ZoneManager.getInstance().reload();
205
@@ -242,7 +254,7 @@
206
 					{
207
 						activeChar.sendMessage("Usage : //reload <admin|announcement|config|crest|cw>");
208
 						activeChar.sendMessage("Usage : //reload <door|htm|item|multisell|npc>");
209
-						activeChar.sendMessage("Usage : //reload <npcwalker|skill|teleport|zone>");
210
+						activeChar.sendMessage("Usage : //reload <npcwalker|skill|spreekills|teleport|zone>");
211
 					}
212
 				}
213
 				while (st.hasMoreTokens());
214
@@ -251,7 +263,7 @@
215
 			{
216
 				activeChar.sendMessage("Usage : //reload <admin|announcement|config|crest|cw>");
217
 				activeChar.sendMessage("Usage : //reload <door|htm|item|multisell|npc>");
218
-				activeChar.sendMessage("Usage : //reload <npcwalker|skill|teleport|zone>");
219
+				activeChar.sendMessage("Usage : //reload <npcwalker|skill|spreekills|teleport|zone>");
220
 			}
221
 		}
222
 		return true;
223
### Eclipse Workspace Patch 1.0
224
#P aCis_datapack
225
Index: data/xml/spreeKills.xml
226
===================================================================
227
--- data/xml/spreeKills.xml	(revision 0)
228
+++ data/xml/spreeKills.xml	(working copy)
229
@@ -0,0 +1,21 @@
230
+<?xml version="1.0" encoding="UTF-8"?>
231
+<list>
232
+	<pvp>
233
+		<SpreeKills kills="2" msg="Double Kill" sound="doublekill" itemId="0" itemCount="0"/>
234
+	</pvp>
235
+	<pvp>
236
+		<SpreeKills kills="3" msg="Triple Kill" sound="triplekill" itemId="0" itemCount="0"/>
237
+	</pvp>
238
+	<pvp>
239
+		<SpreeKills kills="5" msg="Mega Kill" sound="megakill" itemId="0" itemCount="0"/>
240
+	</pvp>
241
+	<pvp>
242
+		<SpreeKills kills="8" msg="Ultra Kill" sound="ultrakill" itemId="0" itemCount="0"/>
243
+	</pvp>
244
+	<pvp>
245
+		<SpreeKills kills="10" msg="Monster Kill" sound="monsterkill" itemId="0" itemCount="0"/>
246
+	</pvp>
247
+	<pvp>
248
+		<SpreeKills kills="12" msg="Unstoppable Kill" sound="Unstoppable" itemId="9217" itemCount="1"/>
249
+	</pvp>
250
+</list>
251
\ No newline at end of file