Jump to content

Question

Posted (edited)

does anyone have one Quest, which when he kills 100 monsters Take Reward item..

but without speak any npc.. like this quest but 100 monsters

package l2s.gameserver.scripts.custom;

import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.SQLException;
import java.util.concurrent.TimeUnit;

import l2s.commons.db.DatabaseFactory;
import l2s.gameserver.Announcements;
import l2s.gameserver.datatables.SkillTable;
import l2s.gameserver.model.L2Skill;
import l2s.gameserver.model.actor.L2Npc;
import l2s.gameserver.model.actor.instance.L2PcInstance;
import l2s.gameserver.model.quest.Quest;

/**
 * @author SoFace
 */
public class SuperMonster extends Quest
{
	// Monsters's ID.
	private static final int MONSTERS[] =
	{
		12564
	};
	
	private static final boolean REWARD_PARTY = false; // Reward party ?
	
	private final static boolean REWARD_NOBLE = true; // Give Noblesse  ?
	
	private final static boolean REWARD_HERO = false; // Give Hero ?
	private final static int REWARD_HERO_DAYS = -1; // How many days to give the status of Hero ?
													// 0 - Until relogin. -1 - Forever.
	
	private final static boolean REWARD_SKILL = true; // Give Skill ?
	private final static int REWARD_SKILL_ID = 0; // Skill's ID.
	private final static int REWARD_SKILL_LVL = 0; // Skill's LvL.
	
	private final static boolean REWARD_ITEMS = true; // Give Items ?
	private final static int REWARD_ITEM_ID = 4037; // Item's ID.
	private final static int REWARD_ITEM_COUNT = 5; // Count.
	
	public SuperMonster()
	{
		super(-1, "SuperMonster", "custom");
		
		for (int mobs : MONSTERS)
			addKillId(mobs);
	}
	
	@Override
	public String onKill(L2Npc npc, L2PcInstance player, boolean isPet)
	{
		L2Skill skill = SkillTable.getInstance().getInfo(REWARD_SKILL_ID, REWARD_SKILL_LVL);
		
		Announcements.announceToAll("SuperMonster was killed.");
		
		if (REWARD_PARTY)
		{
			if (player.getParty() != null)
			{
				for (L2PcInstance members : player.getParty().getPartyMembers())
				{
					members.sendMessage("Congratulations ! You killed The SuperMonster !");
					
					if (REWARD_ITEMS)
						members.addItem("Add", REWARD_ITEM_ID, REWARD_ITEM_COUNT, members, true);
					if (REWARD_SKILL)
						members.addSkill(skill, true);
					if (REWARD_HERO)
					{
						if (!player.isHero())
							addHero(player, REWARD_HERO_DAYS);
						else
							player.sendMessage("You already Hero.");
					}
					if (REWARD_NOBLE)
					{
						if (!members.isNoble())
							members.setNoble(true, true);
						else
							members.sendMessage("You already Noblesse.");
					}
					
					members.broadcastUserInfo();
				}
			}
			else
			{
				player.sendMessage("Congratulations ! You killed The SuperMonster !");
				
				if (REWARD_ITEMS)
					player.addItem("Add", REWARD_ITEM_ID, REWARD_ITEM_COUNT, player, true);
				if (REWARD_SKILL)
					player.addSkill(skill, true);
				if (REWARD_HERO)
				{
					if (!player.isHero())
						addHero(player, REWARD_HERO_DAYS);
					else
						player.sendMessage("You already Hero.");
				}
				if (REWARD_NOBLE)
				{
					if (!player.isNoble())
						player.setNoble(true, true);
					else
						player.sendMessage("You already Noblesse.");
				}
				
				player.broadcastUserInfo();
			}
		}
		else
		{
			player.sendMessage("Congratulations ! You killed The SuperMonster !");
			
			if (REWARD_ITEMS)
				player.addItem("Add", REWARD_ITEM_ID, REWARD_ITEM_COUNT, player, true);
			if (REWARD_SKILL)
				player.addSkill(skill, true);
			if (REWARD_HERO)
			{
				if (!player.isHero())
					addHero(player, REWARD_HERO_DAYS);
				else
					player.sendMessage("You already Hero.");
			}
			if (REWARD_NOBLE)
			{
				if (!player.isNoble())
					player.setNoble(true, true);
				else
					player.sendMessage("You already Noblesse.");
			}
			
			player.broadcastUserInfo();
		}
		
		return null;
	}
	
