Jump to content

Question

Posted (edited)

Gia sas 8elw an borei kaneis na me help me to parakato

 

( L2jFrozen - Interlude )

 

Pos 8a boresw na ftiaksw ston Code otan kapios ginete AIO na tou dinei pano apo 1 item dld 5-6 "Armor/Weapon/tattoo gia AIO"

 

kai otan ginete AIO na diagrafode ta skill apo to main class tou

package com.l2jfrozen.gameserver.model.actor.instance;

import java.util.StringTokenizer;

import com.l2jfrozen.Config;
import com.l2jfrozen.gameserver.ai.CtrlIntention;
import com.l2jfrozen.gameserver.network.SystemMessageId;
import com.l2jfrozen.gameserver.network.serverpackets.ActionFailed;
import com.l2jfrozen.gameserver.network.serverpackets.EtcStatusUpdate;
import com.l2jfrozen.gameserver.network.serverpackets.InventoryUpdate;
import com.l2jfrozen.gameserver.network.serverpackets.MyTargetSelected;
import com.l2jfrozen.gameserver.network.serverpackets.NpcHtmlMessage;
import com.l2jfrozen.gameserver.network.serverpackets.SystemMessage;
import com.l2jfrozen.gameserver.network.serverpackets.ValidateLocation;
import com.l2jfrozen.gameserver.templates.L2NpcTemplate;

/**
 * Aio Shop e um re-make do Mod Aio Seller. De uma versao para outra, muitas coisas mudaram e isto altera o modo de usar do mod por completo!
 * Agora e possivel alterar a template, o item, o preco e o tempo via html. Em resumo, esta nova versao do codigo esta bem mais flexivel.
 * Faca um bom uso!
 * @author RedHoT
 * @version 1.0.7
 */
public class L2AioSellerInstance extends L2FolkInstance
{
   public L2AioSellerInstance(int objectId, L2NpcTemplate template)
   {
      super(objectId, template);
   }

   @Override
   public void onAction(L2PcInstance player)
   {
      if (!canTarget(player))
         return;

      player.setLastFolkNPC(this);

      // Check if the L2PcInstance already target the L2NpcInstance
      if (this != player.getTarget())
      {
         // Set the target of the L2PcInstance player
         player.setTarget(this);

         // Send a Server->Client packet MyTargetSelected to the L2PcInstance player
         MyTargetSelected my = new MyTargetSelected(getObjectId(), 0);
         player.sendPacket(my);
         my = null;

         // Send a Server->Client packet ValidateLocation to correct the L2NpcInstance position and heading on the client
         player.sendPacket(new ValidateLocation(this));
      }
      else
      {
         // Calculate the distance between the L2PcInstance and the L2NpcInstance
         if (!canInteract(player))
         {
            // Notify the L2PcInstance AI with AI_INTENTION_INTERACT
            player.getAI().setIntention(CtrlIntention.AI_INTENTION_INTERACT, this);
         }
         else
         {
            showMessageWindow(player);
         }
      }
      // Send a Server->Client ActionFailed to the L2PcInstance in order to avoid that the client wait another packet
      player.sendPacket(ActionFailed.STATIC_PACKET);
   }

   private void showMessageWindow(L2PcInstance player)
   {
      String filename = "data/html/mods/Aio Shop/start.htm";

      NpcHtmlMessage html = new NpcHtmlMessage(1);
      html.setFile(filename);
      html.replace("%objectId%", String.valueOf(getObjectId()));
      html.replace("%servername%", Config.ALT_Server_Name);
      player.sendPacket(html);
      filename = null;
      html = null;
   }

   @Override
   public void onBypassFeedback(L2PcInstance player, String command)
   {
      if (command.startsWith("add_aio"))
      {
         StringTokenizer st = new StringTokenizer(command);
         st.nextToken();

         String priceId = null, priceCount = null, time = null;
         int aioPriceId = 0, aioPriceCount = 0, aioTime = 0;

         if (st.hasMoreTokens())
         {
            priceId = st.nextToken();
            priceCount = st.nextToken();
            time = st.nextToken();

            try
            {
               aioPriceId = Integer.parseInt(priceId);
               aioPriceCount = Integer.parseInt(priceCount);
               aioTime = Integer.parseInt(time);
            }
            catch(NumberFormatException e) {}
         }
         else
         {
            _log.warning("Could not update aio status of player " + player.getName());
            return;
         }

         makeAioCharacter(player, aioPriceId, aioPriceCount, aioTime);
      }
      else if (command.startsWith("remove_aio"))
         removeAio(player);

      showMessageWindow(player);
   }

   
   public void makeAioCharacter(L2PcInstance player, int itemId, int itemCount, int aioTime)
   {
      L2ItemInstance itemInstance = player.getInventory().getItemByItemId(itemId);

      if (itemInstance == null || !itemInstance.isStackable() && player.getInventory().getInventoryItemCount(itemId, -1) < (itemCount))
      {
            player.sendPacket(new SystemMessage(SystemMessageId.NOT_ENOUGH_ITEMS));
         return;
      }
      else if (itemInstance.isStackable())
      {
         if (!player.destroyItemByItemId("Aio", itemId, itemCount, player.getTarget(), true))
         {
                player.sendPacket(new SystemMessage(SystemMessageId.NOT_ENOUGH_ITEMS));
            return;
         }
      }
      else
         for (int i = 0; i < (itemCount); i++)
            player.destroyItemByItemId("Aio", itemId, 1, player.getTarget(), true);

      doAio(player, aioTime);
   }
   public void doAio(L2PcInstance player, int days)
   {
      if(player == null)
         return;

        int daysLeft = player.getAioEndTime() <= 0 ? 0 : (int) ((player.getAioEndTime() - System.currentTimeMillis()) / 86400000);
      player.setAio(true);
      player.setEndTime("aio", days + daysLeft);

      player.getStat().addExp(player.getStat().getExpForLevel(81));

      if(Config.ALLOW_AIO_NCOLOR && player.isAio())
         player.getAppearance().setNameColor(Config.AIO_NCOLOR);

      if(Config.ALLOW_AIO_TCOLOR && player.isAio())
         player.getAppearance().setTitleColor(Config.AIO_TCOLOR);

      /* Give Aio Dual */
      L2ItemInstance item;
      if(player.getInventory().getItemByItemId(Config.DUAL_AIO_ID) == null)
      {
         item = player.getInventory().addItem("", Config.DUAL_AIO_ID, 1, player, null);
         InventoryUpdate iu = new InventoryUpdate();
         iu.addItem(item);
         player.sendPacket(iu);
      }

      player.rewardAioSkills();
      player.sendPacket(new EtcStatusUpdate(player));
      player.sendSkillList();
      player.broadcastUserInfo();

      player.sendMessage("You are now an Aio, Congratulations!");
   }

   public void removeAio(L2PcInstance player)
   {
      if(!player.isAio())
      {
         player.sendMessage("You are not an AIO.");
         return;
      }

      player.setAio(false);
      player.setAioEndTime(0);

      player.getAppearance().setNameColor(0xFFFFFF);
      player.getAppearance().setTitleColor(0xFFFF77);

      /* Remove Aio Dual */
      L2ItemInstance item;
      player.getWarehouse().destroyItemByItemId("", Config.DUAL_AIO_ID, 1, player, null);
      item = player.getInventory().destroyItemByItemId("", Config.DUAL_AIO_ID, 1, player, null);
      InventoryUpdate iu = new InventoryUpdate();
      iu.addItem(item);
      player.sendPacket(iu);
           
      player.lostAioSkills();
      player.sendPacket(new EtcStatusUpdate(player));
      player.sendSkillList();
      player.broadcastUserInfo();

      player.sendMessage("Now You are not an Aio..");
   }
}
Edited by StinkyMadness

0 answers to this question

Recommended Posts

There have been no answers to this question yet

Guest
This topic is now closed to further replies.


  • Posts

    • Faltan demasiados archivos,  y lógicas en clases claves como L2pcInstance, entre otras. si bien muchas cosas están y el flujo es valorable.  Gracias por tu esfuerzo es bastante... pero realmente no esta completo el código, falta que subas todas las modificaciones en clases colaterales... podrías intentar subir un diff de todo el mod  completo de tu pack y bueno ahí si que cada uno adapte... pero faltan muchas cosas, dudo que haya gente que lo haya echo funcionar con esto... 
    • I know people who have fully bypassed and reversed AAC. One day, they might even release the full source code, but for now, they’re still making money off it. I won’t name anyone, but it’s clear that there aren’t any truly solid anticheats for Lineage2. As I’ve said before, kernel level anticheats are the only real solution. Anything that runs as Internal and injects gets flagged, and your account ends up getting kicked or banned. That’s just how most games handle it nowadays. To TL;DR the whole thing cheating will always exist because there are people out there smart enough to bypass any protection and run private cheats. Public cheats are always detected eventually, so I don’t see any point in buying AAC, especially when they claim it blocks adr, which simply isn’t true.
    • 🌐 Website: https://l2adonis.com 📅 GRAND OPENING: July 18, 2025 – 20:00 (UTC+2) 💬 Discord: https://discord.com/invite/tZBj8JxAwx 🚫 No auto-farm • No auto-macro • No pay-to-win • No custom   Some Basic Info's (More detalied info's on website)  EXP/SP: x25  Adena: x15  Drop: x15  Spoil: x15  Seal Stones: x15  Raid Boss Drop: x10  Epic Boss Drop: x1  Manor: x10  Safe Enchant: +4  Max Enchant: +16  Normal Scroll Chance: 50%  Blessed Scroll Chance: 66% (If enchant fail item remain +4)  Buff Slots (30+4 extra with Divine Inspiration)  Dances/Songs Slots 14  Auto-learn skills  ⚔️ Real PvP • Real Progression • Retail-like experience JOIN NOW and relive the real L2 experience!
    • Discord         :  utchiha_market Telegram        : https://t.me/utchiha_market Auto Buy Store  : https://utchihamkt.mysellauth.com/ Not sure if we’re legit? Check Our server — real reviews, real buyers https://discord.gg/uthciha-servicess  | https://campsite.bio/utchihaamkt
    • Looking for a Developer – Lineage II Interlude (Vanganth Files)   I’m seeking a developer to collaborate on a project based on Vanganth Interlude files.   Important: Applicants with a bad attitude, lack of respect, or unwillingness to work will be immediately rejected. Payment: Hourly rate, not per task. Contact: Please reach out to me via PM.
  • 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