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

No, || stands for 'or', so you would have to c/p whole check, but that's bad. You can ceate an int [] with id's. 

  • 0
Posted

You can create int[],list or even do a for loop but instead of that CategoryType enum isn't exist with healer category?

  • 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.
×
×
  • Create New...