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

Квест На Геройство.

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

Собственно квест на геройство. Помогите убрать проверку на то что персонаж уже проходил квест. Иначе сейчас он получается одноразовый. С меня +)

 

 

package quests.Hero;

 

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;

import net.sf.l2j.util.Rnd;

 

public class Hero extends QuestJython

{

//NPC

private final static int npcId = 80010;

private final static int[] Monster = {21335,21338,21337,21348,21349,21347,21336,21340,21341,18286,21339,21330,21325,31324,31326,31328,31329,31327,31334,31334,31346,31345,31331,31332};

//QuestItem

private final static int Stone = 750;

//Chance from mobs

private final static int chance1 = 50;

private int count;

 

private int cond = 0;

 

private State STARTED = new State("Started", this);

private State COMPLETED = new State("Completed", this);

 

public Hero(int questId, String name, String descr)

{

super(questId, name, descr, 1);

 

State st = new State("Start", this);

this.setInitialState(st);

 

addStartNpc(npcId);

addTalkId(npcId);

for (int mobs : Monster)

addKillId(mobs);

}

 

public String onEvent(String event, QuestState st)

{

L2PcInstance player = st.getPlayer();

if (event.equalsIgnoreCase("start"))

{

st.set("cond","1");

event = "80028-2.htm";

st.setState(STARTED);

}

else if (event.equalsIgnoreCase("sobral"))

{

count = player.getInventory().getInventoryItemCount(Stone,0);

if (count < 100)

event = "80028-no.htm";

else

{

st.takeItems(Stone,100);

st.setState(COMPLETED);

if (!player.isHero())

{

player.setHero(1);

}

event = "80028-5.htm";

event = "<html><body>\u0412\u044b \u043f\u043e\u043b\u0443\u0447\u0438\u043b\u0438 \u0425\u0438\u0440\u043e \u043d\u0430 1 \u0434\u0435\u043d\u044c.</body><html>";

}

}

else if (event.equalsIgnoreCase("otmena"))

{

event = "<html><body>Quest Cancel</body></html>";

st.exitQuest(true);

}

return event;

}

 

public String onTalk(L2NpcInstance npc, L2PcInstance talker)

{

QuestState st = talker.getQuestState("Hero");

String 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>";

if (st == null || st.getState() == COMPLETED)

return "<html><body>\u0412\u044b \u0443\u0436\u0435 \u0432\u044b\u043f\u043e\u043b\u043d\u044f\u043b\u0438 \u043a\u0432\u0435\u0441\u0442.</body></html>";

int npcId = npc.getNpcId();

cond = st.getInt("cond");

if(npcId == npcId)

{

if (cond == 0)

htmltext = "80028-1.htm";

else if (cond == 1)

htmltext = "80028-3.htm";

}

return htmltext;

}

 

public String onKill(L2NpcInstance npc, L2PcInstance killer, boolean isPet)

{

QuestState st = killer.getQuestState("Hero");

if(st == null) return null;

int npcId = npc.getNpcId();

int cond = st.getInt("cond");

switch(cond)

{

case 1:

for (int id : Monster)

if (npcId == id)

if (Rnd.get(100) < chance1)

if (st.getPlayer().getInventory().getInventoryItemCount(Stone,0) < 100)

st.giveItems(Stone,1);

break;

}

return null;

}

 

public static void main(String[] args)

{

new Hero(901, "Hero", "quests");

}

}

 

 

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

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


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

if (st == null || st.getState() == COMPLETED)

 

Её вычеркнуть или "COMPLETED" заменить на "Started" ?

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

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


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

Собственно квест на геройство. Помогите убрать проверку на то что персонаж уже проходил квест. Иначе сейчас он получается одноразовый. С меня +)

 

 

package quests.Hero;

 

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;

import net.sf.l2j.util.Rnd;

 

public class Hero extends QuestJython

{

//NPC

private final static int npcId = 80010;

private final static int[] Monster = {21335,21338,21337,21348,21349,21347,21336,21340,21341,18286,21339,21330,21325,31324,31326,31328,31329,31327,31334,31334,31346,31345,31331,31332};

//QuestItem

private final static int Stone = 750;

//Chance from mobs

private final static int chance1 = 50;

private int count;

 

private int cond = 0;

 

private State STARTED = new State("Started", this);

private State COMPLETED = new State("Completed", this);

 

public Hero(int questId, String name, String descr)

{

super(questId, name, descr, 1);

 

State st = new State("Start", this);

this.setInitialState(st);

 

addStartNpc(npcId);

addTalkId(npcId);

for (int mobs : Monster)

addKillId(mobs);

}

 

public String onEvent(String event, QuestState st)

{

L2PcInstance player = st.getPlayer();

if (event.equalsIgnoreCase("start"))

{

st.set("cond","1");

event = "80028-2.htm";

st.setState(STARTED);

}

else if (event.equalsIgnoreCase("sobral"))

{

count = player.getInventory().getInventoryItemCount(Stone,0);

if (count < 100)

event = "80028-no.htm";

else

{

st.takeItems(Stone,100);

st.setState(COMPLETED);

if (!player.isHero())

{

player.setHero(1);

}

event = "80028-5.htm";

event = "<html><body>\u0412\u044b \u043f\u043e\u043b\u0443\u0447\u0438\u043b\u0438 \u0425\u0438\u0440\u043e \u043d\u0430 1 \u0434\u0435\u043d\u044c.</body><html>";

}

}

else if (event.equalsIgnoreCase("otmena"))

{

event = "<html><body>Quest Cancel</body></html>";

st.exitQuest(true);

}

return event;

}

 

public String onTalk(L2NpcInstance npc, L2PcInstance talker)

{

QuestState st = talker.getQuestState("Hero");

String 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>";

if (st == null || st.getState() == COMPLETED)

return "<html><body>\u0412\u044b \u0443\u0436\u0435 \u0432\u044b\u043f\u043e\u043b\u043d\u044f\u043b\u0438 \u043a\u0432\u0435\u0441\u0442.</body></html>";

int npcId = npc.getNpcId();

cond = st.getInt("cond");

if(npcId == npcId)

{

if (cond == 0)

htmltext = "80028-1.htm";

else if (cond == 1)

htmltext = "80028-3.htm";

}

return htmltext;

}

 

public String onKill(L2NpcInstance npc, L2PcInstance killer, boolean isPet)

{

QuestState st = killer.getQuestState("Hero");

if(st == null) return null;

int npcId = npc.getNpcId();

int cond = st.getInt("cond");

switch(cond)

{

case 1:

for (int id : Monster)

if (npcId == id)

if (Rnd.get(100) < chance1)

if (st.getPlayer().getInventory().getInventoryItemCount(Stone,0) < 100)

st.giveItems(Stone,1);

break;

}

return null;

}

 

public static void main(String[] args)

{

new Hero(901, "Hero", "quests");

}

}

 

 

Поделитесь квестом)

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


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

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

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


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

Её вычеркнуть или "COMPLETED" заменить на "Started" ?

А что мешает сделать и то и то? Проверить будет ли работать?

А нет я же ленивая свинья сделайте за меня :crazy:

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


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

Интересное чудо, это типо бьешь перья и рб и герой? ...

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


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

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

А html'ки? ^_^

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


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

А html'ки? ^_^

В данном скрипте указаны название всех html которые используются.

Так сложно взять обычный квест "Крылья" - "тату" и прочее лабуду.

Перенести в данный, и подправить под квест "геройство" ?

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

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


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

В данном скрипте указаны название всех html которые используются.

Так сложно взять обычный квест "Крылья" - "тату" и прочее лабуду.

Перенести в данный, и подправить под квест "геройство" ?

не все знают яву даже на минимальном уровне

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


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

Это питон.

Я знаю, ну под пв оно компилируется в яву если я правильно понимаю)

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


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

Я знаю, ну под пв оно компилируется в яву если я правильно понимаю)

Ну точно не в php. :D

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


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

В данном скрипте указаны название всех html которые используются.

Так сложно взять обычный квест "Крылья" - "тату" и прочее лабуду.

Перенести в данный, и подправить под квест "геройство" ?

А так сложно взять и скинуть html'ки? <_<

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


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

А так сложно взять и скинуть html'ки? <_<

 

 

А в друг его жестока обманули и он купил данный кв за овер 100 бутылок партвейна "777"?

И он думаешь тебе скинет html`ки ?

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

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


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

А в друг его нае* и он купил данный кв за овер 100 бутылок партвейна "777"?

И он думаешь тебе скинет html`ки ?

Маловероятно,3-мя топорами уже никто не убивается.. ^_^

 

З.Ы. Сообщение измени,а то балл еще выпишут!

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


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

Та сделали бы уже Шару! Зачем посты набивать! :db:

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

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


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

Маловероятно,3-мя топорами уже никто не убивается.. ^_^

 

З.Ы. Сообщение измени,а то балл еще выпишут!

Изменил, спасибо.

 

Та сделали бы уже Шару! Зачем посты набивать! :db:

 

ТС задал вопрос, мы ему морально и физически помогаем.

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


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

Это питон.

Я знаю, ну под пв оно компилируется в яву если я правильно понимаю)

Её вычеркнуть или "COMPLETED" заменить на "Started" ?

 

 

Написано на Java

 

удалить

st.setState(COMPLETED);

 

и

if (st == null || st.getState() == COMPLETED)

return "<html><body>\u0412\u044b \u0443\u0436\u0435 \u0432\u044b\u043f\u043e\u043b\u043d\u044f\u043b\u0438 \u043a\u0432\u0435\u0441\u0442.</body></html>";

И всё)

  • Upvote 2

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


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

Написано на Java

 

удалить

st.setState(COMPLETED);

 

и

if (st == null || st.getState() == COMPLETED)

return "<html><body>\u0412\u044b \u0443\u0436\u0435 \u0432\u044b\u043f\u043e\u043b\u043d\u044f\u043b\u0438 \u043a\u0432\u0435\u0441\u0442.</body></html>";

И всё)

 

не пашет.

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


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

не пашет.

там где было st.setState(COMPLETED); поставте st.set("cond","1"); и подчистить записи квеста в базе

  • Upvote 1

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


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

там где было st.setState(COMPLETED); поставте st.set("cond","1"); и подчистить записи квеста в базе

 

Сработало, но после получения геройства, квест не завершается. Помимо этого изменения, удалял ещё строчки

 

if (st == null || st.getState() == COMPLETED)

return "<html><body>\u0412\u044b \u0443\u0436\u0435 \u0432\u044b\u043f\u043e\u043b\u043d\u044f\u043b\u0438 \u043a\u0432\u0435\u0441\u0442.</body></html>";

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


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

там где было st.setState(COMPLETED); поставте st.set("cond","1"); и подчистить записи квеста в базе

 

Короче достаточно было только эту манипуляцию проделать и всё) Спасибо, дал +)

  • Upvote 1

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


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

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

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

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

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

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

Войти

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

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

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

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

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