Сообщений: 5,670
Тем: 145
Зарегистрирован: Nov 2008
Репутация:
33,771
Прошу помощи игроков с руоффа или тех, кто уже реализовал эти квесты.
В 3-й части сказано, что Зиния должна дать какоето противоядие, без которого дальше по квесту не пустит гном в подземелье и которое вылечит Кегора.
Так вот, подскажите или название этого противоядия или ещё лучше его ID.
Обычный антидот не хочется ставить
Web программист\разработчик
— Есть только один способ проделать большую работу — полюбить ее. Если вы к этому не пришли, подождите. Не беритесь за дело.
Сообщений: 3,494
Тем: 52
Зарегистрирован: Jun 2010
Репутация:
12,167
Русс - Антифриз
Англ - Cold Resistance Potion.
item_id - 15514
Сообщений: 5,670
Тем: 145
Зарегистрирован: Nov 2008
Репутация:
33,771
Deazer, спасибо
Пользуясь случаем, спрошу ещё койчё по этому квесту.
Как после того, как отдаю этот антифриз Кегору, его оживить?
Код: if(npc.getNpcId() == kegor && st.getCond() == 3)
{
st.takeItems(ColdResistancePotion, 1);
}
Web программист\разработчик
— Есть только один способ проделать большую работу — полюбить ее. Если вы к этому не пришли, подождите. Не беритесь за дело.
Сообщений: 3,494
Тем: 52
Зарегистрирован: Jun 2010
Репутация:
12,167
Код: case 3:
if(event.equals("enter"))
if(enterInstance(player, MITHRIL_MINE_INSTANCEID))
{
st.setCond(4);
st.giveItems(ColdResistancePotion, 1);
st.playSound(SOUND_MIDDLE);
}
break;
Он "оживает" после того как ты закиляешь мобов которые будут на него ломится.
А вообще как ты только попал в зону его видимости он ломится к тебе и баффает тебя.
Принял у него часть квеста , появляются мобы и ты их лупасишь , при этом он гнусно орет и баффает тебя.
После того как ты его закилял мобов , принял все (стейты)части квеста у него , тебя выкидывает из инстанца прямо к Рафорти.
Сообщений: 5,670
Тем: 145
Зарегистрирован: Nov 2008
Репутация:
33,771
Опача, так ему и ещё AI писать надо походу?
З.Ы. Диз, в аське ответь, а)
Web программист\разработчик
— Есть только один способ проделать большую работу — полюбить ее. Если вы к этому не пришли, подождите. Не беритесь за дело.
Сообщений: 3,494
Тем: 52
Зарегистрирован: Jun 2010
Репутация:
12,167
[STIGMATED];117861 Написал:Опача, так ему и ещё AI писать надо походу?
З.Ы. Диз, в аське ответь, а)
Ога , без AI там голяк.
Сообщений: 135
Тем: 13
Зарегистрирован: Aug 2010
Репутация:
324
Собсна вот моя версия Мб убогий квест но всё же...
Спойлер
Код: package quests._10284_AcquisitionOfDivineSword;
import java.util.HashMap;
import javolution.util.FastMap;
import l2open.extensions.scripts.ScriptFile;
import l2open.extensions.scripts.Functions;
import l2open.gameserver.cache.Msg;
import l2open.gameserver.instancemanager.InstancedZoneManager;
import l2open.gameserver.instancemanager.InstancedZoneManager.InstancedZone;
import l2open.gameserver.instancemanager.ServerVariables;
import l2open.gameserver.model.L2Player;
import l2open.gameserver.model.L2ObjectsStorage;
import l2open.gameserver.model.instances.L2NpcInstance;
import l2open.gameserver.model.quest.Quest;
import l2open.gameserver.model.quest.QuestState;
import l2open.gameserver.model.Reflection;
import l2open.util.GArray;
import l2open.util.Location;
public class _10284_AcquisitionOfDivineSword extends Quest implements ScriptFile
{
private static final int rafforty = 32020;
private static final int jinia = 32760;
private static final int kroon = 32653;
private static final int taroon = 32654;
private static final int Kegor = 18846;
private boolean AllDead = false;
private static HashMap<Long, World> worlds = new HashMap<Long, World>();
public class World
{
public long instanceId;
public int status;
public GArray<Room> rooms;
}
public class Room
{
public Room()
{
npclist = new HashMap<L2NpcInstance, Boolean>();
}
public HashMap<L2NpcInstance, Boolean> npclist;
}
public _10284_AcquisitionOfDivineSword()
{
super(false);
addStartNpc(rafforty);
addTalkId(jinia);
addTalkId(kroon);
addTalkId(taroon);
addTalkId(Kegor);
addKillId(22766);
}
@Override
public String onEvent(String event, QuestState st, L2NpcInstance npc)
{
String htmltext = event;
L2Player player = st.getPlayer();
World world = worlds.get(npc.getReflection().getId());
if(event.equalsIgnoreCase("32020-04.htm"))
{
st.set("cond", "1");
st.setState(STARTED);
st.playSound(SOUND_ACCEPT);
}
else if(event.equalsIgnoreCase("enter"))
{
enterInstance(player, 140, false);
st.set("cond", "2");
st.set("q10284t1", "0");
st.set("q10284t2", "0");
st.set("q10284t3", "0");
st.playSound(SOUND_MIDDLE);
return null;
}
else if(event.equalsIgnoreCase("jinia_npc_q10284_02c.htm"))
{
st.set("q10284t1", "1");
}
else if(event.equalsIgnoreCase("jinia_npc_q10284_03c.htm"))
{
st.set("q10284t2", "1");
}
else if(event.equalsIgnoreCase("jinia_npc_q10284_04c.htm"))
{
st.set("q10284t3", "1");
}
else if(event.equalsIgnoreCase("jinia_npc_q10284_07.htm"))
{
st.set("cond", "3");
st.playSound(SOUND_MIDDLE);
}
else if(event.equalsIgnoreCase("toaden"))
{
returnToAden(player);
st.unset("q10284t1");
st.unset("q10284t2");
st.unset("q10284t3");
return null;
}
else if(event.equalsIgnoreCase("kroon_q10284_02.htm"))
{
st.set("cond", "4");
st.playSound(SOUND_MIDDLE);
if(st.getQuestItemsCount(15514) < 1)
st.giveItems(15514, 1);
}
else if(event.equalsIgnoreCase("taroon_q10284_02.htm"))
{
st.set("cond", "4");
st.playSound(SOUND_MIDDLE);
if(st.getQuestItemsCount(15514) < 1)
st.giveItems(15514, 1);
}
else if(event.equalsIgnoreCase("kegor"))
{
enterInstance(player, 138, true);
return null;
}
else if(event.equalsIgnoreCase("Agree"))
{
st.giveItems(57, 296425);
st.addExpAndSp(921805, 82230);
st.setState(COMPLETED);
st.exitCurrentQuest(false);
st.playSound(SOUND_FINISH);
returnToAden(player);
return null;
}
return htmltext;
}
@Override
public String onTalk(L2NpcInstance npc, QuestState st)
{
int npcId = npc.getNpcId();
int id = st.getState();
int cond = st.getCond();
L2Player player = st.getPlayer();
World world = worlds.get(npc.getReflection().getId());
if(npcId == rafforty)
{
if(id == CREATED)
{
QuestState qs = player.getQuestState("_10283_RequestOfIceMerchant");
if(qs == null || !qs.isCompleted() && st.getPlayer().getLevel() < 82)
{
st.exitCurrentQuest(true);
return "32020-03.htm";
}
return "32020-01.htm";
}
if(id == STARTED)
{
if (cond == 1)
return "32020-05.htm";
else if (cond == 2)
return "32020-09.htm";
}
if(id == COMPLETED)
return "32020-02.htm";
}
if(npcId == jinia)
{
if(cond == 2)
{
if(st.getInt("q10284t1") == 0 && st.getInt("q10284t2") == 0 && st.getInt("q10284t3") == 0)
return "jinia_npc_q10284_01.htm";
else if(st.getInt("q10284t1") == 1 && st.getInt("q10284t2") == 0 && st.getInt("q10284t3") == 0)
return "jinia_npc_q10284_01a.htm";
else if(st.getInt("q10284t1") == 0 && st.getInt("q10284t2") == 1 && st.getInt("q10284t3") == 0)
return "jinia_npc_q10284_01b.htm";
else if(st.getInt("q10284t1") == 0 && st.getInt("q10284t2") == 0 && st.getInt("q10284t3") == 1)
return "jinia_npc_q10284_01c.htm";
else if(st.getInt("q10284t1") == 0 && st.getInt("q10284t2") == 1 && st.getInt("q10284t3") == 1)
return "jinia_npc_q10284_01d.htm";
else if(st.getInt("q10284t1") == 1 && st.getInt("q10284t2") == 0 && st.getInt("q10284t3") == 1)
return "jinia_npc_q10284_01e.htm";
else if(st.getInt("q10284t1") == 1 && st.getInt("q10284t2") == 1 && st.getInt("q10284t3") == 0)
return "jinia_npc_q10284_01f.htm";
else if(st.getInt("q10284t1") == 1 && st.getInt("q10284t2") == 1 && st.getInt("q10284t3") == 1)
return "jinia_npc_q10284_01g.htm";
}
}
if(npcId == kroon)
{
if(cond == 3)
return "kroon_q10284_01.htm";
if(cond == 4)
return "kroon_q10284_03.htm";
}
if(npcId == taroon)
{
if(cond == 3)
return "taroon_q10284_01.htm";
if(cond == 4)
return "taroon_q10284_03.htm";
}
if(npcId == Kegor)
{
if(cond == 4)
if(!AllDead)
{
st.set("cond", "5");
world.status = 0;
runKegor(world);
st.takeItems(15514, -1);
/*st.startQuestTimer("Timer_grima", 3000);
st.startQuestTimer("Timer_Buff", 3500);*/
return "kegor_savedun_q10284_01.htm";
}
if(cond == 5)
return "kegor_savedun_q10284_02.htm";
if(cond == 6)
return "kegor_savedun_q10284_03.htm";
}
return "noquest";
}
private void enterInstance(L2Player player, int instancedZoneId, boolean worldStatus)
{
InstancedZoneManager ilm = InstancedZoneManager.getInstance();
FastMap<Integer, InstancedZone> ils = ilm.getById(instancedZoneId);
if(ils == null)
{
player.sendPacket(Msg.SYSTEM_ERROR);
return;
}
InstancedZone il = ils.get(0);
assert il != null;
Reflection r = new Reflection(il.getName());
r.setInstancedZoneId(instancedZoneId);
for(InstancedZone i : ils.values())
{
if(r.getReturnLoc() == null)
r.setReturnLoc(i.getReturnCoords());
if(r.getTeleportLoc() == null)
r.setTeleportLoc(i.getTeleportCoords());
r.FillSpawns(i.getSpawnsInfo());
}
if(worldStatus)
{
World world = new World();
world.rooms = new GArray<Room>();
world.instanceId = r.getId();
worlds.put(r.getId(), world);
}
int timelimit = il.getTimelimit();
player.setReflection(r);
player.teleToLocation(il.getTeleportCoords());
player.setVar("backCoords", r.getReturnLoc().toXYZString());
r.setNotCollapseWithoutPlayers(true);
r.startCollapseTimer(timelimit * 60 * 1000L);
}
private void returnToAden(L2Player player)
{
Reflection r = player.getReflection();
if(r.getReturnLoc() != null)
player.teleToLocation(r.getReturnLoc(), 0);
else
player.setReflection(0);
player.unsetVar("backCoords");
}
private void runKegor(World world)
{
Room room = new Room();
switch(world.status)
{
case 0:
room.npclist.put(addSpawnToInstance(22766, new Location(185216, -184112, -3308, -15396), 0, world.instanceId), false);
room.npclist.put(addSpawnToInstance(22766, new Location(185456, -184240, -3308, -19668), 0, world.instanceId), false);
room.npclist.put(addSpawnToInstance(22766, new Location(185712, -184384, -3308, -26696), 0, world.instanceId), false);
room.npclist.put(addSpawnToInstance(22766, new Location(185920, -184544, -3308, -32544), 0, world.instanceId), false);
room.npclist.put(addSpawnToInstance(22766, new Location(185664, -184720, -3308, 27892), 0, world.instanceId), false);
world.rooms.add(room);
break;
case 1:
AllDead = true;
break;
}
}
@Override
public String onKill(L2NpcInstance npc, QuestState st)
{
World world = worlds.get(npc.getReflection().getId());
if(world == null)
return null;
if(checkKillProgress(npc, world.rooms.get(world.status)))
{
world.status++;
runKegor(world);
}
if(AllDead)
{
st.set("cond", 6);
L2NpcInstance kegor = L2ObjectsStorage.getByNpcId(Kegor);
if(kegor != null)
Functions.npcSay(kegor, "I can finally take a breather. You, hmm... I think I know who sent you...");
}
return null;
}
private boolean checkKillProgress(L2NpcInstance npc, Room room)
{
if(room.npclist.containsKey(npc))
room.npclist.put(npc, true);
for(boolean value : room.npclist.values())
if(!value)
return false;
return true;
}
public void onLoad()
{}
public void onReload()
{}
public void onShutdown()
{}
}
Сообщений: 3,494
Тем: 52
Зарегистрирован: Jun 2010
Репутация:
12,167
l2j стайл . Все как у опена - работает , а как строго пох.
В этот же квест входит Jinia Hideout инстанц , которого нет , квест покоцаный до не могу.
Сообщений: 5,670
Тем: 145
Зарегистрирован: Nov 2008
Репутация:
33,771
А кто подскажет координаты этого кегора?
И баф заодно, какие статы даёт?
Web программист\разработчик
— Есть только один способ проделать большую работу — полюбить ее. Если вы к этому не пришли, подождите. Не беритесь за дело.
Сообщений: 1,065
Тем: 20
Зарегистрирован: Mar 2010
Репутация:
3,855
дак есть же в шаре ща офф-скрипты от фреи, что мешает там все смотреть? оО
|