Energy 263 Опубликовано 23 декабря, 2015 Как сделать чтобы елки дропали предметы? Видел такое на некоторых серверах, хотелось бы узнать как реализиуется Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты
Xeliken 142 Опубликовано 23 декабря, 2015 Как сделать чтобы елки дропали предметы? Видел такое на некоторых серверах, хотелось бы узнать как реализиуется В ядре наверное Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты
california 155 Опубликовано 23 декабря, 2015 (изменено) Как сделать чтобы елки дропали предметы? Видел такое на некоторых серверах, хотелось бы узнать как реализиуется И чтобы они при этом оставались нпс? Как вариант просто думаю изменить тип ёлки, на монстра. Это первое что в голову пришло Изменено 23 декабря, 2015 пользователем california Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты
Energy 263 Опубликовано 23 декабря, 2015 И чтобы они при этом оставались нпс? Как вариант просто думаю изменить тип ёлки, на монстра. Это первое что в голову пришло нет, в прямом смысле, например поставил елку, и чтобы каждые 5 секунд они дропали с определенным шансом шмотку Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты
california 155 Опубликовано 23 декабря, 2015 нет, в прямом смысле, например поставил елку, и чтобы каждые 5 секунд они дропали с определенным шансом шмотку Ну тогда нужен скрипт Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты
Gaikotsu 620 Опубликовано 24 декабря, 2015 чаще всего спавнятся эти елки отдельным хэндлером. что мешает в нем запускать таск, который и будет это делать. Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты
Energy 263 Опубликовано 24 декабря, 2015 чаще всего спавнятся эти елки отдельным хэндлером. что мешает в нем запускать таск, который и будет это делать. хотелось бы увидеть пример такого скрипта, у нас такого точно нет в сборке Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты
Gaikotsu 620 Опубликовано 26 декабря, 2015 ну я ж не знаю что у тебя за сборка к примеру в сборках на основе феникса/овера елки спавнятся примерно так package events.Christmas; import handler.items.SimpleItemHandler; import java.util.Calendar; import l2p.gameserver.model.Player; import l2p.gameserver.model.World; import l2p.gameserver.model.Zone.ZoneType; import l2p.gameserver.model.instances.NpcInstance; import l2p.gameserver.model.items.ItemInstance; import l2p.gameserver.network.serverpackets.components.SystemMsg; import l2p.gameserver.utils.NpcUtils; public class ChristmasTree extends SimpleItemHandler { private static int[] _itemIds = { 5560, // Christmas Tree 5561 }; // Special Christmas Tree private static int[] _npcIds = { 13006, // Christmas Tree 13007 }; // Special Christmas Tree private static final int _despawnTime = 10 * 60 * 1000; //10 min @Override protected boolean useItemImpl(Player player, ItemInstance item, boolean ctrl) { if (!player.checkNextActionUseTime("cristmasTree", 10000)) { player.sendMessage("Нельзя ставить елки так часто."); return false; } if (player.isInZone(ZoneType.offshore)) { player.sendMessage("Нельзя поставить елку в этом месте."); return false; } int month = Calendar.getInstance().get(Calendar.MONTH); if (month != Calendar.DECEMBER && month != Calendar.JANUARY && month != Calendar.FEBRUARY) { player.sendMessage("Сейчас не зима, призыв елок недоступен."); return false; } if (World.getAroundNpc(player, 100, 200).size() > 0) { player.sendPacket(SystemMsg.YOU_MAY_NOT_SUMMON_FROM_YOUR_CURRENT_LOCATION); return false; } int npcId = 0; int itemId = item.getItemId(); for (int i = 0; i < _itemIds.length; i++) if (_itemIds[i] == itemId) { npcId = _npcIds[i]; break; } if (npcId == 0) return false; if (!useItem(player, item, 1)) return false; NpcInstance npc = NpcUtils.spawnSingle(npcId, player.getLoc(), player.getReflection(), player.isInPeaceZone() ? _despawnTime / 3 : _despawnTime); // АИ вешающее бафф регена устанавливается только для большой елки if (itemId == 5561) { npc.setAI(new ChristmasTreeAI(npc)); npc.getAI().startAITask(); } return true; } @Override public int[] getItemIds() { return _itemIds; } } вот собственно где-то в конце useItemImpl дополнительно запускать еще и таск и впередтак же можно просто в AI елки, если ей задано оно отдельное, добавить нужный код в thinkActive, чтобы с нужным пеприодом делала вызов dropItem для нужного предмета. Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты