TEPAH0BA 45 Опубликовано 12 октября, 2017 (изменено) Непонятно как создать Баночку ХП,ЦП,МП или Свиток L2, то есть если с оружием и броней, крыльями шапками и тд все ясно, то вот с банками и свитками для меня загадка. То есть хотел банки создать по 1000 хп, цп и тд но не пойму где искать, если в оружии и броне залил файлы с ид и закинул свои статы в папку со статами , а вот с банками походу по другому, можете показать пример как создать. То есть sql заливаю с ид банкой , а вот чтоб добавляло как банка цп сразу +300 и тд не пойму где искать Сборка pw Изменено 12 октября, 2017 пользователем TEPAH0BA Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты
iEA 24 Опубликовано 12 октября, 2017 ето в исходах. тоисть, сам не сделаеш. 1 Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты
TEPAH0BA 45 Опубликовано 12 октября, 2017 Я, так понимаю у PW в шаре исходников нету, и других вариантов нету через скрипт или еще что Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты
MeRDox 60 Опубликовано 12 октября, 2017 (изменено) Я, так понимаю у PW в шаре исходников нету, и других вариантов нету через скрипт или еще что для свитка, может и под банку подойдет...поработав немного package items; import javolution.util.FastMap; import net.sf.l2j.gameserver.datatables.SkillTable; import net.sf.l2j.gameserver.cache.Static; import net.sf.l2j.gameserver.model.L2ItemInstance; import net.sf.l2j.gameserver.model.actor.instance.L2PcInstance; import net.sf.l2j.gameserver.model.actor.instance.L2PlayableInstance; import net.sf.l2j.gameserver.network.serverpackets.MagicSkillUser; import scripts.items.ItemHandler; import scripts.items.IItemHandler; public class DonateScrolls implements IItemHandler { private final static FastMap<Integer, Integer[]> SCROLLS = new FastMap<Integer, Integer[]>().shared("DonateScrolls.SCROLLS"); private static int[] ITEM_IDS = null; public DonateScrolls() { /**шаблон **SCROLLS.put(итем_ид, new Integer[] { ид_баффа, уровень_баффа, ид_скилла_анимации, продолжительность_анимации(мс.)), кушать_скролл(1 да, 0 нет)) }); **/ SCROLLS.put(10010, new Integer[] { 10010, 1, 1077, 1000, 1 }); SCROLLS.put(10011, new Integer[] { 10011, 1, 1077, 1000, 1 }); SCROLLS.put(10012, new Integer[] { 10012, 1, 1077, 1000, 1 }); SCROLLS.put(10013, new Integer[] { 10013, 1, 1077, 1000, 1 }); SCROLLS.put(10014, new Integer[] { 10014, 1, 1077, 1000, 1 }); SCROLLS.put(10015, new Integer[] { 10015, 1, 1077, 1000, 1 }); SCROLLS.put(10016, new Integer[] { 10016, 1, 1077, 1000, 0 }); SCROLLS.put(10017, new Integer[] { 10017, 1, 1077, 1000, 0 }); SCROLLS.put(10018, new Integer[] { 10018, 1, 1077, 1000, 0 }); SCROLLS.put(10019, new Integer[] { 10019, 1, 1077, 1000, 0 }); SCROLLS.put(10020, new Integer[] { 10020, 1, 1077, 1000, 0 }); SCROLLS.put(10021, new Integer[] { 10021, 1, 1077, 1000, 0 }); // Integer[] tmp_ids = (Integer[]) SCROLLS.keySet().toArray(new Integer[SCROLLS.size()]); ITEM_IDS = toIntArray(tmp_ids); tmp_ids = null; ItemHandler.getInstance().registerItemHandler(this); } public static void main (String... arguments ) { new DonateScrolls(); } public void useItem(L2PlayableInstance playable, L2ItemInstance item) { if (!playable.isPlayer()) return; L2PcInstance player = (L2PcInstance) playable; if (player.isAllSkillsDisabled()) { player.sendActionFailed(); return; } if (player.isInOlympiadMode()) { player.sendPacket(Static.THIS_ITEM_IS_NOT_AVAILABLE_FOR_THE_OLYMPIAD_EVENT); player.sendActionFailed(); return; } Integer[] data = SCROLLS.get(item.getItemId()); if(data != null) { player.stopSkillEffects(data[0]); SkillTable.getInstance().getInfo(data[0], data[1]).getEffects(player, player); player.broadcastPacket(new MagicSkillUser(player, player, data[2], 1, data[3], 0)); if (data[4] == 1) player.destroyItem("Consume", item.getObjectId(), 1, null, false); } } private int[] toIntArray(Integer[] arr) { int[] ret = new int[arr.length]; int i = 0; for (Integer e : arr) ret[i++] = e.intValue(); return ret; } public int[] getItemIds() { return ITEM_IDS; } } Изменено 12 октября, 2017 пользователем MeRDox 2 Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты
TEPAH0BA 45 Опубликовано 12 октября, 2017 для свитка, может и под банку подойдет...поработав немного package items; import javolution.util.FastMap; import net.sf.l2j.gameserver.datatables.SkillTable; import net.sf.l2j.gameserver.cache.Static; import net.sf.l2j.gameserver.model.L2ItemInstance; import net.sf.l2j.gameserver.model.actor.instance.L2PcInstance; import net.sf.l2j.gameserver.model.actor.instance.L2PlayableInstance; import net.sf.l2j.gameserver.network.serverpackets.MagicSkillUser; import scripts.items.ItemHandler; import scripts.items.IItemHandler; public class DonateScrolls implements IItemHandler { private final static FastMap<Integer, Integer[]> SCROLLS = new FastMap<Integer, Integer[]>().shared("DonateScrolls.SCROLLS"); private static int[] ITEM_IDS = null; public DonateScrolls() { /**шаблон **SCROLLS.put(итем_ид, new Integer[] { ид_баффа, уровень_баффа, ид_скилла_анимации, продолжительность_анимации(мс.)), кушать_скролл(1 да, 0 нет)) }); **/ SCROLLS.put(10010, new Integer[] { 10010, 1, 1077, 1000, 1 }); SCROLLS.put(10011, new Integer[] { 10011, 1, 1077, 1000, 1 }); SCROLLS.put(10012, new Integer[] { 10012, 1, 1077, 1000, 1 }); SCROLLS.put(10013, new Integer[] { 10013, 1, 1077, 1000, 1 }); SCROLLS.put(10014, new Integer[] { 10014, 1, 1077, 1000, 1 }); SCROLLS.put(10015, new Integer[] { 10015, 1, 1077, 1000, 1 }); SCROLLS.put(10016, new Integer[] { 10016, 1, 1077, 1000, 0 }); SCROLLS.put(10017, new Integer[] { 10017, 1, 1077, 1000, 0 }); SCROLLS.put(10018, new Integer[] { 10018, 1, 1077, 1000, 0 }); SCROLLS.put(10019, new Integer[] { 10019, 1, 1077, 1000, 0 }); SCROLLS.put(10020, new Integer[] { 10020, 1, 1077, 1000, 0 }); SCROLLS.put(10021, new Integer[] { 10021, 1, 1077, 1000, 0 }); // Integer[] tmp_ids = (Integer[]) SCROLLS.keySet().toArray(new Integer[SCROLLS.size()]); ITEM_IDS = toIntArray(tmp_ids); tmp_ids = null; ItemHandler.getInstance().registerItemHandler(this); } public static void main (String... arguments ) { new DonateScrolls(); } public void useItem(L2PlayableInstance playable, L2ItemInstance item) { if (!playable.isPlayer()) return; L2PcInstance player = (L2PcInstance) playable; if (player.isAllSkillsDisabled()) { player.sendActionFailed(); return; } if (player.isInOlympiadMode()) { player.sendPacket(Static.THIS_ITEM_IS_NOT_AVAILABLE_FOR_THE_OLYMPIAD_EVENT); player.sendActionFailed(); return; } Integer[] data = SCROLLS.get(item.getItemId()); if(data != null) { player.stopSkillEffects(data[0]); SkillTable.getInstance().getInfo(data[0], data[1]).getEffects(player, player); player.broadcastPacket(new MagicSkillUser(player, player, data[2], 1, data[3], 0)); if (data[4] == 1) player.destroyItem("Consume", item.getObjectId(), 1, null, false); } } private int[] toIntArray(Integer[] arr) { int[] ret = new int[arr.length]; int i = 0; for (Integer e : arr) ret[i++] = e.intValue(); return ret; } public int[] getItemIds() { return ITEM_IDS; } } Спасибо +, буду пробовать . Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты
TEPAH0BA 45 Опубликовано 13 октября, 2017 (изменено) @@MeRDox Извините , можете подсказать что тут надо поправить в 14 строчке пишет ошибку, при загрузке в PW : Изменено 13 октября, 2017 пользователем TEPAH0BA Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты
MeRDox 60 Опубликовано 13 октября, 2017 @@MeRDox Извините , можете подсказать что тут надо поправить в 14 строчке пишет ошибку, при загрузке в PW : Эту строку public void useItem(L2PlayableInstance playable, L2ItemInstance item) меняем на эту public void useItem(L2PlayableInstance playable, L2ItemInstance item, boolean ctrl) 1 Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты
TEPAH0BA 45 Опубликовано 13 октября, 2017 Эту строку public void useItem(L2PlayableInstance playable, L2ItemInstance item) меняем на эту public void useItem(L2PlayableInstance playable, L2ItemInstance item, boolean ctrl) Спасибо вам огромное за помощь, ОТ ДУШИ + , еще ++ Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты