Jump to content
  • 0

Problem On A Code After Updating The Source!


Question

Posted (edited)

Hello guys... so i have l2jserver High Five (unstable) and i updated it to the latest revision.. so i have many custom codes and features in my pack and i've got a problem that pissed me off!!

 

so the file is this:

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

import java.text.DecimalFormat;

import com.l2jserver.gameserver.datatables.ItemTable;
import com.l2jserver.gameserver.enums.InstanceType;
import com.l2jserver.gameserver.handler.IBypassHandler;
import com.l2jserver.gameserver.model.L2Object;
import com.l2jserver.gameserver.model.actor.L2Character;
import com.l2jserver.gameserver.model.actor.L2Npc;
import com.l2jserver.gameserver.model.actor.instance.L2PcInstance;
import com.l2jserver.gameserver.model.items.L2Item;
import com.l2jserver.gameserver.network.serverpackets.NpcHtmlMessage;
import com.l2jserver.util.StringUtil;

public class DropInfo implements IBypassHandler
{
	private static final String[] COMMANDS =
	{
		"drop",
		"spoil",
		"info",
		"dropquest"
	};
	
	@Override
	public boolean useBypass(String command, L2PcInstance activeChar, L2Character target)
	{
		try
		{
			final NpcHtmlMessage html = new NpcHtmlMessage(0);
			L2Object targetmob = activeChar.getTarget();
			L2Npc npc = (L2Npc) targetmob;
			String droptext = "";
			
			if (command.startsWith("drop"))
			{
				try
				{
					html.setFile(activeChar.getHtmlPrefix(), "data/html/dropinfo/mobdrop.htm");
					
					if (!(npc.isChampion() || npc.isMinion() || (npc.getInstanceType() == InstanceType.L2GrandBossInstance) || npc.isRaid() || npc.isRaidMinion() || npc.isMob()))
					{
						return false;
					}
					if (npc.getTemplate().getDropLists().isEmpty())
					{
						droptext = "WARNING: This Npc has no Drops!";
						html.replace("%drops%", droptext);
						activeChar.sendPacket(html);
						return false;
					}
					String champ = "";
					String imgsg = "<img src=\"l2ui.squaregray\" width=\"274\" height=\"1\">";
					String ta_op = "<table bgcolor=333333 cellspacing=2 cellpadding=1><tr><td height=38 fixwidth=36><img src=\"";
					String ta_op2 = "\" height=32 width=32></td><td fixwidth=234><table VALIGN=top valing = top width=234 cellpadding=0 cellspacing=0><tr>";
					
					final StringBuilder droptext1 = StringUtil.startAppend(9000, champ + "<br>" + imgsg);
					for (L2DropCategory cat : npc.getTemplate().getDropLists())
					{
						for (L2DropData drop : cat.getAllDrops())
						{
							final L2Item item = ItemTable.getInstance().getTemplate(drop.getItemId());
							if (item == null)
							{
								continue;
							}
							if (cat.isSweep())
							{
								continue;
							}
							if (drop.isQuestDrop())
							{
								continue;
							}
							
							String smind = null, drops = null;
							String name = item.getName();
							double chance = (drop.getChance() / 10000);
							
							if (item.getCrystalType() == 0)
							{
								smind = "<img src=\"L2UI_CH3.joypad_shortcut\" width=16 height=16>";
							}
							else if (item.getCrystalType() == 1)
							{
								smind = "<img src=\"L2UI_CT1.Icon_DF_ItemGrade_D\" width=16 height=16>";
							}
							else if (item.getCrystalType() == 2)
							{
								smind = "<img src=\"L2UI_CT1.Icon_DF_ItemGrade_C\" width=16 height=16>";
							}
							else if (item.getCrystalType() == 3)
							{
								smind = "<img src=\"L2UI_CT1.Icon_DF_ItemGrade_B\" width=16 height=16>";
							}
							else if (item.getCrystalType() == 4)
							{
								smind = "<img src=\"L2UI_CT1.Icon_DF_ItemGrade_A\" width=16 height=16>";
							}
							else if (item.getCrystalType() == 5)
							{
								smind = "<img src=\"L2UI_CT1.Icon_DF_ItemGrade_S\" width=16 height=16>";
							}
							else if (item.getCrystalType() == 6)
							{
								smind = "<img src=\"L2UI_CT1.Icon_DF_ItemGrade_80\" width=16 height=16>";
							}
							else if (item.getCrystalType() == 7)
							{
								smind = "<img src=\"L2UI_CT1.Icon_DF_ItemGrade_84\" width=16 height=16>";
							}
							
							if (chance <= 0.001)
							{
								DecimalFormat df = new DecimalFormat("#.####");
								drops = df.format(chance);
							}
							else if (chance <= 0.01)
							{
								DecimalFormat df = new DecimalFormat("#.###");
								drops = df.format(chance);
							}
							else
							{
								DecimalFormat df = new DecimalFormat("##.##");
								drops = df.format(chance);
							}
							if (name.startsWith("Recipe - Sealed"))
							{
								name = "<font color=00FF00>(Re)</font><font color=FF00FF>(Sl)</font>" + name.substring(16);
							}
							if (name.startsWith("Sealed "))
							{
								name = "<font color=FF00FF>(Sl)</font>" + name.substring(7);
							}
							if (name.startsWith("Common Item - "))
							{
								name = "<font color=00FFFF>(Ci)</font>" + name.substring(14);
							}
							if (name.startsWith("Recipe: "))
							{
								name = "<font color=00FF00>(Re)</font>" + name.substring(8);
							}
							if (name.startsWith("Recipe -"))
							{
								name = "<font color=00FF00>(Re)</font>" + name.substring(8);
							}
							if (name.startsWith("Mid-Grade Life Stone"))
							{
								name = "<font color=fff600>Mid-Grade LS</font>" + name.substring(20);
							}
							if (name.startsWith("High-Grade Life Stone"))
							{
								name = "<font color=fff600>High-Grade LS</font>" + name.substring(21);
							}
							if (name.startsWith("Top-Grade Life Stone"))
							{
								name = "<font color=fff600>Top-Grade LS</font>" + name.substring(20);
							}
							if (name.startsWith("Forgotten Scroll - "))
							{
								name = "<font color=fff600>FS - </font>" + name.substring(19);
							}
							if (name.startsWith("Greater Dye of "))
							{
								name = "<font color=fff600>G Dye of </font>" + name.substring(15);
							}
							
							droptext1.append(ta_op + item.getIcon() + ta_op2 + "<td align=left width=16>" + smind + "</td><td align=left width=260><font color=fff600>" + name + "</font></td></tr><tr><td align=left width=16><img src=\"L2UI_CH3.QuestWndToolTipBtn\" width=16 height=16></td><td align=left width=55><font color=E15656>" + drops + "%</font></td></tr></table></td></tr></table>" + imgsg);
						}
					}
					droptext = droptext1.toString();
					html.replace("%drops%", droptext);
					activeChar.sendPacket(html);
				}
				catch (Exception e)
				{
					activeChar.sendMessage("Something went wrong with the drop preview.");
				}
			}
			if (command.startsWith("spoil"))
			{
				try
				{
					html.setFile(activeChar.getHtmlPrefix(), "data/html/dropinfo/mobspoil.htm");
					
					if (!(npc.isChampion() || npc.isMinion() || npc.isRaid() || npc.isRaidMinion() || npc.isMob()))
					{
						return false;
					}
					if (npc.getTemplate().getDropLists().isEmpty())
					{
						droptext = "WARNING: This Npc has no Drops!";
						html.replace("%drops%", droptext);
						activeChar.sendPacket(html);
						return false;
					}
					String champ = "";
					String imgsg = "<img src=\"l2ui.squaregray\" width=\"274\" height=\"1\">";
					String ta_op = "<table bgcolor=333333 cellspacing=2 cellpadding=1><tr><td height=38 fixwidth=36><img src=\"";
					String ta_op2 = "\" height=32 width=32></td><td fixwidth=234><table VALIGN=top valing = top width=234 cellpadding=0 cellspacing=1><tr>";
					final StringBuilder droptext1 = StringUtil.startAppend(1000, champ + "<br>" + imgsg);
					for (L2DropCategory cat : npc.getTemplate().getDropLists())
					{
						for (L2DropData drop : cat.getAllDrops())
						{
							final L2Item item = ItemTable.getInstance().getTemplate(drop.getItemId());
							if (item == null)
							{
								continue;
							}
							if (!(cat.isSweep()))
							{
								continue;
							}
							
							String smind = null, drops = null;
							String name = item.getName();
							double chance = (drop.getChance() / 10000);
							
							if (item.getCrystalType() == 0)
							{
								smind = "<img src=\"L2UI_CH3.joypad_shortcut\" width=16 height=16>";
							}
							else if (item.getCrystalType() == 1)
							{
								smind = "<img src=\"L2UI_CT1.Icon_DF_ItemGrade_D\" width=16 height=16>";
							}
							else if (item.getCrystalType() == 2)
							{
								smind = "<img src=\"L2UI_CT1.Icon_DF_ItemGrade_C\" width=16 height=16>";
							}
							else if (item.getCrystalType() == 3)
							{
								smind = "<img src=\"L2UI_CT1.Icon_DF_ItemGrade_B\" width=16 height=16>";
							}
							else if (item.getCrystalType() == 4)
							{
								smind = "<img src=\"L2UI_CT1.Icon_DF_ItemGrade_A\" width=16 height=16>";
							}
							else if (item.getCrystalType() == 5)
							{
								smind = "<img src=\"L2UI_CT1.Icon_DF_ItemGrade_S\" width=16 height=16>";
							}
							else if (item.getCrystalType() == 6)
							{
								smind = "<img src=\"L2UI_CT1.Icon_DF_ItemGrade_80\" width=16 height=16>";
							}
							else if (item.getCrystalType() == 7)
							{
								smind = "<img src=\"L2UI_CT1.Icon_DF_ItemGrade_84\" width=16 height=16>";
							}
							
							if (chance <= 0.001)
							{
								DecimalFormat df = new DecimalFormat("#.####");
								drops = df.format(chance);
							}
							else if (chance <= 0.01)
							{
								DecimalFormat df = new DecimalFormat("#.###");
								drops = df.format(chance);
							}
							else
							{
								DecimalFormat df = new DecimalFormat("##.##");
								drops = df.format(chance);
							}
							if (name.startsWith("Recipe - Sealed"))
							{
								name = "<font color=00FF00>(Re)</font><font color=FF00FF>(Sl)</font>" + name.substring(16);
							}
							if (name.startsWith("Sealed "))
							{
								name = "<font color=FF00FF>(Sl)</font>" + name.substring(7);
							}
							if (name.startsWith("Common Item - "))
							{
								name = "<font color=00FFFF>(Ci)</font>" + name.substring(14);
							}
							if (name.startsWith("Recipe: "))
							{
								name = "<font color=00FF00>(Re)</font>" + name.substring(8);
							}
							if (name.startsWith("Recipe -"))
							{
								name = "<font color=00FF00>(Re)</font>" + name.substring(8);
							}
							if (name.startsWith("Mid-Grade Life Stone"))
							{
								name = "<font color=fff600>Mid-Grade LS</font>" + name.substring(20);
							}
							if (name.startsWith("High-Grade Life Stone"))
							{
								name = "<font color=fff600>High-Grade LS</font>" + name.substring(21);
							}
							if (name.startsWith("Top-Grade Life Stone"))
							{
								name = "<font color=fff600>Top-Grade LS</font>" + name.substring(20);
							}
							if (name.startsWith("Forgotten Scroll - "))
							{
								name = "<font color=fff600>FS - </font>" + name.substring(19);
							}
							if (name.startsWith("Greater Dye of "))
							{
								name = "<font color=fff600>G Dye of </font>" + name.substring(15);
							}
							
							droptext1.append(ta_op + item.getIcon() + ta_op2 + "<td align=left width=16>" + smind + "</td><td align=left width=260><font color=fff600>" + name + "</font></td></tr><tr><td align=left width=16><img src=\"L2UI_CH3.QuestWndToolTipBtn\" width=16 height=16></td><td align=left width=55><font color=E15656>" + drops + "%</font></td></tr></table></td></tr></table>" + imgsg);
						}
					}
					droptext = droptext1.toString();
					html.replace("%drops%", droptext);
					activeChar.sendPacket(html);
				}
				catch (Exception e)
				{
					activeChar.sendMessage("Something went wrong with the drop preview.");
				}
			}
			if (command.startsWith("dropquest"))
			{
				try
				{
					html.setFile(activeChar.getHtmlPrefix(), "data/html/dropinfo/mobquest.htm");
					
					if (!(npc.isChampion() || npc.isMinion() || npc.isRaid() || npc.isRaidMinion() || npc.isMob()))
					{
						return false;
					}
					if (npc.getTemplate().getDropLists().isEmpty())
					{
						droptext = "WARNING: This Npc has no Drops!";
						html.replace("%drops%", droptext);
						activeChar.sendPacket(html);
						return false;
					}
					String champ = "";
					String imgsg = "<img src=\"l2ui.squaregray\" width=\"274\" height=\"1\">";
					String ta_op = "<table bgcolor=333333 cellspacing=2 cellpadding=1><tr><td height=38 fixwidth=36><img src=\"";
					String ta_op2 = "\" height=32 width=32></td><td fixwidth=234><table VALIGN=top valing = top width=234 cellpadding=0 cellspacing=1><tr>";
					final StringBuilder droptext1 = StringUtil.startAppend(1000, champ + "<br>" + imgsg);
					for (L2DropCategory cat : npc.getTemplate().getDropLists())
					{
						for (L2DropData drop : cat.getAllDrops())
						{
							final L2Item item = ItemTable.getInstance().getTemplate(drop.getItemId());
							if (item == null)
							{
								continue;
							}
							if (!(drop.isQuestDrop()))
							{
								continue;
							}
							
							String smind = null, drops = null;
							String name = item.getName();
							double chance = (drop.getChance() / 10000);
							
							if (item.getCrystalType() == 0)
							{
								smind = "<img src=\"L2UI_CH3.joypad_shortcut\" width=16 height=16>";
							}
							else if (item.getCrystalType() == 1)
							{
								smind = "<img src=\"L2UI_CT1.Icon_DF_ItemGrade_D\" width=16 height=16>";
							}
							else if (item.getCrystalType() == 2)
							{
								smind = "<img src=\"L2UI_CT1.Icon_DF_ItemGrade_C\" width=16 height=16>";
							}
							else if (item.getCrystalType() == 3)
							{
								smind = "<img src=\"L2UI_CT1.Icon_DF_ItemGrade_B\" width=16 height=16>";
							}
							else if (item.getCrystalType() == 4)
							{
								smind = "<img src=\"L2UI_CT1.Icon_DF_ItemGrade_A\" width=16 height=16>";
							}
							else if (item.getCrystalType() == 5)
							{
								smind = "<img src=\"L2UI_CT1.Icon_DF_ItemGrade_S\" width=16 height=16>";
							}
							else if (item.getCrystalType() == 6)
							{
								smind = "<img src=\"L2UI_CT1.Icon_DF_ItemGrade_80\" width=16 height=16>";
							}
							else if (item.getCrystalType() == 7)
							{
								smind = "<img src=\"L2UI_CT1.Icon_DF_ItemGrade_84\" width=16 height=16>";
							}
							
							if (chance <= 0.001)
							{
								DecimalFormat df = new DecimalFormat("#.####");
								drops = df.format(chance);
							}
							else if (chance <= 0.01)
							{
								DecimalFormat df = new DecimalFormat("#.###");
								drops = df.format(chance);
							}
							else
							{
								DecimalFormat df = new DecimalFormat("##.##");
								drops = df.format(chance);
							}
							if (name.startsWith("Recipe - Sealed"))
							{
								name = "<font color=00FF00>(Re)</font><font color=FF00FF>(Sl)</font>" + name.substring(16);
							}
							if (name.startsWith("Sealed "))
							{
								name = "<font color=FF00FF>(Sl)</font>" + name.substring(7);
							}
							if (name.startsWith("Common Item - "))
							{
								name = "<font color=00FFFF>(Ci)</font>" + name.substring(14);
							}
							if (name.startsWith("Recipe: "))
							{
								name = "<font color=00FF00>(Re)</font>" + name.substring(8);
							}
							if (name.startsWith("Recipe -"))
							{
								name = "<font color=00FF00>(Re)</font>" + name.substring(8);
							}
							if (name.startsWith("Mid-Grade Life Stone"))
							{
								name = "<font color=fff600>Mid-Grade LS</font>" + name.substring(20);
							}
							if (name.startsWith("High-Grade Life Stone"))
							{
								name = "<font color=fff600>High-Grade LS</font>" + name.substring(21);
							}
							if (name.startsWith("Top-Grade Life Stone"))
							{
								name = "<font color=fff600>Top-Grade LS</font>" + name.substring(20);
							}
							if (name.startsWith("Forgotten Scroll - "))
							{
								name = "<font color=fff600>FS - </font>" + name.substring(19);
							}
							if (name.startsWith("Greater Dye of "))
							{
								name = "<font color=fff600>G Dye of </font>" + name.substring(15);
							}
							
							droptext1.append(ta_op + item.getIcon() + ta_op2 + "<td align=left width=16>" + smind + "</td><td align=left width=260><font color=fff600>" + name + "</font></td></tr><tr><td align=left width=16><img src=\"L2UI_CH3.QuestWndToolTipBtn\" width=16 height=16></td><td align=left width=55><font color=E15656>" + drops + "%</font></td></tr></table></td></tr></table>" + imgsg);
						}
					}
					droptext = droptext1.toString();
					html.replace("%drops%", droptext);
					activeChar.sendPacket(html);
				}
				catch (Exception e)
				{
					activeChar.sendMessage("Something went wrong with the drop preview.");
				}
			}
		}
		catch (Exception e)
		{
			activeChar.sendMessage("You cant use this option with this target.");
		}
		return false;
	}
	
