Advertisement
Fabbian

Scheme

Oct 31st, 2014
173
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 25.46 KB | None | 0 0
  1. ### Eclipse Workspace Patch 1.0
  2. #P Dream_DataPack
  3. Index: quests/com/dream/game/model/quest/pack/custom/SchemeBuffer.java
  4. ===================================================================
  5. --- quests/com/dream/game/model/quest/pack/custom/SchemeBuffer.java (revision 0)
  6. +++ quests/com/dream/game/model/quest/pack/custom/SchemeBuffer.java (working copy)
  7. @@ -0,0 +1,862 @@
  8. +/*
  9. + * Copyright (C) 2004-2013 L2J DataPack
  10. + *
  11. + * This file is part of L2J DataPack.
  12. + *
  13. + * L2J DataPack is free software: you can redistribute it and/or modify
  14. + * it under the terms of the GNU General Public License as published by
  15. + * the Free Software Foundation, either version 3 of the License, or
  16. + * (at your option) any later version.
  17. + *
  18. + * L2J DataPack is distributed in the hope that it will be useful,
  19. + * but WITHOUT ANY WARRANTY; without even the implied warranty of
  20. + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
  21. + * General Public License for more details.
  22. + *
  23. + * You should have received a copy of the GNU General Public License
  24. + * along with this program. If not, see <http://www.gnu.org/licenses/>.
  25. + */
  26. +package dream.game.model.quest.pack.custom;
  27. +
  28. +import java.sql.Connection;
  29. +import java.sql.PreparedStatement;
  30. +import java.sql.ResultSet;
  31. +
  32. +import javolution.util.FastList;
  33. +import javolution.util.FastMap;
  34. +
  35. +import com.dream.Config;
  36. +import com.dream.L2DatabaseFactory;
  37. +import com.dream.game.cache.HtmCache;
  38. +import com.dream.game.datatables.SkillTable;
  39. +import com.dream.game.model.L2Skill;
  40. +import com.dream.game.model.actor.L2Npc;
  41. +import com.dream.game.model.actor.L2Summon;
  42. +import com.dream.game.model.actor.instance.L2PcInstance;
  43. +import com.dream.game.model.quest.Quest;
  44. +
  45. +/**
  46. + * Scheme Buffer
  47. + * @author Freedy
  48. + */
  49. +public class SchemeBuffer extends Quest
  50. +{
  51. + // NPC
  52. + private static final int BUFFER = 66000;
  53. +
  54. + // contains all possible buffs in NPC
  55. + private static final FastMap<String, FastList<L2Skill>> _Category_Buffs = new FastMap<>();
  56. + // contain all schemas buff lists from all players
  57. + private static final FastMap<Integer, FastMap<String, FastList<L2Skill>>> _Char_Buffs_in_Schema = new FastMap<>();
  58. + private static final FastMap<Integer, FastList<String>> _Char_Schemes = new FastMap<>();
  59. + private static boolean _loaded = false;
  60. +
  61. + private SchemeBuffer(int questId, String name, String descr)
  62. + {
  63. + super(questId, name, descr);
  64. + addStartNpc(BUFFER);
  65. + addTalkId(BUFFER);
  66. + loadBuffs();
  67. + }
  68. +
  69. + private static void loadBuffs()
  70. + {
  71. + _Category_Buffs.clear();
  72. + _Char_Buffs_in_Schema.clear();
  73. + _Char_Schemes.clear();
  74. + try
  75. + {
  76. + Connection con = L2DatabaseFactory.getInstance().getConnection();
  77. + PreparedStatement statement = con.prepareStatement("select * from scheme_buffer_buffs;");
  78. + ResultSet result = statement.executeQuery();
  79. + while (result.next())
  80. + {
  81. + String cat = result.getString("category");
  82. + L2Skill sk = SkillTable.getInstance().getInfo(result.getInt("skill_id"), result.getInt("level"));
  83. + if (_Category_Buffs.get(cat) == null)
  84. + {
  85. + FastList<L2Skill> skl = new FastList<>();
  86. + skl.add(sk);
  87. + _Category_Buffs.put(cat, skl);
  88. + }
  89. + else
  90. + {
  91. + _Category_Buffs.get(cat).add(sk);
  92. + }
  93. + }
  94. +
  95. + PreparedStatement statement2 = con.prepareStatement("select * from scheme_player_buffs order by charId asc;");
  96. + ResultSet result2 = statement2.executeQuery();
  97. + while (result2.next())
  98. + {
  99. + int player = result2.getInt("charId");
  100. + String schema = result2.getString("scheme");
  101. + L2Skill sk = SkillTable.getInstance().getInfo(result2.getInt("skill_id"), result2.getInt("level"));
  102. +
  103. + if (_Char_Buffs_in_Schema.containsKey(player))
  104. + {
  105. + if (_Char_Buffs_in_Schema.get(player).containsKey(schema))
  106. + {
  107. + _Char_Buffs_in_Schema.get(player).get(schema).add(sk);
  108. + }
  109. + else
  110. + {
  111. + FastList<L2Skill> schemaskillsList = new FastList<>();
  112. + schemaskillsList.add(sk);
  113. + _Char_Buffs_in_Schema.get(player).put(schema, schemaskillsList);
  114. + }
  115. + }
  116. + else
  117. + {
  118. + FastMap<String, FastList<L2Skill>> schemaskills = new FastMap<>();
  119. + FastList<L2Skill> schemaskillsList = new FastList<>();
  120. + schemaskillsList.add(sk);
  121. + schemaskills.put(schema, schemaskillsList);
  122. + _Char_Buffs_in_Schema.put(player, schemaskills);
  123. + }
  124. +
  125. + }
  126. +
  127. + PreparedStatement statement3 = con.prepareStatement("select * from scheme_player_schemes order by charId asc;");
  128. + ResultSet result3 = statement3.executeQuery();
  129. + while (result3.next())
  130. + {
  131. + int player = result3.getInt("charId");
  132. + if (getSchemeNames(player) != null)
  133. + {
  134. + getSchemeNames(player).add(result3.getString("scheme"));
  135. + }
  136. + else
  137. + {
  138. + FastList<String> sk = new FastList<>();
  139. + sk.add(result3.getString("scheme"));
  140. + _Char_Schemes.put(player, sk);
  141. + }
  142. + }
  143. +
  144. + con.close();
  145. + _log.info("Buffs for scheme buffer were loaded.");
  146. + setLoaded(true);
  147. + }
  148. + catch (Exception e)
  149. + {
  150. + _log.info("Error: " + e);
  151. + }
  152. + }
  153. +
  154. + /**
  155. + * @param player player who is adding buff into his scheme
  156. + * @param skill ID of Skill
  157. + * @param level of Skill
  158. + * @param scheme where player is adding buff
  159. + */
  160. + private static void AddBuff(int player, int skill, int level, String scheme)
  161. + {
  162. + try
  163. + {
  164. + Connection con = L2DatabaseFactory.getInstance().getConnection();
  165. + PreparedStatement statement = con.prepareStatement("INSERT INTO scheme_player_buffs (`charId`, `scheme`, `skill_id`, `level`) VALUES (" + player + ", '" + scheme + "', " + skill + ", " + level + ");");
  166. + statement.execute();
  167. + con.close();
  168. + }
  169. + catch (Exception e)
  170. + {
  171. + _log.info("Error: " + e);
  172. + }
  173. + }
  174. +
  175. + private static void DeleteBuff(int player, String scheme, int skill)
  176. + {
  177. + try
  178. + {
  179. + Connection con = L2DatabaseFactory.getInstance().getConnection();
  180. + PreparedStatement statement = con.prepareStatement("DELETE FROM `scheme_player_buffs` WHERE `charId`='" + player + "' and`scheme`='" + scheme + "' and`skill_id`='" + skill + "';");
  181. + statement.execute();
  182. + con.close();
  183. + }
  184. + catch (Exception e)
  185. + {
  186. + _log.info("Error: " + e);
  187. + }
  188. + }
  189. +
  190. + private static void CreateScheme(int player, String scheme)
  191. + {
  192. + try
  193. + {
  194. + Connection con = L2DatabaseFactory.getInstance().getConnection();
  195. + PreparedStatement statement = con.prepareStatement("INSERT INTO scheme_player_schemes (`charId`, `scheme`) VALUES (" + player + ", '" + scheme + "');");
  196. + statement.execute();
  197. + con.close();
  198. + }
  199. + catch (Exception e)
  200. + {
  201. + _log.info("Error: " + e);
  202. + }
  203. + }
  204. +
  205. + private static void DeleteScheme(int player, String scheme)
  206. + {
  207. + try
  208. + {
  209. + Connection con = L2DatabaseFactory.getInstance().getConnection();
  210. + PreparedStatement statement = con.prepareStatement("DELETE FROM `scheme_player_buffs` WHERE `charId`='" + player + "' and`scheme`='" + scheme + "';");
  211. + PreparedStatement statement2 = con.prepareStatement("DELETE FROM `scheme_player_schemes` WHERE `charId`='" + player + "' and`scheme`='" + scheme + "';");
  212. + statement.execute();
  213. + statement2.execute();
  214. + con.close();
  215. + }
  216. + catch (Exception e)
  217. + {
  218. + _log.info("Error: " + e);
  219. + }
  220. + }
  221. +
  222. + @Override
  223. + public String onAdvEvent(String event, L2Npc npc, L2PcInstance player)
  224. + {
  225. + if (!isLoaded())
  226. + {
  227. + loadBuffs();
  228. + }
  229. + String html = "";
  230. + String[] cmd = event.split(" ");
  231. + switch (cmd[0])
  232. + {
  233. + case "link":
  234. + {
  235. + html = EditPage(player, cmd[1]);
  236. + break;
  237. + }
  238. + case "main":
  239. + {
  240. + html = EditPage(player, "mainpage.htm");
  241. + break;
  242. + }
  243. + case "create":
  244. + {
  245. + if (cmd.length < 2)
  246. + {
  247. + CreateNewScheme(player, "");
  248. + }
  249. + else
  250. + {
  251. + CreateNewScheme(player, cmd[1]);
  252. + }
  253. + html = EditPage(player, "manageschemes.htm;editscheme");
  254. + break;
  255. + }
  256. + case "addbuff":
  257. + {
  258. + AddBuffToScheme(player, cmd[1], SkillTable.getInstance().getInfo(Integer.valueOf(cmd[2]), Integer.valueOf(cmd[3])));
  259. + html = EditPage(player, cmd[4]);
  260. + break;
  261. + }
  262. + case "delbuff":
  263. + {
  264. + DelBuffFromScheme(player, cmd[1], SkillTable.getInstance().getInfo(Integer.valueOf(cmd[2]), Integer.valueOf(cmd[3])));
  265. + html = EditPage(player, "delbuffs.htm;" + cmd[1]);
  266. + break;
  267. + }
  268. + case "delscheme":
  269. + {
  270. + DeleteScheme(player, cmd[1]);
  271. + html = EditPage(player, "mainpage.htm");
  272. + break;
  273. + }
  274. + case "editscheme":
  275. + {
  276. + html = EditPage(player, "scheme.htm;" + cmd[1]);
  277. + html = html.replaceAll("%schemename%", cmd[1]);
  278. + break;
  279. + }
  280. + case "addbuffs":
  281. + {
  282. + html = EditPage(player, cmd[1]);
  283. + html = html.replaceAll("%schemename%", cmd[2]);
  284. + break;
  285. + }
  286. + case "delbuffs":
  287. + {
  288. + html = EditPage(player, "delbuffs.htm;" + cmd[1]);
  289. + html = html.replaceAll("%schemename%", cmd[1]);
  290. + break;
  291. + }
  292. + case "catadd":
  293. + {
  294. + html = EditPage(player, "category.htm;" + cmd[1]);
  295. + html = html.replaceAll("%schemename%", cmd[1]);
  296. + break;
  297. + }
  298. + case "schemes":
  299. + {
  300. + html = EditPage(player, cmd[1]);
  301. + html = html.replaceAll("%schemename%", cmd[1]);
  302. + break;
  303. + }
  304. + case "buffscheme":
  305. + {
  306. + GetBuffs(npc, player, cmd[1]);
  307. + html = EditPage(player, "mainpage.htm");
  308. + break;
  309. + }
  310. + case "summonbuffscheme":
  311. + GetBuffsSummon(npc, player, cmd[1]);
  312. + html = EditPage(player, "mainpage.htm");
  313. + break;
  314. + case "manualbuff":
  315. + {
  316. + html = EditPage(player, cmd[1]);
  317. + break;
  318. + }
  319. + case "getbuf":
  320. + {
  321. + GetBuff(npc, player, Integer.valueOf(cmd[1]), Integer.valueOf(cmd[2]));
  322. + html = EditPage(player, cmd[3]);
  323. + break;
  324. + }
  325. + }
  326. +
  327. + return html;
  328. + }
  329. +
  330. + /**
  331. + * @param player
  332. + * @param command - where all bypasses shall be edited
  333. + * @return
  334. + */
  335. + private static String EditPage(L2PcInstance player, String command)
  336. + {
  337. + String[] cmd = command.split(";");
  338. + String _path = "data/html/schemebuffer/";
  339. + String html = HtmCache.getInstance().getHtm(_path, player);
  340. + if (html == null)
  341. + {
  342. + return null;
  343. + }
  344. + switch (cmd[0])
  345. + {
  346. + case "manageschemes.htm":
  347. + html = html.replaceAll("%editschemes%", SchemesToAction(player, cmd[1]));
  348. + break;
  349. + case "buffschemes.htm":
  350. + html = html.replaceAll("%buffschemes%", SchemesToAction(player, cmd[1]));
  351. + break;
  352. + case "summon.htm":
  353. + html = html.replaceAll("%buffschemes%", SchemesToAction(player, cmd[1]));
  354. + break;
  355. + case "category.htm":
  356. + html = html.replaceAll("%categories%", ShowCategories(player, cmd[1]));
  357. + break;
  358. + case "delbuffs.htm":
  359. + html = html.replaceAll("%delbuffs%", DeleteBuffs(player, cmd[1]));
  360. + break;
  361. + case "addbuffs.htm":
  362. + if (cmd.length > 2)
  363. + {
  364. + html = html.replaceAll("%buffs%", AddBuffs(player, cmd[1], cmd[2]));
  365. + html = html.replaceAll("%schemename%", cmd[2]);
  366. + }
  367. + break;
  368. + case "manualcategories.htm":
  369. + html = html.replaceAll("%categories%", ShowManualCategories(player));
  370. + break;
  371. + case "manualbuff.htm":
  372. + html = html.replaceAll("%buffs%", ManualBuffs(player, cmd[1]));
  373. + break;
  374. +
  375. + }
  376. + return html;
  377. + }
  378. +
  379. + private static String SchemesToAction(L2PcInstance player, String type)
  380. + {
  381. + String action = "<a action=\"bypass -h Quest SchemeBuffer " + type + " %scheme%\">%scheme%</a><br1>";
  382. + String schemes = "";
  383. + if (getSchemeNames(player.getObjectId()) != null)
  384. + {
  385. + for (String scheme : getSchemeNames(player.getObjectId()))
  386. + {
  387. + String a = action.replaceAll("%scheme%", scheme);
  388. + schemes += a;
  389. + }
  390. + }
  391. + else
  392. + {
  393. + schemes = "You dont have any buff schemes yet.";
  394. + }
  395. + return schemes;
  396. + }
  397. +
  398. + private static String ShowCategories(L2PcInstance p, String scheme)
  399. + {
  400. + String cats = "";
  401. + String cat = "<a action=\"bypass -h Quest SchemeBuffer addbuffs addbuffs.htm;%category%;" + scheme + " " + scheme + "\">%category% </a><br1>";
  402. + if (!_Category_Buffs.isEmpty())
  403. + {
  404. + for (String c : _Category_Buffs.keySet())
  405. + {
  406. + String ca = cat.replaceAll("%category%", c);
  407. + cats += ca;
  408. + }
  409. + }
  410. + else
  411. + {
  412. + cats = "There are not any categories.";
  413. + }
  414. +
  415. + return cats;
  416. + }
  417. +
  418. + /**
  419. + * @param p
  420. + * @param category
  421. + * @param scheme
  422. + * @return
  423. + */
  424. + private static String AddBuffs(L2PcInstance p, String category, String scheme)
  425. + {
  426. + String buffs = "";
  427. +
  428. + String skill = "";
  429. + int count = 0;
  430. + for (L2Skill sk : _Category_Buffs.get(category))
  431. + {
  432. + if (sk.getId() < 1000)
  433. + {
  434. + skill = "0" + sk.getId();
  435. + }
  436. + else if ((sk.getId() == (4699)) || (sk.getId() == (4700)))
  437. + {
  438. + skill = "1331";
  439. + }
  440. + else if ((sk.getId() == (4703)) || (sk.getId() == (4702)))
  441. + {
  442. + skill = "1332";
  443. + }
  444. + else
  445. + {
  446. + skill = "" + sk.getId();
  447. + }
  448. + String buff = "<td fixwidth=32><img src=Icon.skill" + skill + " width=32 height=32></td><td fixwidth=100><a action=\"bypass -h Quest SchemeBuffer addbuff " + scheme + " %buff% %level% addbuffs.htm;" + category + ";" + scheme + "\">%buffname%</a></td>";
  449. +
  450. + if (_Char_Buffs_in_Schema.containsKey(p.getObjectId()))
  451. + {
  452. + if (_Char_Buffs_in_Schema.get(p.getObjectId()).containsKey(scheme))
  453. + {
  454. + if (!getSchemaBuffs(p, scheme).contains(sk))
  455. + {
  456. +
  457. + if ((count % 2) == 0)
  458. + {
  459. + buffs += "</tr><tr>";
  460. + }
  461. + String b = buff.replaceAll("%buff%", "" + sk.getId());
  462. + b = b.replaceAll("%level%", "" + sk.getLevel());
  463. + b = b.replaceAll("%buffname%", sk.getName());
  464. + buffs += b;
  465. + count++;
  466. + }
  467. + }
  468. + else
  469. + {
  470. + if ((count % 2) == 0)
  471. + {
  472. + buffs += "</tr><tr>";
  473. + }
  474. + String b = buff.replaceAll("%buff%", "" + sk.getId());
  475. + b = b.replaceAll("%level%", "" + sk.getLevel());
  476. + b = b.replaceAll("%buffname%", sk.getName());
  477. + buffs += b;
  478. + count++;
  479. + }
  480. + }
  481. + else
  482. + {
  483. + if ((count % 2) == 0)
  484. + {
  485. + buffs += "</tr><tr>";
  486. + }
  487. + String b = buff.replaceAll("%buff%", "" + sk.getId());
  488. + b = b.replaceAll("%level%", "" + sk.getLevel());
  489. + b = b.replaceAll("%buffname%", sk.getName());
  490. + buffs += b;
  491. + count++;
  492. + }
  493. + }
  494. + if (buffs.equalsIgnoreCase(""))
  495. + {
  496. + buffs = "<tr><td></td></tr>";
  497. + }
  498. + return buffs;
  499. + }
  500. +
  501. + private static String ShowManualCategories(L2PcInstance p)
  502. + {
  503. + String cats = "";
  504. + String cat = "<a action=\"bypass -h Quest SchemeBuffer manualbuff manualbuff.htm;%category%\">%category% </a><br1>";
  505. + if (!_Category_Buffs.isEmpty())
  506. + {
  507. + for (String c : _Category_Buffs.keySet())
  508. + {
  509. + String ca = cat.replaceAll("%category%", c);
  510. + cats += ca;
  511. + }
  512. + }
  513. + else
  514. + {
  515. + cats = "There are not any categories.";
  516. + }
  517. +
  518. + return cats;
  519. + }
  520. +
  521. + /**
  522. + * @param p
  523. + * @param category
  524. + * @return
  525. + */
  526. + private static String ManualBuffs(L2PcInstance p, String category)
  527. + {
  528. + int count = 0;
  529. + String buffs = "";
  530. + String skill = "";
  531. + for (L2Skill sk : _Category_Buffs.get(category))
  532. + {
  533. + if (sk.getId() < 1000)
  534. + {
  535. + skill = "0" + sk.getId();
  536. + }
  537. + else if ((sk.getId() == (4699)) || (sk.getId() == (4700)))
  538. + {
  539. + skill = "1331";
  540. + }
  541. + else if ((sk.getId() == (4703)) || (sk.getId() == (4702)))
  542. + {
  543. + skill = "1332";
  544. + }
  545. + else
  546. + {
  547. + skill = "" + sk.getId();
  548. + }
  549. + if ((count % 2) == 0)
  550. + {
  551. + buffs += "</tr><tr>";
  552. + }
  553. + String buff = "<td fixwidth=32><img src=Icon.skill" + skill + " width=32 height=32></td><td fixwidth=100><a action=\"bypass -h Quest SchemeBuffer getbuf %buff% %level% manualbuff.htm;" + category + "\">%buffname%</a><br1></td>";
  554. +
  555. + String b = buff.replaceAll("%buff%", "" + sk.getId());
  556. + b = b.replaceAll("%level%", "" + sk.getLevel());
  557. + b = b.replaceAll("%buffname%", sk.getName());
  558. + buffs += b;
  559. + count++;
  560. + }
  561. + if (buffs.equalsIgnoreCase(""))
  562. + {
  563. + buffs = "<tr><td>No buffs</td></tr>";
  564. + }
  565. + return buffs;
  566. + }
  567. +
  568. + private static String DeleteBuffs(L2PcInstance p, String scheme)
  569. + {
  570. + String buffs = "";
  571. + String buff = "<a action=\"bypass -h Quest SchemeBuffer delbuff " + scheme + " %buff% %level%\">%buffname%</a><br1>";
  572. + if (_Char_Buffs_in_Schema.containsKey(p.getObjectId()))
  573. + {
  574. + if (_Char_Buffs_in_Schema.get(p.getObjectId()).containsKey(scheme))
  575. + {
  576. + for (L2Skill sk : getSchemaBuffs(p, scheme))
  577. + {
  578. + String b = buff.replaceAll("%buff%", "" + sk.getId());
  579. + b = b.replaceAll("%buffname%", sk.getName());
  580. + b = b.replaceAll("%level%", "" + sk.getLevel());
  581. + buffs += b;
  582. + }
  583. + }
  584. + else
  585. + {
  586. + buffs = "You don't have any buffs in this scheme yet.";
  587. + }
  588. + }
  589. + else
  590. + {
  591. + buffs = "You don't have any buffs in this scheme yet.";
  592. + }
  593. + return buffs;
  594. + }
  595. +
  596. + private static void GetBuff(L2Npc npc, L2PcInstance p, int skill, int level)
  597. + {
  598. + L2Skill sk = SkillTable.getInstance().getInfo(skill, level);
  599. + if (sk != null)
  600. + {
  601. + L2PcInstance[] pl =
  602. + {
  603. + p,
  604. + };
  605. + if (PaidForBuff(p, sk))
  606. + {
  607. + npc.callSkill(sk, pl);
  608. + }
  609. + }
  610. +
  611. + }
  612. +
  613. + private static void GetBuffs(L2Npc npc, L2PcInstance p, String scheme)
  614. + {
  615. + if (_Char_Buffs_in_Schema.containsKey(p.getObjectId()))
  616. + {
  617. + if (_Char_Buffs_in_Schema.get(p.getObjectId()).containsKey(scheme))
  618. + {
  619. + for (L2Skill sk : getSchemaBuffs(p, scheme))
  620. + {
  621. + L2PcInstance[] pl =
  622. + {
  623. + p,
  624. + };
  625. + if (PaidForBuff(p, sk))
  626. + {
  627. + npc.callSkill(sk, pl);
  628. + }
  629. + }
  630. + }
  631. + else
  632. + {
  633. + p.sendMessage("There are not any buffs in this scheme.");
  634. + }
  635. + }
  636. + else
  637. + {
  638. + p.sendMessage("There are not any buffs in this scheme.");
  639. + }
  640. + }
  641. +
  642. + private static void GetBuffsSummon(L2Npc npc, L2PcInstance p, String scheme)
  643. + {
  644. + if (_Char_Buffs_in_Schema.containsKey(p.getObjectId()))
  645. + {
  646. + if (_Char_Buffs_in_Schema.get(p.getObjectId()).containsKey(scheme))
  647. + {
  648. + if (p.getPet() != null)
  649. + {
  650. + L2Summon[] summon =
  651. + {
  652. + p.getPet()
  653. + };
  654. + for (L2Skill sk : getSchemaBuffs(p, scheme))
  655. + {
  656. + if (PaidForBuff(p, sk))
  657. + {
  658. + npc.callSkill(sk, summon);
  659. + }
  660. + }
  661. +
  662. + }
  663. + else
  664. + {
  665. + p.sendMessage("You dont have any pet/summon.");
  666. + }
  667. + }
  668. + else
  669. + {
  670. + p.sendMessage("There are not any buffs in this scheme.");
  671. + }
  672. + }
  673. + else
  674. + {
  675. + p.sendMessage("There are not any buffs in this scheme.");
  676. + }
  677. + }
  678. +
  679. + @Override
  680. + public String onTalk(L2Npc npc, L2PcInstance player)
  681. + {
  682. + if (!isLoaded())
  683. + {
  684. + loadBuffs();
  685. + }
  686. + return EditPage(player, "mainpage.htm");
  687. + }
  688. +
  689. + private static FastList<L2Skill> getSchemaBuffs(L2PcInstance pl, String scheme)
  690. + {
  691. + return _Char_Buffs_in_Schema.get(pl.getObjectId()).get(scheme);
  692. + }
  693. +
  694. + private static FastList<String> getSchemeNames(int player)
  695. + {
  696. + return _Char_Schemes.get(player);
  697. + }
  698. +
  699. + /**
  700. + * @param pl
  701. + * @param schemeName
  702. + */
  703. + private static void CreateNewScheme(L2PcInstance pl, String schemeName)
  704. + {
  705. + if (schemeName == "")
  706. + {
  707. + pl.sendMessage("Please insert your new scheme name.");
  708. + return;
  709. + }
  710. + if (schemeName.length() > 16)
  711. + {
  712. + pl.sendMessage("Your scheme name can have only 16 characters!");
  713. + return;
  714. + }
  715. +
  716. + if (getSchemeNames(pl.getObjectId()) != null)
  717. + {
  718. + if (getSchemeNames(pl.getObjectId()).contains(schemeName))
  719. + {
  720. + pl.sendMessage("You already have scheme with this name.");
  721. + return;
  722. + }
  723. + if (getSchemeNames(pl.getObjectId()).size() >= 4)
  724. + {
  725. + pl.sendMessage("You cannot make any more schemes. Maximum is 4.");
  726. + return;
  727. + }
  728. + CreateScheme(pl.getObjectId(), schemeName);
  729. + getSchemeNames(pl.getObjectId()).add(schemeName);
  730. + return;
  731. + }
  732. + FastList<String> sch = new FastList<>();
  733. + sch.add(schemeName);
  734. + CreateScheme(pl.getObjectId(), schemeName);
  735. + _Char_Schemes.put(pl.getObjectId(), sch);
  736. + return;
  737. + }
  738. +
  739. + private static void DeleteScheme(L2PcInstance pl, String scheme)
  740. + {
  741. + DeleteScheme(pl.getObjectId(), scheme);
  742. + _Char_Buffs_in_Schema.get(pl.getObjectId()).remove(scheme);
  743. + if (_Char_Buffs_in_Schema.get(pl.getObjectId()).isEmpty())
  744. + {
  745. + _Char_Buffs_in_Schema.remove(pl.getObjectId());
  746. + }
  747. + _Char_Schemes.get(pl.getObjectId()).remove(scheme);
  748. + if (_Char_Schemes.get(pl.getObjectId()).isEmpty())
  749. + {
  750. + _Char_Schemes.remove(pl.getObjectId());
  751. + }
  752. + pl.sendMessage("Your scheme '" + scheme + "' was successfuly deleted.");
  753. + }
  754. +
  755. + /**
  756. + * @param p
  757. + * @param schema
  758. + * @param sk
  759. + */
  760. + private static void AddBuffToScheme(L2PcInstance p, String schema, L2Skill sk)
  761. + {
  762. + if (_Char_Buffs_in_Schema.containsKey(p.getObjectId()))
  763. + {
  764. + if (_Char_Buffs_in_Schema.get(p.getObjectId()).containsKey(schema))
  765. + {
  766. + if (!getSchemaBuffs(p, schema).contains(sk))
  767. + {
  768. + if (getSchemaBuffs(p, schema).size() >= Config.MAX_BUFFS_PER_SCHEME)
  769. + {
  770. + p.sendMessage("Your buff scheme is full.");
  771. + return;
  772. + }
  773. + AddBuff(p.getObjectId(), sk.getId(), sk.getLevel(), schema);
  774. + getSchemaBuffs(p, schema).add(sk);
  775. + p.sendMessage("added skill " + sk.getName());
  776. + }
  777. + }
  778. + else
  779. + {
  780. + AddBuff(p.getObjectId(), sk.getId(), sk.getLevel(), schema);
  781. + FastMap<String, FastList<L2Skill>> pbuffs = new FastMap<>();
  782. + FastList<L2Skill> skl = new FastList<>();
  783. + skl.add(sk);
  784. + pbuffs.put(schema, skl);
  785. + _Char_Buffs_in_Schema.put(p.getObjectId(), pbuffs);
  786. + p.sendMessage("added skill " + sk.getName() + " and scheme " + schema);
  787. + }
  788. + }
  789. + else
  790. + {
  791. + AddBuff(p.getObjectId(), sk.getId(), sk.getLevel(), schema);
  792. + FastMap<String, FastList<L2Skill>> pbuffs = new FastMap<>();
  793. + FastList<L2Skill> skl = new FastList<>();
  794. + skl.add(sk);
  795. + pbuffs.put(schema, skl);
  796. + _Char_Buffs_in_Schema.put(p.getObjectId(), pbuffs);
  797. + p.sendMessage("Created all in player buffs, added skill " + sk.getName() + " and scheme " + schema);
  798. + }
  799. + }
  800. +
  801. + private static void DelBuffFromScheme(L2PcInstance p, String schema, L2Skill sk)
  802. + {
  803. + DeleteBuff(p.getObjectId(), schema, sk.getId());
  804. + _Char_Buffs_in_Schema.get(p.getObjectId()).get(schema).remove(sk);
  805. + if (_Char_Buffs_in_Schema.get(p.getObjectId()).get(schema).isEmpty())
  806. + {
  807. + _Char_Buffs_in_Schema.get(p.getObjectId()).remove(schema);
  808. + if (_Char_Buffs_in_Schema.get(p.getObjectId()).isEmpty())
  809. + {
  810. + _Char_Buffs_in_Schema.remove(p.getObjectId());
  811. + }
  812. + }
  813. + }
  814. +
  815. + private static boolean PaidForBuff(L2PcInstance p, L2Skill sk)
  816. + {
  817. + if (Config.FREE_BUFFS)
  818. + {
  819. + return true;
  820. + }
  821. + boolean special = false;
  822. + for (String skill : Config.CUSTOM_BUFFS)
  823. + {
  824. + if (sk.getId() == Integer.valueOf(skill))
  825. + {
  826. + special = true;
  827. + }
  828. + }
  829. + if (special)
  830. + {
  831. + if (p.getInventory().getInventoryItemCount((Config.BUFF_CUSTOM_ITEM_ID), -1) < Config.BUFF_PRICE_CUSTOM)
  832. + {
  833. + p.sendMessage("You don't have enough required items.");
  834. + return false;
  835. + }
  836. + p.getInventory().destroyItemByItemId("Buff", Config.BUFF_CUSTOM_ITEM_ID, Config.BUFF_PRICE_CUSTOM, p, null);
  837. + return true;
  838. + }
  839. + if (p.getInventory().getInventoryItemCount((Config.BUFF_ITEM_ID), -1) < Config.BUFF_PRICE)
  840. +
  841. + {
  842. + p.sendMessage("You don't have enough required items.");
  843. + return false;
  844. + }
  845. + p.getInventory().destroyItemByItemId("Buff", Config.BUFF_ITEM_ID, Config.BUFF_PRICE, p, null);
  846. + return true;
  847. + }
  848. +
  849. + public static void main(String[] args)
  850. + {
  851. + new SchemeBuffer(-1, SchemeBuffer.class.getSimpleName(), "Scheme Buffer");
  852. + }
  853. +
  854. + /**
  855. + * @return the _loaded
  856. + */
  857. + public static boolean isLoaded()
  858. + {
  859. + return _loaded;
  860. + }
  861. +
  862. + /**
  863. + * @param _loaded the _loaded to set
  864. + */
  865. + public static void setLoaded(boolean _loaded)
  866. + {
  867. + SchemeBuffer._loaded = _loaded;
  868. + }
  869. +}
  870. \ No newline at end of file
  871. #P Dream_GameServer
  872. Index: src/com/dream/Config.java
  873. ===================================================================
  874. --- src/com/dream/Config.java (revision 1821)
  875. +++ src/com/dream/Config.java (working copy)
  876. @@ -2126,6 +2126,15 @@
  877. public static int BANKING_GOLDBAR_PRICE;
  878. public static int BANKING_GOLDBAR_ID;
  879.  
  880. + public static boolean FREE_BUFFS;
  881. + public static int MAX_BUFFS_PER_SCHEME;
  882. + public static int MAX_SCHEMES;
  883. + public static int BUFF_PRICE;
  884. + public static int BUFF_ITEM_ID;
  885. + public static int BUFF_PRICE_CUSTOM;
  886. + public static int BUFF_CUSTOM_ITEM_ID;
  887. + public static String[] CUSTOM_BUFFS;
  888. +
  889. public static void loadCustomConfig()
  890. {
  891. try
  892. @@ -2190,6 +2199,15 @@
  893. L2Properties p = new L2Properties("./config/main/bosses.properties");
  894. EPIC_REQUIRE_QUEST = Boolean.parseBoolean(p.getProperty("QuestRequired", "true"));
  895.  
  896. + FREE_BUFFS = Boolean.parseBoolean(customSettings.getProperty("FreeBuffs", "False"));
  897. + MAX_BUFFS_PER_SCHEME = Integer.parseInt(customSettings.getProperty("MaximumBuffs", "24"));
  898. + MAX_SCHEMES = Integer.parseInt(customSettings.getProperty("MaximumSchemes", "4"));
  899. + BUFF_PRICE = Integer.parseInt(customSettings.getProperty("BuffCost", "100000"));
  900. + BUFF_ITEM_ID = Integer.parseInt(customSettings.getProperty("BuffItemId", "57"));
  901. + CUSTOM_BUFFS = customSettings.getProperty("CustomBuffs", "0").split(";");
  902. + BUFF_CUSTOM_ITEM_ID = Integer.parseInt(customSettings.getProperty("CustomBuffItemId", "6673"));
  903. + BUFF_PRICE_CUSTOM = Integer.parseInt(customSettings.getProperty("CustomBuffCost", "100"));
  904. +
  905. }
  906. catch (Exception e)
  907. {
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement