Noticias:

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

Menú Principal

NPC Fast Augment

Iniciado por Swarlog, Jul 24, 2025, 11:16 PM

Tema anterior - Siguiente tema

Swarlog

/*
 * 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 com.l2jhellas.gameserver.model.actor.instance;

import java.util.StringTokenizer;

import com.l2jhellas.gameserver.ai.CtrlIntention;
import com.l2jhellas.gameserver.datatables.xml.AugmentationData;
import com.l2jhellas.gameserver.model.L2Augmentation;
import com.l2jhellas.gameserver.model.L2ItemInstance;
import com.l2jhellas.gameserver.network.SystemMessageId;
import com.l2jhellas.gameserver.network.serverpackets.ActionFailed;
import com.l2jhellas.gameserver.network.serverpackets.ExShowScreenMessage;
import com.l2jhellas.gameserver.network.serverpackets.ExVariationCancelResult;
import com.l2jhellas.gameserver.network.serverpackets.ExVariationResult;
import com.l2jhellas.gameserver.network.serverpackets.InventoryUpdate;
import com.l2jhellas.gameserver.network.serverpackets.MyTargetSelected;
import com.l2jhellas.gameserver.network.serverpackets.NpcHtmlMessage;
import com.l2jhellas.gameserver.network.serverpackets.SkillList;
import com.l2jhellas.gameserver.network.serverpackets.SocialAction;
import com.l2jhellas.gameserver.network.serverpackets.StatusUpdate;
import com.l2jhellas.gameserver.network.serverpackets.SystemMessage;
import com.l2jhellas.gameserver.network.serverpackets.ValidateLocation;
import com.l2jhellas.gameserver.network.serverpackets.ExShowScreenMessage.SMPOS;
import com.l2jhellas.gameserver.templates.L2NpcTemplate;
import com.l2jhellas.gameserver.templates.L2WeaponType;
import com.l2jhellas.util.Rnd;


/**
 * Author AbsolutePower
 */
public final class L2FastAugByAbsoInstance extends L2NpcInstance
{

	public L2FastAugByAbsoInstance(int objectId, L2NpcTemplate template)
	{
		super(objectId, template);
	}
	
	@Override
	public void onBypassFeedback(L2PcInstance player, String command)
	{
		if(player==null)
			return;
		
		final StringTokenizer st = new StringTokenizer(command, " ");
		final String currentcommand = st.nextToken();
			
		final String letsSliptIt = currentcommand;
		final String[] nowTheId = letsSliptIt.split("-");
		
		final String OurSplititCommand = nowTheId[0];
		final String FinallyWeHaveObjectId = nowTheId[1];
			
		
		if(OurSplititCommand.startsWith("showremlist"))
		{
			showListWindowForRemove(player);
			player.sendPacket(new ActionFailed());
		}
		
		if(OurSplititCommand.startsWith("showauglist"))
		{
			showListWindow(player);
			player.sendPacket(new ActionFailed());
		}
			
		if(OurSplititCommand.startsWith("tryremove"))
		{
			try
			{
				
	 		final L2ItemInstance item = player.getInventory().getItemByObjectId(Integer.parseInt(FinallyWeHaveObjectId));
	 		 	
	 		if(item == null )
	 		{
	 			player.sendPacket(new ActionFailed());
	 			return;
	 		}
	 		
	        if (item.isEquipped())
			{
				player.disarmWeapons();
				player.broadcastUserInfo();
			}

			item.removeAugmentation();
			
			player.sendPacket(new ExVariationCancelResult(1));

			InventoryUpdate iu = new InventoryUpdate();
			iu.addModifiedItem(item);
			player.sendPacket(iu);
			
			player.sendPacket(new SkillList());
			
			SystemMessage sm = SystemMessage.getSystemMessage(SystemMessageId.AUGMENTATION_HAS_BEEN_SUCCESSFULLY_REMOVED_FROM_YOUR_S1);
			sm.addItemName(item);
			player.sendPacket(sm);
			showListWindowForRemove(player);
			player.sendPacket(new ActionFailed());
		}
		catch (Exception e)
		{
			player.sendPacket(new ActionFailed());
		}  
		}
		if(OurSplititCommand.startsWith("tryaug"))
		{
		try
		{
			if (player.getInventory().getInventoryItemCount(57, 0) < 200000)
	 		{
				player.sendMessage("You do not have enough adena!");
				player.sendPacket(new ActionFailed());
				return;
	 		}
		
	 		final L2ItemInstance item = player.getInventory().getItemByObjectId(Integer.parseInt(FinallyWeHaveObjectId));
	 		
	 	
	 		if(item == null )
	 		{
	 			player.sendPacket(new ActionFailed());
	 			return;
	 		}
	 		
	        if (item.isEquipped())
			{
				player.disarmWeapons();
				player.broadcastUserInfo();
			}
	        
	 		final L2Augmentation aug = AugmentationData.getInstance().generateRandomAugmentation(item,2,2);
	 		item.setAugmentation(aug);
	 			 			 		
			final int stat12 = 0x0000FFFF & aug.getAugmentationId();
			final int stat34 = aug.getAugmentationId() >> 16;
			player.sendPacket(new ExVariationResult(stat12, stat34, 1));
			
			InventoryUpdate iu = new InventoryUpdate();
			iu.addModifiedItem(item);
			player.sendPacket(iu);
			
			StatusUpdate su = new StatusUpdate(player.getObjectId());
			su.addAttribute(StatusUpdate.CUR_LOAD, player.getCurrentLoad());
			player.sendPacket(su);
			
			showListWindow(player);
			
			player.getInventory().reduceAdena("FastAugh", 200000, player, null);

			player.sendPacket(SystemMessageId.THE_ITEM_WAS_SUCCESSFULLY_AUGMENTED);
			
			if(item.getAugmentation().getSkill()!=null)
			{
			   player.sendPacket(new ExShowScreenMessage("You have " + item.getAugmentation().getSkill().getName(), 5000, SMPOS.TOP_CENTER, true));
			   player.sendPacket(new SkillList());
			}

			player.sendPacket(new ActionFailed());

		}
		catch (Exception e)
		{
			player.sendPacket(new ActionFailed());
		}    
		}
		
		super.onBypassFeedback(player, command);
	}
	
	public void showListWindow(L2PcInstance player)
	{
		NpcHtmlMessage nhm = new NpcHtmlMessage(5);
		StringBuilder tb = new StringBuilder("");
		String Rem = "RemoveAug";

		tb.append("<html><head><title>By AbsolutePower</title></head><body>");
		tb.append("<center>");
		tb.append("<table width=\"250\" cellpadding=\"5\" bgcolor=\"000000\">");
		tb.append("<tr>");
		tb.append("<td width=\"45\" valign=\"top\" align=\"center\"><img src=\"L2ui_ch3.menubutton4\" width=\"38\" height=\"38\"></td>");
		tb.append("<td valign=\"top\"><font color=\"FF6600\">AugmentHelper</font>");
		tb.append("<br1><font color=\"00FF00ju\">" + player.getName() + "</font>, use this menu for fast augment :)<br1></td>");
		tb.append("</tr>");
		tb.append("</table>");
		tb.append("</center>");
		tb.append("<center>");
		tb.append("<br>");
				
		for (L2ItemInstance item : player.getInventory().getItems())
		{
			    
		       if(!item.isAugmented() && item.getItemType() instanceof L2WeaponType && item.isEquipable() && !item.isQuestItem())
		       {
		           if(item!=null)
					   tb.append("<button value=\""+item.getItemName()+"\" action=\"bypass -h npc_" + getObjectId() + "_tryaug-"+item.getObjectId()+"\" width=204 height=20 back=\"sek.cbui75\" fore=\"sek.cbui75\"><br>");
		               //tb.append("<table border=0 width=\"100%\">");
		              // tb.append("<tr><td><img src=\""+IconJava.getIcon(item.getItemId())+"\"width=\"32\"height=\"32\"></td>"
		               //+"<td>"+"<button value=\""+item.getItemName()+"\" action=\"bypass -h npc_"+getObjectId()+"_tryaug-"+item.getObjectId()+"\"width=204 height=21 back=\"sek.cbui75\" fore=\"sek.cbui75\"><br>"+"</td>"+"<td>+"+item.getEnchantLevel()+"</td></tr></table>");
		        }		          


		}
		
		tb.append("<br>");
		tb.append("<button value=\""+Rem+"\" action=\"bypass -h npc_" + getObjectId() + "_showremlist-1"+"\" width=204 height=20 back=\"sek.cbui75\" fore=\"sek.cbui75\"><br>");
		tb.append("</center>");
		tb.append("</body></html>");

		nhm.setHtml(tb.toString());
		player.sendPacket(nhm);
	}

