Jump to content
Sign in to follow this  
BenZ1n

Квест на Java

Recommended Posts

Добрый вечер всем!

Ребят,помогите пожалуйста,есть пару вопросов .

Решил заняться изучением Java и параллельно практиковать ее на любимой Lineage Interlude) :D

 

У меня пока плохо получается,но думаю все познается с опытом.

И так ,первым делом я решил написать свой оччченньььь простенький квест,а потом по ходу экспериментировать,добавлять что-то или усовершенствовать.

Спойлер

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");
    }

}

Зашел не очень далеко :D:D:D:D

Но вот ОНО работает)))))

Убил моба - получил 500 колл.

 

И даже это я писал с тем что подсматривал на другие квесты ,как устроен код,что за чем идет и так далее.

Мне не понятно вот что:

1.Сама структура классов ( что откуда брать,как быстрее познакомится с библиотеками по Lineage 2 именно,что за чем идет,может есть какие-то примеры кодов у кого,с комментариями по ходу написания)

Сорян если вопрос сформулирован как-то не грамотно,я думаю что все равно понятно.

 

2.Вот на примере даже моего убогого квеста,не могу  понять, как сделать так,чтоб 500 колл после убийства давалось персонажу только после того как он возьмет квест у НПС определенного,допустим просто если моба убить ,то ничего не происходит,а если подойти взять квест,то  после этого с моба будут падать колы)

Ну и не обязательно что колы там падали ,а просто принципиально не понимаю как сделать так,что сначала ты берешь квест у НПС ,а потом начинаются выполняться инструкции определенные .

Вот собственно с этого и начинаются проблемы мои  которые я описал в первом вопросе.Я не понимаю что за чем должно идти,что отвечает за что,само построение алгоритма программы.

 

3.Ковырял много квестов скачанных из шары ,других авторов и там часто (почти везде) встречается st . Вот и под спойлером в моем коде есть это,я же говорил ,что я просто смотрел на другие квесты и склеил так сказать свой.Но  что такое st я так и не понял. Когда нужно его употреблять ,а когда нет.

 

Спасибо за понимание и надеюсь на адекватную обратную связь!!!!

 

P.S:Проблема в том,что у меня нет возможности много гуглить и искать в интернете что либо.Так как моя работа связанна с морем  и я постоянно нахожусь на пароходе,где нет ни связи ни интернета.  В сети бываю раз в месяц ,а то и реже.

Исходы PW

 

Edited by BenZ1n

Share this post


Link to post
Share on other sites

Немного предисловия.
Для начало посмотри какой нибудь видеокурс на юутубе с основами явы, тебе там раскажут про основные моменты: переменные, константы, классы, статические методы и классы, циклы и прочее.
После посмотри какой нибудь курс по ООП врятли что то поймешь но общее представление увидишь.
По началу не лезь в многопоточность.
Установи среду разработки, мне нравится 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

Share this post


Link to post
Share on other sites

Спасибо за отзыв и советы!

В данный момент я пользуюсь книгой "Герберт Шилдт - Полное руководство по Java 8 " ,там читал про основные возможности языка .

По поводу видеокурса ,спасибо я постараюсь найти и скачать полезный ,может там будет яснее мне) 

Среда разработки у меня стоит так же   intlij idea.

Буду иметь в виду все) Любые полезные советы мне сейчас на пользу.

 

Ты написал ;"По началу не лезь в многопоточность.",не совсем понял что ты имел в виду ? 

 

Share this post


Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
Sign in to follow this  

  • Recently Browsing   0 members

    No registered users viewing this page.

×
×
  • Create New...