HYDRA Project
Heir
Понедельник ждите, написал же Дизер.Ну что там ? В этом году дождемся ?))
Понедельник ждите, написал же Дизер.Ну что там ? В этом году дождемся ?))
package services;
import l2.commons.threading.RunnableImpl;
import l2.gameserver.ThreadPoolManager;
import l2.gameserver.data.xml.holder.ItemHolder;
import l2.gameserver.model.Player;
import l2.gameserver.model.items.Inventory;
import l2.gameserver.network.l2.c2s.RequestPreviewItem;
import l2.gameserver.network.l2.components.SystemMsg;
import l2.gameserver.network.l2.s2c.ShopPreviewInfo;
import l2.gameserver.scripts.Functions;
import l2.gameserver.scripts.ScriptFile;
import l2.gameserver.templates.item.ItemTemplate;
import java.util.HashMap;
import java.util.Map;
public class dress extends Functions implements ScriptFile
{
public void getDraconic()
{
Player player = getSelf();
if (player == null) {
return;
}
Map<Integer, Integer> itemList = new HashMap<>();
// Items list
int[] itemIds = {7575, 6379, 6382,6380, 6381};
for (int itemId : itemIds) {
ItemTemplate template = ItemHolder.getInstance().getTemplate(itemId);
if (template == null) {
continue;
}
int paperdoll = Inventory.getPaperdollIndex(template.getBodyPart());
itemList.put(paperdoll, itemId);
}
player.sendPacket(new ShopPreviewInfo(itemList));
// Schedule task
ThreadPoolManager.getInstance().schedule(new RemoveWearItemsTask(player), 15000); // 15000 is preview time
}
private static class RemoveWearItemsTask extends RunnableImpl
{
private Player _activeChar;
public RemoveWearItemsTask(Player activeChar)
{
_activeChar = activeChar;
}
public void runImpl() throws Exception
{
_activeChar.sendPacket(SystemMsg.YOU_ARE_NO_LONGER_TRYING_ON_EQUIPMENT);
_activeChar.sendUserInfo(true);
}
}
@Override
public void onLoad() {
}
@Override
public void onReload() {
}
@Override
public void onShutdown() {
}
}
package services;
import l2.commons.threading.RunnableImpl;
import l2.gameserver.ThreadPoolManager;
import l2.gameserver.cache.Msg;
import l2.gameserver.data.xml.holder.ItemHolder;
import l2.gameserver.model.Player;
import l2.gameserver.model.items.Inventory;
import l2.gameserver.network.l2.components.SystemMsg;
import l2.gameserver.network.l2.s2c.ExUserInfoEquipSlot;
import l2.gameserver.network.l2.s2c.InventorySlot;
import l2.gameserver.network.l2.s2c.ShopPreviewInfo;
import l2.gameserver.scripts.Functions;
import l2.gameserver.scripts.ScriptFile;
import l2.gameserver.templates.item.ItemTemplate;
import l2.gameserver.utils.ItemFunctions;
import java.util.HashMap;
import java.util.Map;
public class dress extends Functions implements ScriptFile
{
public void getDraconic()
{
Player player = getSelf();
if (player == null) {
return;
}
Map<Integer, Integer> itemList = new HashMap<>();
// Items list
int[] itemIds = {7694, 7575, 6379, 6382,6380, 6381};
for (int itemId : itemIds) {
ItemTemplate template = ItemHolder.getInstance().getTemplate(itemId);
if (template == null) {
continue;
}
int paperdoll = ItemFunctions.getPaperdollIndex(template.getBodyPart());
itemList.put(paperdoll, itemId);
}
player.sendPacket(new ShopPreviewInfo(itemList));
// Schedule task
ThreadPoolManager.getInstance().schedule(new RemoveWearItemsTask(player), 15000); // 15000 is preview time
}
private static class RemoveWearItemsTask extends RunnableImpl
{
private Player _activeChar;
public RemoveWearItemsTask(Player activeChar)
{
_activeChar = activeChar;
}
public void runImpl() throws Exception
{
_activeChar.sendPacket(Msg.TRYING_ON_MODE_HAS_ENDED);
_activeChar.sendUserInfo(true);
_activeChar.sendPacket(new ExUserInfoEquipSlot(_activeChar, InventorySlot.VALUES));
}
}
@Override
public void onLoad() {
}
@Override
public void onReload() {
}
@Override
public void onShutdown() {
}
}
<button width=100 height=18 action="bypass -h scripts_services.dress:getDraconic" back="L2UI_CH3.bigbutton2_down" fore="L2UI_CH3.bigbutton2" value="Show Me Draconic">
This code is only for dragonic armor? if we want to add more objects we have to fill in the code?Video
Code for Interlude
Code:package services; import l2.commons.threading.RunnableImpl; import l2.gameserver.ThreadPoolManager; import l2.gameserver.data.xml.holder.ItemHolder; import l2.gameserver.model.Player; import l2.gameserver.model.items.Inventory; import l2.gameserver.network.l2.c2s.RequestPreviewItem; import l2.gameserver.network.l2.components.SystemMsg; import l2.gameserver.network.l2.s2c.ShopPreviewInfo; import l2.gameserver.scripts.Functions; import l2.gameserver.scripts.ScriptFile; import l2.gameserver.templates.item.ItemTemplate; import java.util.HashMap; import java.util.Map; public class dress extends Functions implements ScriptFile { public void getDraconic() { Player player = getSelf(); if (player == null) { return; } Map<Integer, Integer> itemList = new HashMap<>(); // Items list int[] itemIds = {7575, 6379, 6382,6380, 6381}; for (int itemId : itemIds) { ItemTemplate template = ItemHolder.getInstance().getTemplate(itemId); if (template == null) { continue; } int paperdoll = Inventory.getPaperdollIndex(template.getBodyPart()); itemList.put(paperdoll, itemId); } player.sendPacket(new ShopPreviewInfo(itemList)); // Schedule task ThreadPoolManager.getInstance().schedule(new RemoveWearItemsTask(player), 15000); // 15000 is preview time } private static class RemoveWearItemsTask extends RunnableImpl { private Player _activeChar; public RemoveWearItemsTask(Player activeChar) { _activeChar = activeChar; } public void runImpl() throws Exception { _activeChar.sendPacket(SystemMsg.YOU_ARE_NO_LONGER_TRYING_ON_EQUIPMENT); _activeChar.sendUserInfo(true); } } @Override public void onLoad() { } @Override public void onReload() { } @Override public void onShutdown() { } }
Code for Classic/Legacy
Code:package services; import l2.commons.threading.RunnableImpl; import l2.gameserver.ThreadPoolManager; import l2.gameserver.data.xml.holder.ItemHolder; import l2.gameserver.model.Player; import l2.gameserver.model.items.Inventory; import l2.gameserver.network.l2.c2s.RequestPreviewItem; import l2.gameserver.network.l2.components.SystemMsg; import l2.gameserver.network.l2.s2c.ShopPreviewInfo; import l2.gameserver.scripts.Functions; import l2.gameserver.scripts.ScriptFile; import l2.gameserver.templates.item.ItemTemplate; import java.util.HashMap; import java.util.Map; public class dress extends Functions implements ScriptFile { public void getDraconic() { Player player = getSelf(); if (player == null) { return; } Map<Integer, Integer> itemList = new HashMap<>(); // Items list int[] itemIds = {7575, 6379, 6382,6380, 6381}; for (int itemId : itemIds) { ItemTemplate template = ItemHolder.getInstance().getTemplate(itemId); if (template == null) { continue; } int paperdoll = Inventory.getPaperdollIndex(template.getBodyPart()); itemList.put(paperdoll, itemId); } player.sendPacket(new ShopPreviewInfo(itemList)); // Schedule task ThreadPoolManager.getInstance().schedule(new RemoveWearItemsTask(player), 15000); // 15000 is preview time } private static class RemoveWearItemsTask extends RunnableImpl { private Player _activeChar; public RemoveWearItemsTask(Player activeChar) { _activeChar = activeChar; } public void runImpl() throws Exception { _activeChar.sendPacket(Msg.TRYING_ON_MODE_HAS_ENDED); _activeChar.sendUserInfo(true); _activeChar.sendPacket(new ExUserInfoEquipSlot(_activeChar, InventorySlot.VALUES)); } } @Override public void onLoad() { } @Override public void onReload() { } @Override public void onShutdown() { } }
Bypass
Code:<button width=100 height=18 action="bypass -h scripts_services.dress:getDraconic" back="L2UI_CH3.bigbutton2_down" fore="L2UI_CH3.bigbutton2" value="Show Me Draconic">
You can copy and paste the method and enter your items there
Also for classic you can set abnormal and unset it after N seconds
This code is only for dragonic armor? if we want to add more objects we have to fill in the code?
Ровно так же указываешь ID в лист и всеа шапку как примерять?
I think the code is incomplete because it's just for try skins, every time we need to add an item we should go add to the code.
work for aghations and cloaks?Exactamente de la misma manera indicas el DNI en la hoja y listo
for cloaks yes, for aghations is not. But I can make example for aghations... I think. For now I have no time about custom thinks, I need to solve ticketswork for aghations and cloaks?
for cloaks yes, for aghations is not. But I can make example for aghations... I think. For now I have no time about custom thinks, I need to solve tickets
package services;
import l2.commons.threading.RunnableImpl;
import l2.gameserver.ThreadPoolManager;
import l2.gameserver.cache.Msg;
import l2.gameserver.data.xml.holder.ItemHolder;
import l2.gameserver.model.Player;
import l2.gameserver.model.items.Inventory;
import l2.gameserver.network.l2.components.SystemMsg;
import l2.gameserver.network.l2.s2c.ExUserInfoEquipSlot;
import l2.gameserver.network.l2.s2c.InventorySlot;
import l2.gameserver.network.l2.s2c.ShopPreviewInfo;
import l2.gameserver.scripts.Functions;
import l2.gameserver.scripts.ScriptFile;
import l2.gameserver.templates.item.ItemTemplate;
import l2.gameserver.utils.ItemFunctions;
import java.util.HashMap;
import java.util.Map;
public class dress extends Functions implements ScriptFile {
private static final int[] SKIN_ITEM_IDS = {7694, 7575, 6379, 6382, 6380, 6381};
private static final int SKIN_PREVIEW_TIME = 15000; // 15 seconds
public void getDraconic(Player player) {
if (player == null) {
return;
}
Map<Integer, Integer> itemList = new HashMap<>();
for (int itemId : SKIN_ITEM_IDS) {
ItemTemplate template = ItemHolder.getInstance().getTemplate(itemId);
if (template == null) {
continue;
}
int paperdoll = ItemFunctions.getPaperdollIndex(template.getBodyPart());
itemList.put(paperdoll, itemId);
}
player.sendPacket(new ShopPreviewInfo(itemList));
ThreadPoolManager.getInstance().schedule(new RemoveWearItemsTask(player), SKIN_PREVIEW_TIME);
}
public void buySkin(Player player, int itemId) {
if (player == null) {
return;
}
Inventory inventory = player.getInventory();
int cost = ItemHolder.getInstance().getTemplate(itemId).getReferencePrice();
if (inventory.getAdena() < cost) {
player.sendPacket(SystemMsg.YOU_DO_NOT_HAVE_ENOUGH_ADENA);
return;
}
if (inventory.addItem(itemId, 1) != null) {
inventory.reduceAdena(cost, true);
player.sendMessage("You have purchased the skin item.");
} else {
player.sendPacket(SystemMsg.INCORRECT_ITEM_COUNT);
}
}
public void wearSkin(Player player, int itemId) {
if (player == null) {
return;
}
Inventory inventory = player.getInventory();
if (inventory.destroyItemByItemId(itemId, 1)) {
getDraconic(player);
player.sendMessage("You are now wearing the skin item.");
} else {
player.sendPacket(SystemMsg.YOU_DO_NOT_HAVE_ENOUGH_ITEMS);
}
}
public void removeSkin(Player player) {
player.sendPacket(Msg.TRYING_ON_MODE_HAS_ENDED);
player.sendUserInfo(true);
player.sendPacket(new ExUserInfoEquipSlot(player, InventorySlot.VALUES));
}
@Override
public void onLoad() {
}
@Override
public void onReload() {
}
@Override
public void onShutdown() {
}
private static class RemoveWearItemsTask extends RunnableImpl {
private Player _activeChar;
public RemoveWearItemsTask(Player activeChar) {
_activeChar = activeChar;
}
@Override
public void runImpl() throws Exception {
removeSkin(_activeChar);
}
}
}
package services;
import l2.commons.threading.RunnableImpl;
import l2.gameserver.ThreadPoolManager;
import l2.gameserver.cache.Msg;
import l2.gameserver.data.xml.holder.ItemHolder;
import l2.gameserver.model.Player;
import l2.gameserver.model.items.Inventory;
import l2.gameserver.network.l2.components.SystemMsg;
import l2.gameserver.network.l2.s2c.ExUserInfoEquipSlot;
import l2.gameserver.network.l2.s2c.InventorySlot;
import l2.gameserver.network.l2.s2c.ShopPreviewInfo;
import l2.gameserver.scripts.Functions;
import l2.gameserver.scripts.ScriptFile;
import l2.gameserver.templates.item.ItemTemplate;
import l2.gameserver.utils.ItemFunctions;
import java.util.HashMap;
import java.util.Map;
public class dress extends Functions implements ScriptFile {
private static final int[] SKIN_ITEM_IDS = {7694, 7575, 6379, 6382, 6380, 6381, 6650, 6646, 6647, 6648, 6649}; // Armors and Aghations
private static final int[] WEAPON_ITEM_IDS = {7576, 7577, 7578, 7579, 7580}; // Weapons
private static final int SKIN_PREVIEW_TIME = 15000; // 15 seconds
public void getDraconic(Player player) {
if (player == null) {
return;
}
Map<Integer, Integer> itemList = new HashMap<>();
for (int itemId : SKIN_ITEM_IDS) {
ItemTemplate template = ItemHolder.getInstance().getTemplate(itemId);
if (template == null) {
continue;
}
int paperdoll = ItemFunctions.getPaperdollIndex(template.getBodyPart());
itemList.put(paperdoll, itemId);
}
for (int itemId : WEAPON_ITEM_IDS) {
ItemTemplate template = ItemHolder.getInstance().getTemplate(itemId);
if (template == null) {
continue;
}
int paperdoll = ItemFunctions.getPaperdollIndex(template.getBodyPart());
itemList.put(paperdoll, itemId);
}
player.sendPacket(new ShopPreviewInfo(itemList));
ThreadPoolManager.getInstance().schedule(new RemoveWearItemsTask(player), SKIN_PREVIEW_TIME);
}
public void buySkin(Player player, int itemId) {
if (player == null) {
return;
}
Inventory inventory = player.getInventory();
int cost = ItemHolder.getInstance().getTemplate(itemId).getReferencePrice();
if (inventory.getAdena() < cost) {
player.sendPacket(SystemMsg.YOU_DO_NOT_HAVE_ENOUGH_ADENA);
return;
}
if (inventory.addItem(itemId, 1) != null) {
inventory.reduceAdena(cost, true);
player.sendMessage("You have purchased the skin item.");
} else {
player.sendPacket(SystemMsg.INCORRECT_ITEM_COUNT);
}
}
public void wearSkin(Player player, int itemId) {
if (player == null) {
return;
}
Inventory inventory = player.getInventory();
if (inventory.destroyItemByItemId(itemId, 1)) {
getDraconic(player);
player.sendMessage("You are now wearing the skin item.");
} else {
player.sendPacket(SystemMsg.YOU_DO_NOT_HAVE_ENOUGH_ITEMS);
}
}
public void removeSkin(Player player) {
player.sendPacket(Msg.TRYING_ON_MODE_HAS_ENDED);
player.sendUserInfo(true);
player.sendPacket(new ExUserInfoEquipSlot(player, InventorySlot.VALUES));
}
@Override
public void onLoad() {
}
@Override
public void onReload() {
}
@Override
public void onShutdown() {
}
private static class RemoveWearItemsTask extends RunnableImpl {
private Player _activeChar;
public RemoveWearItemsTask(Player activeChar) {
_activeChar = activeChar;
}
@Override
public void runImpl() throws Exception {
removeSkin(_activeChar);
}
}
}
<button width=100 height=18 action=“bypass -h scripts_services.dress:getDraconic” back=“L2UI_CH3.bigbutton2_down” fore=“L2UI_CH3.bigbutton2” value=“Show Skins”>.
<button width=100 height=18 action=“bypass -h scripts_services.dress:buySkin ITEM_ID” back=“L2UI_CH3.bigbutton2_down” fore=“L2UI_CH3.bigbutton2” value=“Buy Skin”>
Replace ITEM_ID with the ID of the skin item you want to buy.
<button width=100 height=18 action=“bypass -h scripts_services.dress:wearSkin ITEM_ID” back=“L2UI_CH3.bigbutton2_down” fore=“L2UI_CH3.bigbutton2” value=“Wear Skin”>
Replace ITEM_ID with the ID of the skin item you want to wear.
<button width=100 height=18 action=“bypass -h scripts_services.dress:removeSkin” back=“L2UI_CH3.bigbutton2_down” fore=“L2UI_CH3.bigbutton2” value=“Remove Skin”>
These would be the updated bypasses for players to purchase, test and remove/put on armor, aghations and weapon skins.