From cc23d7734ad8598921030c4f637182866a7e4054 Mon Sep 17 00:00:00 2001 From: P0nk Date: Mon, 27 Sep 2021 22:54:05 +0200 Subject: [PATCH] Implement "view visitor" packet --- .../handlers/PlayerInteractionHandler.java | 6 +++++- src/main/java/tools/PacketCreator.java | 18 +++++++++++++++++- 2 files changed, 22 insertions(+), 2 deletions(-) diff --git a/src/main/java/net/server/channel/handlers/PlayerInteractionHandler.java b/src/main/java/net/server/channel/handlers/PlayerInteractionHandler.java index 0471a672fd..fa8d198d80 100644 --- a/src/main/java/net/server/channel/handlers/PlayerInteractionHandler.java +++ b/src/main/java/net/server/channel/handlers/PlayerInteractionHandler.java @@ -685,11 +685,15 @@ public final class PlayerInteractionHandler extends AbstractPacketHandler { merchant.withdrawMesos(chr); + } else if (mode == Action.VIEW_VISITORS.getCode()) { + List visitorNames = List.of("Dwayne", "Ruben", "Ada", "Clifton", "Beatrice", "Kent", "Max", + "Cecelia", "Edward", "Cory"); + c.sendPacket(PacketCreator.viewMerchantVisitors(visitorNames)); } else if (mode == Action.VIEW_BLACKLIST.getCode()) { List blacklistedNames = List.of("Blanca", "Betsy", "Kevin", "Rosa", "Evan", "Terence", "Cecilia", "Gayle", "Erma", "Dorothy", "Willis", "Alberta", "Marilyn", "Myron", "Sheryl", "Marco", "Jose", "Kendra", "Laurence", "Victoria", "NonListed"); - c.sendPacket(PacketCreator.viewBlacklist(blacklistedNames)); + c.sendPacket(PacketCreator.viewMerchantBlacklist(blacklistedNames)); } else if (mode == Action.MERCHANT_ORGANIZE.getCode()) { HiredMerchant merchant = chr.getHiredMerchant(); if (merchant == null || !merchant.isOwner(chr)) { diff --git a/src/main/java/tools/PacketCreator.java b/src/main/java/tools/PacketCreator.java index ca375525d4..e3c372d070 100644 --- a/src/main/java/tools/PacketCreator.java +++ b/src/main/java/tools/PacketCreator.java @@ -76,6 +76,7 @@ import java.sql.SQLException; import java.util.List; import java.util.*; import java.util.Map.Entry; +import java.util.concurrent.TimeUnit; import java.util.stream.Collectors; /** @@ -5203,10 +5204,25 @@ public class PacketCreator { return p; } + /** + * @param chrNames Merchant visitors. The first 10 names will be shown, + * everything beyond will layered over each other at the top of the window. + */ + public static Packet viewMerchantVisitors(List chrNames) { + final OutPacket p = OutPacket.create(SendOpcode.PLAYER_INTERACTION); + p.writeByte(PlayerInteractionHandler.Action.VIEW_VISITORS.getCode()); + p.writeShort(chrNames.size()); + for (String chrName : chrNames) { + p.writeString(chrName); + p.writeInt((int) (TimeUnit.HOURS.toMillis(1) + TimeUnit.MINUTES.toMillis(23))); // milliseconds, displayed as hours+minutes + } + return p; + } + /** * @param chrNames Blacklisted names. The first 20 names will be displayed, anything beyond does no difference. */ - public static Packet viewBlacklist(List chrNames) { + public static Packet viewMerchantBlacklist(List chrNames) { final OutPacket p = OutPacket.create(SendOpcode.PLAYER_INTERACTION); p.writeByte(PlayerInteractionHandler.Action.VIEW_BLACKLIST.getCode()); p.writeShort(chrNames.size());