Победил проблему с классами, компиляцией сборки другой версией java.
Теперь есть проблема с квестом на Фрею. Если кто шарит прошу помочь, ибо сам уже сутки голову ломаю.
2) Квест _10285_MeetingSirra - не работает момент когда Лакей Фреи должен портнуть к Зинии и Кегору на озеро.
Код:
package quests._10285_MeetingSirra;
import java.util.HashMap;
import javolution.util.FastMap;
import l2rt.common.ThreadPoolManager;
import l2rt.gameserver.cache.Msg;
import l2rt.extensions.scripts.ScriptFile;
import l2rt.gameserver.model.L2Player;
import l2rt.gameserver.model.Reflection;
import l2rt.gameserver.model.L2ObjectsStorage;
import l2rt.gameserver.model.instances.L2NpcInstance;
import l2rt.gameserver.model.L2Spawn;
import l2rt.gameserver.model.L2World;
import l2rt.gameserver.instancemanager.InstancedZoneManager;
import l2rt.gameserver.instancemanager.InstancedZoneManager.InstancedZone;
import l2rt.gameserver.serverpackets.SystemMessage;
import l2rt.gameserver.tables.ReflectionTable;
import l2rt.gameserver.model.quest.Quest;
import l2rt.extensions.scripts.Functions;
import l2rt.gameserver.model.quest.QuestState;
import l2rt.gameserver.tables.NpcTable;
import l2rt.gameserver.templates.L2NpcTemplate;
import l2rt.gameserver.serverpackets.ExStartScenePlayer;
import l2rt.gameserver.serverpackets.ExShowScreenMessage;
import l2rt.gameserver.serverpackets.ExShowScreenMessage.ScreenMessageAlign;
import l2rt.util.Location;
import quests._10284_AcquisitionOfDivineSword._10284_AcquisitionOfDivineSword;
/**
* @author People
*/
public class _10285_MeetingSirra extends Quest implements ScriptFile
{
private static FastMap<Integer, Long> _instances = new FastMap<Integer, Long>();
private static FastMap<Integer, Long> _instances2 = new FastMap<Integer, Long>();
private static final Location TELEPORT_POSITION = new Location(103000, -124360, -2784);
// NPC
private static final int Raforti = 32020;
private static final int Jinia = 32760;
private static final int Sirra = 32762;
private static final int Kegor = 32761;
private static final int Lakey = 32029;
// MOB
private static final int FreyaM = 18847;
public _10285_MeetingSirra()
{
super(true);
addStartNpc(Raforti);
addTalkId(Jinia);
addTalkId(Sirra);
addTalkId(Kegor);
addTalkId(Lakey);
}
@Override
public String onEvent(String event, final QuestState st, L2NpcInstance npc)
{
final L2Player player = st.getPlayer();
String htmltext = event;
if(event.equalsIgnoreCase("repre_q10285_05.htm"))
{
st.setCond(1);
st.setState(STARTED);
st.playSound(SOUND_ACCEPT);
}
if(event.equalsIgnoreCase("inst"))
{
enterInstance(player);
st.set("cond", "2");
st.playSound(SOUND_ACCEPT);
return null;
}
if(event.equalsIgnoreCase("jinia_npc_q10285_02.htm"))
{
st.set("cond", "3");
st.playSound(SOUND_ACCEPT);
}
if(event.equalsIgnoreCase("kegor_npc_q10285_02.htm"))
{
st.set("cond", "4");
st.playSound(SOUND_ACCEPT);
}
if(event.equalsIgnoreCase("jinia_npc_q10285_05.htm"))
{
long refId = player.getReflection().getId();
addSpawnToInstance(Sirra, new Location(-23848, -8744, -5413, 55000), 0, refId);
L2NpcInstance n1 = L2ObjectsStorage.getByNpcId(Sirra);
Functions.npcSay(n1, "Вас послушать, получается, что Вы знаете обо всем на свете. Но я больше не могу слушать Ваши мудрствования.");
st.set("cond", "5");
st.playSound(SOUND_ACCEPT);
}
if(event.equalsIgnoreCase("sirr_npc_q10285_08.htm"))
{
L2NpcInstance n = L2ObjectsStorage.getByNpcId(32762);
n.deleteMe();
st.set("cond", "6");
st.playSound(SOUND_ACCEPT);
}
if(event.equalsIgnoreCase("nazad"))
{
st.set("cond", "7");
returnToAden(player);
st.playSound(SOUND_ACCEPT);
return null;
}
if(event.equalsIgnoreCase("goTP"))
{
st.getPlayer().teleToLocation(TELEPORT_POSITION);
st.set("cond", "8");
st.playSound(SOUND_ACCEPT);
return null;
}
if(event.equalsIgnoreCase("gofreya1"))
{
enterInstance2(player);
long refId = player.getReflection().getId();
addSpawnToInstance(FreyaM, new Location(114700, -115012, -11230, 5000), 0, refId);
ReflectionTable.getInstance().get(refId).openDoor(23140101);
st.set("cond", "9");
st.playSound(SOUND_ACCEPT);
ThreadPoolManager.getInstance().scheduleGeneral(new Runnable(){
@Override
public void run()
{
player.showQuestMovie(ExStartScenePlayer.SCENE_SC_BOSS_FREYA_FORCED_DEFEAT);
st.set("cond", "10");
returnToAden(player);
}
}, 120000);
return null;
}
if(event.equalsIgnoreCase("exit"))
{
st.giveItems(57, 283425);
st.addExpAndSp(939075, 83855);
st.setState(COMPLETED);
st.playSound(SOUND_FINISH);
st.unset("cond");
st.exitCurrentQuest(false);
return null;
}
return htmltext;
}
@Override
public String onTalk(L2NpcInstance npc, QuestState st)
{
int npcId = npc.getNpcId();
int id = st.getState();
int cond = st.getCond();
if(npcId == Raforti)
{
if(id == CREATED)
{
QuestState qs = st.getPlayer().getQuestState(_10284_AcquisitionOfDivineSword.class);
if(qs != null && qs.isCompleted() && st.getPlayer().getLevel() >= 82)
return "repre_q10285_01.htm";
else
return "npc-lvl.htm";
}
if(id == STARTED)
{
if(cond == 1)
return "npc-01.htm";
if(cond == 2)
return "npc-zag.htm";
if(cond == 10)
return "npc-1.htm";
}
if(id == COMPLETED)
{
return "npc-fin.htm";
}
}
if (npcId == Jinia)
{
if (cond == 2)
return "jinia_npc_q10285_01.htm";
if (cond == 4)
return "jinia_npc_q10285_04.htm";
if (cond == 6)
return "jinia_npc_q10285_07.htm";
if (cond == 8)
return "npc-gofreya.htm";
}
if (npcId == Kegor)
{
if (cond == 3)
return "kegor_npc_q10285_01.htm";
}
if (npcId == Sirra)
{
if (cond == 5)
return "sirr_npc_q10285_01.htm";
}
[COLOR="Red"]if (npcId == Lakey)
{
if (cond == 7)
return "lakey.htm";
}[/COLOR]
return "noquest";
}
private void enterInstance(L2Player player)
{
int instancedZoneId = 703;
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;
if(player.isInParty())
{
player.sendPacket(Msg.A_PARTY_CANNOT_BE_FORMED_IN_THIS_AREA);
return;
}
if(player.isCursedWeaponEquipped())
{
player.sendPacket(new SystemMessage(SystemMessage.C1S_QUEST_REQUIREMENT_IS_NOT_SUFFICIENT_AND_CANNOT_BE_ENTERED).addName(player));
return;
}
Long old = _instances.get(player.getObjectId());
if(old != null)
{
Reflection old_r = ReflectionTable.getInstance().get(old);
if(old_r != null)
{
player.setReflection(old_r);
player.teleToLocation(il.getTeleportCoords());
player.setVar("backCoords", old_r.getReturnLoc().toXYZString());
return;
}
}
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());
}
int timelimit = il.getTimelimit();
player.setReflection(r);
player.teleToLocation(il.getTeleportCoords());
player.setVar("backCoords", r.getReturnLoc().toXYZString());
player.sendPacket(new SystemMessage(SystemMessage.THIS_DUNGEON_WILL_EXPIRE_IN_S1_MINUTES).addNumber(timelimit));
r.setNotCollapseWithoutPlayers(true);
r.startCollapseTimer(timelimit * 60 * 1000L);
_instances.put(player.getObjectId(), r.getId());
}
private void enterInstance2(L2Player player)
{
int instancedZoneId = 704;
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;
if(player.isInParty())
{
player.sendPacket(Msg.A_PARTY_CANNOT_BE_FORMED_IN_THIS_AREA);
return;
}
if(player.isCursedWeaponEquipped())
{
player.sendPacket(new SystemMessage(SystemMessage.C1S_QUEST_REQUIREMENT_IS_NOT_SUFFICIENT_AND_CANNOT_BE_ENTERED).addName(player));
return;
}
Long old = _instances.get(player.getObjectId());
if(old != null)
{
Reflection old_r = ReflectionTable.getInstance().get(old);
if(old_r != null)
{
player.setReflection(old_r);
player.teleToLocation(il.getTeleportCoords());
player.setVar("backCoords", old_r.getReturnLoc().toXYZString());
return;
}
}
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());
r.FillDoors(i.getDoors());
}
int timelimit = il.getTimelimit();
player.setReflection(r);
player.teleToLocation(il.getTeleportCoords());
player.setVar("backCoords", r.getReturnLoc().toXYZString());
player.sendPacket(new SystemMessage(SystemMessage.THIS_DUNGEON_WILL_EXPIRE_IN_S1_MINUTES).addNumber(timelimit));
r.setNotCollapseWithoutPlayers(true);
r.startCollapseTimer(timelimit * 60 * 1000L);
_instances.put(player.getObjectId(), r.getId());
}
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");
}
public void onLoad()
{
System.out.println("Loaded Quest: 10285: MeetingSirra");
}
public void onReload()
{}
public void onShutdown()
{}
}
красным отметил на каком моменте затык. В базе cound = 7 то есть с состоянием квеста всё в порядке.
Сам NPC Лакей Фреи настоятельно подсовывает диалог из квеста _1004_IceFairySirra.
И ещё При загрузке ГС выдаёт информацию о том что скрипт загружен
Loaded Quest: 1004: IceFairySirra, я не мог понять грузит ли сервер квест MeetingSirra и добавил в код строки
Код:
public void onLoad()
{
System.out.println("Loaded Quest: 10285: MeetingSirra");
}
public void onReload()
{}
public void onShutdown()
{}
но это не помогло
ГС то ли не грузит скрипт, то ли не выводит об этом информацию...