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

    • Provide proofs not providing any kind of proofs i will just issue warnings
    • For the odbc you have to run the Instalador.exe and click crear dsn, but you have to rename them so the lin2clancomm.dsn for example becomes l2c4_lin2clancomm but also check if the file inside has as database value the correct file name, about the client i also wanted a clean client because i had a problem with the monsters because the character didn't have collision with the monsters and he was running through them but i fixed it with files from a normal interlude client, also my client is now c3 😛 i changed the maps, staticmeshes, systextures so now i do not have the fortresses at antharas lair for example but i also have the c3 sounds and login screen. Where is @GX-Ext
    • I really wonder if they launched the server without testing it even once. All players are creating new characters and transferring the level 20 reward to their main ones. It seems banning people is much easier than sending them a direct message in-game. If you can’t do your job properly, get in touch with people who can help you. I made 17 million in 10 minutes on a 1x Adena rate server and got an Icarus weapon. My suggestion to you — as it's written on the character you banned — is to wipe the server and run a proper OBT. Good luck with your time as administrators; although it doesn't look like it will last very long.  
    • all the reports vanished into thin air  
    • 🔥L2 INTERPRIDE - Pride Style  OPENING THIS NOVEMBER! 🔥  ✅ Grand Opening - November 15th! ✅ ❤️ Open Beta - October 08th! ❤️  🩵  The most up-to date client on the market! ▶️  Retail Pride Style Interlude with the new Client! 💡Discord: https://discord.gg/l2interpride 🌍 General Information Client: Interlude Type: Custom PvP Server Rates: High Rates Starting Level: 56 Balanced PvP Environment Unique PvP Enchant System PvP Synergy System: Support Classes earn PvP Score when assisting DDs in kills Toggle Skills → Now Passive Killing Spree: Every 25 kills grants Hero Aura + Hero Skills until death 🐉 Raid Boss System If you are within 1500 radius when a Raid Boss dies, you automatically receive 1 Raid Boss Chest in your inventory! 💫 Join the Battle ⚔️ Experience modern PvP gameplay on a classic Interlude foundation! 🔥 Build your power. Earn glory. Dominate Aden. 🧙 Custom Items Armors: 🛡️ Tier 1: Dread ⚔️ Tier 2: Titanium 👑 Tier 3: Pride Weapons: 🔱 Tier 1: Unique (PvP / PvE) ⚔️ Tier 2: Pride 💀 Tier 3: Abyssal Accessories: Up to 30 custom accessories with unique stats Legendary Dyes: +5 / -2 Belts: Various special stats ⚔️ Custom PvP Skills PvPs Name Color Reward Skill 500 Blue Firework CP Heal +800 1000 Violet Firework Cleanse 1500 Green Blessed Body 2000 Yellow MP Recharge 2500 Light Blue Special Focus 3000 Orange Death Whisper Debuff 3500 Dark Purple Might 4000 Red Empower 4500 Red Increase Weight Debuff 5000 Red Wind Walk 6000 Red Berserker Spirit 7000 Red Recall NPC 🛒 Shops & NPCs Item Store: Up to A/S grade, Potions, Consumables & more Mysterious Merchant: Custom Armors, Weapons, Accessories NPC Buffer: All Buffs + Scheme System Class Master: Free Class Change 🔥 Enchant System Safe Enchant: +7 Max Enchant: +25 Weapon Rate: Custom (higher enchant = lower rate) Armor Rate: Custom (higher enchant = lower rate) Jewel Rate: Custom (higher enchant = lower rate) ⚙️ Rates Experience: x5000 Skill Points: x5000 Drop Rate: x1 Adena: x500 🏆 Events Team vs Team (TvT) Capture the Flag (CTF) Death Match Castle Siege Hunting Grounds URF TvT 💎 Custom Features ALT + Left Click → Remove selected Buff ALT + F → Teleport System Shift + Left Click → View Monster Droplist
  • 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