Noticias:

No tienes permiso para ver los enlaces. Para poder verlos Registrate o Conectate.

Menú Principal

Advanced Grand Boss Observation

Iniciado por Swarlog, Ago 03, 2025, 12:32 AM

Tema anterior - Siguiente tema

Swarlog

Citardata/scripts/custom/RaidObserver/RaidObserver.java

package custom.RaidObserver;
import javolution.text.TextBuilder;
import com.l2jserver.gameserver.cache.HtmCache;
import com.l2jserver.gameserver.instancemanager.GrandBossManager;
import com.l2jserver.gameserver.instancemanager.ZoneManager;
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.quest.Quest;
import com.l2jserver.gameserver.model.zone.L2ZoneType;
import com.l2jserver.gameserver.network.serverpackets.NpcHtmlMessage;

/**
 * @author `Heroin
 * Made For Maxcheaters.com
 */
public class RaidObserver extends Quest
{
	private static final int _Baium = 29020;
	private static final int _Antharas = 29068;
	private static final int _Valakas = 29028;
	private static final int _AntQueen = 29001;
	private static final int npcid = 36650; // npc id
	private static final boolean EnableObservation = true; // Set it true to allow players to observe raidbosses
	private static final boolean EnableTeleport = true; // Set it true to allow players to teleport to raidbosses
	private static final int ObservationAdena = 5000;  
	private static String htm = "data/scripts/custom/RaidObserver/1.htm"; //html location
	private int x = 0; //Dont Change
	private int y = 0;//Dont Change
	private int z = 0;//Dont Change
	
	public RaidObserver(int questId, String name, String descr)
	{
		super(questId, name, descr);
		addFirstTalkId(npcid);
		addTalkId(npcid);
		addStartNpc(npcid);
	}
	
	@Override
	public String onAdvEvent(String event, L2Npc npc, L2PcInstance player)
	{
		if (event.startsWith("Valakas"))
		{
			RaidInfo(event, npc, player, event);
		}
		if (event.startsWith("tp_Valakas"))//location of the teleport
		{
			player.teleToLocation(213447, -115136, -1636);
		}
		if (event.startsWith("Baium"))
		{
			RaidInfo(event, npc, player, event);
		}
		if (event.startsWith("tp_Baium"))
		{
			player.teleToLocation(115213, 16623, 10085);//location of the teleport
		}
		if (event.startsWith("Antharas"))
		{
			RaidInfo(event, npc, player, event);
		}
		if (event.startsWith("tp_Antharas"))   
		{
			player.teleToLocation(179864, 114819, -7711);//location of the teleport
		}
		if (event.startsWith("AntQueen"))
		{
			RaidInfo(event, npc, player, event);
		}
		if (event.startsWith("tp_AntQueen"))
		{
			player.teleToLocation(-21514, 181871, -5722); //location of the teleport
		}
		if (event.startsWith("Back"))//Back Button Dont Chant
		{
			Back(event, npc, player, event);
		}
		  
		return "";
	}
	
	
	private void checkxyz(String command) // Selecting Location for Observing each raidboss
	{
		if (command.equals("Baium"))
		{
			x=115213;
			y=16623;
			z = 10085;
		}
		if (command.equals("Valakas"))
		{
			x=213447;
			y=-115136;
			z = -1636;
		}
		if (command.equals("AntQueen")) // , 181871, -5722
		{
			x=-21514;
			y= 181871;
			z = -5722;
		}
		if (command.equals("Antharas"))
		{
			x=179864;
			y=114819;
			z = -7711;
		}	
	}  


	private int checkppl(String command, L2PcInstance player)//Calculating players inside boss area
	{
		if (command.equals("Baium"))
		{
			int ppl = getPlayerInside(12002);
			return ppl;
		}
		if (command.equals("Valakas"))
		{
			int ppl = getPlayerInside(12010);
			return ppl;
		}
		if (command.equals("AntQueen"))
		{
			int ppl = getPlayerInside(12012);
			return ppl;
		}
		if (command.equals("Antharas"))
		{
			int ppl = getPlayerInside(12001);
			return ppl;
		}
		return 0;
		
	}
	private int checkpts(String command, L2PcInstance player)//Calculating parties inside boss area
	{
		if (command.equals("Baium"))
		{
			int pts = getPartiesInside(12002);
			return pts;
		}
		if (command.equals("Valakas"))
		{
			int pts = getPartiesInside(12010);
			return pts;
		}
		if (command.equals("AntQueen"))
		{
			int pts = getPartiesInside(12012);
			return pts;
		}
		if (command.equals("Antharas"))
		{
			int pts = getPartiesInside(12001);
			return pts;
		}
		return 0;
	}
	private boolean israidon(String name)//Checks if raid is online/offline
	{
		int id = 0;
		if (name.equals("Baium"))
			id = _Baium;
		if (name.equals("Valakas"))
			id = _Valakas;
		if (name.equals("AntQueen"))
			id = _AntQueen;
		if (name.equals("Antharas"))
			id = _Antharas;
		int status = GrandBossManager.getInstance().getBossStatus(id);
		if (status == 2)
			return false;
		else if (status == 1)
			return true;
		else
			return false;
	}

	@Override
	public String onFirstTalk(L2Npc npc, L2PcInstance player)
	{
		final int npcId = npc.getNpcId();
		if (player.getQuestState(getName()) == null)
		{
			newQuestState(player);
		}
		if (npcId == npcid)
		{
			String html = HtmCache.getInstance().getHtm(player.getHtmlPrefix(), htm);
			html = html.replaceAll("%player%", player.getName());		
			html = html.replaceAll("%teleport%", EnableTeleport ? "<font color=\"00FF00\">Enabled</font>" : "<font color=\"FF0000\">Disabled</font>");
			html = html.replaceAll("%observation%", EnableObservation ? "Observation: <font color=\"00FF00\">Enabled</font><br>Observation Adena Price: <font color=\"LEVEL\">"+ObservationAdena+"</font>" 
					: "<font color=\"FF0000\">Observation: Disabled</font>");
			
			NpcHtmlMessage npcHtml = new NpcHtmlMessage(0);
			npcHtml.setHtml(html);
			player.sendPacket(npcHtml);
		}
		return "";
	}
	
	public static void main(final String[] args)
	{
		new RaidObserver(-1, RaidObserver.class.getSimpleName(), "custom");
		System.out.println("De Level Manager by `Heroin has been loaded successfully!");
	}
	private void Back(String event, L2Npc npc, L2PcInstance player, String command)
	{
		
		try
		{

				String html = HtmCache.getInstance().getHtm(player.getHtmlPrefix(), htm);
				html = html.replaceAll("%player%", player.getName());		
				html = html.replaceAll("%teleport%", EnableTeleport ? "<font color=\"00FF00\">Enabled</font>" : "<font color=\"FF0000\">Disabled</font>");
				html = html.replaceAll("%observation%", EnableObservation ? "Observation: <font color=\"00FF00\">Enabled</font><br>Observation Adena Price: <font color=\"LEVEL\">"+ObservationAdena+"</font>" 
						: "<font color=\"FF0000\">Observation: Disabled</font>");
				
				NpcHtmlMessage npcHtml = new NpcHtmlMessage(0);
				npcHtml.setHtml(html);
				player.sendPacket(npcHtml);
			
		}
		catch (Exception e)
		{
			player.sendMessage("Something went wrong try again.");
		}
	}
	@SuppressWarnings("deprecation")
	public int getPlayerInside(int zoneId)//Calculating players inside party area.
    {
        int i = 0;
        for (L2ZoneType zone : ZoneManager.getInstance().getAllZones())
            if (zone.getId() == zoneId)
            {
                for (L2Character character : zone.getCharactersInside().values())
                    if (character instanceof L2PcInstance && (!((L2PcInstance) character).getClient().isDetached()))
                        i++;
            }
return i;
} 
	private void RaidInfo(String event, L2Npc npc, L2PcInstance player, String command)
	{
		
		try
		{
			int playersin = checkppl(command, player); 
			int partiesin = checkpts(command, player); 
			boolean status = israidon(command);
			checkxyz(command);
			String color = status ? "<font color=\"00FF00\">Online</font>" : "<font color=\"FF0000\">Offline</font>";
			NpcHtmlMessage nhm = new NpcHtmlMessage(5);
			TextBuilder tb = new TextBuilder("");
			tb.append("<html><head><title>"+player.getName()+"</title></head><body><center>");
			tb.append("<br><tr><td><img src=\"L2UI_CH3.herotower_deco\" width=256 height=32></td></tr><br>");//image
			tb.append("<font color=\"FFA500\">"+command+" Information</font><br>");
			tb.append("<table bgcolor=444444 width= 280>");
			tb.append("<tr><td align=center><font color=\"C0C0C0\">Players Inside "+command+" Zone: "+playersin+"</font></td></tr>");
			tb.append("<tr><td align=center><img src=\"L2UI.SquareWhite\" width=90 height=1></td></tr>");
			tb.append("<tr><td align=center><img src=\"L2UI.SquareBlank\" width=90 height=1></td></tr>");
			tb.append("<tr><td align=center><img src=\"L2UI.SquareBlank\" width=90 height=1></td></tr>");
			tb.append("<tr><td align=center><font color=\"C0C0C0\">Parties Inside "+command+" Zone: "+partiesin+"</font></td></tr>");
			tb.append("</table><br>");
			tb.append("<table width= 280>");
			tb.append("<tr><td align=center>Raid Boss Status: "+color+"</td></tr></table><br><BR>");
			tb.append("<table bgcolor=444444 width=50>");
			tb.append("<tr><td><button value=\"Teleport To "+command+
					"\" action=\"bypass -h Quest RaidObserver tp_"+command+"\" width=150 height=22 back=\"L2UI_ct1.Button_DF_Calculator_Down\" fore=\"L2UI_ct1.Button_DF_Calculator\"></td></tr>");
			if (EnableObservation)
			{
			tb.append("<tr><td><button value=\"Observe "+command+
					"\" action=\"bypass -h npc_"+npc.getObjectId()+"_observe "+ObservationAdena+" "+x+" "+y+" "+z+"\" width=150 height=22 back=\"L2UI_ct1.Button_DF_Calculator_Down\" fore=\"L2UI_ct1.Button_DF_Calculator\"></td></tr>");
			}
			tb.append("<tr><td><button value=\"Back\" action=\"bypass -h Quest RaidObserver Back\" width=150 height=22 back=\"L2UI_ct1.Button_DF_Calculator_Down\" fore=\"L2UI_ct1.Button_DF_Calculator\"></td></tr>");

			tb.append("</table><br><br><br><br>");
			tb.append("<tr><td><img src=\"L2UI_CH3.herotower_deco\" width=256 height=32></td></tr><br>");
			tb.append("</body></html>");
			nhm.setHtml(tb.toString());
			player.sendPacket(nhm);
		}
		catch (Exception e)
		{
			player.sendMessage("Something went wrong try again.");
		}
	}
	@SuppressWarnings("deprecation")
	public int getPartiesInside(int zoneId)//Calculating parties inside party area.
    {
        int i = 0;
        for (L2ZoneType zone : ZoneManager.getInstance().getAllZones())
            if (zone.getId() == zoneId)
            {
                for (L2Character character : zone.getCharactersInside().values())
                    if (character instanceof L2PcInstance && (!((L2PcInstance) character).getClient().isDetached()) && 
                    		((L2PcInstance) character).getParty() != null && 
                    		((L2PcInstance) character).getParty().isLeader((L2PcInstance) character))
                        i++;
            }
        return i;
    }
}

Citardata/scripts/custom/RaidObserver/1.htm

<title>%player%</title>
<center><br>
<tr><td><img src="L2UI_CH3.herotower_deco" width=256 height=32></td></tr><br>
<center><font color="CC9900">Grand Raid Boss Informaton</font></text></center>
<br>
<table>
<tr>
<td align=center><img src="icon.accessory_ring_of_baium_i00" width=32 height=32>
</td>
<td align=center><button value="Baium" action="bypass -h Quest RaidObserver Baium" width=90 height=32 back="L2UI_CT1.Button_DF_Calculator_Over" fore="L2UI_CT1.Button_DF_Calculator_Over">
</td>
<td align=center><button value="Valakas" action="bypass -h Quest RaidObserver Valakas" width=90 height=32 back="L2UI_CT1.Button_DF_Calculator_Over" fore="L2UI_CT1.Button_DF_Calculator_Over">
</td>
<td align=center><img src="icon.accessory_necklace_of_valakas_i00" width=32 height=32>
</td>
</table>
<br><img src="L2UI.SquareGray" width=155 height=1><br>
<table>
<tr>
<td align=center><img src="icon.accessory_earring_of_antaras_i00" width=32 height=32>
</td>
<td align=center><button value="Antharas" action="bypass -h Quest RaidObserver Antharas" width=90 height=32 back="L2UI_CT1.Button_DF_Calculator_Over" fore="L2UI_CT1.Button_DF_Calculator_Over">
</td>
<td align=center><button value="Queen Ant" action="bypass -h Quest RaidObserver AntQueen" width=90 height=32 back="L2UI_CT1.Button_DF_Calculator_Over" fore="L2UI_CT1.Button_DF_Calculator_Over">
</td>
<td align=center><img src="icon.accessory_ring_of_queen_ant_i00" width=32 height=32>
</td>
</table><br><img src="L2UI.SquareGray" width=155 height=1><br><BR><BR>
Teleport: %teleport%<br>
%observation%<br>
<tr><td><img src="L2UI_CH3.herotower_deco" width=256 height=32></td></tr><br>

Citarscripts.cfg

custom/RaidObserver/RaidObserver.java

CitarSQL:

INSERT INTO `npc` VALUES ('36650', '13173', 'RaidObserver', '1', 'MaxCheaters.com', '1', 'LineageNPC.clear_npc', '8.00', '19.00', '85', 'male', 'L2Npc', null, null, null, null, null, '40', '43', '30', '21', '20', '20', '0', '0', null, null, null, null, '230', '1', '0', '333', '0', '0', '0', '60.00000', '120.00000', '1', '1', '0', '0');