	private void addHero(L2PcInstance player, int days)
	{
		long _heroExpire = 0L;
		
		player.setHero(true);
		player.broadcastUserInfo();
		
		if (days == 0)
		{
			_heroExpire = 3L;
			return;
		}
		_heroExpire = (days == -1 ? 1L : System.currentTimeMillis() + TimeUnit.DAYS.toMillis(days));
		
		try (Connection con = DatabaseFactory.getConnection();
			PreparedStatement stm = con.prepareStatement("UPDATE `characters` SET `hero`=? WHERE `obj_Id`=?"))
		{
			stm.setLong(1, _heroExpire);
			stm.setInt(2, player.getObjectId());
			stm.execute();
		}
		catch (SQLException e)
		{
			_log.warn("[SuperMonster] addHero(days) error: ", e);
		}
	}
	
	public static void main(String args[])
	{
		new SuperMonster();
	}
}

 

Edited by MegaCheat

1 answer 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 account

Sign in

Already have an account? Sign in here.

Sign In Now


  • Posts

    • The Return of L2Elixir – A Legacy Reborn in 2025 Read more features: https://l2elixir.org/features/ It’s time to relive the magic. Many of you remember L2Elixir, first launched in 2008 – a server that brought players together, created friendships, rivalries, and unforgettable memories. For two+ incredible years, until its closure in 2010, Elixir was more than just a server… it was home. In 2018, a fake project borrowed the name and damaged that legacy, but the true memories of L2Elixir never died. Today, in 2025, we are proud to announce that a new dedicated team has taken up the mantle to bring L2Elixir back to life – with respect for the past and a fresh vision for the future.   What to Expect We’re not here to be “just another server.” Our mission is to bring back nostalgia with innovation, offering a unique progression experience: Interlude-Like start, capturing that classic old-school feeling. A natural evolution into Gracia Final. Followed by Gracia Epilogue, keeping the journey alive without losing balance. This is not a copy-paste server – it’s a carefully crafted world designed to honor the spirit of Lineage II while introducing fresh ideas to keep the gameplay alive and rewarding. Why L2Elixir? A balanced environment where community comes first. A project built with passion, not profit. A server that values longevity, fairness, and nostalgia.   📅 Launch Date & Details Closed Beta: Online. Open Beta & Rewards: November 15 & 21:00 UTC +2 Launch: November 28 & 21:00 UTC +2   🔗 Join the Community Be part of history once again. Follow our Discord, join the discussion, and prepare to step back into the world where legends were made.   https://l2elixir.org/ https://discord.gg/5ydPHvhbxs L2Elixir 2025 – Honoring the Past. Building the Future.
    • 10-24-2025 - OUR TOPIC IS RELEVANT! CONTACT US BY THE CONTACTS BELOW
    • Can someone decompile in classes this LineageSkilleffect.u ? I am willing to pay if needed,  protocol god any. https://wormhole.app/BEj0pr#osVXtnL9Q-AmmVmxOcEZfw
    • I didn't have the key for the cache too i just writen random things, then the second time i opened it i didn't need to use the serial key again
    • estoy montandolo en mi win10pro jaja descargue tu rar y ahora no puedo iniciar la cache ya que pide una key serial podrias ayudarme asi lo monto para jugar solo  en el server.exe tambien me pide un serial   
  • Topics

×
×
  • Create New...

AdBlock Extension Detected!

Our website is made possible by displaying online advertisements to our members.

Please disable AdBlock browser extension first, to be able to use our community.

I've Disabled AdBlock