joof 1 Опубликовано 29 марта, 2018 Добрый вечер. Помогите пожалуйста переписать скрипт с Python на Java. Зарание спасибо. # Made by disKret import sys from com.l2scoria import Config from com.l2scoria.util.random import Rnd from com.l2scoria.gameserver.model import Inventory from com.l2scoria.gameserver.model.actor.instance import L2ItemInstance from com.l2scoria.gameserver.model.quest import State from com.l2scoria.gameserver.model.quest import QuestState from com.l2scoria.gameserver.model.quest.jython import QuestJython as JQuest qn = "9990_CraftSystem" #NPC NPC_ID = 30086 #QUEST ITEM PACKAGE = 7263 ONE_TYPE_WEAPON = [1, 2, 3, 4] ONE_TYPE_DROP_ID = [4037, 57, 4356, 4357, 6673] ONE_TYPE_DROP_COUNT = 1 ONE_TYPE_DROP_CHANCE = 100 ONE_MOB_ID = [18342, 18341, 18343, 18330, 18331] TWO_TYPE_WEAPON = [1, 2, 3, 4] TWO_TYPE_DROP_ID = [1, 2, 3, 4, 5] TWO_TYPE_DROP_COUNT = 1 TWO_TYPE_DROP_CHANCE = 100 TWO_MOB_ID = [111, 111, 111, 111, 111] THREE_TYPE_WEAPON = [1, 2, 3, 4] THREE_TYPE_DROP_ID = [1, 2, 3, 4, 5] THREE_TYPE_DROP_COUNT = 1 THREE_TYPE_DROP_CHANCE = 100 THREE_MOB_ID = [111, 111, 111, 111, 111] FO_TYPE_WEAPON = [1, 2, 3, 4] FO_TYPE_DROP_ID = [1, 2, 3, 4, 5] FO_TYPE_DROP_COUNT = 1 FO_TYPE_DROP_CHANCE = 100 FO_MOB_ID = [111, 111, 111, 111, 111] FIVE_TYPE_WEAPON = [1, 2, 3, 4] FIVE_TYPE_DROP_ID = [1, 2, 3, 4, 5] FIVE_TYPE_DROP_COUNT = 1 FIVE_TYPE_DROP_CHANCE = 100 FIVE_MOB_ID = [111, 111, 111, 111, 111] print "E6aTb KoIIaTb 3arpy3uJIocb!" class Quest (JQuest) : def __init__(self,id,name,descr): JQuest.__init__(self,id,name,descr) self.questItemIds = [PACKAGE] def onTalk (self,npc,player): htmltext = "<html><body>You are either not on a quest that involves this NPC, or you don't meet this NPC's minimum quest requirements.</body></html>" st = player.getQuestState(qn) if not st : return st.setState(State('Started', QUEST)) return def onAttack (self, npc, player, damage, isPet): st = player.getQuestState(qn) if not st : return player = st.getPlayer() npcId = npc.getNpcId() if player.getInventory().getPaperdollItem(Inventory.PAPERDOLL_LRHAND) != None: type = player.getInventory().getPaperdollItem(Inventory.PAPERDOLL_LRHAND) elif player.getInventory().getPaperdollItem(Inventory.PAPERDOLL_RHAND) != None: type = player.getInventory().getPaperdollItem(Inventory.PAPERDOLL_RHAND) else : return itemId = type.getItemId() if itemId in ONE_TYPE_WEAPON and npcId in ONE_MOB_ID: if itemId == ONE_TYPE_WEAPON[0] : if ONE_TYPE_DROP_CHANCE > Rnd.get(1, 100): st.giveItems(ONE_TYPE_DROP_ID[0], ONE_TYPE_DROP_COUNT) if ONE_TYPE_DROP_CHANCE > Rnd.get(1, 100): st.giveItems(ONE_TYPE_DROP_ID[1], ONE_TYPE_DROP_COUNT) ........................................ else : return return QUEST = Quest(9990, qn, "Craft System") for i in ONE_MOB_ID : QUEST.addAttackId(i) for i in TWO_MOB_ID : QUEST.addAttackId(i) for i in THREE_MOB_ID : QUEST.addAttackId(i) for i in FO_MOB_ID : QUEST.addAttackId(i) for i in FIVE_MOB_ID : QUEST.addAttackId(i) QUEST.addStartNpc(NPC_ID) QUEST.addTalkId(NPC_ID) Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты
Роман_Тверской 0 Опубликовано 29 марта, 2018 сколько платиш Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты
joof 1 Опубликовано 29 марта, 2018 package net.sf.l2j.gameserver.scripting.quests; import net.sf.l2j.commons.random.Rnd; import net.sf.l2j.gameserver.model.itemcontainer.Inventory; import net.sf.l2j.gameserver.model.item.instance.ItemInstance; import net.sf.l2j.gameserver.model.actor.instance.L2PcInstance; import net.sf.l2j.gameserver.scripting.Quest; import net.sf.l2j.gameserver.scripting.QuestState; public class 9990_CraftSystem extends Quest { private static final String qn = "9990_CraftSystem"; // Item private static final int PACKAGE = 7263; private static final int ONE_TYPE_DROP_COUNT = 1; private static final int[] ONE_TYPE_WEAPON = { 21314, 21316, 21317, 21319, 21321, 21322 }; private static final int[] ONE_TYPE_DROP_ID = { 4037, 57, 4356, 4357, 6673 }; // NPC private static final int NPC_ID = 30086; // Chance private static final int ONE_TYPE_DROP_CHANCE = 100; // Monster private static final int[] ONE_MOB_ID = { 18342, 18341, 18330, 18343, 18331 }; public 9990_CraftSystem() { super(9990, "CraftSystem"); setItemsIds(PACKAGE); addStartNpc(NPC_ID); addKillId(ONE_MOB_ID); } @Override public String onTalk(L2Npc npc, L2PcInstance player) { String htmltext = getNoQuestMsg(); QuestState st = player.getQuestState(qn); if (st == null) return htmltext = "0-01.htm"; } public String onAttack(L2Npc npc, L2PcInstance player, int damage, boolean isPet) { QuestState st = player.getQuestState(qn); if (st == null) return; L2PcInstance player = st.getPlayer(); int npcId = npc.getNpcId(); ItemInstance type = player.getInventory().getPaperdollItem(Inventory.PAPERDOLL_RHAND); if (type == null) { return; } int itemId = type.getItemId(); Часть переделал, но не знаю правильно ли и как дальше переписать... Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты
joof 1 Опубликовано 29 марта, 2018 59 минут назад, Роман_Тверской сказал: сколько платиш Не знаю сколько такое стоит... 100 руб. готов заплатить. Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты
joof 1 Опубликовано 30 марта, 2018 Как правильно написать кусок кода: if (ONE_TYPE_WEAPON[itemId] && ONE_MOB_ID[npcId]) Ошибка bad operand types for binary operator '&&' В питоне использовался оператор "and" Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты
Edgar 356 Опубликовано 30 марта, 2018 1000 руб, ели устраивает контакты в профиле Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты
casdepri 8 Опубликовано 30 марта, 2018 Проще по этому написать новый квест. Хроники ит? В Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты
joof 1 Опубликовано 30 марта, 2018 4 минуты назад, casdepri сказал: Проще по этому написать новый квест. Хроники ит? В да Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты
gvb 666 Опубликовано 30 марта, 2018 1 час назад, Solution сказал: 1000 руб, ели устраивает контакты в профиле 1000 рублей? Дядь, ну это перебор, его переписать 2 минуты это максимум. Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты
Edgar 356 Опубликовано 30 марта, 2018 1 минуту назад, gvb сказал: 1000 рублей? Дядь, ну это перебор, его переписать 2 минуты это максимум. Смотри обширнее, человек выдернул скрипт где то с шары, я больеш чем уверен нужен будет какой то свой функционал, я написал цену не за то что переписать, а за то что сделать человеку по его тз с нуля Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты
zGosu 396 Опубликовано 30 марта, 2018 1 час назад, joof сказал: Как правильно написать кусок кода: if (ONE_TYPE_WEAPON[itemId] && ONE_MOB_ID[npcId]) Ошибка bad operand types for binary operator '&&' В питоне использовался оператор "and" так ты не приравниваешь эти элементы у тебя написано типо такого: if (x && y), а надо if(x == 5 && y == 18) 1 Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты
joof 1 Опубликовано 30 марта, 2018 Скрипт взял отсюда: https://forummaxi.ru/topic/6513-система-крафта/ Написан он на Python, нужно переделать под java Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты