Chrysis19 Posted July 21, 2013 Posted July 21, 2013 Hello today i am going to share a cool feature ! is about Rename NPC .. You can change the npc ID and the Item ID that you want to count on config . Restrictions: - The name must only contain alpha-numeric characters. - Maximum number of alpha-numeric characters: 16 - If the name already exists you have to choose onother name. - Minimum level on config that you can change Name. - You cannot use Space between the name else you have to choose onother name. Create a file on data/scripts/custom/RenameNPC/RenameNPC.java and Insert this : /* * Copyright (C) 2004-2013 L2J DataPack * * This file is part of L2J DataPack. * * L2J DataPack is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation, either version 3 of the License, or * (at your option) any later version. * * L2J DataPack is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU * General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program. If not, see <http://www.gnu.org/licenses/>. */ package custom.RenameNPC; import com.l2jserver.Config; import com.l2jserver.gameserver.communitybbs.Manager.RegionBBSManager; import com.l2jserver.gameserver.datatables.CharNameTable; import com.l2jserver.gameserver.datatables.ItemTable; import com.l2jserver.gameserver.instancemanager.QuestManager; import com.l2jserver.gameserver.model.L2World; import com.l2jserver.gameserver.model.actor.L2Npc; import com.l2jserver.gameserver.model.actor.instance.L2PcInstance; import com.l2jserver.gameserver.model.quest.Quest; import com.l2jserver.gameserver.model.quest.QuestState; import com.l2jserver.gameserver.network.serverpackets.PartySmallWindowAll; import com.l2jserver.gameserver.network.serverpackets.PartySmallWindowDeleteAll; import com.l2jserver.gameserver.util.Util; /** * @author Invoke */ public class RenameNPC extends Quest { private final static int NPC = Config.RENAME_NPC_ID; public RenameNPC(int questId, String name, String descr) { super(questId, name, descr); addFirstTalkId(NPC); addStartNpc(NPC); addTalkId(NPC); } @Override public String onAdvEvent(String event, L2Npc npc, L2PcInstance player) { String htmltext = "New Name:<br1><edit var=\"newname\" width=120 height=18>"; String eventSplit[] = event.split(" "); QuestState st = player.getQuestState(getName()); if (eventSplit[0].equalsIgnoreCase("rename")) { st.getPlayer().setTarget(st.getPlayer()); if (eventSplit.length != 2) htmltext = "Enter a new name or remove the space between the names."; else if (st.getPlayer().getLevel() < Config.RENAME_NPC_MIN_LEVEL) htmltext = "Minimum Level is: " + String.valueOf(Config.RENAME_NPC_MIN_LEVEL); else if (validItemFee(st)) htmltext = "You do not have enough items for exchange."; else if (eventSplit[1].length() < 1 || eventSplit[1].length() > 16) htmltext = "Maximum number of characters: 16"; else if (!Util.isAlphaNumeric(eventSplit[1])) htmltext = "The name must only contain alpha-numeric characters."; else if (CharNameTable.getInstance().doesCharNameExist(eventSplit[1])) htmltext = "The name chosen is already in use. Choose another name."; else { try { L2World.getInstance().removeFromAllPlayers(player); player.setName(eventSplit[1]); player.store(); L2World.getInstance().addToAllPlayers(player); htmltext = "Your name has been changed successfully."; player.broadcastUserInfo(); String itemFeeSplit[] = Config.RENAME_NPC_FEE.split("\\;"); for (String anItemFeeSplit : itemFeeSplit) { String item[] = anItemFeeSplit.split("\\,"); st.takeItems(Integer.parseInt(item[0]), Integer.parseInt(item[1])); } if (player.isInParty()) { player.getParty().broadcastToPartyMembers(player, new PartySmallWindowDeleteAll()); for (L2PcInstance member : player.getParty().getPartyMembers()) { if (member != player) member.sendPacket(new PartySmallWindowAll(member, player.getParty())); } } if (player.getClan() != null) player.getClan().broadcastClanStatus(); RegionBBSManager.getInstance().changeCommunityBoard(); } catch (StringIndexOutOfBoundsException e) { htmltext = "Service unavailable!"; } } return (page(htmltext,1)); } return (page(htmltext,0)); } @Override public String onFirstTalk(L2Npc npc, L2PcInstance player) { String htmltext = ""; QuestState st = player.getQuestState(getName()); if (st == null) { Quest q = QuestManager.getInstance().getQuest(getName()); st = q.newQuestState(player); } htmltext = page("New Name:<br1><edit var=\"newname\" width=70 height=10>",0); return htmltext; } public String page(String msg, int t) { String htmltext = ""; htmltext += htmlPage("Title"); htmltext += "Hello I'm here to help you change your name.<br>" + "Enter your new name, but make sure you have items for exchange:<br1>"; String itemFeeSplit[] = Config.RENAME_NPC_FEE.split("\\;"); for (String anItemFeeSplit : itemFeeSplit) { String item[] = anItemFeeSplit.split("\\,"); htmltext += "<font color=\"LEVEL\">" + item[1] + " " + ItemTable.getInstance().getTemplate(Integer.parseInt(item[0])).getName() + "</font><br1>"; } if (t == 0) { htmltext += "<br><font color=\"339966\">" + msg + "</font>"; htmltext += "<br><center>" + button("Rename", "rename $newname", 70, 23) + "</center>"; } else { htmltext += "<br><font color=\"FF0000\">" + msg + "</font>"; htmltext += "<br><center>" + button("Back", "begin", 70, 23) + "</center>"; } htmltext += htmlPage("Footer"); return htmltext; } public Boolean validItemFee(QuestState st) { String itemFeeSplit[] = Config.RENAME_NPC_FEE.split("\\;"); for (String anItemFeeSplit : itemFeeSplit) { String item[] = anItemFeeSplit.split("\\,"); if (st.getQuestItemsCount(Integer.parseInt(item[0])) < Integer.parseInt(item[1])) return true; } return false; } public String htmlPage(String op) { String texto = ""; if (op.equals("Title")) { texto += "<html><body><title>Rename Manager</title><center><br>" + "<b><font color=ffcc00>Rename Manager Information</font></b>" + "<br><img src=\"L2UI_CH3.herotower_deco\" width=\"256\" height=\"32\"><br></center>"; } else if (op.equals("Footer")) { texto += "<br><center><img src=\"L2UI_CH3.herotower_deco\" width=\"256\" height=\"32\"><br>" + "<br><font color=\"303030\">---</font></center></body></html>"; } else { texto = "Not Found!"; } return texto; } public String button(String name, String event, int w, int h) { return "<button value=\"" + name + "\" action=\"bypass -h Quest RenameNPC " + event + "\" " + "width=\"" + Integer.toString(w) + "\" height=\"" + Integer.toString(h) + "\" " + "back=\"L2UI_ct1.button_df\" fore=\"L2UI_ct1.button_df\">"; } public String link(String name, String event, String color) { return "<a action=\"bypass -h Quest RenameNPC " + event + "\">" + "<font color=\"" + color + "\">" + name + "</font></a>"; } public static void main(String[] args) { new RenameNPC(-1, "RenameNPC", "custom"); } } Add this on Config.java : + public static int RENAME_NPC_ID; + public static int RENAME_NPC_MIN_LEVEL; + public static String RENAME_NPC_FEE; + RENAME_NPC_ID = Integer.parseInt(L2JModSettings.getProperty("RenameNpcID", "36602")); + RENAME_NPC_MIN_LEVEL = Integer.parseInt(L2JModSettings.getProperty("RenameNpcMinLevel", "40")); + RENAME_NPC_FEE = L2JModSettings.getProperty("RenameNpcFee", "57,250000"); Add this on gameserver/config/L2jmods.properties : #============================================================# # Rename Npc by Invoke #============================================================# # ID of Rename Npc # Prefer using this ID RenameNpcID = 36614 # Minimum level to use Rename Npc... RenameNpcMinLevel = 40 # ID of Rename Npc Fee... # Example: Adena = 57 , and 5000 is the item count needed # RenameNpcFee = 57,5000;5575,100 RenameNpcFee = 9143,5 Create an NPC insert this on your npc.sql 36614 32795 Rename Manager 1 By Invoke 1 LineageMonster4.guard_naia_a 20 23 35 male L2Npc 40 125 515 15 15 40 43 30 21 20 20 0 0 0 0 0 0 230 1 333 0 0 0 60 120 0 0 In order to make it run go to gamserver/scripts.cfg and find the Custom section and add this line : custom/RenameNPC/RenameNPC.java I hope you like it Credits to me (Invoke)
Recommended Posts
Create an account or sign in to comment
You need to be a member in order to leave a comment
Create an account
Sign up for a new account in our community. It's easy!
Register a new accountSign in
Already have an account? Sign in here.
Sign In Now