Connect 4 Опубликовано 4 марта, 2015 (изменено) Хочу запилить тп, который будет проверять есть ли определенные айтемы, если есть, то не телепортировать его. Так вот вроде бы сделал, добавил команду : private static final int[] ARMOR_ITEMS = { 4401, 4402 }; И сам код if (event.equalsIgnoreCase("doog")) { if (st.hasQuestItems(ARMOR_ITEMS)) { htmltext = "no-items.htm"; } else { player.teleToLocation(-47712, 243960, -13374, 0); } } То есть если у человека есть итемы из группы ARMOR_ITEMS, то его не телепортирует. Но вот в чем проблема. Не телепортирует тогда, когда у тебя в инвентаре все айтемы, которые указаны в private static final int , а если есть всего лишь 1 айтем из 2, то его телепортирует. Как сделать, что бы была проверка на все иды?) Изменено 4 марта, 2015 пользователем Connect Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты
1ntegrate 46 Опубликовано 4 марта, 2015 можно сделать цикл который будет проверять есть ли вещь. ... for(int i=0; i<ARMOR_ITEMS.lenght;i++) { if (st.hasQuestItems(ARMOR_ITEMS[i])) { htmltext = "no-items.htm"; } } ... 1 Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты
LifeGame32 312 Опубликовано 4 марта, 2015 Хочу запилить тп, который будет проверять есть ли определенные айтемы, если есть, то не телепортировать его. Так вот вроде бы сделал, добавил команду : private static final int[] ARMOR_ITEMS = { 4401, 4402 }; И сам код if (event.equalsIgnoreCase("doog")) { if (st.hasQuestItems(ARMOR_ITEMS)) { htmltext = "no-items.htm"; } else { player.teleToLocation(-47712, 243960, -13374, 0); } } То есть если у человека есть итемы из группы ARMOR_ITEMS, то его не телепортирует. Но вот в чем проблема. Не телепортирует тогда, когда у тебя в инвентаре все айтемы, которые указаны в private static final int , а если есть всего лишь 1 айтем из 2, то его телепортирует. Как сделать, что бы была проверка на все иды?) if (event.equalsIgnoreCase("doog")) { boolean item = false; for (int id : ARMOR_ITEMS) { if (player.getInventory().getItemByItemId(id) != null) { item = true; continue; } } if (item) { htmltext = "no-items.htm"; } else { player.teleToLocation(-47712, 243960, -13374, 0); } } Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты
Mizuwokiru 181 Опубликовано 4 марта, 2015 Есть множество вариантов, но если итемов мало, то лучше всего подойдет: if (event.equalsIgnoreCase("doog")){if (st.hasQuestItems(item1) || st.hasQuestItems(item2) || ...)htmltext = "no-items.htm";elseplayer.teleToLocation(-47712, 243960, -13374, 0); } Хотя, в идеале создать свой метод, если такового не имеется, но для этого скорее всего нужен исходник. Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты
Mizuwokiru 181 Опубликовано 4 марта, 2015 if (event.equalsIgnoreCase("doog")) { boolean item = false; for (int id : ARMOR_ITEMS) { if (player.getInventory().getItemByItemId(id) != null) { item = true; continue; } } if (item) { htmltext = "no-items.htm"; } else { player.teleToLocation(-47712, 243960, -13374, 0); } } А чего так запутывать то? if (event.equalsIgnoreCase("doog")){boolean isNoItem = false;for (int item : ARMOR_ITEMS)if (st.hasQuestItems(item)){htmltext = "no-items.htm";isNoItem = true;break}if (!isNoItem)player.teleToLocation(-47712, 243960, -13374, 0); } 1 Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты
LifeGame32 312 Опубликовано 4 марта, 2015 А чего так запутывать то? Да я попутал continue c break А вот ваше запутывание; public boolean hasQuestItems(int itemId) { return AbstractScript.hasQuestItems(_player, itemId); } public static boolean hasQuestItems(L2PcInstance player, int itemId) { return (player.getInventory().getItemByItemId(itemId) != null); } 1 Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты
Mizuwokiru 181 Опубликовано 5 марта, 2015 Да я попутал continue c break А вот ваше запутывание; public boolean hasQuestItems(int itemId) { return AbstractScript.hasQuestItems(_player, itemId); } public static boolean hasQuestItems(L2PcInstance player, int itemId) { return (player.getInventory().getItemByItemId(itemId) != null); } Не понял намека. 1 метод вызывает 2 метод. + вызов функции st.hasQuestItems(item) равносилен вызову функции player.getInventory().getItemByItemId(itemId) != null. Только вот я использовал то, что дано тсом и не знаю, есть ли там объект класса Player, или же просто объект реализации AbstractScript. В общем, вариантов море, как сделать то, что хочет тс. Тут даже знаниями основ можно обойтись. Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты
Connect 4 Опубликовано 5 марта, 2015 (изменено) Спасибо, все гуд сделал, с вашей помощью) С Меня +) Изменено 5 марта, 2015 пользователем Connect Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты
Detect 618 Опубликовано 5 марта, 2015 JAVA а не яваскрипт) Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты
Mizuwokiru 181 Опубликовано 5 марта, 2015 JAVA а не яваскрипт) Имелось в виду скрипт, написанный на яве. Да и название темы со стоит из двух слов ("java" и "script"), в то время как JavaScript пишется вместе. Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты
Detect 618 Опубликовано 6 марта, 2015 Имелось в виду скрипт, написанный на яве. Да и название темы со стоит из двух слов ("java" и "script"), в то время как JavaScript пишется вместе. Ну я по названию темы начал думать о JavaScript - е Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты