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)

Well you have 2 options.

 

  1. You will add the next check in showChatWindow() method in super class (L2Npc?) by checking the npc id
  2. You will override the method showChatWindow() in your npc instance

 

inside of your method before you send the html add a check like this:

	List<Integer> classes = Arrays.asList(1,2,3,4,5,6);
	
	if (classes.contains(player.getClassId().getId()))
		return;

Fill the list with all healers class ids

Edited by melron
  • 0
Posted

My god,

 

First check the proper method, what you want to use would be onTalk, onFirstTalk or maybe onAdvEvent. Pick the one that suits you.

 

Also category were made in retail to avoid such ugly list. There is an existing category for healer, check the name in categoryData.xml and use player.isInCategory(Category type.NAME_HERE)

 

you can even make yours if you like.

  • 0
Posted
On 7/19/2017 at 7:14 AM, Sdw said:

My god,

 

First check the proper method, what you want to use would be onTalk, onFirstTalk or maybe onAdvEvent. Pick the one that suits you.

 

Also category were made in retail to avoid such ugly list. There is an existing category for healer, check the name in categoryData.xml and use player.isInCategory(Category type.NAME_HERE)

 

you can even make yours if you like.

/*
 * 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.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
{
	/**
	 * @param name
	 * @param descr
	 */
	public potions(String name, String descr)
	{
		super(name, descr);
	}
	
	// NPC
	private static int[] NPCS =
	{
		30165, // Ralford
	};
	
	@Override
	public String onTalk(L2Npc npc, L2PcInstance player,int)
	{
		String htmltext = null;
	
final int npcId = getId();
 
if (npcId == 30165)
{
final NpcHtmlMessage html = new NpcHtmlMessage();
if (player.getClassId() == 97)
html.setFile("data/html/merchant/30165-50.htm", _descr);
else
html.setFile("data/html/merchant/30165-3.htm", _descr);
}
else
html.replace("%objectId%", getObjectId());
player.sendPacket(html);
return; 
}
	
	/**
	 * @return
	 */
	private Object getObjectId()
	{
		return null;
	}
}

:X  .... can u fix it :D 

  • 0
Posted (edited)
  • Delete your pointless getObjectId() and use instead npc.getObjectId().
  • Use onFirstTalk instead of onTalk, and register the npc to the correct event too.

Finally the whole class structure sucks, check how other scripts using onFirstTalk event are written, it's not hard.

Edited by Tryskell
  • 0
Posted
2 hours ago, Tryskell said:
  • Delete your pointless getObjectId() and use instead npc.getObjectId().
  • Use onFirstTalk instead of onTalk, and register the npc to the correct event too.

Finally the whole class structure sucks, check how other scripts using onFirstTalk event are written, it's not hard.

/*
 * 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.potionns;

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.DwarfWarehouseChange1.DwarfWarehouseChange1;

public final class potionns extends AbstractNpcAI
{
	/**
     * @param name
     * @param descr
     */
    public potionns(String name, String descr)
    {
        super(name, descr);
    }
	
	// NPC
	private static int[] NPCS =
	{
		30165, // Ralford
	};
	
	@Override
    public String addTalkId(L2Npc npc, L2PcInstance player,int)
    {
        String htmltext = null;
   
final int npcId = getId();
 
if (npcId == 30165)
{
final NpcHtmlMessage html = new NpcHtmlMessage();
if (player.getClassId() == 97)
html.setFile("data/html/merchant/30165-50.htm", _descr);
else
html.setFile("data/html/merchant/30165-3.htm", _descr);
}
else
html.replace("%objectId%", getObjectId());
player.sendPacket(html);
return;

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

There are still some problems :X

  • 0
Posted
6 minutes ago, Tryskell said:

Did you open an existing file with the event I talked about before reposting this ?

I don't understand what it is and what should i open... there are thousands of files and idk what is constructor and what is event and where to put. I simply don't understand it. Sorry

  • 0
Posted
16 hours ago, milosvamp said:

I don't understand what it is and what should i open... there are thousands of files and idk what is constructor and what is event and where to put. I simply don't understand it. Sorry

Reconsider developing if you don't know how to use Eclipse search tool.

  • 0
Posted
2 hours ago, Tryskell said:

Reconsider developing if you don't know how to use Eclipse search tool.

What should i search ? Just tell me from which file should i copy that if  u know....

  • 0
Posted
12 minutes ago, Tryskell said:

onFirstTalk on the whole script folder. Or whatever your pack uses as "first talk event" on script system.

ok i got this now but idk what to say if player is class or what..... :x i just copied what i found onFirstTalk... look

 

/*
 * 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.potionns;

import com.l2jserver.gameserver.model.ClanPrivilege;
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.DwarfWarehouseChange1.DwarfWarehouseChange1;

public final class potionns extends AbstractNpcAI
{
	/**
	 * @param name
	 * @param descr
	 */
	public potionns(String name, String descr)
	{
		super(name, descr);
	}
	
	// NPC
	private static int[] NPCS =
	{
		30165, // Ralford
	};
	
	@Override
	public String onFirstTalk(L2Npc npc, L2PcInstance player)
	{
		if (player.isClanLeader() || player.hasClanPrivilege(ClanPrivilege.CL_TROOPS_FAME))
		{
			return npc.getId() + ".html";
		}
		return npc.getId() + "-01.html";
	}
   
final int npcId = getId()
;{
 
if (npcId == 30165)
{
final NpcHtmlMessage html = new NpcHtmlMessage();
if (player.getClassId() == 97)
html.setFile("data/html/merchant/30165-50.htm", _descr);
else
html.setFile("data/html/merchant/30165-3.htm", _descr);
}
else
html.replace("%objectId%", getObjectId());
player.sendPacket(html);
return;

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

 

  • 0
Posted

You just copy/paste.... :D

	@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";
	}

and u need regiser onfirsttalk to 30165 npc.

 

  • 0
Posted
9 hours ago, wongerlt said:

You just copy/paste.... :D


	@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";
	}

and u need regiser onfirsttalk to 30165 npc.

 

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

Guest
This topic is now closed to further replies.


  • Posts

    • Dragic is a trusted guy—buy with confidence. The feature list looks incredibly solid, and you've clearly put a ton of work into this pack. Good luck with the sale, mate!
    • Im Selling my Interlude server L2wish only The Data and Core of L2wish based on lucera2 files with source code reconstructed which i did a long time ago. Im not selling the servername copyrights logos launcher etc only server data and source code, including Essence Interface reworked with interface source also.      EXP/SP: x75  Adena: x20  Drop: x20  Spoil: x20  Seal Stones: x5  Fangs of Stakato: x5  Raid Boss EXP/SP: x75  Raid Boss Drop: x1  Epic Boss Drop: x1  Manor: x5  Safe Enchant: +3  Max Enchant: Unlimited   Normal Scroll S/A Grade: 50%   Blessed Scroll S/A Grade: 55%    Normal Scroll B/C/D Grade: 50%    Blessed Scroll B/C/D Grade 55%  Max clans in ally (2)  3rd Class Cost (700 Halisha's Mark from Shrine of Loyalty)  NPC Buffer with 3h buff duration  GM Shop until B-Grade  Mana Potions  (1000 Power Delay 10 Seconds)  Auto-learn skills   Buff Slots (22+4 extra with Divine Inspiration)  Autopickup  Auction House in NPC at all towns  Offline Stores  Max Clients per PC (2)  Retail Geodata and Pathnodes  Reworked movement  Shift + Click Droplist on Monsters  Alt + Click Remove Buffs  Global Shout & Trade Chat  Special akamanah and zariche transformation  Seven Sings (Open)  Olympiad Weekly Circle  Olympiad Non-class  (5 min participants to begin)  Olympiad Class based (5 min participants to begin)  Tyrannosaurus drop Top LS chance 20% 5 Minutes Respawn  Flames of Invincibility cast 5 sec / duration 30 sec  Premium Account System  Auto Farm system using 10th Skill Bar.  IMPROVED RING OF CORE +1 STR +1 INT • INCREASE M. ATK. AND P. ATK.  IMPROVED EARRING OF ORFEN +1 WIT • INCREASE CASTING SPEED.  Subclass Quest           Part I: Kill Cabrio (Aden-Seal of Shilen) Talk to the box and bring the item to Subclass Quest           NPC.           Part II: Go for Hallate TOI 3, Kernon TOI 8 and Golkonda TOI 11, (Regardless of the order)           kill them, talk to the boxes and bring the sticks to Subclass Quest NPC to redeem your           subclass item.    Vote Reward System with Vote Coins and 12 Hours Vote Rune.  Vote Rune increases your P. Def and M. Def by 6%, P. Attack and M. Attack by 4%, Movement Speed by 4%.  Duration 12 Hours   Quest Name Drop  Relics of the Old Empire x4-8  Gather The Flames x3  Alliance with the Ketra Orcs x5  Alliance with the Varka Silenos x5  War with Ketra Orcs x10  War with the Varka Silenos x10  The Finest Food x5  A Powerful Primeval Creature x5  Rise and Fall of the Elroki Tribe x8  Legacy of Insolence x6-50%  Exploration of Giants Cave Part 1 x3  Exploration of Giants Cave Part 2 x3   Seekers of the Holy Grail x10   Guardians of the Holy Grail x10  Hunt of the Golden Ram Mercenary Force x10  The Zero Hour x5  Delicious Top Choice Meat x1  Heart in Search of Power x1  Whisper of Dreams 1/2 x3  In Search Of Fragments Of The Dimension x1 Raid Boss Name LvL Respawn  Frintezza    80 Respawn 48 Hours + - 30 Min  • Frintezza’s Necklace drop chance is 100%  Valakas    80 Respawn 240 Hours + - 30 Min  Sleep time 30 Minutes • Necklace of Valakas drop chance is 100%  Antharas    80 Respawn 192 Hours + - 30 Min  Sleep time 30 Minutes • Earring of Antharas drop chance is 100%  Baium    80 Respawn 120 Hours + - 30 Min  Sleep time 30 Minutes • Ring of Baium drop chance is 100%  Zaken    80 Respawn 48 Hours + - 30 Min  Door Open 22:00 in the night • Zaken’s Earring drop chance is 100%  Orfen    80 Every 24 Hours -+ 20 Minutes  • Earring of Orfen drop chance is 30%  Core    80 Every 26 Hours -+ 20 Minutes   • Ring of Core drop chance is 30%  Ant Queen    80 Every 28 Hours -+ 20 Minutes • Ring of Queen Ant drop chance is 30%  Splendor Barakiel    80 Spawn 6 Hours + - 15 Min Random  Subclass - Cabrio    80 Spawn 6 Hours + - 15 Min Random  Subclass - Hallate    80 Spawn 6 Hours + - 15 Min Random  Subclass - Kernon    80 Spawn 6 Hours + - 15 Min Random  Subclass - Golkonda    80 Spawn 6 Hours + - 15 Min Random   Ketra's Hero Hekaton    80 Spawn 22 Hours + - 15 Min Random   Ketra's Commander Tayr    80 Spawn 22 Hours + - 15 Min Random  Varka's Hero Shadith    80 Spawn 22 Hours + - 15 Min Random   Varka's Commander    80 Spawn 22 Hours + - 15 Min Random   Command Description .getreward Get vote reward from Hopzone. .rune Your Rune Informations. .menu Personal Menu Options. .raid Shows Normal Raids & Respawn. .epic Shows Epic Raids & Respawn. .rewards Get your Achievments. .offline Offline Shops. .relog Clearing your cache fps.     Source code reconstructed from my Lucera2 project.           Contact me for more informations, trollers will be not answered and don't expect a low price or a price drop. This project was running with 500+ real players.
    • 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
  • 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..