Anderson 36 Опубликовано 25 сентября, 2012 Здравствуйте, просьба не говорить о том что я 0 в Джаве, или даун который не может юзнуть великий Гугл. Мне нужно чтоб по нажатию на кнопку в какого то НПС, срабатывал ивент в скрипте (Выдача шмота, например). Просьба объяснить принцип роботы инстансов. Я то сделал свой: L2TattooMenagerInstance.java (Показать контент) package silentium.gameserver.model.actor.instance;import gnu.trove.map.hash.TIntIntHashMap;import org.slf4j.Logger;import org.slf4j.LoggerFactory;import java.util.StringTokenizer;import silentium.gameserver.data.cache.HtmCache;import silentium.gameserver.data.multilang.MultilangHtmPath;import silentium.gameserver.model.L2ItemInstance;import silentium.gameserver.model.L2Skill;import silentium.gameserver.model.actor.L2Character;import silentium.gameserver.model.actor.L2Summon;import silentium.gameserver.network.SystemMessageId;import silentium.gameserver.network.serverpackets.ActionFailed;import silentium.gameserver.network.serverpackets.NpcHtmlMessage;import silentium.gameserver.network.serverpackets.SystemMessage;import silentium.gameserver.tables.NpcBufferTable;import silentium.gameserver.tables.SkillTable;import silentium.gameserver.taskmanager.AttackStanceTaskManager;import silentium.gameserver.templates.chars.L2NpcTemplate;public class L2TattooMenagerInstance extends L2NpcInstance{private static final Logger _log = LoggerFactory.getLogger(L2TattooMenagerInstance.class.getName());private static TIntIntHashMap pageVal = new TIntIntHashMap();public L2TattooMenagerInstance(int objectId, L2NpcTemplate template){ super(objectId, template);}@Overridepublic void onBypassFeedback(L2PcInstance player, String command){ if (player == null) { return; } L2Character target = player; int npcId = getNpcId(); StringTokenizer st = new StringTokenizer(command, " "); String actualCommand = st.nextToken(); // Get actual command if (actualCommand.startsWith("nextInfo")) { if (player.getInventory().getInventoryItemCount(10041, 0) >= 1) { } else if (player.getInventory().getInventoryItemCount(10042, 0) >= 1) { } else if (player.getInventory().getInventoryItemCount(10043, 0) >= 1) { } else if (player.getInventory().getInventoryItemCount(10044, 0) >= 1) { } else if (player.getInventory().getInventoryItemCount(10045, 0) >= 1) { } else if (player.getInventory().getInventoryItemCount(10046, 0) >= 1) { } else if (player.getInventory().getInventoryItemCount(10047, 0) >= 1) { } } else if (actualCommand.startsWith("upgrade")) { player.sendMessage("Upgrade"); //if (player.getInventory().getInventoryItemCount(10041, 0) >= 1) //{ player.destroyItemByItemId("Toti Tattoo Level 1", 10041, 1, player, false); player.getInventory().addItem("Toti Tattoo Level 2", 10042, 1, player, null); player.getInventory().updateDatabase(); player.sendMessage("3lvl"); //} if (player.getInventory().getInventoryItemCount(10042, 0) >= 1) { player.destroyItemByItemId("Toti Tattoo Level 2", 10042, 1, player, false); player.getInventory().addItem("Toti Tattoo Level 3", 10043, 1, player, null); player.getInventory().updateDatabase(); player.sendMessage("4lvl"); } else if (player.getInventory().getInventoryItemCount(10043, 0) >= 1) { player.destroyItemByItemId("Toti Tattoo Level 3", 10043, 1, player, false); player.getInventory().addItem("Toti Tattoo Level 4", 10044, 1, player, null); player.getInventory().updateDatabase(); player.sendMessage("4lvl"); } else if (player.getInventory().getInventoryItemCount(10044, 0) >= 1) { player.destroyItemByItemId("Toti Tattoo Level 4", 10044, 1, player, false); player.getInventory().addItem("Toti Tattoo Level 5", 10045, 1, player, null); player.getInventory().updateDatabase(); player.sendMessage("5lvl"); } else if (player.getInventory().getInventoryItemCount(10045, 0) >= 1) { player.destroyItemByItemId("Toti Tattoo Level 5", 10045, 1, player, false); player.getInventory().addItem("Toti Tattoo Level 6", 10046, 1, player, null); player.getInventory().updateDatabase(); player.sendMessage("6lvl"); } else if (player.getInventory().getInventoryItemCount(10046, 0) >= 1) { player.destroyItemByItemId("Toti Tattoo Level 6", 10046, 1, player, false); player.getInventory().addItem("Toti Tattoo Level 7", 10047, 1, player, null); player.getInventory().updateDatabase(); player.sendMessage("7lvl"); } else if (player.getInventory().getInventoryItemCount(10047, 0) >= 1); { player.sendMessage("Maximum"); } } super.onBypassFeedback(player, command);}@Overridepublic String getHtmlPath(int npcId, int val){ String pom = ""; if (val == 0) { pom = "" + npcId; } else { pom = npcId + "-" + val; } return "data/html-en/Default/" + pom + ".htm";}} Но ничего не работает, на кнопке стоит бипас upgrade Просьба привести пример: гайда, статьи, или своего кода. Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты
Naik 419 Опубликовано 26 сентября, 2012 Легче написать скрипт в ДП, чем писать новый тип НПСа. За основу можешь взять любого НПСа на яве. Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты
Anderson 36 Опубликовано 26 сентября, 2012 В 26.09.2012 в 07:42, Naik сказал: Легче написать скрипт в ДП, чем писать новый тип НПСа. За основу можешь взять любого НПСа на яве. Все закрыто, в базе тип НПС не указал Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты