Anderson 36 Опубликовано 25 сентября, 2012 Здравствуйте, просьба не говорить о том что я 0 в Джаве, или даун который не может юзнуть великий Гугл. Мне нужно чтоб по нажатию на кнопку в какого то НПС, срабатывал ивент в скрипте (Выдача шмота, например). Просьба объяснить принцип роботы инстансов. Я то сделал свой: 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 Легче написать скрипт в ДП, чем писать новый тип НПСа. За основу можешь взять любого НПСа на яве. Все закрыто, в базе тип НПС не указал Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты