Jump to content

Recommended Posts

Posted

Hello MxC users!

 

Sometime ago i published this mod in another L2j forum. And NOW, I am posting HERE!

It's a very simple code, because i'm still learning!

 

What is this?

- The AioBuffer Shop can sell AIO status by any items that the admin chooses.

 

How to Use?

- It's very simple! Just need edit the html file.

 

<button value="30 Days" action="bypass -h npc_%objectId%_add_aio $item_id $item_count $aio_time" width=100 height=15 back="sek.cbui94" fore="sek.cbui92">

 

 

Just replace the tags with their respective values:

$item_id: ItemId needed
$item_count: Count of ItemId
$aio_time: Time of AIO Status

 

Appearance

- The current HTML NPC can be seen in the following image:

 

RdZUW.jpg

 

You must edit in data/html/mods/Aio Shop/start.htm file;

 

And finally the code:

Index: data/html/mods/Aio Shop/start.htm
===================================================================
--- data/html/mods/Aio Shop/start.htm   (revision 0)
+++ data/html/mods/Aio Shop/start.htm   (working copy)
@@ -0,0 +1,36 @@
+<html>
+   <title>Aio Shop</title>
+   <body>
+      <br>
+      <center><img src=L2UI.SquareWhite width=276 height=1></center>
+      <center>
+         <table width=256>
+            <tr>
+               <td><img src=L2UI.GM_Icon width=32 height=32></td>
+               <td width=192 align=center>
+                  <font color="LEVEL">%servername%</font><br1>Bem Vindo ao Aio Shop!
+               </td>
+               <td><img src=L2UI.GM_Icon width=32 height=32></td>
+            </tr>
+         </table>
+      </center>
+      <br>
+      <center><img src=L2UI.SquareWhite width=276 height=1></center>
+      <br>
+      <center>
+         <font color=99FF66>Quando voce faz um AIO, seu personagem nao<br1>
+         podera dar hits ou usar skills fora da cidade.</font><br1>
+         <font color=FF0055>Use um personagem alternativo para isso!</font><br>
+         <img src=L2UI_CH3.herotower_deco width=256 height=32><br>
+         <font color=FF9900>Os precos dos pacotes de dias sao em<br1>
+         "Gold Bar" e os dias sao cumulativos.</font><br>
+         <button value="30 Dias [10 GB]" action="bypass -h npc_%objectId%_add_aio 3470 10 30" width=100 height=15 back="sek.cbui94" fore="sek.cbui92"><br>
+         <button value="60 Dias [20 GB]" action="bypass -h npc_%objectId%_add_aio 3470 20 60" width=100 height=15 back="sek.cbui94" fore="sek.cbui92"><br>
+         <button value="180 Dias [40 GB]" action="bypass -h npc_%objectId%_add_aio 3470 40 180" width=100 height=15 back="sek.cbui94" fore="sek.cbui92"><br>
+         <button value="365 Dias [80 GB]" action="bypass -h npc_%objectId%_add_aio 3470 80 365" width=100 height=15 back="sek.cbui94" fore="sek.cbui92"><br>
+         <font color=0099FF>Se voce clicar em "Remover AIO" seu status AIO<br1>
+         sera removido e voce perdera os creditos restantes.</font>
+         <button value="Remover Aio" action="bypass -h npc_%objectId%_remove_aio" width=100 height=15 back="sek.cbui94" fore="sek.cbui92"><br>
+      </center>
+   </body>
+</html>
#P L2jFrozen_GameServer
Index: head-src/com/l2jfrozen/Config.java
===================================================================
--- head-src/com/l2jfrozen/Config.java   (revision 972)
+++ head-src/com/l2jfrozen/Config.java   (working copy)
@@ -572,6 +572,8 @@
    public static int AIO_TCOLOR;
    public static boolean ALLOW_AIO_USE_GK;
    public static boolean ALLOW_AIO_USE_CM;
+   public static int DUAL_AIO_ID;
+
    public static boolean ANNOUNCE_CASTLE_LORDS;
    
    /** Configuration to allow custom items to be given on character creation */
@@ -672,6 +674,8 @@
            AIO_TCOLOR = Integer.decode("0x" + otherSettings.getProperty("AioTitleColor", "88AA88"));
            ALLOW_AIO_USE_GK = Boolean.parseBoolean(otherSettings.getProperty("AllowAioUseGk", "False"));
            ALLOW_AIO_USE_CM = Boolean.parseBoolean(otherSettings.getProperty("AllowAioUseClassMaster", "False"));
