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)