Code:
public void openFor(Player player) {
player.getActionSender().sendString(SHOPINTERFACE, SHOP_NAME_CHILD, shopName);
player.getActionSender().sendConfigByte(118, 17);
player.getActionSender().sendInventoryInterface(SHOPINVENTORYINTERFACE);
player.getActionSender().sendMainInterface(SHOPINTERFACE, false, false);
player.getActionSender().sendRunScript(25, mainStockParamaters, MAINSTOCKTYPEMASK);
player.getActionSender().sendRunScript(150, BUY_PARAMETERS, STOCKOPTIONTYPEMASK);
player.getActionSender().sendRunScript(150, SELL_PARAMETERS, STOCKOPTIONTYPEMASK);
player.getActionSender().sendItemOptions(0x43E, 0, SHOPINVENTORYINTERFACE, 0, Inventory.SIZE);
player.getActionSender().hideTabs();
player.getActionSender().sendShowHideInterfaceFeature(ActionButtonPacketHandler.GAMEFRAME_PARENT, 50, true);
player.getActionSender().sendShowHideInterfaceFeature(ActionButtonPacketHandler.GAMEFRAME_PARENT, 57, true);
setShopType(player, true);
player.setCurrentShop(this);
}
With these constants:
Code:
public static final int SHOPINTERFACE = 0x26C;
public static final int SHOPINVENTORYINTERFACE = 0x26D;
private static final int CLIENTINVENTORYITEMINDEX = 93;
private static final int CLIENTMAINSTOCKITEMINDEX = 91;
private static final int SHOP_NAME_CHILD = 0x16;
public static final int SHOP_MAIN_STOCK = 0x17;
public static final int SHOP_PLAYER_STOCK = 0x18;
private static final int SHOP_MAIN_UNHIGHLIGHED = 0x19;
private static final int SHOP_MAIN_HIGHLIGHTED = 0x1D;
private static final int SHOP_PLAYER_UNHIGHLIGHTED = 0x1A;
private static final int SHOP_PLAYER_HIGHLIGHTED = 0x1B;
And mainStockParameters defined as:
Code:
mainStockParamaters = new Integer[] { mainStockId, 93 };
MainStockId is -1 if there's no main stock.
Furthermore I have these methods:
Code:
public void closeFor(Player player){
if(player.getShopListener() != null)
personalStock.removeListener(player.getShopListener());
player.getActionSender().restoreInventory();
player.getActionSender().showTabs();
player.setShopListener(null);
}
private void setShopType(Player player, boolean mainShop) {
player.setShopType(mainShop);
if (mainShop) {
if(mainStockDefinition != null){
player.getActionSender().sendShowHideInterfaceFeature(SHOPINTERFACE, SHOP_MAIN_STOCK, true);
player.getActionSender().sendShowHideInterfaceFeature(SHOPINTERFACE, SHOP_MAIN_HIGHLIGHTED, true);
player.getActionSender().sendShowHideInterfaceFeature(SHOPINTERFACE, SHOP_MAIN_UNHIGHLIGHED, false);
player.getActionSender().sendShowHideInterfaceFeature(SHOPINTERFACE, SHOP_PLAYER_STOCK, false);
player.getActionSender().sendShowHideInterfaceFeature(SHOPINTERFACE, SHOP_PLAYER_UNHIGHLIGHTED, true);
player.getActionSender().sendShowHideInterfaceFeature(SHOPINTERFACE, SHOP_PLAYER_HIGHLIGHTED, false);
player.getActionSender().sendItemOptions(Constants.SCRIPT_SHOP_AND_INV_ITEMOPTIONS, SHOP_MAIN_STOCK, SHOPINTERFACE, 0, SHOP_SIZE);
InterfaceContainerListener oldShopListener = player.getShopListener();
if(personalStock != null && oldShopListener != null)
player.getInterfaceState().removeListener(personalStock, oldShopListener);
}
} else {
if(personalStock != null){
player.getActionSender().sendShowHideInterfaceFeature(SHOPINTERFACE, SHOP_MAIN_STOCK, false);
player.getActionSender().sendShowHideInterfaceFeature(SHOPINTERFACE, SHOP_MAIN_HIGHLIGHTED, false);
player.getActionSender().sendShowHideInterfaceFeature(SHOPINTERFACE, SHOP_MAIN_UNHIGHLIGHED, true);
player.getActionSender().sendShowHideInterfaceFeature(SHOPINTERFACE, SHOP_PLAYER_STOCK, true);
player.getActionSender().sendShowHideInterfaceFeature(SHOPINTERFACE, SHOP_PLAYER_UNHIGHLIGHTED, false);
player.getActionSender().sendShowHideInterfaceFeature(SHOPINTERFACE, SHOP_PLAYER_HIGHLIGHTED, true);
player.getActionSender().sendItemOptions(Constants.SCRIPT_SHOP_AND_INV_ITEMOPTIONS, SHOP_PLAYER_STOCK, SHOPINTERFACE, 0, SHOP_SIZE);
InterfaceContainerListener newShopListener = new InterfaceContainerListener(player, -1, 2, CLIENTMAINSTOCKITEMINDEX);
player.getInterfaceState().addListener(personalStock, newShopListener);
player.setShopListener(newShopListener);
}
}
}
The result:
and
The main shops are client sided though. So if you want one that differs from the standard, you'll need to change stuff over there.