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

    • How much would something like thos cost for H5? Im not a developer just want something like so i could play alone on my server, and i need it to be easy to instal ;3
    • The service is developing step by step to be convenient and reliable for every user. 🤝 We strive to build a strong foundation for long-term and comfortable cooperation, so you can rely on us and get consistent results. 🌟 Our goal is long-term relationships with every user, creating a solid base for stable work with our service. 📌 Website: vibe-sms.net 📲 Our Telegram channel: https://t.me/vibe_sms    
    • datapack + login server + gameserver for personal use doesnt have to be fancy 
    • 最优质的 Reddit 账号,专为想要影响舆论而不仅仅是阅读的人准备。 在互联网上,重要的不仅仅是观点,还有声誉。在 Reddit 上,声誉以业力值(Karma)衡量——只有少数人才能获得真正有分量的话语权。 对于企业家、营销人员、投资者和意见领袖来说,高业力账号能打开通往那些制定趋势、孕育创意、驱动数百万人的社区之门。 成为别人愿意倾听的人。推广产品、测试想法、塑造舆论——并且以强势的姿态去做。 为什么这很重要: 高业力不仅仅是你个人资料上的一个数字,它是一种能换取信任的工具。而信任是一种可以换取一切的货币。 我们的在线商店产品: 账号: Telegram、Facebook、Reddit、Twitter (X)、Instagram、YouTube、TikTok、Discord、VK、LinkedIn、GitHub、Snapchat、Gmail、电子邮箱(Outlook、Firstmail、Rambler、Onet、Gazeta、GMX、Yahoo、Proton、Web.de)、Google Voice、Google Ads 高级订阅: Telegram Premium、Twitter Premium X、YouTube Premium、Spotify Premium、Netflix Premium、Discord Nitro、ChatGPT Plus/PRO、XBOX Game Pass 附加服务: Telegram Stars、代理(IPv4、IPv6、ISP、Mobile)、VPN(Outline、WireGuard 等)、VDS/RDP 服务器 优惠码: AUGUST2025(九折优惠) 支付方式: 银行卡 · 加密货币 · 其他常用方式 购买方式: 在线商店:点击  Telegram 机器人:点击  其他服务: SMM 面板:点击 - 社交账号推广服务 使用我们的SMM面板可进行推广:Facebook、Instagram、Telegram、Spotify、Soundcloud、YouTube、Reddit、Threads、Kick、Discord、LinkedIn、Likee、VK、Twitch、Kwai、网站流量、TikTok、Trust Pilot、Apple Music、Tripadvisor、Snapchat 等等 首次试用SMM面板可获得$1奖励: 只需在我们网站提交一个主题为“Get Trial Bonus”的工单(Support) 产品列表: Reddit Karma Brute Account | 1 KARMA | 仅限 Cookies 访问(密码可能无效)| 最便宜的账号 | 起价:$1 Reddit Karma Brute Account | 20-100 发帖和评论业力 | 混合 IP 注册 | 格式:USERNAME: PASSWORD:EMAIL:MAILPASS | 起价:$5 Reddit Karma Brute Account | 500-1000 发帖和评论业力 | 混合 IP 注册 | 格式:USERNAME: PASSWORD:EMAIL:MAILPASS | 起价:$9 Reddit Karma Brute Account | 1000 发帖业力 + 100 评论业力 | 混合 IP 注册 | 格式:USERNAME: PASSWORD:EMAIL:MAILPASS | 起价:$15 Reddit Karma Brute Account | 2000 发帖业力 + 100 评论业力 | 混合 IP 注册 | 格式:USERNAME: PASSWORD:EMAIL:MAILPASS | 起价:$20 Reddit Karma Brute Account | 3000 发帖业力 + 100 评论业力 | 混合 IP 注册 | 格式:USERNAME: PASSWORD:EMAIL:MAILPASS | 起价:$25 Reddit Karma Brute Account | 5000 发帖业力 + 100 评论业力 | 混合 IP 注册 | 格式:USERNAME: PASSWORD:EMAIL:MAILPASS | 起价:$35 Reddit Karma Brute Account | 10000+ 业力 | 混合 IP 注册 | 格式:USERNAME: PASSWORD:EMAIL:MAILPASS(包含并可用邮箱)| 起价:$45 Reddit Karma Brute Account | 20000 业力 | 混合 IP 注册 | 格式:USERNAME: PASSWORD:EMAIL:MAILPASS(包含并可用邮箱)| 起价:$60 Reddit Karma Brute Account | 50000+ 业力 | 混合 IP 注册 | 格式:USERNAME: PASSWORD:EMAIL:MAILPASS(包含并可用邮箱)| 起价:$90 Reddit Karma Brute Account | 100000+ 业力 | 混合 IP 注册 | 格式:USERNAME: PASSWORD:EMAIL:MAILPASS(包含并可用邮箱)| 起价:$149 忠实客户 — 额外折扣与优惠码! 九折至八折优惠或注册即送 $1 奖励 如果您想获得注册奖励 $1 或 首次购买九折至八折优惠,您可以留言: "请发给我奖励, 我的用户名是..." 您也可以在所有我们的商店首次购买时使用优惠码:"SOCNET"(85 折优惠!) 联系方式与支持: Telegram: https://t.me/socnet_support Telegram频道: https://t.me/accsforyou_shop WhatsApp: https://wa.me/79051904467  WhatsApp频道: https://whatsapp.com/channel/0029Vau0CMX002TGkD4uHa2n Discord: socnet_support  Discord服务器: https://discord.gg/y9AStFFsrh  邮箱: solomonbog@socnet.store  通过以上联系方式您还可以: — 咨询批发采购事宜 — 建立合作关系(现有合作伙伴:https://socnet.bgng.io/partners ) — 成为我们的供应商 SocNet — 数字商品与高级订阅商店 
  • Topics

×
×
  • Create New...

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