Перейти к содержанию
Авторизация  
BenZ1n

Квест на Java

Рекомендуемые сообщения

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

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

Решил заняться изучением 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

 

Изменено пользователем BenZ1n

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

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

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

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

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

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

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

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

 

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

 

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Для публикации сообщений создайте учётную запись или авторизуйтесь

Вы должны быть пользователем, чтобы оставить комментарий

Создать учетную запись

Зарегистрируйте новую учётную запись в нашем сообществе. Это очень просто!

Регистрация нового пользователя

Войти

Уже есть аккаунт? Войти в систему.

Войти
Авторизация  

  • Последние посетители   0 пользователей онлайн

    Ни одного зарегистрированного пользователя не просматривает данную страницу

×
×
  • Создать...