Noticias:

Debes de estar registrado para poder ver el contenido indicado. Registrate o Conectate

Menú Principal

Npc De-Level Manager

Iniciado por Swarlog, Ago 09, 2022, 01:09 AM

Tema anterior - Siguiente tema

Swarlog


Debes de estar registrado para poder ver el contenido indicado. Registrate o Conectate

package custom.DeLevelManager;
import com.l2jserver.gameserver.cache.HtmCache;
import com.l2jserver.gameserver.datatables.ItemTable;
import com.l2jserver.gameserver.model.L2Skill;
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.network.serverpackets.ExBrExtraUserInfo;
import com.l2jserver.gameserver.network.serverpackets.NpcHtmlMessage;
import com.l2jserver.gameserver.network.serverpackets.UserInfo;

/**
 * @author `Heroin
 */
public class DeLevelManager extends Quest
{
private static final int npcid = 36650; // npc id
private static final int MinLevel = 10; // Minimum Level, (e.g if you set 10, players wont be able to be level 9).
private static final int ItemConsumeId = 57; // Item Consume id
private int levels ; // Item Consume id
private static final int ItemConsumeNumEveryLevel = 100; // Item ItemConsumeNumEveryLevel
private static String htm = "data/scripts/custom/DeLevelManager/1.htm"; //html location
private static String ItemName = ItemTable.getInstance().createDummyItem(ItemConsumeId).getItemName();

public DeLevelManager(int questId, String name, String descr)
{
super(questId, name, descr);
addFirstTalkId(npcid);
addTalkId(npcid);
addStartNpc(npcid);
}

@Override
public String onAdvEvent(String event, L2Npc npc, L2PcInstance player)
{
if (event.startsWith("dlvl"))
{
Dlvl(event, npc, player, event);
}

return "";
}

private void Dlvl(String event, L2Npc npc, L2PcInstance player, String command)
{

try
{
String val = command.substring(5);
int pointer = Integer.parseInt(val);
int k = player.getLevel();
levels = k - pointer;
if (player.getInventory().getItemByItemId(ItemConsumeId) == null)
{
player.sendMessage("You don't have enough items!");
return;
}
if (val == null)
{
player.sendMessage("Something went wrong!");
return;
}
if (pointer < 10)
{
player.sendMessage("Incorrect Level Number!");
return;
}
if (pointer < MinLevel)
{
player.sendMessage("Incorrect Level Number!");
return;
}
if (player.getLevel() <= pointer)
{
player.sendMessage("Your level is already lower.");
return;
}
if (player.getInventory().getItemByItemId(ItemConsumeId).getCount() < ItemConsumeNumEveryLevel*levels)
{

player.sendMessage("You don't have enough items!");
return;
}
if (player.getInventory().getItemByItemId(ItemConsumeId).getCount() >= ItemConsumeNumEveryLevel)
{
k = player.getLevel();
final byte lvl = Byte.parseByte(pointer + "");
player.getStat().setLevel(lvl);
player.sendMessage("Congratulations! You are now "+pointer+" level.");
for(L2Skill sk : player.getAllSkills())
{
player.removeSkill(sk);
}
player.broadcastStatusUpdate();
player.broadcastUserInfo();
player.sendPacket(new UserInfo(player));
player.sendPacket(new ExBrExtraUserInfo(player));
player.giveAvailableAutoGetSkills();
player.giveAvailableSkills(true, true);
player.sendSkillList();
levels = k - pointer;
player.destroyItemByItemId("DlvlManager", ItemConsumeId, ItemConsumeNumEveryLevel*levels, player, true);
}
}
catch (Exception e)
{
player.sendMessage("Something went wrong try again.");
}
}



@Override
public String onFirstTalk(L2Npc npc, L2PcInstance player)
{
final int npcId = npc.getNpcId();
if (player.getQuestState(getName()) == null)
{
newQuestState(player);
}
if (npcId == npcid)
{
String html = HtmCache.getInstance().getHtm(player.getHtmlPrefix(), htm);
html = html.replaceAll("%player%", player.getName());
html = html.replaceAll("%itemname%", ItemName);
html = html.replaceAll("%price%", ""+ItemConsumeNumEveryLevel+"");

NpcHtmlMessage npcHtml = new NpcHtmlMessage(0);
npcHtml.setHtml(html);
player.sendPacket(npcHtml);
}
return "";
}

public static void main(final String[] args)
{
new DeLevelManager(-1, DeLevelManager.class.getSimpleName(), "custom");
System.out.println("De Level Manager by `Heroin has been loaded successfully!");
}
}

1.htm

<html>
<title>%player%</title>
<body><center>
<img src="L2UI_CH3.herotower_deco" width=256 height=32></center><br>
Hello there, if you want to low your current level, you came to right place!<br>
You have just to choose the <font color=FF0000>number</font> of level you would like to be.<br>
In exchange, i am going to take you <font color=LEVEL>%price% %itemname%</font> for <font color=LEVEL>each level
</font> you decrease.<br>
Remember: You can't choose a number higher than your current level.<br>

<table width=270><tr>
<td><button value="Change my level to: " action="bypass -h Quest DeLevelManager dlvl $lv" width=180 height=21 back="L2UI_CT1.Button_DF_Down" fore="L2UI_CT1.Button_DF"></td>
<td><edit var="lv" width=50></td>
</tr></table>


<br><br><br><br>
<center>
<img src="L2UI_CH3.herotower_deco" width=256 height=32></center>
</body></html>



Variables a modificar:

private static final int npcid = 36650; // npc id
private static final int MinLevel = 10; // Minimum Level, (e.g if you set 10, players wont be able to be level 9).
private static final int ItemConsumeId = 57; // Item Consume id
private int levels ; // Item Consume id
private static final int ItemConsumeNumEveryLevel = 100; // Item ItemConsumeNumEveryLevel
private static String htm = "data/scripts/custom/DeLevelManager/1.htm"; //html location