BenZ1n 0 Опубликовано 12 января, 2020 (изменено) Добрый вечер всем! Ребят,помогите пожалуйста,есть пару вопросов . Решил заняться изучением Java и параллельно практиковать ее на любимой Lineage Interlude) У меня пока плохо получается,но думаю все познается с опытом. И так ,первым делом я решил написать свой оччченньььь простенький квест,а потом по ходу экспериментировать,добавлять что-то или усовершенствовать. Спойлер package quests; import net.sf.l2j.gameserver.model.actor.instance.L2NpcInstance; import net.sf.l2j.gameserver.model.actor.instance.L2PcInstance; import net.sf.l2j.gameserver.model.quest.QuestState; import net.sf.l2j.gameserver.model.quest.State; import net.sf.l2j.gameserver.model.quest.jython.QuestJython; public class Quest1 extends QuestJython { private final static int idnpc = 13016; private final static int npcId = 99999; private int cond = 0; public Quest1(int questId, String name, String descr) { super(questId, name, descr, 1); State st = new State("Start", this); this.setInitialState(st); this.addKillId(idnpc); } @Override public String onKill(L2NpcInstance npc, L2PcInstance killer, boolean isPet) { L2PcInstance player = killer.getPlayer(); player.giveItem(4037,5000); return null; } public static void main(String... arguments ) { new Quest1(405060, "Quest1", "Quest1"); } } Зашел не очень далеко Но вот ОНО работает))))) Убил моба - получил 500 колл. И даже это я писал с тем что подсматривал на другие квесты ,как устроен код,что за чем идет и так далее. Мне не понятно вот что: 1.Сама структура классов ( что откуда брать,как быстрее познакомится с библиотеками по Lineage 2 именно,что за чем идет,может есть какие-то примеры кодов у кого,с комментариями по ходу написания) Сорян если вопрос сформулирован как-то не грамотно,я думаю что все равно понятно. 2.Вот на примере даже моего убогого квеста,не могу понять, как сделать так,чтоб 500 колл после убийства давалось персонажу только после того как он возьмет квест у НПС определенного,допустим просто если моба убить ,то ничего не происходит,а если подойти взять квест,то после этого с моба будут падать колы) Ну и не обязательно что колы там падали ,а просто принципиально не понимаю как сделать так,что сначала ты берешь квест у НПС ,а потом начинаются выполняться инструкции определенные . Вот собственно с этого и начинаются проблемы мои которые я описал в первом вопросе.Я не понимаю что за чем должно идти,что отвечает за что,само построение алгоритма программы. 3.Ковырял много квестов скачанных из шары ,других авторов и там часто (почти везде) встречается st . Вот и под спойлером в моем коде есть это,я же говорил ,что я просто смотрел на другие квесты и склеил так сказать свой.Но что такое st я так и не понял. Когда нужно его употреблять ,а когда нет. Спасибо за понимание и надеюсь на адекватную обратную связь!!!! P.S:Проблема в том,что у меня нет возможности много гуглить и искать в интернете что либо.Так как моя работа связанна с морем и я постоянно нахожусь на пароходе,где нет ни связи ни интернета. В сети бываю раз в месяц ,а то и реже. Исходы PW Изменено 12 января, 2020 пользователем BenZ1n Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты
Edgar 356 Опубликовано 12 января, 2020 Немного предисловия. Для начало посмотри какой нибудь видеокурс на юутубе с основами явы, тебе там раскажут про основные моменты: переменные, константы, классы, статические методы и классы, циклы и прочее. После посмотри какой нибудь курс по ООП врятли что то поймешь но общее представление увидишь. По началу не лезь в многопоточность. Установи среду разработки, мне нравится intlij idea. Перейдем к твоему квесту. public class Quest1 extends QuestJython { тут пример наследования, ты наследуешся(extends ) от QuestJython(эта помойка вообще унаследована от Quest и QuestJython не нужно использовать в ява скриптах он сделан для питона в нем переопределено место поиска хтмлок для квестов и еще какой то шлак(не помню), наследуйся от Quest(При наследовании все методы public и protected будут доступны в дочернем классе(тоесть в твоем). public Quest1(int questId, String name, String descr) { super(questId, name, descr, 1); State st = new State("Start", this); this.setInitialState(st); this.addKillId(idnpc); } тут ты переопределяешь конструктор родителя. State st = new State("Start", this); можно оформить так: this.setInitialState(new State("Start", this)); незачем плодить кучу строк кода. public String onKill(L2NpcInstance npc, L2PcInstance killer, boolean isPet) { L2PcInstance player = killer.getPlayer(); player.giveItem(4037,5000); return null; } это переопределенный метод родителя, @Override данным выражением ты это указываешь. L2PcInstance player = killer.getPlayer(); зачем это? если у тебя в параметрах метода уже создано? L2PcInstance killer Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты
BenZ1n 0 Опубликовано 13 января, 2020 Спасибо за отзыв и советы! В данный момент я пользуюсь книгой "Герберт Шилдт - Полное руководство по Java 8 " ,там читал про основные возможности языка . По поводу видеокурса ,спасибо я постараюсь найти и скачать полезный ,может там будет яснее мне) Среда разработки у меня стоит так же intlij idea. Буду иметь в виду все) Любые полезные советы мне сейчас на пользу. Ты написал ;"По началу не лезь в многопоточность.",не совсем понял что ты имел в виду ? Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты