Advertisement
xSweeTs

Services

Dec 30th, 2016 (edited)
213
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Java 9.10 KB | None | 0 0
  1. /*
  2.  * This program is free software: you can redistribute it and/or modify it under
  3.  * the terms of the GNU General Public License as published by the Free Software
  4.  * Foundation, either version 3 of the License, or (at your option) any later
  5.  * version.
  6.  *
  7.  * This program is distributed in the hope that it will be useful, but WITHOUT
  8.  * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
  9.  * FOR A PARTICULAR PURPOSE. See the GNU General Public License for more
  10.  * details.
  11.  *
  12.  * You should have received a copy of the GNU General Public License along with
  13.  * this program. If not, see <http://www.gnu.org/licenses/>.
  14.  */
  15. package net.sf.l2j.gameserver.scripting.scripts.custom;
  16.  
  17. import java.sql.Connection;
  18. import java.sql.PreparedStatement;
  19.  
  20. import net.sf.l2j.commons.lang.StringUtil;
  21.  
  22. import net.sf.l2j.L2DatabaseFactory;
  23. import net.sf.l2j.gameserver.datatables.CharNameTable;
  24. import net.sf.l2j.gameserver.datatables.ClanTable;
  25. import net.sf.l2j.gameserver.model.actor.L2Npc;
  26. import net.sf.l2j.gameserver.model.actor.instance.L2PcInstance;
  27. import net.sf.l2j.gameserver.model.base.Sex;
  28. import net.sf.l2j.gameserver.model.olympiad.OlympiadManager;
  29. import net.sf.l2j.gameserver.network.SystemMessageId;
  30. import net.sf.l2j.gameserver.network.serverpackets.MagicSkillUse;
  31. import net.sf.l2j.gameserver.network.serverpackets.SystemMessage;
  32. import net.sf.l2j.gameserver.scripting.Quest;
  33. import net.sf.l2j.gameserver.scripting.QuestState;
  34.  
  35. public class Services extends Quest
  36. {
  37.     private static final int NPC_ID = 50008;
  38.    
  39.     // Noblesse Status
  40.     private static final int NOBL_ID = 57;
  41.     private static final int NOBL_AMOUNT = 1;
  42.    
  43.     // PK Reduce
  44.     private static final int PK_ID = 57;
  45.     private static final int PK_AMOUNT = 1;
  46.    
  47.     // Character Name
  48.     private static final int NAME_ID = 57;
  49.     private static final int NAME_AMOUNT = 1;
  50.    
  51.     // Clan Name
  52.     private static final int CLAN_NAME_ID = 57;
  53.     private static final int CLAN_NAME_AMOUNT = 1;
  54.    
  55.     // Clan Level
  56.     private static final int CLAN_LVL_ID = 57;
  57.     private static final int CLAN_LVL_AMOUNT = 1;
  58.    
  59.     // Clan Reputation Points
  60.     private static final int CLAN_REP_ID = 57;
  61.     private static final int CLAN_REP_AMOUNT = 1;
  62.    
  63.     // Gender
  64.     private static final int GENDER_ID = 57;
  65.     private static final int GENDER_AMOUNT = 1;
  66.    
  67.     public Services()
  68.     {
  69.         super(-1, "custom");
  70.        
  71.         addStartNpc(NPC_ID);
  72.         addTalkId(NPC_ID);
  73.         addFirstTalkId(NPC_ID);
  74.     }
  75.    
  76.     @Override
  77.     public String onFirstTalk(L2Npc npc, L2PcInstance player)
  78.     {
  79.         QuestState st = player.getQuestState(getName());
  80.         if (st == null)
  81.             st = newQuestState(player);
  82.        
  83.         return OlympiadManager.getInstance().isRegistered(player) ? "Services-Blocked.htm" : "Services.htm";
  84.     }
  85.    
  86.     @Override
  87.     public String onAdvEvent(String event, L2Npc npc, L2PcInstance player)
  88.     {
  89.         String htmlText = event;
  90.         QuestState st = player.getQuestState(getName());
  91.        
  92.         if (event.equals("setNoble"))
  93.         {
  94.             if (!player.isNoble())
  95.             {
  96.                 if (st.getQuestItemsCount(NOBL_ID) >= NOBL_AMOUNT)
  97.                 {
  98.                     st.takeItems(NOBL_ID, NOBL_AMOUNT);
  99.                     player.setNoble(true, true);
  100.                     player.broadcastPacket(new MagicSkillUse(player, player, 5103, 1, 1, 0));
  101.                     htmlText = "NoblesseServices-Success.htm";
  102.                 }
  103.                 else
  104.                     htmlText = "NoblesseServices-NoItems.htm";
  105.             }
  106.             else
  107.                 htmlText = "NoblesseServices-AlredyNoble.htm";
  108.         }
  109.         else if (event.equals("levelUpClan"))
  110.         {
  111.             if (player.isClanLeader())
  112.             {
  113.                 if (player.getClan().getLevel() < 5)
  114.                 {
  115.                     player.getClan().changeLevel(5);
  116.                     player.getClan().broadcastClanStatus();
  117.                     player.broadcastPacket(new MagicSkillUse(player, player, 5103, 1, 0, 0));
  118.                     htmlText = "ClanLevelUp.htm";
  119.                 }
  120.                 else if (player.getClan().getLevel() < 8)
  121.                 {
  122.                     if (st.getQuestItemsCount(CLAN_LVL_ID) >= CLAN_LVL_AMOUNT)
  123.                     {
  124.                         st.takeItems(CLAN_LVL_ID, CLAN_LVL_AMOUNT);
  125.                         player.getClan().changeLevel(player.getClan().getLevel() + 1);
  126.                         player.getClan().broadcastClanStatus();
  127.                         player.broadcastPacket(new MagicSkillUse(player, player, 5103, 1, 0, 0));
  128.                         htmlText = "ClanLevelUp.htm";
  129.                     }
  130.                     else
  131.                         htmlText = "ClanLevelUp-NoItems.htm";
  132.                 }
  133.                 else
  134.                     htmlText = "ClanLevelUp-MaxLevel.htm";
  135.             }
  136.             else
  137.                 htmlText = "ClanLevelUp-NoLeader.htm";
  138.         }
  139.         else if (event.equals("changeGender"))
  140.         {
  141.             if (st.getQuestItemsCount(GENDER_ID) >= GENDER_AMOUNT)
  142.             {
  143.                 st.takeItems(GENDER_ID, GENDER_AMOUNT);
  144.                 player.getAppearance().setSex(player.getAppearance().getSex() == Sex.MALE ? Sex.FEMALE : Sex.MALE);
  145.                 player.sendMessage("Your gender has been changed.");
  146.                 player.broadcastUserInfo();
  147.                 player.decayMe();
  148.                 player.spawnMe();
  149.                 player.broadcastPacket(new MagicSkillUse(player, player, 5103, 1, 1, 0));
  150.                 htmlText = "ChangeGender-Success.htm";
  151.             }
  152.             else
  153.                 htmlText = "ChangeGender-NoItems.htm";
  154.         }
  155.         else if (event.startsWith("changeName"))
  156.         {
  157.             try
  158.             {
  159.                 String newName = event.substring(11);
  160.                 if (!StringUtil.isValidPlayerName(newName))
  161.                 {
  162.                     player.sendPacket(SystemMessageId.NAMING_CHARNAME_UP_TO_16CHARS);
  163.                     return null;
  164.                 }
  165.                 else if (CharNameTable.getInstance().getPlayerObjectId(newName) > 0)
  166.                 {
  167.                     player.sendPacket(SystemMessageId.NAMING_NAME_ALREADY_EXISTS);
  168.                     return null;
  169.                 }
  170.                
  171.                 if (st.getQuestItemsCount(NAME_ID) >= NAME_AMOUNT)
  172.                 {
  173.                     st.takeItems(NAME_ID, NAME_AMOUNT);
  174.                     player.setName(newName);
  175.                     CharNameTable.getInstance().updatePlayerData(player, false);
  176.                     player.getClan().broadcastClanStatus();
  177.                     player.broadcastUserInfo();
  178.                     player.store();
  179.                     htmlText = "ChangeName-Success.htm";
  180.                 }
  181.                 else
  182.                     htmlText = "ChangeName-NoItems.htm";
  183.             }
  184.             catch (Exception e)
  185.             {
  186.                 player.sendPacket(SystemMessageId.NAMING_CHARNAME_UP_TO_16CHARS);
  187.             }
  188.         }
  189.         else if (event.startsWith("reducePks"))
  190.         {
  191.             try
  192.             {
  193.                 final int amount = Integer.parseInt(event.substring(10));
  194.                
  195.                 if (amount <= 0 || amount > player.getPkKills())
  196.                 {
  197.                     player.sendMessage("Incorrect value. Please try again.");
  198.                     return null;
  199.                 }
  200.                
  201.                 if (st.getQuestItemsCount(PK_ID) >= PK_AMOUNT * amount)
  202.                 {
  203.                     st.takeItems(PK_ID, PK_AMOUNT * amount);
  204.                     player.setPkKills(player.getPkKills() - amount);
  205.                     player.sendMessage("You have successfuly cleaned " + amount + " PKs.");
  206.                     player.broadcastUserInfo();
  207.                     htmlText = "PkServices-Success.htm";
  208.                 }
  209.                 else
  210.                     htmlText = "PkServices-NoItems.htm";
  211.             }
  212.             catch (Exception e)
  213.             {
  214.                 player.sendMessage("Incorrect value. Please try again.");
  215.             }
  216.         }
  217.         else if (event.startsWith("changeClanName"))
  218.         {
  219.             if (player.isClanLeader())
  220.             {
  221.                 try
  222.                 {
  223.                     String clanName = event.substring(15);
  224.                    
  225.                     if (st.getQuestItemsCount(CLAN_NAME_ID) >= CLAN_NAME_AMOUNT)
  226.                     {
  227.                         if (!StringUtil.isAlphaNumeric(clanName))
  228.                         {
  229.                             player.sendPacket(SystemMessageId.CLAN_NAME_INVALID);
  230.                             return null;
  231.                         }
  232.                         else if (clanName.length() < 2 || clanName.length() > 16)
  233.                         {
  234.                             player.sendPacket(SystemMessageId.CLAN_NAME_LENGTH_INCORRECT);
  235.                             return null;
  236.                         }
  237.                         else if (ClanTable.getInstance().getClanByName(clanName) != null)
  238.                         {
  239.                             player.sendPacket(SystemMessage.getSystemMessage(SystemMessageId.S1_ALREADY_EXISTS).addString(clanName));
  240.                             return null;
  241.                         }
  242.                        
  243.                         st.takeItems(CLAN_NAME_ID, CLAN_NAME_AMOUNT);
  244.                         player.getClan().setName(clanName);
  245.                        
  246.                         try (Connection con = L2DatabaseFactory.getInstance().getConnection(); PreparedStatement statement = con.prepareStatement("UPDATE clan_data SET clan_name=? WHERE clan_id=?"))
  247.                         {
  248.                             statement.setString(1, clanName);
  249.                             statement.setInt(2, player.getClan().getClanId());
  250.                             statement.execute();
  251.                         }
  252.                         catch (Exception e)
  253.                         {
  254.                             _log.info("Error updating clan name for player " + player.getName() + ". Error: " + e);
  255.                         }
  256.                        
  257.                         player.getClan().broadcastClanStatus();
  258.                         htmlText = "ChangeClanName-Success.htm";
  259.                     }
  260.                     else
  261.                         htmlText = "ChangeClanName-NoItems.htm";
  262.                 }
  263.                 catch (Exception e)
  264.                 {
  265.                     player.sendPacket(SystemMessageId.CLAN_NAME_INVALID);
  266.                 }
  267.             }
  268.             else
  269.                 htmlText = "ChangeClanName-NoLeader.htm";
  270.         }
  271.         else if (event.startsWith("setReputationPoints"))
  272.         {
  273.             try
  274.             {
  275.                 final int points = Integer.parseInt(event.substring(20));
  276.                 if (player.isClanLeader())
  277.                 {
  278.                     if (points <= 0)
  279.                     {
  280.                         player.sendMessage("Please, put a higher value.");
  281.                         htmlText = "ClanReputationPoints.htm";
  282.                     }
  283.                    
  284.                     if (st.getQuestItemsCount(CLAN_REP_ID) >= CLAN_REP_AMOUNT * points)
  285.                     {
  286.                         st.takeItems(CLAN_REP_ID, CLAN_REP_AMOUNT * points);
  287.                         player.getClan().addReputationScore(points);
  288.                         player.getClan().broadcastClanStatus();
  289.                         htmlText = "ClanReputationPoints-Success.htm";
  290.                     }
  291.                     else
  292.                         htmlText = "ClanReputationPoints-NoItems.htm";
  293.                 }
  294.                 else
  295.                     htmlText = "ClanReputationPoints-NoLeader.htm";
  296.             }
  297.             catch (Exception e)
  298.             {
  299.                 player.sendMessage("Incorrect value. Please try again.");
  300.             }
  301.         }
  302.         return htmlText;
  303.     }
  304. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement