Jump to content
  • 0

Question

Posted

Can somebody give me a little bit of help ?

I wanna make one NPC not available for all classes. I want to make for example that only healers can use it. But I am very new at this... Could anybody just try to give me some advices ? (:

For now the code looks like this:

 


/*
 * Copyright (C) 2004-2016 L2J DataPack
 * 
 * This file is part of L2J DataPack.
 * 
 * L2J DataPack 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.
 * 
 * L2J DataPack 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.pots.pots;

import com.l2jserver.gameserver.model.actor.L2Npc;
import com.l2jserver.gameserver.enums.PlayerAction;
import com.l2jserver.gameserver.enums.Race;
import com.l2jserver.gameserver.model.actor.instance.L2PcInstance;
import com.l2jserver.gameserver.model.base.ClassId;
import com.l2jserver.gameserver.network.serverpackets.NpcHtmlMessage;
import com.l2jserver.gameserver.model.actor.instance.L2MerchantInstance;

import ai.npc.AbstractNpcAI;
import village_master.KamaelChange2.KamaelChange2;

public final class pots extends AbstractNpcAI
{
	/**
	 * @param name
	 * @param descr
	 */
	public pots(String name, String descr)
	{
		super(name, descr);
	}
	
	// NPC
	private static int[] NPCS =
	{
		30165, // Ralford
	};
	
	public void showChatWindow(PlayerAction player, int val)

final int npcId = getNpcId();
 
if (npcId == 30165)
{
final NpcHtmlMessage html = new NpcHtmlMessage();
if (PlayerAction.getclassid == 97)
html.setFile("data/html/merchant/30165-50.htm", _descr);
else
html.setFile("data/html/merchant/30165-3.htm", _descr);
 
html.replace("%objectId%", getObjectId());
player.sendPacket(html);
return; 
}
}

	/**
	 * @return
	 */
	private Object getObjectId()
	{
		return null;
	}
}


Thanks in advance...

Recommended Posts

  • 0
Posted (edited)
On 9/19/2017 at 1:47 PM, milosvamp said:

yeah, haha idk how to make it ......................:x shit

package custom.potions;

import com.l2jserver.gameserver.model.actor.L2Npc;
import com.l2jserver.gameserver.enums.PlayerAction;
import com.l2jserver.gameserver.enums.Race;
import com.l2jserver.gameserver.model.actor.instance.L2PcInstance;
import com.l2jserver.gameserver.model.base.ClassId;
import com.l2jserver.gameserver.network.serverpackets.NpcHtmlMessage;
import com.l2jserver.gameserver.model.actor.instance.L2MerchantInstance;

import ai.npc.AbstractNpcAI;

public final class potions extends AbstractNpcAI
{
	public potions(String name, String descr)
	{
		super(name, descr);
		
		addStartNpc(30165);
		addFirstTalkId(30165);
	}
	
	@Override
	public String onFirstTalk(L2Npc npc, L2PcInstance player)
	{
		if (player.getClassId() == 97)
		return "data/html/merchant/30165-50.htm";
		else
		return "data/html/merchant/30165-3.htm";
	}
	
	public static void main(String[] args)
	{
		new potions(-1, "potions", "custom");
	}
}

 

Edited by wongerlt
  • 0
Posted
13 minutes ago, wongerlt said:

package custom.potions;

import com.l2jserver.gameserver.model.actor.L2Npc;
import com.l2jserver.gameserver.enums.PlayerAction;
import com.l2jserver.gameserver.enums.Race;
import com.l2jserver.gameserver.model.actor.instance.L2PcInstance;
import com.l2jserver.gameserver.model.base.ClassId;
import com.l2jserver.gameserver.network.serverpackets.NpcHtmlMessage;
import com.l2jserver.gameserver.model.actor.instance.L2MerchantInstance;

import ai.npc.AbstractNpcAI;

