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

Пвсофт Дроп По Пати Как?

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

как зделать дроп итема по пати?

 

это в бд ставить?если да то где и что?

 

или вот сам квест

package quests.Wings;

 

import net.sf.l2j.gameserver.model.L2Party;

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 Wings extends QuestJython

{

//NPC

private final static int npcId = 77777;

private final static int[] MOBS = {22125, 22124, 22126, 22128,22123};

private final static int RaidBoss = 50013;

//QuestItem

private final static int BLACK_FEATHER = 10857;

private final static int ITEM_FROM_RB = 10859;

//Chance from mobs

private final static int chance1 = 80;

//Item

private final static int FEATHER = 18016;

private int count;

//Разрешено ли повторять квест?

private static boolean REPEATABLE = true;

 

private int cond = 0;

 

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

 

public Wings(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 : MOBS)

addKillId(mobs);

addKillId(RaidBoss);

}

 

public String onEvent(String event, QuestState st)

{

L2PcInstance player = st.getPlayer();

if (event.equalsIgnoreCase("start"))

{

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

event = "77777-2.htm";

st.setState(STARTED);

}

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

{

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

if (count < 300)

event = "77777-no.htm";

else

{

st.takeItems(BLACK_FEATHER,300);

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

event = "77777-4.htm";

}

}

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

{

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

if (count < 1)

event = "77777-no1.htm";

else

{

st.takeItems(ITEM_FROM_RB,1);

st.giveItems(FEATHER,1);

st.exitQuest(REPEATABLE);

event = "kvest zavershen";

}

}

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

{

event = "kvest otmenen";

st.exitQuest(true);

}

return event;

}

 

public String onTalk(L2NpcInstance npc, L2PcInstance talker)

{

QuestState st = talker.getQuestState(getName());

String htmltext = "You are either not on a quest that involves this NPC, or you don't meet this NPC's minimum quest requirements.";

if(st == null) return htmltext;

int npcId = npc.getNpcId();

cond = st.getInt("cond");

if(npcId == npcId)

{

if (cond == 0)

htmltext = "77777-1.htm";

else if (cond == 1)

htmltext = "77777-3.htm";

else if (cond == 2)

htmltext = "77777-5.htm";

}

return htmltext;

}

 

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

{

QuestState st = killer.getQuestState(getName());

if(st == null) return null;

int npcId = npc.getNpcId();

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

switch(cond)

{

case 1:

for(int id : MOBS)

if(npcId == id && Rnd.get(100) < chance1 && st.getPlayer().getInventory().getInventoryItemCount(BLACK_FEATHER,0) < 300)

st.giveItems(BLACK_FEATHER,1);

break;

case 2:

if(npcId == RaidBoss)

{

L2Party party = killer.getParty();

if(party != null)

{

for(L2PcInstance member : party.getPartyMembers())

if(member.getInventory().getInventoryItemCount(ITEM_FROM_RB,0) < 1)

{

st = member.getQuestState(getName());

if(st != null && st.getInt("cond") == 2)

st.giveItems(ITEM_FROM_RB,1);

}

}

else if(killer.getInventory().getInventoryItemCount(ITEM_FROM_RB,0) < 1)

st.giveItems(ITEM_FROM_RB,1);

}

break;

}

return null;

}

 

public static void main(String[] args)

{

new Wings(-1, "Wings", "quests");

}

}

 

 

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

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


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

не падает им почему то,падает ток одному

вот и спрашиваю через бд можно это организовать?

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

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


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

Вот код с вашего скрипта:

for(L2PcInstance member : party.getPartyMembers())
if(member.getInventory().getInventoryItemCount(ITEM_FROM_RB,0) < 1)
{
st = member.getQuestState(getName());
if(st != null && st.getInt("cond") == 2)
st.giveItems(ITEM_FROM_RB,1);
}
}

Т.е. при убийстве РБ, награда даётся всей пати (Если такая имеется).

Тут всё в порядке.

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


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

не падает им почему то

Можно попробовать поставить метод addItem к партийным игрокам, т.е. members.addItem(Тут предметы);

 

За отдельную плату смогу помочь. :)

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

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


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

Можно попробовать поставить метод addItem к партийным игрокам, т.е. members.addItem(Тут предметы);

 

За отдельную плату смогу помочь. :)

Не рекомендую данного ТС, так же мне скачал за отдельную плату оплатил, в итоге он не чего не сделал и деньги так и не вернул, так что имейте ввиду, клуб форума, ему наверно не чем не обязывает, кстати может все таки отпишишь мне в скайпе и вернешь деньги, или ты считаешь что ты не должен это сделать

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

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


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

Тс ты же говорил что ты тру адм и все знаешь как настроить?

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


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

Не рекомендую данного ТС, так же мне скачал за отдельную плату оплатил, в итоге он не чего не сделал и деньги так и не вернул, так что имейте ввиду, клуб форума, ему наверно не чем не обязывает

Я вам написал, чтобы вы мне дали код протекции и я вам вернул деньги обратно. От вас я получил игнор. Ждите 120 дней, когда ваши 50 рублей придут обратно. :)

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


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

Я вам написал, чтобы вы мне дали код протекции и я вам вернул деньги обратно. От вас я получил игнор. Ждите 120 дней, когда ваши 50 рублей придут обратно. :)

когда вы мне писали? может сообщение не пришло напишите еще раз, поскольку у меня не как у вас, тоесть не очень много времени пропадать за ПК, поскольку есть еще основная работа

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

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


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

когда вы мне писали? может сообщение не пришло напишите еще раз, поскольку у меня не как у вас, тоесть не очень много времени пропадать за ПК, поскольку есть еще основная работа

Отпишите мне в скайп, решим проблему. Не хочу разбираться публично.

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


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

Отпишите мне в скайп, решим проблему. Не хочу разбираться публично.

окей

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


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

Тс ты же говорил что ты тру адм и все знаешь как настроить?

мой вам ответ --->

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


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

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

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

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

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

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

Войти

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

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

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

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

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