Jump to content
  • 0

[HELP]Help me fix That Boss Info Npc to H5


Question

Posted

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


import javolution.text.TextBuilder;

import com.l2jserver.gameserver.instancemanager.GrandBossManager;
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.network.serverpackets.NpcHtmlMessage;
import com.l2jserver.gameserver.datatables.NpcTable;

public class BossRespawn extends Quest
{
private static final int NPC_ID = 93000;
private static final int[] BOSSES = {29001, 29006, 29014, 29019, 29020, 29022, 29028, 29045};

public BossRespawn(int questid, String name, String descr)
{
	super(questid, name, descr);
	addFirstTalkId(NPC_ID);
}

public String onFirstTalk(L2Npc npc, L2PcInstance pc)
{
	if(npc == null || pc == null)
		return null;

	if(npc.getNpcId() == NPC_ID)
	{
		sendInfo(pc);
	}
		return null;
}

private void sendInfo(L2PcInstance activeChar)
{
	TextBuilder tb = new TextBuilder();
	tb.append("<html><title>Grand Boss Info By Dleogr</title><body><br><center>");
	tb.append("<img src=\"L2UI_CH3.herotower_deco\" width=256 height=32><br><br>");

	for(int boss : BOSSES)
	{
		String name = NpcTable.getInstance().getTemplate(boss).getName();
		long delay = GrandBossManager.getInstance().getStatsSet(boss).getLong("respawn_time");
		if (delay <= System.currentTimeMillis())
		{
			tb.append("<font color=\"00C3FF\">" + name + "</color>: " + "<font color=\"9CC300\">Is Alive</color>"+"<br1>");
		}
		else
		{
			int hours = (int) ((delay - System.currentTimeMillis()) / 1000 / 60 / 60);
			int mins = (int) (((delay - (hours * 60 * 60 * 1000)) - System.currentTimeMillis()) / 1000 / 60);
			int seconts = (int) (((delay - ((hours * 60 * 60 * 1000) + (mins * 60 * 1000))) - System.currentTimeMillis()) / 1000);
			tb.append("<font color=\"00C3FF\">" + name + "</color>" + "<font color=\"FFFFFF\">" +" " + "Respawn in :</color>" + " " + " <font color=\"32C332\">" + hours + " : " + mins + " : " + seconts + "</color><br1>");
		}
	}

	tb.append("<br><img src=\"L2UI_CH3.herotower_deco\" width=256 height=32><br>");
	tb.append("</center></body></html>");

	NpcHtmlMessage msg = new NpcHtmlMessage(NPC_ID);
	msg.setHtml(tb.toString());
	activeChar.sendPacket(msg);
}

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

 

the script works on NPC but he only show's "ALIVE" :S

 

if you kill the Grand Boss like Baium etc. he always show alive.

9 answers to this question

Recommended Posts

  • 0
Posted

I'll give you the skeleton of the implementation

 

-Create a method for retrieving the data into a String(with all the html you want to generate)

-Put the above method on a ThreadPool and schedule it for a fixed rate(your choice on how many time until next refresh).

-Use the sendInfo method you got down there to send the above String to the player in an npc window.

Right now you don't refresh the content.

  • 0
Posted

sorry i dont know code as well :X can you help me do that plz? <3

 

should i do:

private static int refreshTime = 30

and

ThreadPoolManager.getInstance().scheduleGeneralAtFixedRate(new reloadboss(), 1000, refreshTime);

 

and a private class reloadboss?

  • 0
Posted

should i do:

private static int refreshTime = 30

and

ThreadPoolManager.getInstance().scheduleGeneralAtFixedRate(new reloadboss(), 1000, refreshTime);

 

and a private class reloadboss?

the private class well no.rest stuff yes.Oh and refreshTime*1000.Don't forget we are talking about milliseconds here.

  • 0
Posted

What's the point to use a task, it is updated automatically when you re-speak to the NPC.

 

So far, respawn_time == 0 means it's alive, if there is any respawn time, it means it's dead. Change your check for what I said.

  • 0
Posted

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


import javolution.text.TextBuilder;

import com.l2jserver.gameserver.instancemanager.GrandBossManager;
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.network.serverpackets.NpcHtmlMessage;
import com.l2jserver.gameserver.datatables.NpcTable;

public class BossRespawn extends Quest
{
private static final int NPC_ID = 93000;
private static final int[] BOSSES = {29001, 29006, 29014, 29019, 29020, 29022, 29028, 29045};

public BossRespawn(int questid, String name, String descr)
{
	super(questid, name, descr);
	addFirstTalkId(NPC_ID);
}

public String onFirstTalk(L2Npc npc, L2PcInstance pc)
{
	if(npc == null || pc == null)
		return null;

	if(npc.getNpcId() == NPC_ID)
	{
		sendInfo(pc);
	}
		return null;
}

private void sendInfo(L2PcInstance activeChar)
{
	TextBuilder tb = new TextBuilder();
	tb.append("<html><title>Grand Boss Info By Dleogr</title><body><br><center>");
	tb.append("<img src=\"L2UI_CH3.herotower_deco\" width=256 height=32><br><br>");

	for(int boss : BOSSES)
	{
		String name = NpcTable.getInstance().getTemplate(boss).getName();
		long delay = GrandBossManager.getInstance().getStatsSet(boss).getLong("respawn_time");
                                activeChar.sendMessage("Boss ID "+boss+" Current "+System.System.currentTimeMillis() +" delay "+delay);
		if (delay <= System.currentTimeMillis())
		{
			tb.append("<font color=\"00C3FF\">" + name + "</color>: " + "<font color=\"9CC300\">Is Alive</color>"+"<br1>");
		}
		else
		{
			int hours = (int) ((delay - System.currentTimeMillis()) / 1000 / 60 / 60);
			int mins = (int) (((delay - (hours * 60 * 60 * 1000)) - System.currentTimeMillis()) / 1000 / 60);
			int seconts = (int) (((delay - ((hours * 60 * 60 * 1000) + (mins * 60 * 1000))) - System.currentTimeMillis()) / 1000);
			tb.append("<font color=\"00C3FF\">" + name + "</color>" + "<font color=\"FFFFFF\">" +" " + "Respawn in :</color>" + " " + " <font color=\"32C332\">" + hours + " : " + mins + " : " + seconts + "</color><br1>");
		}
	}

	tb.append("<br><img src=\"L2UI_CH3.herotower_deco\" width=256 height=32><br>");
	tb.append("</center></body></html>");

	NpcHtmlMessage msg = new NpcHtmlMessage(NPC_ID);
	msg.setHtml(tb.toString());
	activeChar.sendPacket(msg);
}

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

Well i read this on the fly.Saw the "if you kill the Grand Boss like Baium etc. he always show alive" phrase and assumed it's not refreshed properly.I was wrong.Also the check is just fine.(If it's allive then delay-System.currentTimeMillis() will be negative or zero or if you like delay<=System.currentTimeMillis())  )

let's do somekind of debug.I've added a line below long delay = bla bla

See what message you will get after this add.You'll find out what's wrong

  • 0
Posted

gives error here: activeChar.sendMessage("Boss ID "+boss+" Current "+System.currentTimeMillis() +" delay "+delay);

 

 

wopsie it's System.currentTimeMillis()

edited in the quote

Guest
This topic is now closed to further replies.


  • Posts

    • Thnx for share, i can't pm u for password  
    • I'm looking for the best current files that are up to date for the year 2025, not files that are stuck in 2020.
    • EXOPLANET 2.0     GRAND OPENING 09.05.2025 We are thrilled to announce the upcoming launch of a brand new server. This isn’t just a copy of the previous server – it’s the next step in the development of Exoplanet. Based on our past experience, we’re bringing you a server that is faster, more stable, and more fun than ever before.     GRAND OPENING:  09.05.2025 at 20:00 GMT+1 BETA TEST:   04.05.2025    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: x8  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
    • EXOPLANET 2.0     GRAND OPENING 09.05.2025 We are thrilled to announce the upcoming launch of a brand new server. This isn’t just a copy of the previous server – it’s the next step in the development of Exoplanet. Based on our past experience, we’re bringing you a server that is faster, more stable, and more fun than ever before.     GRAND OPENING:  09.05.2025 at 20:00 GMT+1 BETA TEST:   04.05.2025    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: x8  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      
  • Topics

×
×
  • Create New...