Как добавить Аукцион в свой НПС?

Xonshow1

Путник
Пользователь
Сообщения
15
Розыгрыши
0
Репутация
0
Реакции
0
Баллы
11
Хроники
  1. Grand Cursade
Исходники
Присутствуют
Сборка
Mobius
Привет всем. Хотел бы узнать, как добавить возможность аукциона в свой нпс который спавнится по скроллу?
Есть NPC который спавнится по скроллу, ID 34084
Хотелось бы добавить в него аукцион, который привязан к НПСшкам в городе. Чуть-чуть код изменил, кнопка в НПСе реагирует на мой байпасс, но внутри игры пишет "Auction is not available from this NPC
Хроники Shield of the Kingdom

Скрипт самого аукциона




Код:
package handlers.bypasshandlers;

import java.text.SimpleDateFormat;
import java.util.Date;
import java.util.StringTokenizer;
import java.util.logging.Level;

import org.l2jking.Config;
import org.l2jking.gameserver.handler.IBypassHandler;
import org.l2jking.gameserver.instancemanager.ItemAuctionManager;
import org.l2jking.gameserver.model.actor.Creature;
import org.l2jking.gameserver.model.actor.Player;
import org.l2jking.gameserver.model.itemauction.ItemAuction;
import org.l2jking.gameserver.model.itemauction.ItemAuctionInstance;
import org.l2jking.gameserver.network.SystemMessageId;
import org.l2jking.gameserver.network.serverpackets.ExItemAuctionInfoPacket;

public class ItemAuctionLink implements IBypassHandler
{
    private static final SimpleDateFormat SDF =
        new SimpleDateFormat("HH:mm:ss dd.MM.yyyy");

    private static final String[] COMMANDS =
    {
        "ItemAuction"
    };

    @Override
    public boolean useBypass(String command, Player player, Creature target)
    {
        if (!Config.ALT_ITEM_AUCTION_ENABLED)
        {
            player.sendPacket(SystemMessageId.IT_IS_NOT_AN_AUCTION_PERIOD);
            return true;
        }

        if ((target == null) || !target.isNpc())
        {
            return false;
        }

        // Берём аукцион строго от NPC, если он у него есть
        final ItemAuctionInstance au =
            ItemAuctionManager.getInstance().getManagerInstance(target.getId());

        if (au == null)
        {
            player.sendMessage("Auction is not available from this NPC.");
            return true;
        }

        try
        {
            final StringTokenizer st = new StringTokenizer(command);
            st.nextToken(); // ItemAuction

            if (!st.hasMoreTokens())
            {
                return false;
            }

            final String cmd = st.nextToken();

            if ("show".equalsIgnoreCase(cmd))
            {
                final ItemAuction currentAuction = au.getCurrentAuction();
                final ItemAuction nextAuction = au.getNextAuction();

                if (currentAuction == null)
                {
                    player.sendPacket(SystemMessageId.IT_IS_NOT_AN_AUCTION_PERIOD);

                    if (nextAuction != null)
                    {
                        player.sendMessage(
                            "Next auction: " +
                            SDF.format(new Date(nextAuction.getStartingTime()))
                        );
                    }
                    return true;
                }

                player.sendPacket(
                    new ExItemAuctionInfoPacket(false, currentAuction, nextAuction)
                );
            }
            else if ("cancel".equalsIgnoreCase(cmd))
            {
                boolean returned = false;

                for (ItemAuction auction : au.getAuctionsByBidder(player.getObjectId()))
                {
                    if (auction.cancelBid(player))
                    {
                        returned = true;
                    }
                }

                if (!returned)
                {
                    player.sendPacket(
                        SystemMessageId.THERE_ARE_NO_OFFERINGS_I_OWN_OR_I_MADE_A_BID_FOR
                    );
                }
            }
        }
        catch (Exception e)
        {
            LOGGER.log(Level.WARNING, "ItemAuctionLink error", e);
        }

        return true;
    }

    @Override
    public String[] getBypassList()
    {
        return COMMANDS;
    }
}
 
Тут все стандартно с Ява сборками, то есть код они используют тот же самый ну прям везде...

Нужно добавить данные в XML формате для вашего нпц в этом файле :
То есть данные о предметах на аукционе, но самое главное что-бы поставить id от вашего нпц.
 
Тут все стандартно с Ява сборками, то есть код они используют тот же самый ну прям везде...

Нужно добавить данные в XML формате для вашего нпц в этом файле :
То есть данные о предметах на аукционе, но самое главное что-бы поставить id от вашего нпц.
В этом xml находится аукцион, который работает как в ХФе, где ставятся именно итемы от самой игры, а не от игроков. А мне нужен именно Трейдинг пост как на скрине 1765736715744.webp
 
Пальцем в небо, в скрипте указывается нпц аукциона, или тип нпц аукцион?
 
Тут все стандартно с Ява сборками, то есть код они используют тот же самый ну прям везде...

Нужно добавить данные в XML формате для вашего нпц в этом файле :
То есть данные о предметах на аукционе, но самое главное что-бы поставить id от вашего нпц.
Xonshow1, ну судя по скрипту вот ответ, надо указать ид нпц
 
Xonshow1, ну судя по скрипту вот ответ, надо указать ид нпц
А он детали не указал. Да и код который он описал не будет использоваться для Trading Post. Тут нужно привязать другой пакет для открытия другого окна в клиенте.
 
Оверпостинг
Xonshow1, ну судя по скрипту вот ответ, надо указать ид нпц
Как я выше писал, в том xml аукционатор ХФ типа, где игроки не выставляют итемы, а игра сама предлагает 1 итем раз в неделю на аукцион

А он детали не указал. Да и код который он описал не будет использоваться для Trading Post. Тут нужно привязать другой пакет для открытия другого окна в клиенте.
Сори, я не супер спец в этом деле. Не смог найти JavaScript который отвечает за trading post(

А он детали не указал. Да и код который он описал не будет использоваться для Trading Post. Тут нужно привязать другой пакет для открытия другого окна в клиенте.
Как это можно сделать?
 
Последнее редактирование модератором:
Назад
Сверху Снизу