Advertisement
Guest User

Services

a guest
Oct 28th, 2015
357
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 22.61 KB | None | 0 0
  1. /*
  2. * Copyright (C) 2004-2013 L2J DataPack
  3. *
  4. * This file is part of L2J DataPack.
  5. *
  6. * L2J DataPack is free software: you can redistribute it and/or modify
  7. * it under the terms of the GNU General Public License as published by
  8. * the Free Software Foundation, either version 3 of the License, or
  9. * (at your option) any later version.
  10. *
  11. * L2J DataPack is distributed in the hope that it will be useful,
  12. * but WITHOUT ANY WARRANTY; without even the implied warranty of
  13. * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
  14. * General Public License for more details.
  15. *
  16. * You should have received a copy of the GNU General Public License
  17. * along with this program. If not, see <http://www.gnu.org/licenses/>.
  18. */
  19. package custom.Services;
  20.  
  21. import java.io.BufferedWriter;
  22. import java.io.File;
  23. import java.io.FileWriter;
  24. import java.sql.Connection;
  25. import java.sql.PreparedStatement;
  26. import java.util.logging.Logger;
  27.  
  28. import com.l2jserver.commons.database.pool.impl.ConnectionFactory;
  29. import com.l2jserver.gameserver.data.sql.impl.CharNameTable;
  30. import com.l2jserver.gameserver.data.sql.impl.ClanTable;
  31. import com.l2jserver.gameserver.model.actor.L2Npc;
  32. import com.l2jserver.gameserver.model.actor.instance.L2PcInstance;
  33. import com.l2jserver.gameserver.model.olympiad.OlympiadManager;
  34. import com.l2jserver.gameserver.model.quest.Quest;
  35. import com.l2jserver.gameserver.model.quest.QuestState;
  36. import com.l2jserver.gameserver.network.serverpackets.MagicSkillUse;
  37.  
  38. /**
  39. * @author Colet
  40. */
  41. public class Services extends Quest
  42. {
  43. public static final Logger _log = Logger.getLogger(Services.class.getName());
  44.  
  45. // NPC Id
  46. int servicesNpc = 36608;
  47.  
  48. // Noble Items
  49. int nobleItemId = 57;
  50. long nobleItemCount = 1;
  51.  
  52. // PK Reduce Items
  53. int pkReduceItemId = 57;
  54. long pkReduceItemCount = 1000;
  55.  
  56. // Change Name Items
  57. int changeNameItemId = 57;
  58. long changeNameItemCount = 1000000;
  59. boolean logNameChanges = true;
  60.  
  61. // Change Clan Name Items
  62. int changeClanNameItemId = 57;
  63. long changeClanNameItemCount = 50000;
  64. boolean logClanNameChanges = true;
  65. int clanMinLevel = 5;
  66.  
  67. // Clan Level Items
  68. int[] clanLevelItemsId =
  69. {
  70. 57, // Level 5 to 6
  71. 57, // Level 6 to 7
  72. 57, // Level 7 to 8
  73. 57, // Level 8 to 9
  74. 57, // Level 9 to 10
  75. 57 // Level 10 to 11
  76. };
  77.  
  78. long[] clanLevelItemsCount =
  79. {
  80. 6, // Level 5 to 6
  81. 7, // Level 6 to 7
  82. 8, // Level 7 to 8
  83. 9, // Level 8 to 9
  84. 10, // Level 9 to 10
  85. 11 // Level 10 to 11
  86. };
  87.  
  88. // Clan Reputation Points Items
  89. int clanReputationPointsItemId = 57;
  90. long clanReputationPointsItemCount = 5;
  91.  
  92. // Change Gender Items
  93. int changeGenderItemId = 57;
  94. long changeGenderItemCount = 50;
  95.  
  96. public Services(int questId, String name, String descr)
  97. {
  98. super(questId, name, descr);
  99.  
  100. addStartNpc(servicesNpc);
  101. addFirstTalkId(servicesNpc);
  102. addTalkId(servicesNpc);
  103. }
  104.  
  105. public static void main(String[] args)
  106. {
  107. new Services(-1, Services.class.getSimpleName(), "custom");
  108. }
  109.  
  110. public String onFirstTalk(L2Npc npc, L2PcInstance player)
  111. {
  112. if (player.getQuestState(getName()) == null)
  113. {
  114. newQuestState(player);
  115. }
  116. else if (player.isInCombat())
  117. {
  118. return "Services-Blocked.htm";
  119. }
  120. else if (player.getPvpFlag() == 1)
  121. {
  122. return "Services-Blocked.htm";
  123. }
  124. else if (player.getKarma() != 0)
  125. {
  126. return "Services-Blocked.htm";
  127. }
  128. else if (OlympiadManager.getInstance().isRegistered(player))
  129. {
  130. return "Services-Blocked.htm";
  131. }
  132.  
  133. return "Services.htm";
  134. }
  135.  
  136. public String onAdvEvent(String event, L2Npc npc, L2PcInstance player)
  137. {
  138. String htmlText = event;
  139. QuestState st = player.getQuestState(getName());
  140.  
  141. if (event.equals("setNoble"))
  142. {
  143. if (!player.isNoble())
  144. {
  145. if (st.getQuestItemsCount(nobleItemId) >= nobleItemCount)
  146. {
  147. st.takeItems(nobleItemId, nobleItemCount);
  148. player.setNoble(true);
  149. player.setTarget(player);
  150. player.broadcastPacket(new MagicSkillUse(player, 5103, 1, 1000, 0));
  151. player.broadcastUserInfo();
  152. return "NoblesseServices-Success.htm";
  153. }
  154. else
  155. {
  156. return "NoblesseServices-NoItems.htm";
  157. }
  158. }
  159. else
  160. {
  161. return "NoblesseServices-AlredyNoble.htm";
  162. }
  163. }
  164. else if (event.equals("levelUpClan"))
  165. {
  166. if (!player.isClanLeader())
  167. {
  168. return "ClanLevelUp-NoLeader.htm";
  169. }
  170. else
  171. {
  172. if (player.getClan().getLevel() == 11)
  173. {
  174. return "ClanLevelUp-MaxLevel.htm";
  175. }
  176. else
  177. {
  178. if (((player.getClan().getLevel() <= 1) || (player.getClan().getLevel() == 2) || (player.getClan().getLevel() == 3) || (player.getClan().getLevel() == 4)))
  179. {
  180. player.getClan().setLevel(player.getClan().getLevel() + 1);
  181. player.getClan().broadcastClanStatus();
  182. player.sendMessage("Your clan is now level " + player.getClan().getLevel() + ".");
  183. player.setTarget(player);
  184. player.broadcastPacket(new MagicSkillUse(player, 5103, 1, 1000, 0));
  185. return "ClanLevelUp.htm";
  186. }
  187. else if (player.getClan().getLevel() == 5)
  188. {
  189. if (st.getQuestItemsCount(clanLevelItemsId[0]) >= clanLevelItemsCount[0])
  190. {
  191. st.takeItems(clanLevelItemsId[0], clanLevelItemsCount[0]);
  192. player.getClan().setLevel(player.getClan().getLevel() + 1);
  193. player.getClan().broadcastClanStatus();
  194. player.sendMessage("Your clan is now level " + player.getClan().getLevel() + ".");
  195. player.setTarget(player);
  196. player.broadcastPacket(new MagicSkillUse(player, 5103, 1, 1000, 0));
  197. return "ClanLevelUp.htm";
  198. }
  199. else
  200. {
  201. return "ClanLevelUp-NoItems.htm";
  202. }
  203. }
  204. else if (player.getClan().getLevel() == 6)
  205. {
  206. if (st.getQuestItemsCount(clanLevelItemsId[1]) >= clanLevelItemsCount[1])
  207. {
  208. st.takeItems(clanLevelItemsId[1], clanLevelItemsCount[1]);
  209. player.getClan().setLevel(player.getClan().getLevel() + 1);
  210. player.getClan().broadcastClanStatus();
  211. player.sendMessage("Your clan is now level " + player.getClan().getLevel() + ".");
  212. player.setTarget(player);
  213. player.broadcastPacket(new MagicSkillUse(player, 5103, 1, 1000, 0));
  214. return "ClanLevelUp.htm";
  215. }
  216. else
  217. {
  218. return "ClanLevelUp-NoItems.htm";
  219. }
  220. }
  221. else if (player.getClan().getLevel() == 7)
  222. {
  223. if (st.getQuestItemsCount(clanLevelItemsId[2]) >= clanLevelItemsCount[2])
  224. {
  225. st.takeItems(clanLevelItemsId[2], clanLevelItemsCount[2]);
  226. player.getClan().setLevel(player.getClan().getLevel() + 1);
  227. player.getClan().broadcastClanStatus();
  228. player.sendMessage("Your clan is now level " + player.getClan().getLevel() + ".");
  229. player.setTarget(player);
  230. player.broadcastPacket(new MagicSkillUse(player, 5103, 1, 1000, 0));
  231. return "ClanLevelUp.htm";
  232. }
  233. else
  234. {
  235. return "ClanLevelUp-NoItems.htm";
  236. }
  237. }
  238. else if (player.getClan().getLevel() == 8)
  239. {
  240. if (st.getQuestItemsCount(clanLevelItemsId[3]) >= clanLevelItemsCount[3])
  241. {
  242. st.takeItems(clanLevelItemsId[3], clanLevelItemsCount[3]);
  243. player.getClan().setLevel(player.getClan().getLevel() + 1);
  244. player.getClan().broadcastClanStatus();
  245. player.sendMessage("Your clan is now level " + player.getClan().getLevel() + ".");
  246. player.setTarget(player);
  247. player.broadcastPacket(new MagicSkillUse(player, 5103, 1, 1000, 0));
  248. return "ClanLevelUp.htm";
  249. }
  250. else
  251. {
  252. return "ClanLevelUp-NoItems.htm";
  253. }
  254. }
  255. else if (player.getClan().getLevel() == 9)
  256. {
  257. if (st.getQuestItemsCount(clanLevelItemsId[4]) >= clanLevelItemsCount[4])
  258. {
  259. st.takeItems(clanLevelItemsId[4], clanLevelItemsCount[4]);
  260. player.getClan().setLevel(player.getClan().getLevel() + 1);
  261. player.getClan().broadcastClanStatus();
  262. player.sendMessage("Your clan is now level " + player.getClan().getLevel() + ".");
  263. player.setTarget(player);
  264. player.broadcastPacket(new MagicSkillUse(player, 5103, 1, 1000, 0));
  265. return "ClanLevelUp.htm";
  266. }
  267. else
  268. {
  269. return "ClanLevelUp-NoItems.htm";
  270. }
  271. }
  272. else if (player.getClan().getLevel() == 10)
  273. {
  274. if (st.getQuestItemsCount(clanLevelItemsId[5]) >= clanLevelItemsCount[5])
  275. {
  276. st.takeItems(clanLevelItemsId[5], clanLevelItemsCount[5]);
  277. player.getClan().setLevel(player.getClan().getLevel() + 1);
  278. player.getClan().broadcastClanStatus();
  279. player.sendMessage("Your clan is now level " + player.getClan().getLevel() + ".");
  280. player.setTarget(player);
  281. player.broadcastPacket(new MagicSkillUse(player, 5103, 1, 1000, 0));
  282. return "ClanLevelUp.htm";
  283. }
  284. else
  285. {
  286. return "ClanLevelUp-NoItems.htm";
  287. }
  288. }
  289.  
  290. try (Connection con = ConnectionFactory.getInstance().getConnection();
  291. PreparedStatement statement = con.prepareStatement("UPDATE clan_data SET clan_level=? WHERE clan_id=?"))
  292. {
  293. statement.setInt(1, player.getClan().getLevel());
  294. statement.setInt(2, player.getClanId());
  295. statement.execute();
  296. statement.close();
  297. }
  298. catch (Exception e)
  299. {
  300. _log.info("Error updating clan level for player " + player.getName() + ". Error: " + e);
  301. }
  302.  
  303. player.getClan().broadcastClanStatus();
  304. return "ClanLevelUp.htm";
  305. }
  306. }
  307. }
  308. else if (event.equals("changeGender"))
  309. {
  310. if (st.getQuestItemsCount(changeGenderItemId) >= changeGenderItemCount)
  311. {
  312. st.takeItems(changeGenderItemId, changeGenderItemCount);
  313. player.getAppearance().setSex(player.getAppearance().getSex() ? false : true);
  314. player.setTarget(player);
  315. player.broadcastPacket(new MagicSkillUse(player, 5103, 1, 1000, 0));
  316. player.broadcastUserInfo();
  317. return "ChangeGender-Success.htm";
  318. }
  319. else
  320. {
  321. return "ChangeGender-NoItems.htm";
  322. }
  323. }
  324. else if (event.startsWith("changeName"))
  325. {
  326. try
  327. {
  328. String newName = event.substring(11);
  329.  
  330. if (st.getQuestItemsCount(changeNameItemId) >= changeNameItemCount)
  331. {
  332. if (newName == null)
  333. {
  334. return "ChangeName.htm";
  335. }
  336. else
  337. {
  338. if (!newName.matches("^[a-zA-Z0-9]+$"))
  339. {
  340. player.sendMessage("Incorrect name. Please try again.");
  341. return "ChangeName.htm";
  342. }
  343. else if (newName.equals(player.getName()))
  344. {
  345. player.sendMessage("Please, choose a different name.");
  346. return "ChangeName.htm";
  347. }
  348. else if (CharNameTable.getInstance().doesCharNameExist(newName))
  349. {
  350. player.sendMessage("The name " + newName + " already exists.");
  351. return "ChangeName.htm";
  352. }
  353. else
  354. {
  355. if (logNameChanges)
  356. {
  357. String fileName = "log/Services/Name Change - " + player.getName() + ".txt";
  358. new File(fileName);
  359. FileWriter fileText = new FileWriter(fileName);
  360. BufferedWriter fileContent = new BufferedWriter(fileText);
  361. fileContent.write("Character name change info:\r\n\r\nCharacter original name: " + player.getName() + "\r\nCharacter new name: " + newName);
  362. fileContent.close();
  363. }
  364.  
  365. st.takeItems(changeNameItemId, changeNameItemCount);
  366. player.setName(newName);
  367. player.store(true);
  368. player.sendMessage("Your new character name is " + newName);
  369. player.broadcastUserInfo();
  370. return "ChangeName-Success.htm";
  371. }
  372. }
  373. }
  374. else
  375. {
  376. return "ChangeName-NoItems.htm";
  377. }
  378. }
  379. catch (Exception e)
  380. {
  381. player.sendMessage("Please, insert a correct name.");
  382. return "ChangeName.htm";
  383. }
  384. }
  385. else if (event.startsWith("reducePks"))
  386. {
  387. try
  388. {
  389. String pkReduceString = event.substring(10);
  390. int pkReduceCount = Integer.parseInt(pkReduceString);
  391.  
  392. if (player.getPkKills() != 0)
  393. {
  394. if (pkReduceCount == 0)
  395. {
  396. player.sendMessage("Please, put a higher value.");
  397. return "PkServices.htm";
  398. }
  399. else
  400. {
  401. if (st.getQuestItemsCount(pkReduceItemId) >= pkReduceItemCount)
  402. {
  403. st.takeItems(pkReduceItemId, pkReduceItemCount * pkReduceCount);
  404. player.setPkKills(player.getPkKills() - pkReduceCount);
  405. player.sendMessage("You have successfuly cleaned " + pkReduceCount + " PKs.");
  406. player.broadcastUserInfo();
  407. return "PkServices-Success.htm";
  408. }
  409. else
  410. {
  411. return "PkServices-NoItems.htm";
  412. }
  413. }
  414. }
  415. else
  416. {
  417. return "PkServices-NoPks.htm";
  418. }
  419. }
  420. catch (Exception e)
  421. {
  422. player.sendMessage("Incorrect value. Please try again.");
  423. return "PkServices.htm";
  424. }
  425. }
  426. else if (event.startsWith("changeClanName"))
  427. {
  428. if (player.getClan() == null)
  429. {
  430. return "ChangeClanName-NoClan.htm";
  431. }
  432. else
  433. {
  434. try
  435. {
  436. String newClanName = event.substring(15);
  437.  
  438. if (st.getQuestItemsCount(changeClanNameItemId) >= changeClanNameItemCount)
  439. {
  440. if (newClanName == null)
  441. {
  442. return "ChangeClanName.htm";
  443. }
  444. else
  445. {
  446. if (!player.isClanLeader())
  447. {
  448. player.sendMessage("Only the clan leader can change the clan name.");
  449. return "ChangeClanName.htm";
  450. }
  451. else if (player.getClan().getLevel() < clanMinLevel)
  452. {
  453. player.sendMessage("Your clan must be at least level " + clanMinLevel + " to change the name.");
  454. return "ChangeClanName.htm";
  455. }
  456. else if (!newClanName.matches("^[a-zA-Z0-9]+$"))
  457. {
  458. player.sendMessage("Incorrect name. Please try again.");
  459. return "ChangeClanName.htm";
  460. }
  461. else if (newClanName.equals(player.getClan().getName()))
  462. {
  463. player.sendMessage("Please, choose a different name.");
  464. return "ChangeClanName.htm";
  465. }
  466. else if (null != ClanTable.getInstance().getClanByName(newClanName))
  467. {
  468. player.sendMessage("The name " + newClanName + " already exists.");
  469. return "ChangeClanName.htm";
  470. }
  471. else
  472. {
  473. if (logClanNameChanges)
  474. {
  475. String fileName = "log/Services/Clan Name Change - " + player.getClan().getName() + ".txt";
  476. new File(fileName);
  477. FileWriter fileText = new FileWriter(fileName);
  478. BufferedWriter fileContent = new BufferedWriter(fileText);
  479. fileContent.write("Clan name change info:\r\n\r\nClan original name: " + player.getClan().getName() + "\r\nClan new name: " + newClanName + "\r\nClan Leader: " + player.getName());
  480. fileContent.close();
  481. }
  482.  
  483. st.takeItems(changeNameItemId, changeNameItemCount);
  484. player.getClan().setName(newClanName);
  485.  
  486. try (Connection con = ConnectionFactory.getInstance().getConnection();
  487. PreparedStatement statement = con.prepareStatement("UPDATE clan_data SET clan_name=? WHERE clan_id=?"))
  488. {
  489. statement.setString(1, newClanName);
  490. statement.setInt(2, player.getClanId());
  491. statement.execute();
  492. statement.close();
  493. }
  494. catch (Exception e)
  495. {
  496. _log.info("Error updating clan name for player " + player.getName() + ". Error: " + e);
  497. }
  498.  
  499. player.sendMessage("Your new clan name is " + newClanName);
  500. player.getClan().broadcastClanStatus();
  501. return "ChangeClanName-Success.htm";
  502. }
  503. }
  504. }
  505. else
  506. {
  507. return "ChangeClanName-NoItems.htm";
  508. }
  509. }
  510. catch (Exception e)
  511. {
  512. player.sendMessage("Please, insert a correct name.");
  513. return "ChangeClanName.htm";
  514. }
  515. }
  516. }
  517. else if (event.startsWith("setReputationPoints"))
  518. {
  519. try
  520. {
  521. String reputationPointsString = event.substring(20);
  522. int reputationPointsCount = Integer.parseInt(reputationPointsString);
  523.  
  524. if (player.getClan() == null)
  525. {
  526. return "ClanReputationPoints-NoClan.htm";
  527. }
  528. else if (!player.isClanLeader())
  529. {
  530. return "ClanReputationPoints-NoLeader.htm";
  531. }
  532. else
  533. {
  534. if (reputationPointsCount == 0)
  535. {
  536. player.sendMessage("Please, put a higher value.");
  537. return "ClanReputationPoints.htm";
  538. }
  539. else
  540. {
  541. if (st.getQuestItemsCount(clanReputationPointsItemId) >= clanReputationPointsItemCount)
  542. {
  543. st.takeItems(clanReputationPointsItemId, clanReputationPointsItemCount * reputationPointsCount);
  544. player.getClan().addReputationScore(player.getClan().getReputationScore() + reputationPointsCount, true);
  545. player.getClan().broadcastClanStatus();
  546. return "ClanReputationPoints-Success.htm";
  547. }
  548. else
  549. {
  550. return "ClanReputationPoints-NoItems.htm";
  551. }
  552. }
  553. }
  554. }
  555. catch (Exception e)
  556. {
  557. player.sendMessage("Incorrect value. Please try again.");
  558. return "ClanReputationPoints.htm";
  559. }
  560. }
  561.  
  562. return htmlText;
  563. }
  564. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement