- 0
Help Feanor drop from specific level
-
Posts
-
By L2Warfront · Posted
Hey everyone! Just a quick update from the WARFRONT team. After months of development, testing and plenty of changes based on player feedback, we're finally opening tomorrow, 30 October at 18:00 UTC. For anyone who hasn't heard about the project, WARFRONT is a heavily customised Interlude GvE server focused on Angels vs Demons faction PvP. The main difference is our battlefield system. Instead of fighting endlessly over random kills, factions capture Outposts, unlock the Main Outpost and eventually push into enemy territory to destroy the opposing Headquarters. We've also spent a considerable amount of time working on class balance, progression, faction balancing and giving traditionally overlooked classes a useful role in PvP. Some of the main features: Level 80 start with free B Grade equipment Rotating faction battlefields with objectives 31 rebalanced classes Daily faction siege Grand Boss faction events Chaos, TvT, CTF, Deathmatch and King of the Hill Gear Battle XP and character progression Free and Premium Battle Pass Custom faction balancing and mercenary system We had 110 participants during Closed Beta and made numerous improvements following their feedback. If you enjoy Interlude faction PvP, feel free to give us a try. Grand Opening: Friday, 30 October 2026 at 18:00 UTC Website: https://l2warfront.com/ See you tomorrow! -
OPEN BETA STARTS ON FRIDAY, OCTOBER 30, AT 18:00 EASTERN EUROPEAN TIME - don't forget to join!
-
🤝 Team and agency packs available: Bulk discounts across ChatGPT Plus, Claude Pro, and YouTube Premium subscriptions. FINAL CALL: Google is Shutting This Down After October 2026! Google will NEVER bring back this window of opportunity again. Once this month ends, this massive backdoor upgrade is gone permanently! BUY 2, GET 1 FREE IS STILL LIVE! Stock up now for yourself, your family, your business, and your friends! Think about it: Every single person you know uses a Gmail account, and everyone is running out of storage. Don't let your loved ones get trapped paying $20–$30 every single month when you can set them up with 5TB Cloud Storage + Gemini Advanced (12–18 Months) right now for only $15! Why Buy Bulk Activations Today? Instant Gift Value: Perfect lifetime-style gift for clients, family, or team members. 100% Private & Safe: Activates on personal Gmails—zero passwords or logins required. Global Access: Works worldwide with zero VPN hassles. Instant Automated Delivery: Receive your activation links in seconds 24/7! Time is running out fast—secure your extra free licenses before the October deadline hits! Order Your Bundle Now on the Website
-
Looking for a Serious Lineage II Project Partner / Co-Owner Hello everyone! I'm looking for a serious, reliable and motivated person who would be interested in building and running a long-term Lineage II project together as equal-minded partners. I have extensive experience with both L2J and L2OFF development, including server-side development, custom features, configurations, databases, client modifications, troubleshooting and general server administration. I also have experience with website development, Linux and Windows server administration, networking, game proxies and hosting infrastructure. I'm fully capable of handling the development and technical side of a project myself. I'm not looking for someone to build a server for me or fix my files. I'm looking for someone who shares my passion for Lineage II and wants to create something successful together. Hardware & Infrastructure I already have dedicated hardware and hosting resources available: Dedicated Servers: AMD Ryzen 9 5950X — 16 cores / 32 threads, 64GB RAM AMD Ryzen 9 5900X — 12 cores / 24 threads, 32GB RAM 28 cores / 56 threads and 96GB RAM combined 2.5 Gbps symmetrical internet connection Additional Infrastructure: OVH VPS infrastructure for game proxies and additional services Website, domain and web hosting infrastructure Database hosting and management Windows Server and Linux environments Network configuration, proxy management and server security Full development and technical administration capabilities The hardware and technical resources are already available, so there is no need to start from scratch or immediately invest in expensive infrastructure. About Me & My Experience I've worked with both L2J and L2OFF, and I understand the technical challenges involved in running a Lineage II server. My experience covers server development, implementing custom systems, fixing issues, optimising performance and managing the infrastructure required to keep a project running. I enjoy both the technical development and creative sides of Lineage II, and I'm willing to invest my time and resources into building something worthwhile. What I'm Looking For I'm not looking for an employee, freelancer or paid developer. I'm looking for a genuine long-term partner / potential co-owner who wants to be actively involved in the project. Ideally, someone who: Has good knowledge of Lineage II and its community Can contribute ideas, experience and constructive feedback Is interested in gameplay, balancing, community building or development Is reliable, mature and communicates well Wants to be involved in decisions and the long-term direction of the project Understands that building a successful server takes time and dedication You don't need to be an expert developer. I can already handle the technical work. What matters most is finding someone who is genuinely interested in working together and contributing to the project's success. The Goal My goal is to create a stable, professional and long-lasting Lineage II server with enjoyable gameplay, quality features, proper infrastructure and an active community. I'm not interested in quick cash-grab projects or opening a server that disappears after a few weeks. I would rather work with the right person, plan everything properly and build a server that players genuinely want to return to. I'm open to discussing the project's direction, responsibilities, ownership structure and potential revenue sharing once we get to know each other. Contact Project: L2Nexus Website: https://l2nexus.club Discord: @litrabolas If you have experience with Lineage II, have been thinking about starting your own project, or simply want to build something serious with someone who already has the experience and infrastructure, feel free to contact me. Let's discuss ideas and see if we can build something great together.
-
Topics

