Jump to content

Recommended Posts

Posted

Updated Version 3.2

 

Hello to all.

Here we go for my 2nd share. A laboratory for what you wan ^^

I use it for craft pots, ...

 

Here is the code updated in java for Hi5 server. For use it, you need to creat a folder Laboratory in custom folder of your server.

After that, add the java file in scripts.cfg

 

custom/Laboratory/Laboratory.java

 

For my labo, i use Ralford npc in ivory tower, but u can creat a new one, or use another npc.

Just add this lign in the html file of your npc:

 

<a action="bypass -h npc_%objectId%_Quest Laboratory">Laboratory</a><br1>

 

/*
* Packages: A Java package is a mechanism for organizing Java classes into namespaces similar to the modules of Modula.
* Java packages can be stored in compressed files called JAR files, allowing classes to download faster as a group rather than one at a time.
* Programmers also typically use packages to organize classes belonging to the same category or providing similar functionality.
* 
* This is the package declaration:
*/
package custom.Laboratory;

import com.l2jserver.gameserver.model.actor.L2Npc;
import com.l2jserver.gameserver.model.actor.instance.L2PcInstance;
import com.l2jserver.gameserver.model.quest.Quest;
import com.l2jserver.gameserver.datatables.MultiSell;


public class Laboratory extends Quest 
{
private static final String qn = "Laboratory";

private static final int RALFORD = 30165;
static int m = 400000000;
private static final int ORACLES_PP = m+5;
private static final int ORACLES_PP_3 = m+19;
private static final int SUMMONERS_2 = m+6;
private static final int SUMMONERS_3 = m+15;
private static final int HEALER_2 = m+1;
private static final int HEALER_3 = m+12;
private static final int SUMMONERS_TEL_2 = m+16;
private static final int SUMMONERS_TEL_3 = m+18;
private static final int SUMMONERS_TEL_HEALER_2_ORC = m+17;

/*
 * Laboratory by Darknessneo
 *      Shirya server
 *         v3.2
 */	public Laboratory(int questId, String name, String descr)
{
	super(questId, name, descr);

	addStartNpc(RALFORD);
	addTalkId(RALFORD);
}

@Override
public String onTalk(L2Npc npc, L2PcInstance player)
{
	if (player.isGM()) return "maingm.htm";
	switch (player.getClassId().getId())
	{
		case 13: // Necromancer
			MultiSell.getInstance().separateAndSend(SUMMONERS_2, player, npc, false);
			break;
		case 14: // Warlock
			MultiSell.getInstance().separateAndSend(SUMMONERS_TEL_2, player, npc, false);
			break;
		case 15: // Cleric
			MultiSell.getInstance().separateAndSend(ORACLES_PP, player, npc, false);
			break;
		case 16: // Bishop
			MultiSell.getInstance().separateAndSend(HEALER_2, player, npc, false);
			break;
		case 17: // Prophet
			MultiSell.getInstance().separateAndSend(ORACLES_PP, player, npc, false);
			break;
		case 28: // Elemental Summoner
			MultiSell.getInstance().separateAndSend(SUMMONERS_TEL_2, player, npc, false);
			break;
		case 29: // Oracle
			MultiSell.getInstance().separateAndSend(ORACLES_PP, player, npc, false);
			break;
		case 30: // Elder
			MultiSell.getInstance().separateAndSend(HEALER_2, player, npc, false);
			break;
		case 41: // Phantom Summoner
			MultiSell.getInstance().separateAndSend(SUMMONERS_TEL_2, player, npc, false);
			break;
		case 42: // Shillien Oracle
			MultiSell.getInstance().separateAndSend(ORACLES_PP, player, npc, false);
			break;
		case 43: // Shillien Elder
			MultiSell.getInstance().separateAndSend(HEALER_2, player, npc, false);
			break;
		case 50: // Shaman
			MultiSell.getInstance().separateAndSend(ORACLES_PP, player, npc, false);
			break;
		case 51: // Overlord
			MultiSell.getInstance().separateAndSend(HEALER_2, player, npc, false);
			break;
		case 52: // Warcryer
			MultiSell.getInstance().separateAndSend(SUMMONERS_TEL_HEALER_2_ORC, player, npc, false);
			break;
		case 95: // Soultaker
			MultiSell.getInstance().separateAndSend(SUMMONERS_3, player, npc, false);
			break;
		case 96: // Arcana Lord
			MultiSell.getInstance().separateAndSend(SUMMONERS_TEL_3, player, npc, false);
			break;
		case 97: // Cardinal
			MultiSell.getInstance().separateAndSend(HEALER_3, player, npc, false);
			break;
		case 98: // Hierophant
			MultiSell.getInstance().separateAndSend(ORACLES_PP, player, npc, false);
			break;
		case 104: // Elemental Master
			MultiSell.getInstance().separateAndSend(SUMMONERS_TEL_3, player, npc, false);
			break;
		case 105: // Eva's Saint
			MultiSell.getInstance().separateAndSend(HEALER_3, player, npc, false);
			break;
		case 111: // Spectral Master
			MultiSell.getInstance().separateAndSend(SUMMONERS_TEL_3, player, npc, false);
			break;
		case 112: // Shillien Saint
			MultiSell.getInstance().separateAndSend(HEALER_3, player, npc, false);
			break;
		case 115: // Dominator
			MultiSell.getInstance().separateAndSend(HEALER_3, player, npc, false);
			break;
		case 116: // Doomcryer
			MultiSell.getInstance().separateAndSend(ORACLES_PP_3, player, npc, false);
			break;
		default:
			return "nolab.htm";
	}
	return super.onTalk(npc, player);
}

public static void main(String[] args)
{
	new Laboratory(-1, qn, "custom");
}
}

 

Wan see how he work?

shot00001s.png

The GM text

shot00002im.png

The labo for potions.

shot00003f.png

The text for healers (not GM)

shot00004wh.png

For all other class

Posted

Just a tip:

You can improve your code by changing

if id == 42 or id == 15 or id == 17 or id == 29 or id == 50 or id == 52 or id == 98 or id == 116 :

to

if id in [15,17,29,42,50,52,98,116] :

Posted

Just a tip:

You can improve your code by changing

if id == 42 or id == 15 or id == 17 or id == 29 or id == 50 or id == 52 or id == 98 or id == 116 :

to

if id in [15,17,29,42,50,52,98,116] :

Thx for your comment. Guide and screens updated, archive too. Thx for your help, i added your pseudo in the credit of the file.

  • 5 months later...
Posted

OMG.. I was searching everywhere, this! Atleast how to make show htm for some class, and finaly, You madet it! Awesome. :) Now i can slee well, and dont think how to make it :))) Realy thx :)

  • 1 year later...

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

    • NEW SEASON START 23.01.2026 Get ready for the ultimate High Five adventure on L2Exoplanet.net!   • The last two previous Seasons are now merged into the Core Server. • The Core Server remains our main long-term world. • All future Seasonal Servers will be merged into Core after they end. • No characters or items will be lost – everything stays safe!     GRAND OPENING:  23.01.2026 at 20:00 GMT+1 BETA TEST:    16.01.2026    Client: High Five Rates: x10   Website: https://l2exoplanet.net Facebook: https://www.facebook.com/L2-Exoplanet-106811564103836 Discord: https://discord.gg/4fzhW7ZSPc         Game Rates    Experience: x10  Skill Points: x10  Adena: x5  Drop: x8  Spoil: x8  Quest: x5  Raid Boss Drop: x5  Fame: x2  Epaulette: x8  Manor: x8      Safe Enchant: +3  Maximum Enchant: +16  Normal Scroll Chance: 60%  Blessed Scroll Chance: 63%  Attribute Stone Chance: 50%  Attribute Crystal Chance: 30%      Game Settings    Multibox - 3 game clients per HWID  Autoloot  Autolearn Skills Auto Farm  NPC Buffer   Buff Slots (24+4/12)  Buff Duration (2h)  Olympiad Period 7days (new heroes appear every monday)  Seven Signs Period  Class Transfer for Adena  Max Sub-Class 3  Sub-Class Max Level 85  Essence Interface  Champions System  Vote Reward System  Dayli Reward System  PC Points Reward (500PC = 1 Donate Coin)      Epic Bosses Respawn Times     Queen Ant:  24 Hours +/- 4 Hours   Beleth: 3 Days +/- 8 Hours   Baium: 3 Days +/- 8 Hours   Antharas: 4 Days +/- 8 Hours   Valakas:  5 Days +/- 8 Hours     Instance Info     Normal Freya = 6 Players   Hard Freya = 12 Players   Frintezza = 6 Players   Zaken 83 Day = 6 Players   Zaken 60 Day = 6 Players   Zaken Nightly = 9 Players   Tiat = 6 Players   Beleth = 12 Players
    • when did i say something about mobius files besides what i've said on this post? or you're "calling me out" for saying this when someone says mobius is a better interlude alternative than acis? lol  
    • Spreading FUD disguised as "experience," mocking the project publicly, then acting shocked when called out. That's the conduct.
  • Topics

×
×
  • Create New...

Important Information

This community uses essential cookies to function properly. Non-essential cookies and third-party services are used only with your consent. Read our Privacy Policy and We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue..

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