Add level for item

GaijinDev

Heir
Customer
Is it possible to put a level on the item? For example, the character equips the item and it gains maximum level, and when it takes off the item it goes back to level 0.
 
Я когда-то давно начинал писать систему подобную, по кнопке дается макс уровень, после чего кнопка меняется на делелвел и при клике на нее возвращается прежний уровень и скилы, которые были до лалапа. Но проблемка пока с возвращением профы, нобла и хиро (не дописал). Если интересно, могу показать работу скрипта. Может доделаешь под себя.
 
Like this? More condition checks may be needed.

Java:
package services;

import l2.commons.listener.Listener;
import l2.gameserver.listener.inventory.OnEquipListener;
import l2.gameserver.model.Playable;
import l2.gameserver.model.Player;
import l2.gameserver.model.actor.listener.PlayerListenerList;
import l2.gameserver.model.base.Experience;
import l2.gameserver.model.items.ItemInstance;
import l2.gameserver.scripts.ScriptFile;

public class LevelOnEquip implements OnEquipListener, ScriptFile
{
    private static final LevelOnEquip EQUIP_LISTENER = new LevelOnEquip();
    private static final int ITEM_ID = 99172;
    private static final int EQUIP_LEVEL = 80;
    private static final int UNEQUIP_LEVEL = 1;
    
    @Override
    public void onEquip(int slot, ItemInstance item, Playable playable)
    {
        if (playable == null || !playable.isPlayer() || item == null || item.getItemId() != ITEM_ID)
            return;
        
        setLv((Player) playable, EQUIP_LEVEL);
    }
    
    @Override
    public void onUnequip(int slot, ItemInstance item, Playable playable)
    {
        if (playable == null || !playable.isPlayer() || item == null || item.getItemId() != ITEM_ID)
            return;
        
        setLv((Player) playable, UNEQUIP_LEVEL);
    }
    
    private void setLv(Player player, int level)
    {
        if (player.getLevel() != level)
        {
            player.addExpAndSp(Experience.LEVEL[level] - player.getExp(), 0, false, false);
            player.broadcastCharInfo();
        }
    }
    
    @Override
    public void onLoad()
    {
        PlayerListenerList.addGlobal((Listener) EQUIP_LISTENER);
    }
    
    @Override
    public void onReload()
    {
        onShutdown();
        onLoad();
    }
    
    @Override
    public void onShutdown()
    {
        PlayerListenerList.removeGlobal((Listener) EQUIP_LISTENER);
    }
}
 
Like this? More condition checks may be needed.

Java:
package services;

import l2.commons.listener.Listener;
import l2.gameserver.listener.inventory.OnEquipListener;
import l2.gameserver.model.Playable;
import l2.gameserver.model.Player;
import l2.gameserver.model.actor.listener.PlayerListenerList;
import l2.gameserver.model.base.Experience;
import l2.gameserver.model.items.ItemInstance;
import l2.gameserver.scripts.ScriptFile;

public class LevelOnEquip implements OnEquipListener, ScriptFile
{
    private static final LevelOnEquip EQUIP_LISTENER = new LevelOnEquip();
    private static final int ITEM_ID = 99172;
    private static final int EQUIP_LEVEL = 80;
    private static final int UNEQUIP_LEVEL = 1;
   
    @Override
    public void onEquip(int slot, ItemInstance item, Playable playable)
    {
        if (playable == null || !playable.isPlayer() || item == null || item.getItemId() != ITEM_ID)
            return;
       
        setLv((Player) playable, EQUIP_LEVEL);
    }
   
    @Override
    public void onUnequip(int slot, ItemInstance item, Playable playable)
    {
        if (playable == null || !playable.isPlayer() || item == null || item.getItemId() != ITEM_ID)
            return;
       
        setLv((Player) playable, UNEQUIP_LEVEL);
    }
   
    private void setLv(Player player, int level)
    {
        if (player.getLevel() != level)
        {
            player.addExpAndSp(Experience.LEVEL[level] - player.getExp(), 0, false, false);
            player.broadcastCharInfo();
        }
    }
   
    @Override
    public void onLoad()
    {
        PlayerListenerList.addGlobal((Listener) EQUIP_LISTENER);
    }
   
    @Override
    public void onReload()
    {
        onShutdown();
        onLoad();
    }
   
    @Override
    public void onShutdown()
    {
        PlayerListenerList.removeGlobal((Listener) EQUIP_LISTENER);
    }
}
but if I decompile the server.jar will it break?
 
Back
Top