Question
MonkZe
Hi! Could someone please halp to make Feanor event drop - min level condition? Like, drop starts from players level 20 etc?
I tired to write something like - if (player.getLevel() > 20 around drop section, or boolean for easy control through config - if (player.getLevel() >= Config.MIN_FEANOR_LEVEL), but I'm having issue 1# to set it in the right place and 2# compose the implement correctly, to work. Somethings wrong all the time with "player" to identify it correctly, I tried to add lines from similar examples where player.getLevel can be found, like L2PcInstance player, adding aditional imports of L2PcInstance (also tried L2World).
I tried all feanor related classes, mainly FeanorInterface class. Is there a way to do it here?
/*
* L2jFrozen Project - www.l2jfrozen.com
*
* This program 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 2, or (at your option)
* any later version.
*
* This program 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, write to the Free Software
* Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA
* 02111-1307, USA.
*
* http://www.gnu.org/copyleft/gpl.html
*/
package com.l2jfrozen.gameserver.script.faenor;
import java.util.List;
import java.util.Map;
import javax.script.ScriptContext;
import javolution.util.FastList;
import org.apache.log4j.Logger;
import com.l2jfrozen.Config;
import com.l2jfrozen.gameserver.model.L2DropCategory;
import com.l2jfrozen.gameserver.model.L2DropData;
import com.l2jfrozen.gameserver.model.L2PetData;
import com.l2jfrozen.gameserver.model.entity.Announcements;
import com.l2jfrozen.gameserver.script.DateRange;
import com.l2jfrozen.gameserver.script.EngineInterface;
import com.l2jfrozen.gameserver.script.EventDroplist;
import com.l2jfrozen.gameserver.script.Expression;
import com.l2jfrozen.gameserver.templates.L2NpcTemplate;
/**
* @author Luis Arias
*/
public class FaenorInterface implements EngineInterface
{
protected static final Logger LOGGER = Logger.getLogger(FaenorInterface.class);
public static FaenorInterface getInstance()
{
return SingletonHolder._instance;
}
private FaenorInterface()
{
}
public List<?> getAllPlayers()
{
// TODO Auto-generated method stub
return null;
}
/**
* Adds a new Quest Drop to an NPC
* @see com.l2jfrozen.gameserver.script.EngineInterface#addQuestDrop(int, int, int, int, int, String, String[])
*/
@Override
public void addQuestDrop(final int npcID, final int itemID, final int min, final int max, final int chance, final String questID, final String[] states)
{
final L2NpcTemplate npc = npcTable.getTemplate(npcID);
if (npc == null)
{
LOGGER.info("FeanorInterface: Npc " + npcID + " is null..");
return;
}
final L2DropData drop = new L2DropData();
drop.setItemId(itemID);
drop.setMinDrop(min);
drop.setMaxDrop(max);
drop.setChance(chance);
drop.setQuestID(questID);
drop.addStates(states);
addDrop(npc, drop, false);
}
/**
* Adds a new Drop to an NPC
* @param npcID
* @param itemID
* @param min
* @param max
* @param sweep
* @param chance
* @throws NullPointerException
* @see com.l2jfrozen.gameserver.script.EngineInterface#addQuestDrop(int, int, int, int, int, String, String[])
*/
public void addDrop(final int npcID, final int itemID, final int min, final int max, final boolean sweep, final int chance) throws NullPointerException
{
final L2NpcTemplate npc = npcTable.getTemplate(npcID);
if (npc == null)
{
if (Config.DEBUG)
{
LOGGER.warn("Npc doesnt Exist");
}
throw new NullPointerException();
}
final L2DropData drop = new L2DropData();
drop.setItemId(itemID);
drop.setMinDrop(min);
drop.setMaxDrop(max);
drop.setChance(chance);
addDrop(npc, drop, sweep);
}
/**
* Adds a new drop to an NPC. If the drop is sweep, it adds it to the NPC's Sweep category If the drop is non-sweep, it creates a new category for this drop.
* @param npc
* @param drop
* @param sweep
*/
public void addDrop(final L2NpcTemplate npc, final L2DropData drop, final boolean sweep)
{
if (sweep)
{
addDrop(npc, drop, -1);
}
else
{
int maxCategory = -1;
if (npc.getDropData() != null)
{
for (final L2DropCategory cat : npc.getDropData())
{
if (maxCategory < cat.getCategoryType())
{
maxCategory = cat.getCategoryType();
}
}
}
maxCategory++;
npc.addDropData(drop, maxCategory);
}
}
/**
* Adds a new drop to an NPC, in the specified category. If the category does not exist, it is created.
* @param npc
* @param drop
* @param category
*/
public void addDrop(final L2NpcTemplate npc, final L2DropData drop, final int category)
{
npc.addDropData(drop, category);
}
/**
* @param npcID
* @return Returns the _questDrops.
*/
public List<L2DropData> getQuestDrops(final int npcID)
{
final L2NpcTemplate npc = npcTable.getTemplate(npcID);
if (npc == null)
return null;
final List<L2DropData> questDrops = new FastList<>();
if (npc.getDropData() != null)
{
for (final L2DropCategory cat : npc.getDropData())
{
for (final L2DropData drop : cat.getAllDrops())
{
if (drop.getQuestID() != null)
{
questDrops.add(drop);
}
}
}
}
return questDrops;
}
@Override
public void addEventDrop(final int[] items, final int[] count, final double chance, final DateRange range)
{
EventDroplist.getInstance().addGlobalDrop(items, count, (int) (chance * L2DropData.MAX_CHANCE), range);
}
@Override
public void onPlayerLogin(final String[] message, final DateRange validDateRange)
{
Announcements.getInstance().addEventAnnouncement(validDateRange, message);
}
public void addPetData(final ScriptContext context, final int petID, final int levelStart, final int levelEnd, final Map<String, String> stats)
{
final L2PetData[] petData = new L2PetData[levelEnd - levelStart + 1];
int value = 0;
for (int level = levelStart; level <= levelEnd; level++)
{
petData[level - 1] = new L2PetData();
petData[level - 1].setPetID(petID);
petData[level - 1].setPetLevel(level);
context.setAttribute("level", new Double(level), ScriptContext.ENGINE_SCOPE);
for (final String stat : stats.keySet())
{
value = ((Number) Expression.eval(context, "beanshell", stats.get(stat))).intValue();
petData[level - 1].setStat(stat, value);
}
context.removeAttribute("level", ScriptContext.ENGINE_SCOPE);
}
}
@SuppressWarnings("synthetic-access")
private static class SingletonHolder
{
protected static final FaenorInterface _instance = new FaenorInterface();
}
}
Edited by MonkZe2 answers to this question
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