public final class potions extends AbstractNpcAI
{
	public potions(String name, String descr)
	{
		super(name, descr);
		
		addStartNpc(30165);
		addFirstTalkId(30165);
	}
	
	@Override
	public String onFirstTalk(L2Npc npc, L2PcInstance player)
	{
		if (player.getClassId() == 97)
		return "data/html/merchant/30165-50.htm";
		else
		return "data/html/merchant/30165-3.htm";
	}
	
	public static void main(String[] args)
	{
		new potions(-1, "potions", "custom");
	}
}

 

THANK YOU VERY MUCH man !!!

i have only one issue. Could you pls tell me what to do with it ?

Image of the problem

  • 0
Posted

hm ok thanks, and if i want more classes i just add comma and put another number ? Like:

 

if (player.getClassId().getId() == 97,==92,==93)  ?

  • 0
Posted

this:

int clid = player.getClassId().getId();
if (clid  == 97 || clid == 96 || clid == 13 || clid == 23)

or

import org.apache.commons.lang.ArrayUtils; // put it at all other imports..


int[] classes = {1,4,67,123,14,53,14,86,234,34,34,and etc....};
if(ArrayUtils.contains(classes, player.getClassId().getId()))

 

  • 0
Posted
4 minutes ago, wongerlt said:

this:


int clid = player.getClassId().getId();
if (clid  == 97 || clid == 96 || clid == 13 || clid == 23)

or


import org.apache.commons.lang.ArrayUtils; // put it at all other imports..


int[] classes = {1,4,67,123,14,53,14,86,234,34,34,and etc....};
if(ArrayUtils.contains(classes, player.getClassId().getId()))

 

Thank you mate.

Guest
This topic is now closed to further replies.


  • Posts

    • TG Support: https://t.me/buyingproxysup | Channel: https://t.me/buyingproxycom Discord support: #buyingproxy | Server: Join the BuyingProxy Discord Server!  Create your free account here
    • I think you should check the video more carefully you missing something very important 😛      
    • Im responding to an anonymous account with 3 posts, almost no background, and practically zero useful information added to the discussion. On top of that, the topic title is misleading  calling it "Lucera Source Code" gives a completely different impression from what is actually being presented.   I didn’t say anything different. Therefore, I have no clue how his process produces the same desirable result.   And here you are creating drama. Your topic title clearly says "Lucera Source Code," which is not actually the case, or at least that’s how it looked when I first clicked on it, so I don’t think I was completely off. There’s also no significant information about your process like  what difficulties you faced, what tools you used, or anything else meaningful. Yet you still expect others to provide value based on what? I’m not talking about your project itself which, by the way, good job. I’m talking about the topic itself as a source of value for this forum, because right now it doesn’t really offer much in that regard. So regarding the semantics, yes, wording does matter.  
    • You are funny guy! 😄 😄 😄    I was working with Lucera long before “AI apps” became fashionable. This was not something I generated in one day with a prompt. It took me years of work, testing, debugging and fixing broken decompiled code.   Of course a decompiled source is not the original private repository with the original comments, history and developer structure. Nobody said it is the same Git repository. But saying it is only “guesses” is also wrong.   When you decompile, rebuild, fix thousands of compile/runtime issues, restore broken logic, reconnect scripts, fix bad casts, repair database calls, compile it again and run it in-game, at that point it is no longer just a guess.   It becomes a working reconstructed source base!   The important part is not whether it is byte-for-byte identical to the original private source. The important part is that I can now work directly inside the code, change core logic, rebuild scripts, fix bugs and continue development without being locked behind closed binaries.   Does it compile? Yes. Does it run in-game? Yes. Can I modify core systems directly? Yes. Can I continue development independently? Yes.   So call it reconstructed, decompiled, cleaned, restored or whatever name you prefer. The result is still the same: I have a working source environment that gives me control over the lucera2 project.   And that was exactly the goal!   🙂 
  • 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..