+           DUAL_AIO_ID = Integer.parseInt(otherSettings.getProperty("DualAioItemId", "6580"));
+
            ANNOUNCE_CASTLE_LORDS = Boolean.parseBoolean(otherSettings.getProperty("AnnounceCastleLords", "False"));
            if(ENABLE_AIO_SYSTEM) //create map if system is enabled
            {
Index: head-src/com/l2jfrozen/gameserver/model/actor/instance/L2AioSellerInstance.java
===================================================================
--- head-src/com/l2jfrozen/gameserver/model/actor/instance/L2AioSellerInstance.java   (revision 0)
+++ head-src/com/l2jfrozen/gameserver/model/actor/instance/L2AioSellerInstance.java   (working copy)
@@ -0,0 +1,227 @@
+/* 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 2, 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, write to the Free Software
+ * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA
+ * 02111-1307, USA.
+ *
+ * http://www.gnu.org/copyleft/gpl.html
+ */
+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..");
+   }
+}
Index: config/head/other.properties
===================================================================
--- config/head/other.properties   (revision 972)
+++ config/head/other.properties   (working copy)
@@ -225,6 +225,9 @@
# Aio Buffers can speak to Class Master?
AllowAioUseClassMaster = False

+# ID Item for Reward AIO's in Transformation
+DualAioItemId = 6580
+
# Announce castle lords on enter game. default = false 
AnnounceCastleLords = False

 

 

SQL:

INSERT INTO `custom_npc` VALUES ('100', '14207', 'Mr. Catra', '1', 'Aio Shop', '1', 'Monster.silver_cat', '7.00', '15.00', '42', 'male', 'L2AioSeller', '40', '2008', '679', '9.09', '2.14', '40', '43', '30', '21', '20', '25', '0', '0', '413', '236', '152', '221', '278', '0', '333', '0', '0', '0', '52', '198', 'NULL', '0', '0', '0', 'LAST_HIT');

 

Pastebin

 

Sorry My English! It's Google Destroyer Traslator

  • 2 weeks later...
  • 2 weeks later...
Guest
This topic is now closed to further replies.


  • Posts

    • SocNet is now on Medium! Check out our new article showcasing the full potential of our store and SMM Panel! Article: Click   🚀 Promo code: MEDIUM5 (5% Discount)   ➡️ Online Store: Click ✅ ➡️ Telegram Bot: Click ✅ ➡️ SMM Panel: Click ✅   Regular customers receive additional discounts and promo codes!   Support: ➡️ Telegram: https://t.me/solomon_bog ✅ ➡️ Discord: https://discord.gg/y9AStFFsrh ✅ ➡️ WhatsApp: https://wa.me/79051904467 ✅ ➡️ Email: solomonbog@socnet.store ✅   ➡️ Telegram Channel: https://t.me/accsforyou_shop ✅   You can also contact us for: — Wholesale inquiries — Partnership opportunities (Current partners: https://socnet.bgng.io/partners )  — Becoming a supplier   SocNet — your store for digital goods and premium subscriptions ✅
    • SocNet is now on Medium! Check out our new article showcasing the full potential of our store and SMM Panel! Article: Click Promo code: MEDIUM5 (5% Discount) Online Store: Click Telegram Bot: Click SMM Panel: Click Regular customers receive additional discounts and promo codes! Support: Telegram: https://t.me/solomon_bog Discord: https://discord.gg/y9AStFFsrh WhatsApp: https://wa.me/79051904467 Email: solomonbog@socnet.store  Telegram Channel: https://t.me/accsforyou_shop You can also contact us for: — Wholesale inquiries — Partnership opportunities (Current partners: https://socnet.bgng.io/partners ) — Becoming a supplier SocNet — your store for digital goods and premium subscriptions  Want to expand your business network or promote services through the largest B2B platform? LinkedIn accounts are your tool for marketing, recruiting, and outreach automation. Perfect for SMM, hiring, lead generation, and business scaling. ➡ Ready-made accounts — fast, convenient, no hassle. Promo code: LINKEDIN5 (5% discount) Payment: Bank cards · Cryptocurrency · Other popular methods How to buy: ➡ Online Store: Click ➡ Telegram Bot: Click Other services: ➡ SMM Panel: Click Product range: ➡ LINKEDIN.COM ACCOUNTS | EMAIL INCLUDED @OUTLOOK.COM / @HOTMAIL.COM / @FIRSTMAIL.COM, MALE OR FEMALE, PARTIALLY FILLED PROFILES, REGISTERED FROM USA IP | Price from: $2.5 ➡ LINKEDIN.COM ACCOUNTS | EMAIL INCLUDED @OUTLOOK.COM / @HOTMAIL.COM / @FIRSTMAIL.COM, MALE OR FEMALE, PARTIALLY FILLED PROFILES, REGISTERED FROM EUROPE IP | Price from: $2.5 ➡ LINKEDIN.COM ACCOUNTS | EMAIL INCLUDED @OUTLOOK.COM / @HOTMAIL.COM / @FIRSTMAIL.COM, MALE OR FEMALE, PARTIALLY FILLED PROFILES, REGISTERED FROM MIX IP | Price from: $2.5 ➡ LinkedIn Old Brute Account with Real Connections (0 connections) | Mix Geo | Filled Profile | Registered on real device | Price from: $10 ➡ LinkedIn Premium Brute Account (Premium) with active 1-month Premium subscription | Geo: MIX | Registered on real device | Full account access | Price from: $20 ➡ LinkedIn Old Brute Account with Real Connections (50 connections) | Mix Geo | Filled Profile | Registered on real device | Price from: $20 ➡ LinkedIn Old Brute Account with Real Connections (100+ connections) | Mix Geo | Filled Profile | Registered on real device | Price from: $39 ➡ LinkedIn Old Brute Account with Real Connections (500+ connections) | Mix Geo | Filled Profile | Registered on real device | Price from: $69 ➡ LinkedIn Verified Brute Account with verified documents | Geo: MIX | Registered on real device | Full account access | Price from: $89 Loyal customers — additional discounts and promo codes! Support: ➡ Telegram: https://t.me/solomon_bog ➡ Discord: https://discord.gg/y9AStFFsrh ➡ WhatsApp: https://wa.me/79051904467 ➡ Email: solomonbog@socnet.store ➡ Telegram Channel: https://t.me/accsforyou_shop Also via these contacts you can: — Consult about wholesale purchases — Set up a partnership (current partners: https://socnet.bgng.io/partners ) — Become our supplier SocNet — Digital Goods and Premium Subscriptions Store
    • SocNet is now on Medium! Check out our new article showcasing the full potential of our store and SMM Panel! Article: Click Promo code: MEDIUM5 (5% Discount) Online Store: Click Telegram Bot: Click SMM Panel: Click Regular customers receive additional discounts and promo codes! Support: Telegram: https://t.me/solomon_bog Discord: https://discord.gg/y9AStFFsrh WhatsApp: https://wa.me/79051904467 Email: solomonbog@socnet.store  Telegram Channel: https://t.me/accsforyou_shop You can also contact us for: — Wholesale inquiries — Partnership opportunities (Current partners: https://socnet.bgng.io/partners ) — Becoming a supplier SocNet — your store for digital goods and premium subscriptions  Want to expand your business network or promote services through the largest B2B platform? LinkedIn accounts are your tool for marketing, recruiting, and outreach automation. Perfect for SMM, hiring, lead generation, and business scaling. ➡ Ready-made accounts — fast, convenient, no hassle. Promo code: LINKEDIN5 (5% discount) Payment: Bank cards · Cryptocurrency · Other popular methods How to buy: ➡ Online Store: Click ➡ Telegram Bot: Click Other services: ➡ SMM Panel: Click Product range: ➡ LINKEDIN.COM ACCOUNTS | EMAIL INCLUDED @OUTLOOK.COM / @HOTMAIL.COM / @FIRSTMAIL.COM, MALE OR FEMALE, PARTIALLY FILLED PROFILES, REGISTERED FROM USA IP | Price from: $2.5 ➡ LINKEDIN.COM ACCOUNTS | EMAIL INCLUDED @OUTLOOK.COM / @HOTMAIL.COM / @FIRSTMAIL.COM, MALE OR FEMALE, PARTIALLY FILLED PROFILES, REGISTERED FROM EUROPE IP | Price from: $2.5 ➡ LINKEDIN.COM ACCOUNTS | EMAIL INCLUDED @OUTLOOK.COM / @HOTMAIL.COM / @FIRSTMAIL.COM, MALE OR FEMALE, PARTIALLY FILLED PROFILES, REGISTERED FROM MIX IP | Price from: $2.5 ➡ LinkedIn Old Brute Account with Real Connections (0 connections) | Mix Geo | Filled Profile | Registered on real device | Price from: $10 ➡ LinkedIn Premium Brute Account (Premium) with active 1-month Premium subscription | Geo: MIX | Registered on real device | Full account access | Price from: $20 ➡ LinkedIn Old Brute Account with Real Connections (50 connections) | Mix Geo | Filled Profile | Registered on real device | Price from: $20 ➡ LinkedIn Old Brute Account with Real Connections (100+ connections) | Mix Geo | Filled Profile | Registered on real device | Price from: $39 ➡ LinkedIn Old Brute Account with Real Connections (500+ connections) | Mix Geo | Filled Profile | Registered on real device | Price from: $69 ➡ LinkedIn Verified Brute Account with verified documents | Geo: MIX | Registered on real device | Full account access | Price from: $89 Loyal customers — additional discounts and promo codes! Support: ➡ Telegram: https://t.me/solomon_bog ➡ Discord: https://discord.gg/y9AStFFsrh ➡ WhatsApp: https://wa.me/79051904467 ➡ Email: solomonbog@socnet.store ➡ Telegram Channel: https://t.me/accsforyou_shop Also via these contacts you can: — Consult about wholesale purchases — Set up a partnership (current partners: https://socnet.bgng.io/partners ) — Become our supplier SocNet — Digital Goods and Premium Subscriptions Store
    • Buying & Selling Torn City Cash
  • 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