Jump to content

Recommended Posts

Posted


Index: java/net/sf/l2j/gameserver/GameServer.java

===================================================================

--- java/net/sf/l2j/gameserver/GameServer.java    (revision 21)

+++ java/net/sf/l2j/gameserver/GameServer.java    (working copy)

@@ -75,6 +75,7 @@

 import net.sf.l2j.gameserver.instancemanager.PetitionManager;

 import net.sf.l2j.gameserver.instancemanager.ZoneManager;

 import net.sf.l2j.gameserver.l2spike.botengine.BotManager;

+import net.sf.l2j.gameserver.l2spike.datatables.AuctionTable;

 import net.sf.l2j.gameserver.l2spike.datatables.IconTable;

 import net.sf.l2j.gameserver.l2spike.handler.BypassHandler;

 import net.sf.l2j.gameserver.l2spike.partymatching.PartyMatchingManager;

@@ -226,6 +227,7 @@

         IconTable.getInstance();

         BotManager.getInstance();

         PartyMatchingManager.getInstance();

+        AuctionTable.getInstance();

         

         StringUtil.printSection("System");

         Runtime.getRuntime().addShutdownHook(Shutdown.getInstance());

Index: java/net/sf/l2j/gameserver/l2spike/auction/AuctionItem.java

===================================================================

--- java/net/sf/l2j/gameserver/l2spike/auction/AuctionItem.java    (revision 0)

+++ java/net/sf/l2j/gameserver/l2spike/auction/AuctionItem.java    (revision 0)

@@ -0,0 +1,76 @@

+/*

+ * 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 net.sf.l2j.gameserver.l2spike.auction;

+

+/**

+ * @author Anarchy

+ *

+ */

+public class AuctionItem

+{

+    private int auctionId;

+    private int ownerId;

+    private int itemId;

+    private int count;

+    private int enchant;

+    private int costId;

+    private int costCount;

+    

+    public AuctionItem(int auctionId, int ownerId, int itemId, int count, int enchant, int costId, int costCount)

+    {

+        this.auctionId = auctionId;

+        this.ownerId = ownerId;

+        this.itemId = itemId;

+        this.count = count;

+        this.enchant = enchant;

+        this.costId = costId;

+        this.costCount = costCount;

+    }

+    

+    public int getAuctionId()

+    {

+        return auctionId;

+    }

+    

+    public int getOwnerId()

+    {

+        return ownerId;

+    }

+    

+    public int getItemId()

+    {

+        return itemId;

+    }

+    

+    public int getCount()

+    {

+        return count;

+    }

+    

+    public int getEnchant()

+    {

+        return enchant;

+    }

+    

+    public int getCostId()

+    {

+        return costId;

+    }

+    

+    public int getCostCount()

+    {

+        return costCount;

+    }

+}

Index: java/net/sf/l2j/gameserver/l2spike/datatables/AuctionTable.java

===================================================================

--- java/net/sf/l2j/gameserver/l2spike/datatables/AuctionTable.java    (revision 0)

+++ java/net/sf/l2j/gameserver/l2spike/datatables/AuctionTable.java    (revision 0)

@@ -0,0 +1,199 @@

/*

 * 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 net.sf.l2j.gameserver.l2spike.datatables;

 

 

import java.sql.Connection;

import java.sql.PreparedStatement;

import java.sql.ResultSet;

import java.util.Map;

import java.util.concurrent.ConcurrentHashMap;

import java.util.logging.Logger;

 

 

import net.sf.l2j.L2DatabaseFactory;

import net.sf.l2j.gameserver.l2spike.auction.AuctionItem;

 

 

/**

 * @author Anarchy

 *

 

 */

public class AuctionTable

{

    private static Logger log = Logger.getLogger(AuctionTable.class.getName());

   

    private Map<Integer, AuctionItem> items;

    private int maxId;

   

    public static AuctionTable getInstance()

    {

        return SingletonHolder._instance;

    }

   

    protected AuctionTable()

    {

        items = new ConcurrentHashMap<>();

        maxId = 0;

       

        load();

    }

   

    private void load()

    {

        try (Connection con = L2DatabaseFactory.getInstance().getConnection())

        {

            PreparedStatement stm = con.prepareStatement("SELECT * FROM auction_table");

            ResultSet rset = stm.executeQuery();

           

            while (rset.next())

            {

                int auctionId = rset.getInt("auctionid");

                int ownerId = rset.getInt("ownerid");

                int itemId = rset.getInt("itemid");

                int count = rset.getInt("count");

                int enchant = rset.getInt("enchant");

                int costId = rset.getInt("costid");

                int costCount = rset.getInt("costcount");

               

                items.put(auctionId, new AuctionItem(auctionId, ownerId, itemId, count, enchant, costId, costCount));

               

                if (auctionId > maxId)

                    maxId = auctionId;

            }

           

            rset.close();

            stm.close();

        }

        catch (Exception e)

        {

            e.printStackTrace();

        }

       

        log.info("AuctionTable: Loaded "+items.size()+" items.");

    }

   

    public void addItem(AuctionItem item)

    {

        items.put(item.getAuctionId(), item);

       

        try (Connection con = L2DatabaseFactory.getInstance().getConnection())

        {

            PreparedStatement stm = con.prepareStatement("INSERT INTO auction_table VALUES (?,?,?,?,?,?,?)");

            stm.setInt(1, item.getAuctionId());

            stm.setInt(2, item.getOwnerId());

            stm.setInt(3, item.getItemId());

            stm.setInt(4, item.getCount());

            stm.setInt(5, item.getEnchant());

            stm.setInt(6, item.getCostId());

            stm.setInt(7, item.getCostCount());

           

            stm.execute();

            stm.close();

        }

        catch (Exception e)

        {

            e.printStackTrace();

        }

    }

   

    public void deleteItem(AuctionItem item)

    {

        items.remove(item);

       

        try (Connection con = L2DatabaseFactory.getInstance().getConnection())

        {

            PreparedStatement stm = con.prepareStatement("DELETE FROM auction_table WHERE auctionid=?");

            stm.setInt(1, item.getAuctionId());

           

            stm.execute();

            stm.close();

        }

        catch (Exception e)

        {

            e.printStackTrace();

        }

    }

   

    public AuctionItem getItem(int auctionId)

    {

        return items.get(auctionId);

    }

   

    public Map<Integer, AuctionItem> getItems()

    {

        return items;

    }

   

    public int getNextAuctionId()

    {

        maxId++;

        return maxId;

    }

   

    private static class SingletonHolder

    {

        protected static final AuctionTable _instance = new AuctionTable();

    }}

 

Index: java/net/sf/l2j/gameserver/model/actor/instance/L2AuctionManagerInstance.java

===================================================================

--- java/net/sf/l2j/gameserver/model/actor/instance/L2AuctionManagerInstance.java    (revision 0)

+++ java/net/sf/l2j/gameserver/model/actor/instance/L2AuctionManagerInstance.java    (revision 0)

@@ -0,0 +1,512 @@

/*

 * 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 net.sf.l2j.gameserver.model.actor.instance;

 

 

import java.sql.Connection;

import java.sql.PreparedStatement;

import java.sql.ResultSet;

import java.util.ArrayList;

import java.util.HashMap;

import java.util.Map;

 

 

import net.sf.l2j.commons.lang.StringUtil;

 

 

import net.sf.l2j.L2DatabaseFactory;

import net.sf.l2j.gameserver.datatables.ItemTable;

import net.sf.l2j.gameserver.idfactory.IdFactory;

import net.sf.l2j.gameserver.l2spike.auction.AuctionItem;

import net.sf.l2j.gameserver.l2spike.datatables.AuctionTable;

import net.sf.l2j.gameserver.l2spike.datatables.IconTable;

import net.sf.l2j.gameserver.model.World;

import net.sf.l2j.gameserver.model.actor.template.NpcTemplate;

import net.sf.l2j.gameserver.model.item.instance.ItemInstance;

import net.sf.l2j.gameserver.network.serverpackets.InventoryUpdate;

import net.sf.l2j.gameserver.network.serverpackets.NpcHtmlMessage;

 

 

/**

 * @author Anarchy

 *

 */

public class L2AuctionManagerInstance extends L2NpcInstance

{

    public L2AuctionManagerInstance(int objectId, NpcTemplate template)

    {

        super(objectId, template);

    }

   

    @Override

    public void onBypassFeedback(L2PcInstance player, String command)

    {

        if (command.startsWith("auction"))

        {

            try

            {

                String[] data = command.substring(8).split(" - ");

                int page = Integer.parseInt(data[0]);

                String search = data[1];

                showAuction(player, page, search);

            }

            catch (Exception e)

            {

                showChatWindow(player);

                player.sendMessage("Invalid input. Please try again.");

                return;

            }

        }

        else if (command.startsWith("buy"))

        {

            int auctionId = Integer.parseInt(command.substring(4));

            AuctionItem item = AuctionTable.getInstance().getItem(auctionId);

           

            if (item == null)

            {

                showChatWindow(player);

                player.sendMessage("Invalid choice. Please try again.");

                return;

            }

           

            if (player.getInventory().getItemByItemId(item.getCostId()) == null || player.getInventory().getItemByItemId(item.getCostId()).getCount() < item.getCostCount())

            {

                showChatWindow(player);

                player.sendMessage("Incorrect item count.");

                return;

            }

           

            player.destroyItemByItemId("auction", item.getCostId(), item.getCostCount(), this, true);

           

            L2PcInstance owner = World.getInstance().getPlayer(item.getOwnerId());

            if (owner != null && owner.isOnline())

            {

                owner.addItem("auction", item.getCostId(), item.getCostCount(), null, true);

                owner.sendMessage("You have sold an item in the Auction Shop.");

            }

            else

            {

                addItemToOffline(item.getOwnerId(), item.getCostId(), item.getCostCount());

            }

           

            ItemInstance i = player.addItem("auction", item.getItemId(), item.getCount(), this, true);

            i.setEnchantLevel(item.getEnchant());

            player.sendPacket(new InventoryUpdate());

            player.sendMessage("You have purchased an item from the Auction Shop.");

           

            AuctionTable.getInstance().deleteItem(item);

           

            showChatWindow(player);

        }

        else if (command.startsWith("addpanel"))

        {

            int page = Integer.parseInt(command.substring(9));

 

           

            showAddPanel(player, page);

        }

        else if (command.startsWith("additem"))

        {

            int itemId = Integer.parseInt(command.substring(8));

           

            if (player.getInventory().getItemByObjectId(itemId) == null)

            {

                showChatWindow(player);

                player.sendMessage("Invalid item. Please try again.");

                return;

            }

           

            showAddPanel2(player, itemId);

        }

        else if (command.startsWith("addit2"))

        {

            try

            {

                String[] data = command.substring(7).split(" ");

                int itemId = Integer.parseInt(data[0]);

                String costitemtype = data[1];

                int costCount = Integer.parseInt(data[2]);

                int itemAmount = Integer.parseInt(data[3]);

               

                if (player.getInventory().getItemByObjectId(itemId) == null)

                {

                    showChatWindow(player);

                    player.sendMessage("Invalid item. Please try again.");

                    return;

                }

                if (player.getInventory().getItemByObjectId(itemId).getCount() < itemAmount)

                {

                    showChatWindow(player);

                    player.sendMessage("Invalid item. Please try again.");

                    return;

                }

                if (!player.getInventory().getItemByObjectId(itemId).isTradable())

                {

                    showChatWindow(player);

                    player.sendMessage("Invalid item. Please try again.");

                    return;

                }

               

                int costId = 0;

                if (costitemtype.equals("Adena"))

                {

                    costId = 57;

                }

               

                AuctionTable.getInstance().addItem(new AuctionItem(AuctionTable.getInstance().getNextAuctionId(), player.getObjectId(), player.getInventory().getItemByObjectId(itemId).getItemId(), itemAmount, player.getInventory().getItemByObjectId(itemId).getEnchantLevel(), costId, costCount));

               

                player.destroyItem("auction", itemId, itemAmount, this, true);

                player.sendPacket(new InventoryUpdate());

                player.sendMessage("You have added an item for sale in the Auction Shop.");

                showChatWindow(player);

            }

            catch (Exception e)

            {

                showChatWindow(player);

                player.sendMessage("Invalid input. Please try again.");

                return;

            }

        }

        else if (command.startsWith("myitems"))

 

        {

            int page = Integer.parseInt(command.substring(8));

            showMyItems(player, page);

        }

        else if (command.startsWith("remove"))

        {

            int auctionId = Integer.parseInt(command.substring(7));

            AuctionItem item = AuctionTable.getInstance().getItem(auctionId);

           

            if (item == null)

            {

                showChatWindow(player);

                player.sendMessage("Invalid choice. Please try again.");

                return;

            }

           

            AuctionTable.getInstance().deleteItem(item);

           

            ItemInstance i = player.addItem("auction", item.getItemId(), item.getCount(), this, true);

            i.setEnchantLevel(item.getEnchant());

            player.sendPacket(new InventoryUpdate());

            player.sendMessage("You have removed an item from the Auction Shop.");

            showChatWindow(player);

        }

        else

        {

            super.onBypassFeedback(player, command);

        }

    }

   

    private void showMyItems(L2PcInstance player, int page)

    {

        HashMap<Integer, ArrayList<AuctionItem>> items = new HashMap<>();

        int curr = 1;

        int counter = 0;

       

        ArrayList<AuctionItem> temp = new ArrayList<>();

        for (Map.Entry<Integer, AuctionItem> entry : AuctionTable.getInstance().getItems().entrySet())

        {

            if (entry.getValue().getOwnerId() == player.getObjectId())

            {

                temp.add(entry.getValue());

               

                counter++;

               

                if (counter == 10)

                {

                    items.put(curr, temp);

                    temp = new ArrayList<>();

                    curr++;

                    counter = 0;

                }

            }

        }

        items.put(curr, temp);

       

        if (!items.containsKey(page))

        {

            showChatWindow(player);

            player.sendMessage("Invalid page. Please try again.");

            return;

        }

       

        String html = "";

        html += "<html><title>Auction Shop</title><body><center><br1>";

        html += "<table width=310 bgcolor=000000 border=1>";

        html += "<tr><td>Item</td><td>Cost</td><td></td></tr>";

        for (AuctionItem item : items.get(page))

        {

            html += "<tr>";

            html += "<td><img src=\""+IconTable.getInstance().getIcon(item.getItemId())+"\" width=32 height=32 align=center></td>";

            html += "<td>Item: "+(item.getEnchant() > 0 ? "+"+item.getEnchant()+" "+ItemTable.getInstance().getTemplate(item.getItemId()).getName()+" - "+item.getCount() : ItemTable.getInstance().getTemplate(item.getItemId()).getName()+" - "+item.getCount());

            html += "<br1>Cost: "+StringUtil.formatNumber(item.getCostCount())+" "+ItemTable.getInstance().getTemplate(item.getCostId()).getName();

            html += "</td>";

            html += "<td fixwidth=71><button value=\"Remove\" action=\"bypass -h npc_"+getObjectId()+"_remove "+item.getAuctionId()+"\" width=70 height=21 back=\"L2UI.DefaultButton_click\" fore=\"L2UI.DefaultButton\">";

            html += "</td></tr>";

        }

        html += "</table><br><br>";

       

        html += "Page: "+page;

        html += "<br1>";

       

        if (items.keySet().size() > 1)

        {

            if (page > 1)

                html += "<a action=\"bypass -h npc_"+getObjectId()+"_myitems "+(page-1)+"\"><- Prev</a>";

           

            if (items.keySet().size() > page)

                html += "<a action=\"bypass -h npc_"+getObjectId()+"_myitems "+(page+1)+"\">Next -></a>";

        }

       

        html += "</center></body></html>";

       

        NpcHtmlMessage htm = new NpcHtmlMessage(getObjectId());

        htm.setHtml(html);

        player.sendPacket(htm);

    }

   

    private void showAddPanel2(L2PcInstance player, int itemId)

    {

        ItemInstance item = player.getInventory().getItemByObjectId(itemId);

       

        String html = "";

        html += "<html><title>Auction Shop</title><body><center><br1>";

        html += "<img src=\""+IconTable.getInstance().getIcon(item.getItemId())+"\" width=32 height=32 align=center>";

        html += "Item: "+(item.getEnchantLevel() > 0 ? "+"+item.getEnchantLevel()+" "+item.getName() : item.getName());

       

        if (item.isStackable())

        {

            html += "<br>Set amount of items to sell:";

            html += "<edit var=amm type=number width=120 height=17>";

        }

       

        html += "<br>Select price:";

        html += "<br><combobox width=120 height=17 var=ebox list=Adena;>";

        html += "<br><edit var=count type=number width=120 height=17>";

        html += "<br><button value=\"Add item\" action=\"bypass -h npc_"+getObjectId()+"_addit2 "+itemId+" $ebox $count "+(item.isStackable() ? "$amm" : "1")+"\" width=70 height=21 back=\"L2UI.DefaultButton_click\" fore=\"L2UI.DefaultButton\">";

        html += "</center></body></html>";

       

        NpcHtmlMessage htm = new NpcHtmlMessage(getObjectId());

        htm.setHtml(html);

        player.sendPacket(htm);

    }

   

    private void showAddPanel(L2PcInstance player, int page)

    {

        HashMap<Integer, ArrayList<ItemInstance>> items = new HashMap<>();

        int curr = 1;

        int counter = 0;

       

        ArrayList<ItemInstance> temp = new ArrayList<>();

        for (ItemInstance item : player.getInventory().getItems())

        {

            if (item.getItemId() != 57 && item.isTradable())

            {

                temp.add(item);

               

                counter++;

               

                if (counter == 10)

                {

                    items.put(curr, temp);

                    temp = new ArrayList<>();

                    curr++;

                    counter = 0;

                }

            }

        }

        items.put(curr, temp);

       

        if (!items.containsKey(page))

        {

            showChatWindow(player);

            player.sendMessage("Invalid page. Please try again.");

            return;

        }

       

        String html = "";

        html += "<html><title>Auction Shop</title><body><center><br1>";

        html += "Select item:";

        html += "<br><table width=310 bgcolor=000000 border=1>";

       

        for (ItemInstance item : items.get(page))

        {

            html += "<tr>";

            html += "<td>";

            html += "<img src=\""+IconTable.getInstance().getIcon(item.getItemId())+"\" width=32 height=32 align=center></td>";

            html += "<td>"+(item.getEnchantLevel() > 0 ? "+"+item.getEnchantLevel()+" "+item.getName() : item.getName());

            html += "</td>";

            html += "<td><button value=\"Select\" action=\"bypass -h npc_"+getObjectId()+"_additem "+item.getObjectId()+"\" width=70 height=21 back=\"L2UI.DefaultButton_click\" fore=\"L2UI.DefaultButton\">";

            html += "</td>";

            html += "</tr>";

        }

        html += "</table><br><br>";

       

        html += "Page: "+page;

        html += "<br1>";

       

        if (items.keySet().size() > 1)

        {

            if (page > 1)

                html += "<a action=\"bypass -h npc_"+getObjectId()+"_addpanel "+(page-1)+"\"><- Prev</a>";

           

            if (items.keySet().size() > page)

                html += "<a action=\"bypass -h npc_"+getObjectId()+"_addpanel "+(page+1)+"\">Next -></a>";

        }

       

        html += "</center></body></html>";

       

        NpcHtmlMessage htm = new NpcHtmlMessage(getObjectId());

        htm.setHtml(html);

        player.sendPacket(htm);

    }

   

    @SuppressWarnings("resource")

    private static void addItemToOffline(int playerId, int itemId, int count)

    {

        try (Connection con = L2DatabaseFactory.getInstance().getConnection())

        {

            PreparedStatement stm = con.prepareStatement("SELECT count FROM items WHERE owner_id=? AND item_id=?");

            stm.setInt(1, playerId);

            stm.setInt(2, itemId);

            ResultSet rset = stm.executeQuery();

           

            if (rset.next())

            {

                stm = con.prepareStatement("UPDATE items SET count=? WHERE owner_id=? AND item_id=?");

                stm.setInt(1, rset.getInt("count") + count);

                stm.setInt(2, playerId);

                stm.setInt(3, itemId);

               

                stm.execute();

            }

            else

            {

                stm = con.prepareStatement("INSERT INTO items VALUES (?,?,?,?,?,?,?,?,?,?,?,?)");

                stm.setInt(1, playerId);

                stm.setInt(2, IdFactory.getInstance().getNextId());

                stm.setInt(3, itemId);

                stm.setInt(4, count);

                stm.setInt(5, 0);

                stm.setString(6, "INVENTORY");

                stm.setInt(7, 0);

                stm.setInt(8, 0);

                stm.setInt(9, 0);

                stm.setInt(10, 0);

                stm.setInt(11, -1);

                stm.setInt(12, 0);

               

                stm.execute();

            }

           

            rset.close();

            stm.close();

        }

        catch (Exception e)

        {

            e.printStackTrace();

        }

    }

   

    private void showAuction(L2PcInstance player, int page, String search)

    {

        boolean src = !search.equals("*null*");

       

        HashMap<Integer, ArrayList<AuctionItem>> items = new HashMap<>();

        int curr = 1;

        int counter = 0;

       

        ArrayList<AuctionItem> temp = new ArrayList<>();

        for (Map.Entry<Integer, AuctionItem> entry : AuctionTable.getInstance().getItems().entrySet())

        {

            if (entry.getValue().getOwnerId() != player.getObjectId() && (!src || (src && ItemTable.getInstance().getTemplate(entry.getValue().getItemId()).getName().contains(search))))

            {

                temp.add(entry.getValue());

               

                counter++;

               

                if (counter == 10)

                {

                    items.put(curr, temp);

                    temp = new ArrayList<>();

                    curr++;

                    counter = 0;

                }

            }

        }

        items.put(curr, temp);

       

        if (!items.containsKey(page))

        {

            showChatWindow(player);

            player.sendMessage("Invalid page. Please try again.");

            return;

        }

       

        String html = "<html><title>Auction Shop</title><body><center><br1>";

        html += "<multiedit var=srch width=150 height=20><br1>";

        html += "<button value=\"Search\" action=\"bypass -h npc_"+getObjectId()+"_auction 1 - $srch\" width=70 height=21 back=\"L2UI.DefaultButton_click\" fore=\"L2UI.DefaultButton\">";

        html += "<br><table width=310 bgcolor=000000 border=1>";

        html += "<tr><td>Item</td><td>Cost</td><td></td></tr>";

        for (AuctionItem item : items.get(page))

        {

            html += "<tr>";

            html += "<td><img src=\""+IconTable.getInstance().getIcon(item.getItemId())+"\" width=32 height=32 align=center></td>";

            html += "<td>Item: "+(item.getEnchant() > 0 ? "+"+item.getEnchant()+" "+ItemTable.getInstance().getTemplate(item.getItemId()).getName()+" - "+item.getCount() : ItemTable.getInstance().getTemplate(item.getItemId()).getName()+" - "+item.getCount());

            html += "<br1>Cost: "+StringUtil.formatNumber(item.getCostCount())+" "+ItemTable.getInstance().getTemplate(item.getCostId()).getName();

            html += "</td>";

            html += "<td fixwidth=71><button value=\"Buy\" action=\"bypass -h npc_"+getObjectId()+"_buy "+item.getAuctionId()+"\" width=70 height=21 back=\"L2UI.DefaultButton_click\" fore=\"L2UI.DefaultButton\">";

            html += "</td></tr>";

        }

        html += "</table><br><br>";

       

        html += "Page: "+page;

        html += "<br1>";

       

        if (items.keySet().size() > 1)

        {

            if (page > 1)

                html += "<a action=\"bypass -h npc_"+getObjectId()+"_auction "+(page-1)+" - "+search+"\"><- Prev</a>";

           

            if (items.keySet().size() > page)

                html += "<a action=\"bypass -h npc_"+getObjectId()+"_auction "+(page+1)+" - "+search+"\">Next -></a>";

        }

       

        html += "</center></body></html>";

       

        NpcHtmlMessage htm = new NpcHtmlMessage(getObjectId());

        htm.setHtml(html);

        player.sendPacket(htm);

    }

   

    @Override

    public String getHtmlPath(int npcId, int val)

    {

        String pom = "";

        if (val == 0)

            pom = "" + npcId;

        else

            pom = npcId + "-" + val;

               

        return "data/html/l2spike/auction/" + pom + ".htm";

    }}

 

Index: data/html/l2spike/auction/65529.htm

===================================================================

--- data/html/l2spike/auction/65529.htm    (revision 0)

+++ data/html/l2spike/auction/65529.htm    (revision 0)

@@ -0,0 +1,25 @@

+<html>

+<title>

+Auction Shop

+</title>

+<body>

+<center>

+<img src="l2spike.npclogo" width=256 height=95>

+<br><img src="l2spike.splitter" width=256 height=8 align=center>

+<br>

+Welcome to L2Spike auction shop!

+<br>

+<table width=230 bgcolor="000000">

+    <tr>

+        <td align=center>

+            <button value="Shop" action="bypass -h npc_%objectId%_auction 1 - *null*" width=204 height=20 back="sek.cbui81" fore="sek.cbui82">

+            <button value="Add item" action="bypass -h npc_%objectId%_addpanel 1" width=204 height=20 back="sek.cbui81" fore="sek.cbui82">

+            <button value="My items" action="bypass -h npc_%objectId%_myitems 1" width=204 height=20 back="sek.cbui81" fore="sek.cbui82">

+        </td>

+    </tr>

+</table>

+<br>

+<img src="l2spike.splitter" width=256 height=8 align=center>

+</center>

+</body>

+</html>

\ No newline at end of file

Index: sql/auction_table.sql

===================================================================

--- sql/auction_table.sql    (revision 0)

+++ sql/auction_table.sql    (revision 0)

@@ -0,0 +1,10 @@

+CREATE TABLE IF NOT EXISTS `auction_table` (

+  `auctionid` INT UNSIGNED NOT NULL DEFAULT 0,

+  `ownerid` INT UNSIGNED NOT NULL DEFAULT 0,

+  `itemid` INT UNSIGNED NOT NULL DEFAULT 0,

+  `count` INT UNSIGNED NOT NULL DEFAULT 0,

+  `enchant` INT UNSIGNED NOT NULL DEFAULT 0,

+  `costid` INT UNSIGNED NOT NULL DEFAULT 0,

+  `costcount` INT UNSIGNED NOT NULL DEFAULT 0,

+  PRIMARY KEY (auctionid)

+);

Index: tools/database_installer.bat

===================================================================

--- tools/database_installer.bat    (revision 17)

+++ tools/database_installer.bat    (working copy)

@@ -104,6 +104,7 @@

 %mysqlPath% -h %gshost% -u %gsuser% --password=%gspass% -D %gsdb% < ../sql/topic.sql

 %mysqlPath% -h %gshost% -u %gsuser% --password=%gspass% -D %gsdb% < ../sql/character_schemes.sql

 %mysqlPath% -h %gshost% -u %gsuser% --password=%gspass% -D %gsdb% < ../sql/bots.sql

+%mysqlPath% -h %gshost% -u %gsuser% --password=%gspass% -D %gsdb% < ../sql/auction_table.sql

 

 echo Done.

 echo.

Index: tools/database_installer.sh

===================================================================

--- tools/database_installer.sh    (revision 17)

+++ tools/database_installer.sh    (working copy)

@@ -124,6 +124,7 @@

 $MYG < ../sql/topic.sql &> /dev/null

 $MYG < ../sql/character_schemes.sql &> /dev/null

 $MYG < ../sql/bots.sql &> /dev/null

+$MYG < ../sql/auction_table.sql &> /dev/null

 echo ""

 echo "Was fast, isn't it ?"

 }

Index: tools/full_install.sql

===================================================================

--- tools/full_install.sql    (revision 17)

+++ tools/full_install.sql    (working copy)

@@ -45,4 +45,5 @@

 DROP TABLE IF EXISTS siege_clans;

 DROP TABLE IF EXISTS topic;

 DROP TABLE IF EXISTS character_schemes;

-DROP TABLE IF EXISTS bots;

\ No newline at end of file

+DROP TABLE IF EXISTS bots;

+DROP TABLE IF EXISTS auction_table;

\ No newline at end of file

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

    • L2GOLD - Gold x45 C4 Project   C4 - Scions of Destiny: Protocol 656   Fully L2Gold Features - Daily Quest - Daily Mining Quest - Ancient Weapons -Refine System  -Rebirth System -Fully configurable everything you want -Gold stats/Gold skills/Gold items working 100% -Zones 100% alike  -Unique donations system (npc or voicedcommand .donate) - On Enchant success announcement ( if +16 for weapon, 8 for armor , 7 for jewel) - Announce of Castle Lord - Announce of Hero  - Olympiad Max A grade - Olympiad Buffs on matches changed to Gold Alike -Buff shop system on selling buffs with command .buffshop Shift+click dropinfo on mobs. and many more ingame addons.   Server is running a Test Server: Online to anyone can test it.   Game Client: https://www.mediafire.com/file/d0000rmt8ym0323/Lineage_2_C4_Client.rar/file   Game Patch: https://www.mediafire.com/file/39sojdex2mgj55k/L2Gold+Patch+C4.rar/file   GM Accounts: ID: root1 pass root1 [ accounts go from  root1 until root20 ]   Regular Accounts Registrations: http://84.247.164.27/?page=register   Some Screenshots: https://imgur.com/a/KSE4kdq   Contact me here via PM (only serious buyers).    Price of the product: Fully Server Pack + Source ( 200 Euros )
    • Https://lineage2dex.com Discord link : https://discord.com/channels/786506979493281794/814778540893536307/1424434670690504874 ## Dexters! **Our x25 server is celebrating its first week!** 🔥 Online stays strong at peak levels!  New players are joining every day, with 200+ new master accounts registered daily — amazing results! ✨ Tomorrow we launch a new episode along with the first event. Full details will be shared in the morning(October 6). 🎁 And for this little celebration, here’s a bonus code with a small gift for you! ## O05-IIW **Contains: ** * x3 - Training Potion 200% (20 min) * x200 - Mana Potions Loyatly (no weight) *The code will remain active until October 6, 7 AM(server time). And be sure, you have at less 20 slots free on inv before using a code.* **👉 How to redeem:** 1. Log in to your Master Account on site. 2. Click the Redeem Bonus Code button at the top of the panel, type code click redeem. 3. Select the account and character you want to receive the gift.  **Codes work only 1 time for 1 Master Account!** ### Enjoy your adventure, Dexters!
    • Complete Server Pack + Source Files:     C4 Scions Of Destiny: P656 Retail X1 L2OFF Server Pack + Source: Price: 70 EUR   C4 Scions Of Destiny: P656 ESL2 Athena x45 L2OFF Server Pack + Source: Price: 90 EUR Screenshots: https://imgur.com/a/eternal-sin-l2-athena-x45-c4-WYCpbjl   C6 Interlude: P746 ESL2 Athena x45 L2OFF Server Pack + Source: Price: 100EUR The same as C4 but in C6 Client so the Screenshots is the same: https://imgur.com/a/eternal-sin-l2-athena-x45-c4-WYCpbjl     C6 Interlude: P746 L2Gold L2OFF Server Pack + Source: Price: 50EUR Screenshots: https://imgur.com/a/9kB3oA9   C6 - Classic Interlude: P110 ESL2 Athena x45 L2OFF Server Pack + Source: Price: 100EUR Screenshots: https://imgur.com/a/Z2kZxuv   Contact me here via PM (only serious buyers). 
    • Where should I modify the IP to be able to put it online for testing?
    • I had issues with Smart Guard to, there is not even support in many cases.
  • 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