	@Override
	public String[] getBypassList()
	{
		return COMMANDS;
	}
}

so i have problem with these:

 

for (L2DropCategory cat : npc.getTemplate().getDropLists())
                    {
                        for (L2DropData drop : cat.getAllDrops())

 

 

these codes are placed 3 times in the whole file..!

I'll appreciate your help a lot!
(P.S. these methods (L2DropData and L2DropCategory) have been removed by L2JServer team... but i didn't found any other way to solve these problems!)

Edited by xXObanXx

1 answer to this question

Recommended Posts

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now


  • Posts

    • Name: Giran Castle Town (Autumn Version) Type: Map Location: 22_22 Chronicle: Interlude Credits: AzukaChan Notes: Includes effects that are not visible in the preview. Chronicle Coders Have server/client development questions? Join the Chronicle Coders Discord: https://discord.gg/5zHzFGyGns   < DOWNLOAD LINK >
    • 🔒 Direct account upgrade: No passwords required. Unlock 5TB Drive storage and Google One AI integrations instantly.     FINAL CALL: Google is Shutting This Down After October 2026! Google will NEVER bring back this window of opportunity again. Once this month ends, this massive backdoor upgrade is gone permanently!  BUY 2, GET 1 FREE IS STILL LIVE! Stock up now for yourself, your family, your business, and your friends! Think about it: Every single person you know uses a Gmail account, and everyone is running out of storage. Don't let your loved ones get trapped paying $20–$30 every single month when you can set them up with 5TB Cloud Storage + Gemini Advanced (12–18 Months) right now for only $15! Why Buy Bulk Activations Today? Instant Gift Value: Perfect lifetime-style gift for clients, family, or team members. 100% Private & Safe: Activates on personal Gmails—zero passwords or logins required. Global Access: Works worldwide with zero VPN hassles. Instant Automated Delivery: Receive your activation links in seconds 24/7! ‍ Time is running out fast—secure your extra free licenses before the October deadline hits! Order Your Bundle Now on the Website
    • We provide DDoS protection for Perfect World, Jade Dynasty, and other game servers. Your server connects through a dedicated DDoS-protected IP address. Traffic is filtered and forwarded to your game server over a secure connection. What we offer: Protection against L3/L4 DDoS attacks; Protection for TCP and UDP game servers; Filtering of malicious and abnormal traffic; Protection against game port overload; Hiding your game server’s real IP address; Preserving players’ real IP addresses; Protection configured specifically for your gaming project; A stable connection with minimal impact on latency; Bandwidth tailored to your requirements. Free 3-day DDoS protection trial for everyone. You can connect your existing server and test latency, connection stability, and protection performance under real traffic loads. Pricing is calculated individually for each client, based on the project, required bandwidth, and protection configuration. Setup and support: Telegram: @alex_protection Products: Alex DDoS-Guard | Reliable Protection for Your Services and Game Servers
    • That sounds great, but the download link is dead for me too. Could you re-upload it or send it directly? Thanks for sharing the event
  • 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..