	public void showListWindowForRemove(L2PcInstance player)
	{
		NpcHtmlMessage nhm = new NpcHtmlMessage(5);
		StringBuilder tb = new StringBuilder("");
		String Rem = "GobackToAugList";
		
		tb.append("<html><head><title>By AbsolutePower</title></head><body>");
		tb.append("<center>");
		tb.append("<table width=\"250\" cellpadding=\"5\" bgcolor=\"000000\">");
		tb.append("<tr>");
		tb.append("<td width=\"45\" valign=\"top\" align=\"center\"><img src=\"L2ui_ch3.menubutton4\" width=\"38\" height=\"38\"></td>");
		tb.append("<td valign=\"top\"><font color=\"FF6600\">AugmentHelper</font>");
		tb.append("<br1><font color=\"00FF00ju\">" + player.getName() + "</font>, use this menu for fast augment :)<br1></td>");
		tb.append("</tr>");
		tb.append("</table>");
		tb.append("</center>");
		tb.append("<center>");
		tb.append("<br>");
				
		for (L2ItemInstance item : player.getInventory().getItems())
		{
			    
		       if(item.isAugmented() && item.getItemType() instanceof L2WeaponType && item.isEquipable() && !item.isQuestItem())
		       {
		           if(item!=null)
					   tb.append("<button value=\""+item.getItemName()+"\" action=\"bypass -h npc_" + getObjectId() + "_tryremove-"+item.getObjectId()+"\" width=204 height=20 back=\"sek.cbui75\" fore=\"sek.cbui75\"><br>");
		               //tb.append("<table border=0 width=\"100%\">");
		              // tb.append("<tr><td><img src=\""+IconJava.getIcon(item.getItemId())+"\"width=\"32\"height=\"32\"></td>"
		               //+"<td>"+"<button value=\""+item.getItemName()+"\" action=\"bypass -h npc_"+getObjectId()+"_tryaug-"+item.getObjectId()+"\"width=204 height=21 back=\"sek.cbui75\" fore=\"sek.cbui75\"><br>"+"</td>"+"<td>+"+item.getEnchantLevel()+"</td></tr></table>");
		        }		          


		}
		
		tb.append("<br>");
		tb.append("<button value=\""+Rem+"\" action=\"bypass -h npc_" + getObjectId() + "_showauglist-1"+"\" width=204 height=20 back=\"sek.cbui75\" fore=\"sek.cbui75\"><br>");
		tb.append("</center>");
		tb.append("</body></html>");

		nhm.setHtml(tb.toString());
		player.sendPacket(nhm);
	}
    @Override
    public void onAction(L2PcInstance player)
    {
		if (this != player.getTarget()) 
		{
			player.setTarget(this);
			player.sendPacket(new MyTargetSelected(getObjectId(), player.getLevel() - getLevel()));
			player.sendPacket(new ValidateLocation(this));
		}
		else if (isInsideRadius(player, INTERACTION_DISTANCE, false, false)) 
		{
			SocialAction sa = new SocialAction(this.getObjectId(), Rnd.get(8));
			broadcastPacket(sa);
			player.setLastFolkNPC(this);
			showListWindow(player);
			player.sendPacket(ActionFailed.STATIC_PACKET);
		}
		else {
			player.getAI().setIntention(CtrlIntention.AI_INTENTION_INTERACT, this);
			player.sendPacket(ActionFailed.STATIC_PACKET);
		}
    }
}