- Хроники
- Grand Cursade
- Исходники
- Присутствуют
- Сборка
- Mobius
Привет всем. Хотел бы узнать, как добавить возможность аукциона в свой нпс который спавнится по скроллу?
Есть NPC который спавнится по скроллу, ID 34084
Хотелось бы добавить в него аукцион, который привязан к НПСшкам в городе. Чуть-чуть код изменил, кнопка в НПСе реагирует на мой байпасс, но внутри игры пишет "Auction is not available from this NPC
Хроники Shield of the Kingdom
Скрипт самого аукциона
Есть 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;
}
}
