styler 104 Опубликовано 7 августа, 2016 Есть скрипт агументации. После покупки агумента скрипт останавливается и приходится заново открывать комьюнити, только после этого он срабатывает повторно. Как это можно пофиксить? Сам скрипт: package services.community; import java.util.StringTokenizer; import l2p.commons.dao.JdbcEntityState; import l2p.gameserver.handler.bbs.CommunityBoardManager; import l2p.gameserver.handler.bbs.ICommunityBoardHandler; import l2p.gameserver.model.Player; import l2p.gameserver.model.actor.instances.player.ShortCut; import l2p.gameserver.model.items.ItemInstance; import l2p.gameserver.scripts.Functions; import l2p.gameserver.scripts.ScriptFile; import l2p.gameserver.serverpackets.InventoryUpdate; import l2p.gameserver.serverpackets.ShortCutRegister; import l2p.gameserver.serverpackets.components.SystemMsg; import l2p.gameserver.serverpackets.ShowBoard; import l2p.gameserver.Config; import l2p.gameserver.data.htm.HtmCache; import org.slf4j.Logger; import org.slf4j.LoggerFactory; /** * * @author dislike */ public class Augmentation extends Functions implements ScriptFile, ICommunityBoardHandler { private static final Logger _log = LoggerFactory.getLogger(Augmentation.class); private int PRICE_ID = 57; // id уплаты private int PRICE_COUNT = 1; // кол-во предметов @Override public void onLoad() { _log.info("CommunityBoard: ArgumManager loaded."); CommunityBoardManager.getInstance().registerHandler(this); } @Override public void onReload() { CommunityBoardManager.getInstance().removeHandler(this); } @Override public void onShutdown() { } @Override public String[] getBypassCommands() { return new String[]{ "_bbsaugm", "_bbsunaugm" }; } @Override public void onBypassCommand(Player player, String bypass) { if (bypass.startsWith("_bbsaugm")) { StringTokenizer st2 = new StringTokenizer(bypass, ";"); String[] mBypass = st2.nextToken().split(":"); ItemInstance item = player.getActiveWeaponInstance(); int id = Integer.parseInt(mBypass[1]); if (item == null) { player.sendMessage("Нет оружия для агументации! Оденьте оружие!"); player.sendPacket(new ShowBoard()); return; } if (item.isAugmented()) { player.sendMessage("Это оружие уже аугментировано!"); player.sendPacket(new ShowBoard()); return; } if (!item.canBeAugmented(player, false)) { player.sendMessage("Это оружие не может быть аугментировано!"); player.sendPacket(new ShowBoard()); return; } if (!player.getInventory().destroyItemByItemId(PRICE_ID, PRICE_COUNT)) { if (PRICE_ID == 57) { player.sendPacket(SystemMsg.YOU_DO_NOT_HAVE_ENOUGH_ADENA); } else { player.sendPacket(SystemMsg.INCORRECT_ITEM_COUNT); } return; } boolean equipped = false; if (equipped = item.isEquipped()) { player.getInventory().unEquipItem(item); } item.setAugmentationId((id << 16) + 7191); //без прибавки к статам работает неверно item.setJdbcState(JdbcEntityState.UPDATED); item.update(); if (equipped) { player.getInventory().equipItem(item); } player.sendPacket(new InventoryUpdate().addModifiedItem(item)); for (ShortCut sc : player.getAllShortCuts()) { if (sc.getId() == item.getObjectId() && sc.getType() == ShortCut.TYPE_ITEM) { player.sendPacket(new ShortCutRegister(player, sc)); } } player.sendChanges(); player.sendMessage("Поздравляем, ваше оружие успешно аугментировано!"); String html = HtmCache.getInstance().getHtml(Config.BBS_HOME_DIR + "pages/services/augment.htm", player); player.sendPacket(new ShowBoard()); return; } if (bypass.startsWith("_bbsunaugm")) { StringTokenizer st2 = new StringTokenizer(bypass, ";"); String[] mBypass = st2.nextToken().split(":"); ItemInstance item = player.getActiveWeaponInstance(); int id = Integer.parseInt(mBypass[1]); boolean equipped = false; if (equipped = item.isEquipped()) { player.getInventory().unEquipItem(item); } item.setAugmentationId(id << 0); item.setJdbcState(JdbcEntityState.UPDATED); item.update(); if (equipped) { player.getInventory().equipItem(item); } player.sendPacket(new InventoryUpdate().addModifiedItem(item)); for (ShortCut sc : player.getAllShortCuts()) { if (sc.getId() == item.getObjectId() && sc.getType() == ShortCut.TYPE_ITEM) { player.sendPacket(new ShortCutRegister(player, sc)); } } player.sendChanges(); player.sendMessage("Поздравляем, аугментация снята!"); player.sendPacket(new ShowBoard()); return; } } @Override public void onWriteCommand(Player player, String bypass, String arg1, String arg2, String arg3, String arg4, String arg5) { } } Кнопка <button value="Купить" action="bypass _bbsaugm:16336" width=50 height=18 back="L2UI_ct1.button_df" fore="L2UI_ct1.button_df"> Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты
razox 1 Опубликовано 10 августа, 2016 Лог в студию Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты
Naik 419 Опубликовано 10 августа, 2016 player.sendMessage("Поздравляем, ваше оружие успешно аугментировано!"); String html = HtmCache.getInstance().getHtml(Config.BBS_HOME_DIR + "pages/services/augment.htm", player); player.sendPacket(new ShowBoard()); player.sendPacket(new ShowBoard()); - это удалить везде, вообще не понимаю, зачем постоянно пакет отправлять. String html = HtmCache.getInstance().getHtml(Config.BBS_HOME_DIR + "pages/services/augment.htm", player); - это вообще не используется, так же можно удалить. Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты
styler 104 Опубликовано 10 августа, 2016 player.sendMessage("Поздравляем, ваше оружие успешно аугментировано!"); String html = HtmCache.getInstance().getHtml(Config.BBS_HOME_DIR + "pages/services/augment.htm", player); player.sendPacket(new ShowBoard()); player.sendPacket(new ShowBoard()); - это удалить везде, вообще не понимаю, зачем постоянно пакет отправлять. Этот пакет закрывает комьюнити, пока это временное решение. Логов нет, были б логи самбы что-то придумал Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты
Naik 419 Опубликовано 10 августа, 2016 Этот пакет закрывает комьюнити, пока это временное решение. Логов нет, были б логи самбы что-то придумал Тогда отправляйте ему хтмл коммунки, а не закрывайте. Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты
styler 104 Опубликовано 10 августа, 2016 Тогда отправляйте ему хтмл коммунки, а не закрывайте. Ммм..дай пример Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты
Naik 419 Опубликовано 10 августа, 2016 Ммм..дай пример String html = HtmCache.getInstance().getHtml(Config.BBS_HOME_DIR + "pages/services/augment.htm", player); separateAndSend(html , player); 1 Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты
styler 104 Опубликовано 11 августа, 2016 String html = HtmCache.getInstance().getHtml(Config.BBS_HOME_DIR + "pages/services/augment.htm", player); separateAndSend(html , player); Спасибо большое. Вот так будет правильней ShowBoard.separateAndSend(html, player); Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты