Advertisement
Sarada-L2

Party Farm Acis 394+ Sem HWID!!

Mar 2nd, 2021
1,191
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 29.68 KB | None | 0 0
  1. diff --git a/config/CustomMods/Events/PartyFarmEvent.ini b/config/CustomMods/Events/PartyFarmEvent.ini
  2. new file mode 100644
  3. index 0000000..4d65252
  4. --- /dev/null
  5. +++ b/config/CustomMods/Events/PartyFarmEvent.ini
  6. @@ -0,0 +1,86 @@
  7. +#=====================================================
  8. +# PARTY FARM EVENT
  9. +#=====================================================
  10. +
  11. +MonsterLoc = -50324, 137542, -2871;\
  12. +-49694, 138843, -2919;\
  13. +-48580, 139801, -2930;\
  14. +-51061, 139072, -2925;\
  15. +-52648, 139600, -2937;\
  16. +-52084, 137211, -2884;\
  17. +-51885, 140437, -2859;\
  18. +-51313, 141965, -2878;\
  19. +-53470, 141986, -2858;\
  20. +-54383, 139210, -2906;\
  21. +-55321, 137909, -2911;\
  22. +-57082, 138361, -2714;\
  23. +-57845, 140766, -2649;\
  24. +-56629, 143361, -2566;\
  25. +-59379, 139309, -2466;\
  26. +-60082, 137623, -2327;\
  27. +-58639, 135770, -2457;\
  28. +-56714, 135084, -2433;\
  29. +-56715, 136673, -2789;\
  30. +-56264, 141358, -2628;\
  31. +-54986, 142629, -2839;\
  32. +-53362, 143202, -2892;\
  33. +-52410, 141770, -2925;\
  34. +-50588, 143081, -2895;\
  35. +-51088, 144450, -2893;\
  36. +-50856, 145485, -2812;\
  37. +-52172, 145466, -2820;\
  38. +-54007, 145158, -2875;\
  39. +-54325, 146502, -2877;\
  40. +-52890, 144172, -2908;\
  41. +-54113, 137140, -2752;\
  42. +-51976, 138979, -2952;\
  43. +-53666, 139817, -2857;\
  44. +-52753, 137986, -2921;\
  45. +-50593, 140423, -2855;\
  46. +-51996, 143661, -2892;
  47. +
  48. +#=========================================================
  49. +# PARTY DROP REWARD
  50. +#=========================================================
  51. +# Party Zone Monster ID
  52. +PartyEventMonster = 50056
  53. +
  54. +# Format: itemId,min,max,chance(%);itemId,min,max,(chance(%)(optional));.
  55. +# Normal hour reward
  56. +PartyZoneReward = 6392,600,900;6393,1,1,30;6577,1,2,70;6578,1,2,70;
  57. +#=========================================================
  58. +# Tempo em Segundos para o MOB aparecer apos ser morto
  59. +# Default: 300 (5 minutos)
  60. +MonsterDelay = 10
  61. +
  62. +# Id do Mob
  63. +MonsterId = 50056
  64. +
  65. +# Remover protesao renewal por ip?
  66. +# Retail = False (Manter Protesao)
  67. +RenewalDualBoxPTFarm = False
  68. +
  69. +#Ativar o Party Farm Event por tempo igual TvT
  70. +PartyFarmEventEnabled = True
  71. +
  72. +# Iniciar party farm ao ligar o server
  73. +StartSpawnPartyFarm = False
  74. +
  75. +#=========================================================
  76. +# CONFIG START TIME EVENT
  77. +#=========================================================
  78. +# PartyFarmEventEnabled=11:00,15:00,19:00,23:00,
  79. +#
  80. +# PartyFarm comando spawn manual //ptfarm ou //ptfarm para terminar o evento.
  81. +#
  82. +EventBestFarmTime = 50
  83. +BestFarmStartTime = 00:45,00:47,21:46,
  84. +
  85. +# Show screen Party message on character login
  86. +# Default: False
  87. +ScreenPartyMessageEnable = True
  88. +
  89. +# Screen Party Farm message text
  90. +ScreenPartyFarmMessageText = Party Farm is active
  91. +# Show screen PartyFarm message for x seconds.
  92. +ScreenPartyFarmMessageTime = 6
  93. diff --git a/java/Dev/Events/PartyFarm/InitialPartyFarm.java b/java/Dev/Events/PartyFarm/InitialPartyFarm.java
  94. new file mode 100644
  95. index 0000000..76649a4
  96. --- /dev/null
  97. +++ b/java/Dev/Events/PartyFarm/InitialPartyFarm.java
  98. @@ -0,0 +1,98 @@
  99. +package Dev.Events.PartyFarm;
  100. +
  101. +import java.text.SimpleDateFormat;
  102. +import java.util.Calendar;
  103. +import java.util.logging.Logger;
  104. +
  105. +import net.sf.l2j.commons.pool.ThreadPool;
  106. +
  107. +import net.sf.l2j.Config;
  108. +
  109. +/**
  110. + *
  111. + * @author Sarada
  112. + *
  113. + */
  114. +
  115. +public class InitialPartyFarm
  116. +{
  117. + private static InitialPartyFarm _instance = null;
  118. + protected static final Logger _log = Logger.getLogger(InitialPartyFarm.class.getName());
  119. + private Calendar NextEvent;
  120. + private final SimpleDateFormat format = new SimpleDateFormat("HH:mm");
  121. +
  122. + public static InitialPartyFarm getInstance()
  123. + {
  124. + if (_instance == null)
  125. + {
  126. + _instance = new InitialPartyFarm();
  127. + }
  128. + return _instance;
  129. + }
  130. +
  131. + public String getRestartNextTime()
  132. + {
  133. + if (NextEvent.getTime() != null)
  134. + {
  135. + return format.format(NextEvent.getTime());
  136. + }
  137. + return "Erro";
  138. + }
  139. +
  140. + public void StartCalculationOfNextEventTime()
  141. + {
  142. + try
  143. + {
  144. + Calendar currentTime = Calendar.getInstance();
  145. + Calendar testStartTime = null;
  146. + long flush2 = 0L;
  147. + long timeL = 0L;
  148. + int count = 0;
  149. + for (String timeOfDay : Config.EVENT_BEST_FARM_INTERVAL_BY_TIME_OF_DAY)
  150. + {
  151. + testStartTime = Calendar.getInstance();
  152. + testStartTime.setLenient(true);
  153. + String[] splitTimeOfDay = timeOfDay.split(":");
  154. + testStartTime.set(11, Integer.parseInt(splitTimeOfDay[0]));
  155. + testStartTime.set(12, Integer.parseInt(splitTimeOfDay[1]));
  156. + testStartTime.set(13, 0);
  157. + if (testStartTime.getTimeInMillis() < currentTime.getTimeInMillis())
  158. + {
  159. + testStartTime.add(5, 1);
  160. + }
  161. + timeL = testStartTime.getTimeInMillis() - currentTime.getTimeInMillis();
  162. + if (count == 0)
  163. + {
  164. + flush2 = timeL;
  165. + NextEvent = testStartTime;
  166. + }
  167. + if (timeL < flush2)
  168. + {
  169. + flush2 = timeL;
  170. + NextEvent = testStartTime;
  171. + }
  172. + count++;
  173. + }
  174. + _log.info("[Party Farm]: Proximo Evento: " + NextEvent.getTime().toString());
  175. + ThreadPool.schedule(new StartEventTask(), flush2);
  176. + }
  177. + catch (Exception e)
  178. + {
  179. + System.out.println("[Party Farm]: Algum erro nas config foi encontrado!");
  180. + }
  181. + }
  182. +
  183. + class StartEventTask implements Runnable
  184. + {
  185. + StartEventTask()
  186. + {
  187. + }
  188. +
  189. + @Override
  190. + public void run()
  191. + {
  192. + InitialPartyFarm._log.info("[Party Farm]: Event Started.");
  193. + PartyFarm.bossSpawnMonster();
  194. + }
  195. + }
  196. +}
  197. diff --git a/java/Dev/Events/PartyFarm/PartyFarm.java b/java/Dev/Events/PartyFarm/PartyFarm.java
  198. new file mode 100644
  199. index 0000000..f77aa29
  200. --- /dev/null
  201. +++ b/java/Dev/Events/PartyFarm/PartyFarm.java
  202. @@ -0,0 +1,185 @@
  203. +package Dev.Events.PartyFarm;
  204. +
  205. +import java.util.ArrayList;
  206. +
  207. +import net.sf.l2j.Config;
  208. +import net.sf.l2j.gameserver.data.sql.SpawnTable;
  209. +import net.sf.l2j.gameserver.data.xml.NpcData;
  210. +import net.sf.l2j.gameserver.handler.admincommandhandlers.AdminCustom;
  211. +import net.sf.l2j.gameserver.model.World;
  212. +import net.sf.l2j.gameserver.model.actor.template.NpcTemplate;
  213. +import net.sf.l2j.gameserver.model.spawn.Spawn;
  214. +import net.sf.l2j.gameserver.network.serverpackets.MagicSkillUse;
  215. +
  216. +/**
  217. + *
  218. + * @author Sarada
  219. + *
  220. + */
  221. +
  222. +
  223. +public class PartyFarm
  224. +{
  225. + public static Spawn _monster;
  226. + public static int _bossHeading = 0;
  227. + public static String _eventName = "";
  228. + public static boolean _started = false;
  229. + public static boolean _aborted = false;
  230. + protected static boolean _finish = false;
  231. + static PartyFarm _instance;
  232. +
  233. + public static void bossSpawnMonster()
  234. + {
  235. + spawnMonsters();
  236. +
  237. + World.gameAnnounceToOnlinePlayers("Teleport Now!");
  238. + World.gameAnnounceToOnlinePlayers("[Party Farm]: Duration: " + Config.EVENT_BEST_FARM_TIME + " minute(s)!");
  239. + _aborted = false;
  240. + _started = true;
  241. +
  242. + waiter(Config.EVENT_BEST_FARM_TIME * 60 * 1000);
  243. + if (!_aborted)
  244. + {
  245. + Finish_Event();
  246. + }
  247. + }
  248. +
  249. + public static void Finish_Event()
  250. + {
  251. + unSpawnMonsters();
  252. +
  253. + _started = false;
  254. + _finish = true;
  255. +
  256. + World.gameAnnounceToOnlinePlayers("[Party Farm]: Finished!");
  257. + if (!AdminCustom._bestfarm_manual)
  258. + {
  259. + InitialPartyFarm.getInstance().StartCalculationOfNextEventTime();
  260. + }
  261. + else
  262. + {
  263. + AdminCustom._bestfarm_manual = false;
  264. + }
  265. + }
  266. +
  267. + public static void spawnMonsters()
  268. + {
  269. + for (int i = 0; i < Config.MONSTER_LOCS_COUNT; i++)
  270. + {
  271. + int[] coord = Config.MONSTER_LOCS[i];
  272. + monsters.add(spawnNPC(coord[0], coord[1], coord[2], Config.monsterId));
  273. + }
  274. + }
  275. +
  276. + public static boolean is_started()
  277. + {
  278. + return _started;
  279. + }
  280. +
  281. + public static boolean is_finish()
  282. + {
  283. + return _finish;
  284. + }
  285. +
  286. + protected static Spawn spawnNPC(int xPos, int yPos, int zPos, int npcId)
  287. + {
  288. + NpcTemplate template = NpcData.getInstance().getTemplate(npcId);
  289. + try
  290. + {
  291. + Spawn spawn = new Spawn(template);
  292. + spawn.setLoc(xPos, yPos, zPos, 0);
  293. + spawn.setRespawnDelay(Config.PARTY_FARM_MONSTER_DALAY);
  294. +
  295. + SpawnTable.getInstance().addSpawn(spawn, false);
  296. +
  297. + spawn.setRespawnState(true);
  298. + spawn.doSpawn(false);
  299. + spawn.getNpc().isAggressive();
  300. + spawn.getNpc().decayMe();
  301. + spawn.getNpc().spawnMe(spawn.getNpc().getX(), spawn.getNpc().getY(), spawn.getNpc().getZ());
  302. + spawn.getNpc().broadcastPacket(new MagicSkillUse(spawn.getNpc(), spawn.getNpc(), 1034, 1, 1, 1));
  303. + return spawn;
  304. + }
  305. + catch (Exception e)
  306. + {
  307. + }
  308. + return null;
  309. + }
  310. +
  311. + protected static ArrayList<Spawn> monsters = new ArrayList<>();
  312. +
  313. + protected static void unSpawnMonsters()
  314. + {
  315. + for (Spawn s : monsters)
  316. + {
  317. + if (s == null)
  318. + {
  319. + monsters.remove(s);
  320. + return;
  321. + }
  322. +
  323. + s.getNpc().deleteMe();
  324. + s.setRespawnState(false);
  325. + SpawnTable.getInstance().deleteSpawn(s, true);
  326. +
  327. + }
  328. + }
  329. +
  330. + protected static void waiter(long interval)
  331. + {
  332. + long startWaiterTime = System.currentTimeMillis();
  333. + int seconds = (int) (interval / 1000L);
  334. + while ((startWaiterTime + interval > System.currentTimeMillis()) && (!_aborted))
  335. + {
  336. + seconds--;
  337. + switch (seconds)
  338. + {
  339. + case 3600:
  340. + if (_started)
  341. + {
  342. +
  343. + World.gameAnnounceToOnlinePlayers("[Party Farm]: " + seconds / 60 / 60 + " hour(s) till event finish!");
  344. + }
  345. + break;
  346. + case 60:
  347. + case 120:
  348. + case 180:
  349. + case 240:
  350. + case 300:
  351. + case 600:
  352. + case 900:
  353. + case 1800:
  354. + if (_started)
  355. + {
  356. +
  357. + World.gameAnnounceToOnlinePlayers("[Party Farm]: " + seconds / 60 + " minute(s) till event finish!");
  358. + }
  359. + break;
  360. + case 1:
  361. + case 2:
  362. + case 3:
  363. + case 10:
  364. + case 15:
  365. + case 30:
  366. + if (_started)
  367. + {
  368. + World.gameAnnounceToOnlinePlayers("[Party Farm]: " + seconds + " second(s) till event finish!");
  369. + }
  370. + break;
  371. + }
  372. + long startOneSecondWaiterStartTime = System.currentTimeMillis();
  373. + while (startOneSecondWaiterStartTime + 1000L > System.currentTimeMillis())
  374. + {
  375. + try
  376. + {
  377. + Thread.sleep(1L);
  378. + }
  379. + catch (InterruptedException ie)
  380. + {
  381. + ie.printStackTrace();
  382. + }
  383. + }
  384. + }
  385. + }
  386. +
  387. +}
  388. diff --git a/java/net/sf/l2j/Config.java b/java/net/sf/l2j/Config.java
  389. index 95c380e..2bf3a7b 100644
  390. --- a/java/net/sf/l2j/Config.java
  391. +++ b/java/net/sf/l2j/Config.java
  392. @@ -15,6 +15,7 @@
  393. import net.sf.l2j.commons.logging.CLogger;
  394. import net.sf.l2j.commons.math.MathUtil;
  395.  
  396. +import net.sf.l2j.gameserver.data.manager.RewardHolder;
  397. import net.sf.l2j.gameserver.enums.GeoType;
  398. import net.sf.l2j.gameserver.model.holder.IntIntHolder;
  399.  
  400. @@ -45,6 +46,7 @@
  401. public static final String PROTECTION_MODS = "./config/CustomMods/ProtectionMods.ini";
  402. public static final String DONATEMODS = "./config/CustomMods/Donate.ini";
  403. public static final String PCBANGEVENT = "./config/CustomMods/Events/PcBangEvent.ini";
  404. + public static final String PARTYFARMEVENT = "./config/CustomMods/Events/PartyFarmEvent.ini";
  405. // --------------------------------------------------
  406. // Clans settings
  407. // --------------------------------------------------
  408. @@ -96,6 +98,21 @@
  409. public static boolean ALLOW_DUALBOX_OLY;
  410. public static boolean ALT_GAME_SUBCLASS_EVERYWHERE;
  411. public static boolean PLAYERS_CAN_HEAL_RB;
  412. + public static int EVENT_BEST_FARM_TIME;
  413. + public static String[] EVENT_BEST_FARM_INTERVAL_BY_TIME_OF_DAY;
  414. + public static int PARTY_FARM_MONSTER_DALAY;
  415. + public static String PARTY_FARM_MESSAGE_TEXT;
  416. + public static int PARTY_FARM_MESSAGE_TIME;
  417. + public static int monsterId;
  418. + public static int MONSTER_LOCS_COUNT;
  419. + public static int[][] MONSTER_LOCS;
  420. + public static boolean PARTY_MESSAGE_ENABLED;
  421. + public static boolean ENABLE_DUALBOX_PARTYFARM;
  422. + public static boolean PARTY_FARM_BY_TIME_OF_DAY;
  423. + public static boolean START_PARTY;
  424. + public static String PART_ZONE_MONSTERS_EVENT;
  425. + public static List<Integer> PART_ZONE_MONSTERS_EVENT_ID;
  426. + public static List<RewardHolder> PARTY_ZONE_REWARDS = new ArrayList<>();
  427. /** Raid info*/
  428. public static int RAID_BOSS_INFO_PAGE_LIMIT;
  429. public static int RAID_BOSS_DROP_PAGE_LIMIT;
  430. @@ -1226,6 +1243,61 @@
  431.  
  432. }
  433.  
  434. + private static final void loadPTFarmConfig()
  435. + {
  436. + final ExProperties BestFarm = initProperties(PARTYFARMEVENT);
  437. + PART_ZONE_MONSTERS_EVENT = BestFarm.getProperty("PartyEventMonster");
  438. + PART_ZONE_MONSTERS_EVENT_ID = new ArrayList<>();
  439. + for (String id : PART_ZONE_MONSTERS_EVENT.split(","))
  440. + PART_ZONE_MONSTERS_EVENT_ID.add(Integer.parseInt(id));
  441. + PARTY_ZONE_REWARDS = parseReward(BestFarm, "PartyZoneReward");
  442. +
  443. + PARTY_FARM_MONSTER_DALAY = Integer.parseInt(BestFarm.getProperty("MonsterDelay", "10"));
  444. + PARTY_FARM_BY_TIME_OF_DAY = Boolean.parseBoolean(BestFarm.getProperty("PartyFarmEventEnabled", "false"));
  445. + START_PARTY = Boolean.parseBoolean(BestFarm.getProperty("StartSpawnPartyFarm", "false"));
  446. + ENABLE_DUALBOX_PARTYFARM = Boolean.parseBoolean(BestFarm.getProperty("RenewalDualBoxPTFarm", "false"));
  447. + EVENT_BEST_FARM_TIME = Integer.parseInt(BestFarm.getProperty("EventBestFarmTime", "1"));
  448. + EVENT_BEST_FARM_INTERVAL_BY_TIME_OF_DAY = BestFarm.getProperty("BestFarmStartTime", "20:00").split(",");
  449. + PARTY_MESSAGE_ENABLED = Boolean.parseBoolean(BestFarm.getProperty("ScreenPartyMessageEnable", "false"));
  450. + PARTY_FARM_MESSAGE_TEXT = BestFarm.getProperty("ScreenPartyFarmMessageText", "Welcome to l2j server!");
  451. + PARTY_FARM_MESSAGE_TIME = Integer.parseInt(BestFarm.getProperty("ScreenPartyFarmMessageTime", "10")) * 1000;
  452. +
  453. + String[] monsterLocs2 = BestFarm.getProperty("MonsterLoc", "").split(";");
  454. + String[] locSplit3 = null;
  455. +
  456. + monsterId = Integer.parseInt(BestFarm.getProperty("MonsterId", "1"));
  457. +
  458. + MONSTER_LOCS_COUNT = monsterLocs2.length;
  459. + MONSTER_LOCS = new int[MONSTER_LOCS_COUNT][3];
  460. + int g;
  461. + for (int e = 0; e < MONSTER_LOCS_COUNT; e++)
  462. + {
  463. + locSplit3 = monsterLocs2[e].split(",");
  464. + for (g = 0; g < 3; g++)
  465. + {
  466. + MONSTER_LOCS[e][g] = Integer.parseInt(locSplit3[g].trim());
  467. + }
  468. + }
  469. +
  470. + }
  471. +
  472. + public static List<RewardHolder> parseReward(Properties propertie, String configName)
  473. + {
  474. + List<RewardHolder> auxReturn = new ArrayList<>();
  475. +
  476. + String aux = propertie.getProperty(configName).trim();
  477. + for (String randomReward : aux.split(";"))
  478. + {
  479. + final String[] infos = randomReward.split(",");
  480. +
  481. + if (infos.length > 3)
  482. + auxReturn.add(new RewardHolder(Integer.valueOf(infos[0]), Integer.valueOf(infos[1]), Integer.valueOf(infos[2]), Integer.valueOf(infos[3])));
  483. + else
  484. + auxReturn.add(new RewardHolder(Integer.valueOf(infos[0]), Integer.valueOf(infos[1]), Integer.valueOf(infos[2])));
  485. + }
  486. + return auxReturn;
  487. + }
  488. +
  489. private static final void loadPcBangConfig()
  490. {
  491. final ExProperties PcBanG = initProperties(PCBANGEVENT);
  492. @@ -1748,6 +1820,7 @@
  493. // NPCs/monsters settings
  494. loadNpcs();
  495. loadPcBangConfig();
  496. + loadPTFarmConfig();
  497. loadSpecial();
  498. loadCommands();
  499. loadScheme();
  500. diff --git a/java/net/sf/l2j/gameserver/GameServer.java b/java/net/sf/l2j/gameserver/GameServer.java
  501. index 4c0ba28..da7c459 100644
  502. --- a/java/net/sf/l2j/gameserver/GameServer.java
  503. +++ b/java/net/sf/l2j/gameserver/GameServer.java
  504. @@ -38,6 +38,7 @@
  505. import net.sf.l2j.gameserver.data.manager.HeroManager;
  506. import net.sf.l2j.gameserver.data.manager.LotteryManager;
  507. import net.sf.l2j.gameserver.data.manager.PartyMatchRoomManager;
  508. +import net.sf.l2j.gameserver.data.manager.PartyZoneReward;
  509. import net.sf.l2j.gameserver.data.manager.PetitionManager;
  510. import net.sf.l2j.gameserver.data.manager.RaidBossInfoManager;
  511. import net.sf.l2j.gameserver.data.manager.RaidBossManager;
  512. @@ -109,6 +110,9 @@
  513. import net.sf.l2j.util.DeadLockDetector;
  514. import net.sf.l2j.util.IPv4Filter;
  515.  
  516. +import Dev.Events.PartyFarm.InitialPartyFarm;
  517. +import Dev.Events.PartyFarm.PartyFarm;
  518. +
  519. public class GameServer
  520. {
  521. private static final CLogger LOGGER = new CLogger(GameServer.class.getName());
  522. @@ -222,6 +226,23 @@
  523. WaterTaskManager.getInstance();
  524. RaidBossInfoManager.getInstance();
  525. IconTable.getInstance();
  526. + PartyZoneReward.getInstance();
  527. + class SpawnMonsters implements Runnable
  528. + {
  529. + public SpawnMonsters()
  530. + {
  531. + }
  532. +
  533. + @Override
  534. + public void run()
  535. + {
  536. + PartyFarm._aborted = false;
  537. + PartyFarm._started = true;
  538. +
  539. + PartyFarm.spawnMonsters();
  540. + }
  541. +
  542. + }
  543.  
  544. StringUtil.printSection("Events");
  545. if(Config.PCB_ENABLE)
  546. @@ -230,6 +251,18 @@
  547. ThreadPool.scheduleAtFixedRate(PcBang.getInstance(), Config.PCB_INTERVAL * 1000, Config.PCB_INTERVAL * 1000);
  548. }
  549.  
  550. + StringUtil.printSection("Party Farm Events");
  551. + if ((Config.PARTY_FARM_BY_TIME_OF_DAY) && (!Config.START_PARTY))
  552. + {
  553. + InitialPartyFarm.getInstance().StartCalculationOfNextEventTime();
  554. + LOGGER.info("[Party Farm Time]: Enabled");
  555. + }
  556. + else if ((Config.START_PARTY) && (!Config.PARTY_FARM_BY_TIME_OF_DAY))
  557. + {
  558. + LOGGER.info("[Start Spawn Party Farm]: Enabled");
  559. + ThreadPool.schedule(new SpawnMonsters(), 1000L);
  560. + }
  561. +
  562. StringUtil.printSection("Auto Spawns");
  563. AutoSpawnTable.getInstance();
  564.  
  565. diff --git a/java/net/sf/l2j/gameserver/data/manager/PartyZoneReward.java b/java/net/sf/l2j/gameserver/data/manager/PartyZoneReward.java
  566. new file mode 100644
  567. index 0000000..d1bc44c
  568. --- /dev/null
  569. +++ b/java/net/sf/l2j/gameserver/data/manager/PartyZoneReward.java
  570. @@ -0,0 +1,106 @@
  571. +package net.sf.l2j.gameserver.data.manager;
  572. +
  573. +import java.util.HashMap;
  574. +import java.util.List;
  575. +import java.util.logging.Logger;
  576. +
  577. +import net.sf.l2j.commons.random.Rnd;
  578. +
  579. +import net.sf.l2j.Config;
  580. +import net.sf.l2j.gameserver.model.actor.Creature;
  581. +import net.sf.l2j.gameserver.model.actor.Npc;
  582. +import net.sf.l2j.gameserver.model.actor.Playable;
  583. +import net.sf.l2j.gameserver.model.actor.Player;
  584. +
  585. +/**
  586. + *
  587. + * @author Sarada
  588. + *
  589. + */
  590. +
  591. +public class PartyZoneReward
  592. +{
  593. + protected static final Logger _log = Logger.getLogger(PartyZoneReward.class.getName());
  594. +
  595. + protected PartyZoneReward()
  596. + {
  597. + }
  598. +
  599. + private static boolean _canReward = false;
  600. + private static HashMap<String, Integer> _playerHwids = new HashMap<>();
  601. +
  602. + // Give Reward
  603. + public final static void addPartyZoneReward(Creature killer, Npc monster)
  604. + {
  605. + if (killer instanceof Playable)
  606. + {
  607. + Player player = killer.getActingPlayer();
  608. +
  609. + if (player.isInParty())
  610. + {
  611. + List<Player> party = player.getParty().getMembers();
  612. +
  613. + for (Player member : party)
  614. + {
  615. + //String pHwid = member.getHWID();
  616. + String pHwid = member.getClient().getConnection().getInetAddress().getHostAddress();
  617. + if (!_playerHwids.containsKey(pHwid) || Config.ENABLE_DUALBOX_PARTYFARM)
  618. + {
  619. + _playerHwids.put(pHwid, 1);
  620. + _canReward = true;
  621. + }
  622. + else
  623. + {
  624. + int count = _playerHwids.get(pHwid);
  625. +
  626. + if (count < 1)
  627. + {
  628. + _playerHwids.remove(pHwid);
  629. + _playerHwids.put(pHwid, count + 1);
  630. + _canReward = true;
  631. + }
  632. + else
  633. + {
  634. + member.sendMessage("You are Other PC Reward.");
  635. + _canReward = false;
  636. + }
  637. + }
  638. + if (_canReward)
  639. + {
  640. + if (member.isIn3DRadius(monster.getX(), monster.getY(), monster.getZ(), 1000))
  641. + RandomReward(member);
  642. + else
  643. + member.sendMessage("You are too far from your party to be rewarded.");
  644. + }
  645. + }
  646. + _playerHwids.clear();
  647. + }
  648. + else
  649. + RandomReward(player);
  650. + }
  651. + }
  652. +
  653. + public static void RandomReward(Player player)
  654. + {
  655. + for (RewardHolder reward : Config.PARTY_ZONE_REWARDS)
  656. + {
  657. + if (Rnd.get(100) <= reward.getRewardChance())
  658. + {
  659. + //if (player.isVip())
  660. + // player.addItem("Random Reward", reward.getRewardId(), Rnd.get(reward.getRewardMin(), reward.getRewardMax()) * Config.VIP_DROP_RATE, player, true);
  661. + //else
  662. + player.addItem("Random Reward", reward.getRewardId(), Rnd.get(reward.getRewardMin(), reward.getRewardMax()), player, true);
  663. + }
  664. + }
  665. + }
  666. +
  667. + public static final PartyZoneReward getInstance()
  668. + {
  669. + return SingletonHolder._instance;
  670. + }
  671. +
  672. + private static class SingletonHolder
  673. + {
  674. + protected static final PartyZoneReward _instance = new PartyZoneReward();
  675. + }
  676. +}
  677. \ No newline at end of file
  678. diff --git a/java/net/sf/l2j/gameserver/data/manager/RewardHolder.java b/java/net/sf/l2j/gameserver/data/manager/RewardHolder.java
  679. new file mode 100644
  680. index 0000000..66af8aa
  681. --- /dev/null
  682. +++ b/java/net/sf/l2j/gameserver/data/manager/RewardHolder.java
  683. @@ -0,0 +1,76 @@
  684. +package net.sf.l2j.gameserver.data.manager;
  685. +
  686. +public class RewardHolder
  687. +{
  688. + private int _id;
  689. + private int _min;
  690. + private int _max;
  691. + private int _chance;
  692. +
  693. + /**
  694. + * @param rewardId
  695. + * @param rewardMin
  696. + * @param rewardMax
  697. + */
  698. + public RewardHolder(int rewardId, int rewardMin, int rewardMax)
  699. + {
  700. + _id = rewardId;
  701. + _min = rewardMin;
  702. + _max = rewardMax;
  703. + _chance = 100;
  704. + }
  705. +
  706. + /**
  707. + * @param rewardId
  708. + * @param rewardMin
  709. + * @param rewardMax
  710. + * @param rewardChance
  711. + */
  712. + public RewardHolder(int rewardId, int rewardMin, int rewardMax, int rewardChance)
  713. + {
  714. + _id = rewardId;
  715. + _min = rewardMin;
  716. + _max = rewardMax;
  717. + _chance = rewardChance;
  718. + }
  719. +
  720. + public int getRewardId()
  721. + {
  722. + return _id;
  723. + }
  724. +
  725. + public int getRewardMin()
  726. + {
  727. + return _min;
  728. + }
  729. +
  730. + public int getRewardMax()
  731. + {
  732. + return _max;
  733. + }
  734. +
  735. + public int getRewardChance()
  736. + {
  737. + return _chance;
  738. + }
  739. +
  740. + public void setId(int id)
  741. + {
  742. + _id = id;
  743. + }
  744. +
  745. + public void setMin(int min)
  746. + {
  747. + _min = min;
  748. + }
  749. +
  750. + public void setMax(int max)
  751. + {
  752. + _max = max;
  753. + }
  754. +
  755. + public void setChance(int chance)
  756. + {
  757. + _chance = chance;
  758. + }
  759. +}
  760. \ No newline at end of file
  761. diff --git a/java/net/sf/l2j/gameserver/handler/AdminCommandHandler.java b/java/net/sf/l2j/gameserver/handler/AdminCommandHandler.java
  762. index 99efa93..ae67764 100644
  763. --- a/java/net/sf/l2j/gameserver/handler/AdminCommandHandler.java
  764. +++ b/java/net/sf/l2j/gameserver/handler/AdminCommandHandler.java
  765. @@ -8,6 +8,7 @@
  766. import net.sf.l2j.gameserver.handler.admincommandhandlers.AdminBookmark;
  767. import net.sf.l2j.gameserver.handler.admincommandhandlers.AdminClanHall;
  768. import net.sf.l2j.gameserver.handler.admincommandhandlers.AdminCursedWeapon;
  769. +import net.sf.l2j.gameserver.handler.admincommandhandlers.AdminCustom;
  770. import net.sf.l2j.gameserver.handler.admincommandhandlers.AdminDoor;
  771. import net.sf.l2j.gameserver.handler.admincommandhandlers.AdminEditChar;
  772. import net.sf.l2j.gameserver.handler.admincommandhandlers.AdminEffects;
  773. @@ -43,6 +44,7 @@
  774.  
  775. protected AdminCommandHandler()
  776. {
  777. + registerHandler(new AdminCustom());
  778. registerHandler(new AdminVip());
  779. registerHandler(new AdminAdmin());
  780. registerHandler(new AdminAnnouncements());
  781. diff --git a/java/net/sf/l2j/gameserver/handler/admincommandhandlers/AdminCustom.java b/java/net/sf/l2j/gameserver/handler/admincommandhandlers/AdminCustom.java
  782. new file mode 100644
  783. index 0000000..d5c5894
  784. --- /dev/null
  785. +++ b/java/net/sf/l2j/gameserver/handler/admincommandhandlers/AdminCustom.java
  786. @@ -0,0 +1,147 @@
  787. +package net.sf.l2j.gameserver.handler.admincommandhandlers;
  788. +
  789. +import java.util.logging.Logger;
  790. +
  791. +import net.sf.l2j.commons.pool.ThreadPool;
  792. +
  793. +import net.sf.l2j.gameserver.handler.IAdminCommandHandler;
  794. +import net.sf.l2j.gameserver.model.actor.Player;
  795. +
  796. +import Dev.Events.PartyFarm.PartyFarm;
  797. +//import Dev.Tournament.properties.ArenaTask;
  798. +
  799. +
  800. +public class AdminCustom implements IAdminCommandHandler
  801. +{
  802. +
  803. + private static final String[] ADMIN_COMMANDS =
  804. + {
  805. + "admin_tour",
  806. + "admin_ptfarm"
  807. +
  808. + };
  809. +
  810. + protected static final Logger _log = Logger.getLogger(AdminCustom.class.getName());
  811. + public static boolean _arena_manual = false;
  812. + public static boolean _bestfarm_manual = false;
  813. +
  814. + @Override
  815. + public void useAdminCommand(String command, Player activeChar)
  816. + {
  817. +
  818. +
  819. + /*if (command.equals("admin_tour"))
  820. + {
  821. + if (ArenaTask._started)
  822. + {
  823. + _log.info("----------------------------------------------------------------------------");
  824. + _log.info("[Tournament]: Event Finished.");
  825. + _log.info("----------------------------------------------------------------------------");
  826. + ArenaTask._aborted = true;
  827. + finishEventArena();
  828. + _arena_manual = true;
  829. +
  830. + activeChar.sendMessage("SYS: Voce Finalizou o evento Tournament Manualmente..");
  831. + }
  832. + else
  833. + {
  834. + _log.info("----------------------------------------------------------------------------");
  835. + _log.info("[Tournament]: Event Started.");
  836. + _log.info("----------------------------------------------------------------------------");
  837. + initEventArena();
  838. + _arena_manual = true;
  839. + activeChar.sendMessage("SYS: Voce ativou o evento Tournament Manualmente..");
  840. + }
  841. +
  842. + return true;
  843. + }*/
  844. + if (command.equals("admin_ptfarm"))
  845. + {
  846. + if (PartyFarm._started)
  847. + {
  848. + _log.info("----------------------------------------------------------------------------");
  849. + _log.info("[Party Farm]: Event Finished.");
  850. + _log.info("----------------------------------------------------------------------------");
  851. + PartyFarm._aborted = true;
  852. + finishEventPartyFarm();
  853. +
  854. + activeChar.sendMessage("SYS: Voce Finalizou o Party Farm Manualmente..");
  855. + }
  856. + else
  857. + {
  858. + _log.info("----------------------------------------------------------------------------");
  859. + _log.info("[Party Farm]: Event Started.");
  860. + _log.info("----------------------------------------------------------------------------");
  861. + initEventPartyFarm();
  862. + _bestfarm_manual = true;
  863. + activeChar.sendMessage("SYS: Voce ativou o Best Farm Manualmente..");
  864. + }
  865. + }
  866. + return;
  867. +
  868. + }
  869. +
  870. +
  871. + private static void initEventPartyFarm()
  872. + {
  873. + ThreadPool.schedule(new Runnable()
  874. + {
  875. + @Override
  876. + public void run()
  877. + {
  878. +
  879. + PartyFarm.bossSpawnMonster();
  880. + }
  881. + }, 1L);
  882. + }
  883. +
  884. + private static void finishEventPartyFarm()
  885. + {
  886. + ThreadPool.schedule(new Runnable()
  887. + {
  888. + @Override
  889. + public void run()
  890. + {
  891. +
  892. + PartyFarm.Finish_Event();
  893. +
  894. + }
  895. + }, 1L);
  896. + }
  897. +
  898. + /*
  899. + private static void initEventArena()
  900. + {
  901. + ThreadPoolManager.getInstance().scheduleGeneral(new Runnable()
  902. + {
  903. + @Override
  904. + public void run()
  905. + {
  906. +
  907. + ArenaTask.SpawnEvent();
  908. + }
  909. + }, 10L);
  910. + }
  911. +
  912. + private static void finishEventArena()
  913. + {
  914. + ThreadPoolManager.getInstance().scheduleGeneral(new Runnable()
  915. + {
  916. + @Override
  917. + public void run()
  918. + {
  919. +
  920. + ArenaTask.finishEvent();
  921. + }
  922. + }, 10L);
  923. + }*/
  924. +
  925. +
  926. +
  927. +
  928. + @Override
  929. + public String[] getAdminCommandList()
  930. + {
  931. + return ADMIN_COMMANDS;
  932. + }
  933. +}
  934. \ No newline at end of file
  935. diff --git a/java/net/sf/l2j/gameserver/model/actor/instance/Monster.java b/java/net/sf/l2j/gameserver/model/actor/instance/Monster.java
  936. index 8663495..39a9186 100644
  937. --- a/java/net/sf/l2j/gameserver/model/actor/instance/Monster.java
  938. +++ b/java/net/sf/l2j/gameserver/model/actor/instance/Monster.java
  939. @@ -13,6 +13,7 @@
  940.  
  941. import net.sf.l2j.Config;
  942. import net.sf.l2j.gameserver.data.manager.CursedWeaponManager;
  943. +import net.sf.l2j.gameserver.data.manager.PartyZoneReward;
  944. import net.sf.l2j.gameserver.data.xml.HerbDropData;
  945. import net.sf.l2j.gameserver.enums.BossInfoType;
  946. import net.sf.l2j.gameserver.geoengine.GeoEngine;
  947. @@ -861,7 +862,8 @@
  948. final Player player = creature.getActingPlayer();
  949. if (player == null)
  950. return;
  951. -
  952. + if (Config.PART_ZONE_MONSTERS_EVENT_ID.contains(Integer.valueOf(template.getNpcId())))
  953. + PartyZoneReward.addPartyZoneReward(player, this);
  954. // Calculate level modifier.
  955. final int levelModifier = calculateLevelModifierForDrop(player);
  956.  
  957. diff --git a/java/net/sf/l2j/gameserver/network/clientpackets/EnterWorld.java b/java/net/sf/l2j/gameserver/network/clientpackets/EnterWorld.java
  958. index be4efdf..496642d 100644
  959. --- a/java/net/sf/l2j/gameserver/network/clientpackets/EnterWorld.java
  960. +++ b/java/net/sf/l2j/gameserver/network/clientpackets/EnterWorld.java
  961. @@ -19,6 +19,7 @@
  962. import net.sf.l2j.gameserver.data.xml.AnnouncementData;
  963. import net.sf.l2j.gameserver.data.xml.MapRegionData.TeleportType;
  964. import net.sf.l2j.gameserver.enums.CabalType;
  965. +import net.sf.l2j.gameserver.enums.SayType;
  966. import net.sf.l2j.gameserver.enums.SealType;
  967. import net.sf.l2j.gameserver.enums.SiegeSide;
  968. import net.sf.l2j.gameserver.enums.ZoneId;
  969. @@ -36,6 +37,7 @@
  970. import net.sf.l2j.gameserver.network.GameClient.GameClientState;
  971. import net.sf.l2j.gameserver.network.SystemMessageId;
  972. import net.sf.l2j.gameserver.network.serverpackets.ActionFailed;
  973. +import net.sf.l2j.gameserver.network.serverpackets.CreatureSay;
  974. import net.sf.l2j.gameserver.network.serverpackets.Die;
  975. import net.sf.l2j.gameserver.network.serverpackets.EtcStatusUpdate;
  976. import net.sf.l2j.gameserver.network.serverpackets.ExMailArrived;
  977. @@ -59,6 +61,8 @@
  978. import net.sf.l2j.gameserver.skills.L2Skill;
  979. import net.sf.l2j.gameserver.taskmanager.GameTimeTaskManager;
  980.  
  981. +import Dev.Events.PartyFarm.PartyFarm;
  982. +
  983. public class EnterWorld extends L2GameClientPacket
  984. {
  985. @Override
  986. @@ -243,6 +247,11 @@
  987. {
  988. ShowNextRestart(player);
  989. }
  990. + if ((PartyFarm.is_started()) && (Config.PARTY_FARM_BY_TIME_OF_DAY))
  991. + {
  992. + new CreatureSay(3,SayType.PARTY, ".", "" + Config.PARTY_FARM_MESSAGE_TEXT + ":.");
  993. +
  994. + }
  995. // Means that it's not ok multiBox situation, so logout
  996. if (!player.checkMultiBox())
  997. {
  998.  
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement