Jump to content
  • 0

Question

Recommended Posts

  • 0
Posted (edited)

You have to take a look in L2GrandBossInstance at doDie method.. You can use knownlist to reward all players with X distance from the raid instead of mesh with damages ...

 

if (getNpcId() == baiumId)
	getKnownList().getKnownPlayersInRadius(3500).forEach(pl -> pl.getInventory().addItem("reward", 57, 5, pl, null));

 

in case you want all online players i wont  help you.. You have admin rights so you can check how mass reward working

Edited by melron
  • 0
Posted (edited)
15 minutes ago, melron said:

You have to take a look in L2GrandBossInstance at doDie method.. You can use knownlist to reward all players with X distance from the raid instead of mesh with damages ...

 


if (getNpcId() == baiumId)
	getKnownList().getKnownPlayersInRadius(3500).forEach(pl -> pl.getInventory().addItem("reward", 57, 5, pl, null));

 

in case you want all online players i wont  help you.. You have admin rights so you can check how mass reward working

If i wanna do on another npc? like gremlin? 

Edited by martuxas1
  • 0
Posted (edited)
6 minutes ago, martuxas1 said:

If i wanna do on another npc? like gremlin? 

You just replace "baiumId" with your desired NPC ID.

Also do not do it on L2GrandBossInstance.
Actually this might need a new script ?

Edited by L2J NexuS
  • 0
Posted (edited)
32 minutes ago, martuxas1 said:

If i wanna do on another npc? like gremlin? 

 

He literally gave you the code you want, now its up to you to figure out where to place. Also after all i hope you ain't goin for a live server :P

In addition if you want to reward only players who dealt damage you need make a new 

final Map<Integer, Long> _damageHolder = new HashMap<Integer, Long>();
  
  

at L2Attackable.java and find the method which says reduceCurrentHp and inside there add the following:

 

if (!_damageHolder.containsKey(player.getObjectId())
{
   _damageHolder.put(player.getObjectId(), damageDealed);
}
else
{
   _damageHolder.put(player.getObjectId(), damageHolder.getValue(player.getObjectId()) + damageDealed);
}

or something similar i dont know... 

And also make sure to do a _damageHolder.clear();  at onDie() of L2Attackable.java to clear the list each time he dies. 

 

So you can check each player's damage and give reward for example if damage dealt is bigger than 20k 

 

Edited by Evie Frye
  • 0
Posted (edited)

So if i am a bishop i won't get a reward?

Edit :  If you want to do it with a script. ( some validate that this works cause i am still a noob )

 

/*
 * 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 3 of the License, 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, see <http://www.gnu.org/licenses/>.
 */
package custom.CustomMobRewardOnKill;

import net.sf.l2j.gameserver.model.actor.L2Npc;
import net.sf.l2j.gameserver.model.actor.instance.L2PcInstance;
import net.sf.l2j.gameserver.model.quest.Quest;

public class CustomMobRewardOnKill extends Quest
{
	private CustomMobRewardOnKill(final int questId, final String name, final String descr)
	{
		super(-1, "custom", "");
		addKillId(18342); // NPC ID
	}
	
	@Override
	public String onKill(L2Npc npc, L2PcInstance player, boolean isPet)
	{
		for(L2PcInstance activeChar : npc.getKnownList().getKnownPlayersInRadius(3500))
		{
			activeChar.getInventory().addItem("reward", 57, 5, player, null); // Replace "57" with your ITEM ID and "5" with Quantiny of the item.
		}
		return null;
	}
	
	public static void main(String args[])
	{
		new CustomMobRewardOnKill(-1, "custom", "");
	}
}


( Just in case you missed it , i didn't do the damage thing cause i don't know how and it is UNFAIR AF  )

Edited by L2J NexuS
  • 0
Posted
4 minutes ago, L2J NexuS said:

So if i am a bishop i won't get a reward?

 

Obviously not. You need more system for bishop assist. He ask for damage reward thats why i wrote this code in Notepad++

But he can ignore it and just give rewards to all knowlist. 

  • 0
Posted (edited)
8 minutes ago, L2J NexuS said:

So if i am a bishop i won't get a reward?

Edit :  If you want to do it with a script. ( some validate that this works cause i am still a noob )

 


/*
 * 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 3 of the License, 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, see <http://www.gnu.org/licenses/>.
 */
package custom.CustomMobRewardOnKill;

import net.sf.l2j.gameserver.model.actor.L2Npc;
import net.sf.l2j.gameserver.model.actor.instance.L2PcInstance;
import net.sf.l2j.gameserver.model.quest.Quest;

public class CustomMobRewardOnKill extends Quest
{
	private CustomMobRewardOnKill(final int questId, final String name, final String descr)
	{
		super(-1, "custom", "");
		addKillId(18342); // NPC ID
	}
	
	@Override
	public String onKill(L2Npc npc, L2PcInstance player, boolean isPet)
	{
		for(L2PcInstance activeChar : npc.getKnownList().getKnownPlayersInRadius(3500))
		{
			activeChar.getInventory().addItem("reward", 57, 5, player, null); // Replace "57" with your ITEM ID and "5" with Quantiny of the item.
		}
		return null;
	}
	
	public static void main(String args[])
	{
		new CustomMobRewardOnKill(-1, "custom", "");
	}
}


( Just in case you missed it , i didn't do the damage thing cause i don't know how and it is UNFAIR AF  )

 

 

As far i remember you cannot register a mob in same event multiple times so if im right you should avoid it cause it might be already registered. (I might be wrong i dont remember how Quest Event works).

 

You can do it same way by goin at onDie method at L2Attackable and do a proper check

 

 

Edited by Evie Frye
  • 0
Posted (edited)
2 minutes ago, Evie Frye said:

 

 

As far i remember you cannot register a mob in same event multiple times so if im right you should avoid it cause it might be already registered. (I might be wrong i dont remember how Quest Event works).

 player.isInsideRadius(npc, 3500, false, false);

will this work?

Edited by L2J NexuS
  • 0
Posted

Why you meshing up with new scripts? In case he want a raid/monster instead of only grandboss he can easily add the code in L2RaidbossInstance or L2MonsterInstance (since grandboss -> raidboss -> monster) and check for specific instance with the magical code (instanceof) and nothing more. Creating new script for this is bad idea...

  • Like 1
  • 0
Posted (edited)
9 minutes ago, L2J NexuS said:

 player.isInsideRadius(npc, 3500, false, false);

will this work?

 

at public boolean doDie(final L2Character killer) in L2Attackable.java

 

somewhere inside just write 

 

final int[] ids = { } ;

for (id : ids)
{	
  if (getNpcId() == id)
  {
    for (final L2PcInstance player : getKnownList().getKnownPlayers())
    {
       //
    }
    break;
  }
}

 

Avoid making new Script, do it via core.

Edited by Evie Frye
  • 0
Posted
2 minutes ago, melron said:

Why you meshing up with new scripts? In case he want a raid/monster instead of only grandboss he can easily add the code in L2RaidbossInstance or L2MonsterInstance (since grandboss -> raidboss -> monster) and check for specific instance with the magical code (instanceof) and nothing more. Creating new script for this is bad idea...

I did it cause when i checked L2MonsterInstance there wasn't any onKill function. ( I don't even know if its bad to add one or not )
Also i did it cause i can add any NPC ID and just save it and restart the server instead of changing files all the time ( i mean if you change npc id you have to move your code to the correct instance file. )

  • 0
Posted
2 minutes ago, Evie Frye said:

 

at public boolean doDie(final L2Character killer)

 

somewhere inside just write 

 


final int[] ids = { } ;

for (id : ids)
{	
  if (getNpcId() == id)
  {
    for (final L2PcInstance player : getKnownList().getKnownPlayers())
    {
       //
    }
	break;
  }
}

 

Avoid making new Script, do it via core.


Okay now that i see how its done i will use it if i need it.

Thank you for correcting me and pointing me to the right road.

  • 0
Posted (edited)
6 minutes ago, L2J NexuS said:

I did it cause when i checked L2MonsterInstance there wasn't any onKill function. ( I don't even know if its bad to add one or not )
Also i did it cause i can add any NPC ID and just save it and restart the server instead of changing files all the time ( i mean if you change npc id you have to move your code to the correct instance file. )

 

doDie method is overriden in any child-class of L2Character. So even if you go at L2Monster.java and paste

@Override
public boolean doDie(final L2Character killer)
{

}

it will work the same. 

Edited by Evie Frye
  • 0
Posted
4 hours ago, Evie Frye said:

it will work the same. 

Unless you override it, then hell yeah, you have its own scenario.

 

5 hours ago, melron said:

Why you meshing up with new scripts?

Actualy it's the correct way, you DO NOT mess core with stupid addition(s). You simply code your own script, keep it organized and clean. If you ask me.

 

Also, WTF that frozen, there is no baium script?!?! o.O At least I can't find it.

  • Like 1

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

    • Hello community, I’d like to share an improved version of the L2smr editor for StaticMeshes, focused on solving some workflow issues I found in the original tool. CreditsThis project is based on the original acmi/L2smr repository https://github.com/acmi/L2smr , created by acmi, and I updated it to Java 17 with some additional features. Issues in the original L2smr Too many windows: each StaticMesh opened in a new one → cluttered desktop. No search: navigating through hundreds of StaticMeshActors was slow and tedious. Added improvements Flexible views Single Window Mode: reuse one window instead of opening new ones. Multiple Window Mode: still available for those who prefer having several views open simultaneously. Real-time Search Field Instant filtering as you type. Case-insensitive search. “Reset” button to quickly clear the search.     Installation and Execution: Clone the repository: git clone https://github.com/Jeep12/l2smr.git cd l2smr        2.Build the project:   ./gradlew build        3. Run the application:     ./run.bat      Or simply double-click on run.bat.     The run.bat script automatically extracts JavaFX from the included javafx-17.0.2.zip file in the javafx/ directory, sets up the required libraries, and launches the application. You don’t    need to install JavaFX separately.      Repository: https://github.com/Jeep12/l2smr     Maybe these features already existed in another version or fork, and they might not be very big changes, but since I didn’t know about them and found them necessary, I decided to          implement them myself and wanted to share them.      
    • no....Mobius L2Clientdat and L2FileEditor can do that...but still cant works with TaiWanese Grand Crusade ,especially Armorgrp.dat and Armorgrp-Classic.dat
    • L2GOLD - Halcyon x45 Project Classic Interlude   C6 - Classic Interlude: Protocol 110     Is a complete copy of L2Gold in Classic [110 Protocol] with L2OFF files.   Fully L2Gold Features - Daily Quest - Daily Mining Quest - Ancient Weapons -Refine System  -Rebirth System -Fully configurable everything you want -Gold stats/Gold skills/Gold items working 100% -Zones 100% alike  -Unique donations system (npc or voicedcommand .donate) - On Enchant success announcement ( if +16 for weapon, 8 for armor , 7 for jewel) - Announce of Castle Lord - Announce of Hero  - Olympiad Max A grade - Olympiad Buffs on matches changed to Gold Alike - Working fully Dreadbane   - AI Mods: Static Time for RB   Automated Events: Squash Watermelon RB Event High rate  (those are fully automated)   Server is running a Test Server: Online to anyone can test it.   Game Client: https://www.mediafire.com/file/1d8xe18rvgi04lx/L2_Classic_Interlude_Client_V2.rar/file   Game Patch: https://www.mediafire.com/file/3z4b8ezy93h2z1g/L2Halcyon+Gold+Patch.rar/file   GM Accounts: ID: root pass root [ accounts go from  root1 until root20 ]   Regular Accounts Registrations: http://84.247.164.27/?page=register   Some Screenshots: https://imgur.com/a/o7TxzTN   Contact me here via PM (only serious buyers).    Price of the product: Fully Server Pack + Source ( 250 Euros )
    • ✨ A Service with Vibes  Vibe SMS ✨   Vibe SMS is not just a platform for working with numbers. We’ve built it to be simple, convenient, and stress-free, so your tasks get done without hassle. We value real communication: we listen to your ideas, provide support, and make sure everyone feels calm and confident. With us, you’re not just a client  you’re part of a space built on trust, support, and a human touch. Vibe SMS is a place where people matter and where we create an atmosphere you’ll want to stay in.   Website link — https://vibe-sms.net/ Our Telegram channel — https://t.me/vibe_sms
  • 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