Сообщений: 2,124
Тем: 84
Зарегистрирован: Jul 2010
Репутация:
3,419
xobotyi, а чем вас Aion Core не угодили?
Судя по их заявлениям в 110 ревизии, наработки AL они уже переварили и сделали частью своего кода...
Кстати и не стоит их за это винить, хоть кто-то делает для всех...
Сообщений: 9
Тем: 0
Зарегистрирован: Jan 2011
Репутация:
0
Есть еще проблема с пространственными вратами в гробнице чинаки (Интрига в сердце древа). Портал не работает. Правка файла _2022CrushingtheConspiracy.java не помогает. Если у кого-то есть решение выложите, пожалуйста.
Сообщений: 202
Тем: 7
Зарегистрирован: Dec 2010
Репутация:
54
Действительно косяк с квестом, но накосячили именно в скрипте квеста, косяки были связанны с тем что скрипт обращался к нпс которые небыли заспавнены, а портал в гобнице был типа декорации.
Вот поправил скрипт, теперь портал в гобнице работает, после его использования вы попадёте в другую локацию, где сразу перед порталом должен стоять шаман-оборотень, необходимо поговорить с ним, после чего вам скажут убить нпс, который будет дальше по дорожке, далее завершаем квес прыгая в портал за мобом которого надо убить, далее завершаем квест:
скрипт квеста
Код: /**
* This file is part of aion-engine <aion-engine.com>
*
* aion-engine is free software: you can redistribute it and/or modify
* it under the terms of the GNU Lesser Public License as published by
* the Free Software Foundation, either version 3 of the License, or
* (at your option) any later version.
*
* aion-engine is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU Lesser Public License for more details.
*
* You should have received a copy of the GNU Lesser Public License
* along with aion-engine. If not, see <http://www.gnu.org/licenses/>.
*/
package quest.altgard;
import com.aionengine.gameserver.model.EmotionType;
import com.aionengine.gameserver.model.gameobjects.Npc;
import com.aionengine.gameserver.model.gameobjects.player.Player;
import com.aionengine.gameserver.network.aion.serverpackets.SM_DIALOG_WINDOW;
import com.aionengine.gameserver.network.aion.serverpackets.SM_EMOTION;
import com.aionengine.gameserver.network.aion.serverpackets.SM_USE_OBJECT;
import com.aionengine.gameserver.questEngine.handlers.QuestHandler;
import com.aionengine.gameserver.questEngine.model.QuestCookie;
import com.aionengine.gameserver.questEngine.model.QuestState;
import com.aionengine.gameserver.questEngine.model.QuestStatus;
import com.aionengine.gameserver.services.QuestService;
import com.aionengine.gameserver.services.TeleportService;
import com.aionengine.gameserver.utils.PacketSendUtility;
import com.aionengine.gameserver.utils.ThreadPoolManager;
/**
* @author HGabor85
*/
public class _2022CrushingtheConspiracy extends QuestHandler {
private final static int questId = 2022;
public _2022CrushingtheConspiracy() {
super(questId);
}
@Override
public void register() {
qe.addQuestLvlUp(questId);
qe.setNpcQuestData(203557).addOnTalkEvent(questId);
qe.setNpcQuestData(700143).addOnTalkEvent(questId);
qe.setNpcQuestData(204432).addOnTalkEvent(questId);
qe.setNpcQuestData(210753).addOnKillEvent(questId);
qe.setNpcQuestData(700551).addOnTalkEvent(questId);
}
@Override
public boolean onDialogEvent(QuestCookie env) {
final Player player = env.getPlayer();
int targetId = 0;
if (env.getVisibleObject() instanceof Npc)
targetId = ((Npc) env.getVisibleObject()).getNpcId();
QuestState qs = player.getQuestStateList().getQuestState(questId);
if (qs == null) {
if (targetId == 203557) {
if (env.getDialogId() == 25)
return sendQuestDialog(env, 1011);
else
return defaultQuestStartDialog(env);
}
} else if (qs.getStatus() == QuestStatus.START) {
switch (targetId) {
case 203557: {
if (qs.getQuestVarById(0) == 0) {
if (env.getDialogId() == 25)
return sendQuestDialog(env, 1352);
else if (env.getDialogId() == 1009) {
qs.setQuestVarById(0, qs.getQuestVarById(0) + 1);
updateQuestStatus(env);
PacketSendUtility.sendPacket(player, new SM_DIALOG_WINDOW(env.getVisibleObject().getObjectId(), 10));
return true;
}
}
}
break;
case 700143: {
if (qs.getQuestVarById(0) == 1) {
qs.setQuestVarById(0, qs.getQuestVarById(0) + 1);
updateQuestStatus(env);
TeleportService.teleportTo(player, 320030000, 275.68f, 164.03f, 205.19f, 34);
PacketSendUtility.sendPacket(player, new SM_DIALOG_WINDOW(env.getVisibleObject().getObjectId(), 10));
return true;
}
}
break;
case 204432: {
if (qs.getQuestVarById(0) == 2) {
qs.setQuestVarById(0, qs.getQuestVarById(0) + 1);
updateQuestStatus(env);
PacketSendUtility.sendPacket(player, new SM_DIALOG_WINDOW(env.getVisibleObject().getObjectId(), 0));
ThreadPoolManager.getInstance().schedule(new Runnable() {
@Override
public void run() {
PacketSendUtility.sendPacket(player, new SM_USE_OBJECT(player.getObjectId(), 204432, 3000, 0));
PacketSendUtility.broadcastPacket(player, new SM_EMOTION(player, EmotionType.START_LOOT, 0, 204432), true);
QuestService.addNewSpawn(320030000, 1, 210753, (float) 260.12, (float) 234.93, (float) 216.00, (byte) 90, true);
}
}, 3000);
return true;
}
}
break;
case 700551: {
if (qs.getQuestVarById(0) == 4) {
qs.setStatus(QuestStatus.REWARD);
updateQuestStatus(env);
TeleportService.teleportTo(player, 220030000, 2453.0f, 2553.2f, 316.3f, 26);
PacketSendUtility.sendPacket(player, new SM_DIALOG_WINDOW(env.getVisibleObject().getObjectId(), 10));
return true;
}
}
}
} else if (qs.getStatus() == QuestStatus.REWARD) {
if (targetId == 203557)
return defaultQuestEndDialog(env);
}
return false;
}
@Override
public boolean onKillEvent(QuestCookie env) {
if (defaultQuestOnKillEvent(env, 210753, 3, 4))
return true;
else
return false;
}
@Override
public boolean onLvlUpEvent(QuestCookie env) {
int[] quests = {2200, 2011, 2012, 2013, 2014, 2015, 2016, 2017, 2018, 2019, 2020, 2021};
return defaultQuestOnLvlUpEvent(env, quests);
}
}
Да и сама локация 320030000 (Bregirun) немного захламлена этими обелисками.
Сообщений: 9
Тем: 0
Зарегистрирован: Jan 2011
Репутация:
0
flashman, попробовал с твоим скриптом, результат остался тот же, т. е. врата не открываются. Aion Core чтобы исправить квест вносили изменения не в один файл. Aion Java вообще его удалили.
Сообщений: 202
Тем: 7
Зарегистрирован: Dec 2010
Репутация:
54
01-09-2011, 03:26 PM
(Сообщение последний раз редактировалось: 01-09-2011, 04:23 PM flashman.)
Интересно, я использую туже 276 реву и с правленым скриптом всё работает.
В таком случае нужно проверить все ли нпс доступны, а именно:
для начала проверь в спавн листе альтгарда 220030000_Altgard.xml , есть ли там такое: Код: <!-- Abyss Gate Altgard To Bregirun -->
<spawn map="220030000" npcid="700143" pool="1" interval="295">
<object x="2452.0867" y="2547.304" z="317.40292" h="28"/>
</spawn>
Если есть, то пройти можно именно через этот объект, после того как ты получишь квест от Суэрона, если использовать приведёный мной скрипт.
Посмотрел скрипт коров, там почти тоже самое что и у ae, но как бы то нибыло, как в моём варианте скрипта так и у коров, пройти необходимо через портал имеющий id=700143 . Так что всё заключается в том , есть ли такой объект в положенном месте или нет.
Добавлено через 56 минут
Подогнал скрипт коров под AE (поскольку он у них реализован лучше, есть кат-сцена  ), правил только их скрипт, другие файлы не трогал. Итог работает  .
Добавил комменты в начале скрипта где идёт перепись участвующих в квесте нпс. Там указаны их id и кто что делает, если всё равно не работает , то проверяйте спавн этих нпс в соответствующих спавн листах.
Открыть спойлер
Переделанный скрипт AionCore квеста 2022Код: package quest.altgard;
import com.aionengine.gameserver.model.EmotionType;
import com.aionengine.gameserver.model.gameobjects.Npc;
import com.aionengine.gameserver.model.gameobjects.player.Player;
import com.aionengine.gameserver.network.aion.serverpackets.SM_DIALOG_WINDOW;
import com.aionengine.gameserver.network.aion.serverpackets.SM_EMOTION;
import com.aionengine.gameserver.network.aion.serverpackets.SM_PLAY_MOVIE;
import com.aionengine.gameserver.network.aion.serverpackets.SM_USE_OBJECT;
import com.aionengine.gameserver.questEngine.handlers.QuestHandler;
import com.aionengine.gameserver.questEngine.model.QuestCookie;
import com.aionengine.gameserver.questEngine.model.QuestState;
import com.aionengine.gameserver.questEngine.model.QuestStatus;
import com.aionengine.gameserver.services.InstanceService;
import com.aionengine.gameserver.services.QuestService;
import com.aionengine.gameserver.services.TeleportService;
import com.aionengine.gameserver.utils.PacketSendUtility;
import com.aionengine.gameserver.utils.ThreadPoolManager;
import com.aionengine.gameserver.world.WorldMapInstance;
/**
* @author HGabor85
*
*/
public class _2022CrushingtheConspiracy extends QuestHandler
{
private final static int questId = 2022;
public _2022CrushingtheConspiracy()
{
super(questId);
}
@Override
public void register()
{
qe.addQuestLvlUp(questId);
qe.setNpcQuestData(203557).addOnTalkEvent(questId); // Начальный npc=Суэрон
qe.setNpcQuestData(700143).addOnTalkEvent(questId); // Врата ведущие в абусс для миссии
qe.setNpcQuestData(700142).addOnTalkEvent(questId); // Обелиск в абуссе, его необходимо активировать(поговорить)
qe.setNpcQuestData(210753).addOnKillEvent(questId); // Моб для убийства
qe.setNpcQuestData(700551).addOnTalkEvent(questId); // Ворота стоящие в конце уровня через них надо уйти
}
@Override
public boolean onDialogEvent(QuestCookie env)
{
final Player player = env.getPlayer();
int targetId = 0;
if(env.getVisibleObject() instanceof Npc)
targetId = ((Npc) env.getVisibleObject()).getNpcId();
QuestState qs = player.getQuestStateList().getQuestState(questId);
if(qs == null)
{
if(targetId == 203557)
{
if(env.getDialogId() == 25)
return sendQuestDialog(env, 1011);
else
return defaultQuestStartDialog(env);
}
}
else if (qs.getStatus() == QuestStatus.START)
{
switch(targetId)
{
case 203557:
{
if (qs.getQuestVarById(0) == 0)
{
if(env.getDialogId() == 25)
{
PacketSendUtility.sendPacket(player, new SM_PLAY_MOVIE(0, 66));
return sendQuestDialog(env, 1011);
}
else if (env.getDialogId() == 10000)
{
qs.setQuestVarById(0, qs.getQuestVarById(0) + 1);
updateQuestStatus(env);
PacketSendUtility.sendPacket(player, new SM_DIALOG_WINDOW(env.getVisibleObject().getObjectId(), 10));
return true;
}
}
}
break;
case 700143:
{
if (qs.getQuestVarById(0) == 1)
{
qs.setQuestVarById(0, qs.getQuestVarById(0) + 1);
updateQuestStatus(env);
TeleportService.teleportTo(player, 320030000, 275.68f, 164.03f, 205.19f, 34);
PacketSendUtility.sendPacket(player, new SM_DIALOG_WINDOW(env.getVisibleObject().getObjectId(), 10));
return true;
}
else if (qs.getQuestVarById(0) >= 1)
{
qs.setQuestVarById(0, qs.getQuestVarById(0) + 0);
updateQuestStatus(env);
TeleportService.teleportTo(player, 320030000, 275.68f, 164.03f, 205.19f, 34);
PacketSendUtility.sendPacket(player, new SM_DIALOG_WINDOW(env.getVisibleObject().getObjectId(), 10));
return true;
}
}
break;
case 700142:
{
if (qs.getQuestVarById(0) == 2)
{
qs.setQuestVarById(0, qs.getQuestVarById(0) + 1);
updateQuestStatus(env);
PacketSendUtility.sendPacket(player, new SM_DIALOG_WINDOW(env.getVisibleObject().getObjectId(), 0));
ThreadPoolManager.getInstance().schedule(new Runnable(){
@Override
public void run()
{
PacketSendUtility.sendPacket(player, new SM_USE_OBJECT(player.getObjectId(), 700142, 3000, 0));
PacketSendUtility.broadcastPacket(player, new SM_EMOTION(player, EmotionType.NEUTRALMODE2, 0, 700142), true);
QuestService.addNewSpawn(320030000, 1, 210753, (float) 260.12, (float) 234.93, (float) 216.00, (byte) 90, true);
}
}, 3000);
return true;
}
}
break;
case 700551:
{
if (qs.getQuestVarById(0) == 4)
{
TeleportService.teleportTo(player, 220030000, 2453.0f, 2553.2f, 316.3f, 26);
qs.setStatus(QuestStatus.REWARD);
updateQuestStatus(env);
PacketSendUtility.sendPacket(player, new SM_DIALOG_WINDOW(env.getVisibleObject().getObjectId(), 10));
PacketSendUtility.sendPacket(player, new SM_PLAY_MOVIE(0, 154));
return true;
}
}
}
}
else if (qs.getStatus() == QuestStatus.REWARD)
{
if(targetId == 203557)
{
if (env.getDialogId() == -1)
return sendQuestDialog(env, 1352);
else
return defaultQuestEndDialog(env);
}
}
return false;
}
@Override
public boolean onKillEvent(QuestCookie env)
{
Player player = env.getPlayer();
QuestState qs = player.getQuestStateList().getQuestState(questId);
if(qs == null)
return false;
int var = qs.getQuestVarById(0);
int targetId = 0;
if(env.getVisibleObject() instanceof Npc)
targetId = ((Npc) env.getVisibleObject()).getNpcId();
if(qs.getStatus() != QuestStatus.START)
return false;
switch(targetId)
{
case 210753:
if(var >= 3 && var < 4)
{
qs.setQuestVarById(0, qs.getQuestVarById(0) + 1);
updateQuestStatus(env);
return true;
}
}
return false;
}
@Override
public boolean onLvlUpEvent(QuestCookie env)
{
Player player = env.getPlayer();
QuestState qs = player.getQuestStateList().getQuestState(questId);
if(qs == null || qs.getStatus() != QuestStatus.LOCKED)
return false;
int[] quests = {2200, 2011, 2012, 2013, 2014, 2015, 2016, 2017, 2018, 2019, 2020, 2021};
for (int id : quests)
{
QuestState qs2 = player.getQuestStateList().getQuestState(id);
if (qs2 == null || qs2.getStatus() != QuestStatus.COMPLETE)
return false;
}
qs.setStatus(QuestStatus.START);
updateQuestStatus(env);
return true;
}
}
Сообщений: 2,124
Тем: 84
Зарегистрирован: Jul 2010
Репутация:
3,419
flashman, может сделаешь патчик?
Сообщений: 202
Тем: 7
Зарегистрирован: Dec 2010
Репутация:
54
Если есть какой-то специальный для этого метод создания патчей, то скажите просто как это сделать  , если же всё по старинке "найти файлы , заменить файлы", то завтра выложу.
Сообщений: 2,124
Тем: 84
Зарегистрирован: Jul 2010
Репутация:
3,419
flashman, если используешь черепашку(Tortoise SVN), то .diff-файл делается там в пару кликов...
Сообщений: 9
Тем: 0
Зарегистрирован: Jan 2011
Репутация:
0
Проблему с порталами решил правкой трех файлов:
_2022CrushingtheConspiracy.java
Код: package quest.altgard;
import com.aionengine.gameserver.model.EmotionType;
import com.aionengine.gameserver.model.gameobjects.Npc;
import com.aionengine.gameserver.model.gameobjects.player.Player;
import com.aionengine.gameserver.network.aion.serverpackets.SM_DIALOG_WINDOW;
import com.aionengine.gameserver.network.aion.serverpackets.SM_EMOTION;
import com.aionengine.gameserver.network.aion.serverpackets.SM_PLAY_MOVIE;
import com.aionengine.gameserver.network.aion.serverpackets.SM_USE_OBJECT;
import com.aionengine.gameserver.questEngine.handlers.QuestHandler;
import com.aionengine.gameserver.questEngine.model.QuestCookie;
import com.aionengine.gameserver.questEngine.model.QuestState;
import com.aionengine.gameserver.questEngine.model.QuestStatus;
import com.aionengine.gameserver.services.InstanceService;
import com.aionengine.gameserver.services.QuestService;
import com.aionengine.gameserver.services.TeleportService;
import com.aionengine.gameserver.utils.PacketSendUtility;
import com.aionengine.gameserver.utils.ThreadPoolManager;
import com.aionengine.gameserver.world.WorldMapInstance;
/**
* @author HGabor85
*
*/
public class _2022CrushingtheConspiracy extends QuestHandler
{
private final static int questId = 2022;
public _2022CrushingtheConspiracy()
{
super(questId);
}
@Override
public void register()
{
qe.addQuestLvlUp(questId);
qe.setNpcQuestData(203557).addOnTalkEvent(questId); // Начальный npc=Суэрон
qe.setNpcQuestData(700143).addOnTalkEvent(questId); // Врата ведущие в абусс для миссии
qe.setNpcQuestData(700142).addOnTalkEvent(questId); // Обелиск в абуссе, его необходимо активировать(поговорить)
qe.setNpcQuestData(210753).addOnKillEvent(questId); // Моб для убийства
qe.setNpcQuestData(700551).addOnTalkEvent(questId); // Ворота стоящие в конце уровня через них надо уйти
}
@Override
public boolean onDialogEvent(QuestCookie env)
{
final Player player = env.getPlayer();
int targetId = 0;
if(env.getVisibleObject() instanceof Npc)
targetId = ((Npc) env.getVisibleObject()).getNpcId();
QuestState qs = player.getQuestStateList().getQuestState(questId);
if(qs == null)
{
if(targetId == 203557)
{
if(env.getDialogId() == 25)
return sendQuestDialog(env, 1011);
else
return defaultQuestStartDialog(env);
}
}
else if (qs.getStatus() == QuestStatus.START)
{
switch(targetId)
{
case 203557:
{
if (qs.getQuestVarById(0) == 0)
{
if(env.getDialogId() == 25)
{
PacketSendUtility.sendPacket(player, new SM_PLAY_MOVIE(0, 66));
return sendQuestDialog(env, 1011);
}
else if (env.getDialogId() == 10000)
{
qs.setQuestVarById(0, qs.getQuestVarById(0) + 1);
updateQuestStatus(env);
PacketSendUtility.sendPacket(player, new SM_DIALOG_WINDOW(env.getVisibleObject().getObjectId(), 10));
return true;
}
}
}
break;
case 700143:
{
if (qs.getQuestVarById(0) == 1)
{
qs.setQuestVarById(0, qs.getQuestVarById(0) + 1);
updateQuestStatus(env);
TeleportService.teleportTo(player, 320030000, 275.68f, 164.03f, 205.19f, 34);
PacketSendUtility.sendPacket(player, new SM_DIALOG_WINDOW(env.getVisibleObject().getObjectId(), 10));
return true;
}
else if (qs.getQuestVarById(0) >= 1)
{
qs.setQuestVarById(0, qs.getQuestVarById(0) + 0);
updateQuestStatus(env);
TeleportService.teleportTo(player, 320030000, 275.68f, 164.03f, 205.19f, 34);
PacketSendUtility.sendPacket(player, new SM_DIALOG_WINDOW(env.getVisibleObject().getObjectId(), 10));
return true;
}
}
break;
case 700142:
{
if (qs.getQuestVarById(0) == 2)
{
qs.setQuestVarById(0, qs.getQuestVarById(0) + 1);
updateQuestStatus(env);
PacketSendUtility.sendPacket(player, new SM_DIALOG_WINDOW(env.getVisibleObject().getObjectId(), 0));
ThreadPoolManager.getInstance().schedule(new Runnable(){
@Override
public void run()
{
PacketSendUtility.sendPacket(player, new SM_USE_OBJECT(player.getObjectId(), 700142, 3000, 0));
PacketSendUtility.broadcastPacket(player, new SM_EMOTION(player, EmotionType.NEUTRALMODE2, 0, 700142), true);
QuestService.addNewSpawn(320030000, 1, 210753, (float) 260.12, (float) 234.93, (float) 216.00, (byte) 90, true);
}
}, 3000);
return true;
}
}
break;
case 700551:
{
if (qs.getQuestVarById(0) == 4)
{
TeleportService.teleportTo(player, 220030000, 2453.0f, 2553.2f, 316.3f, 26);
qs.setStatus(QuestStatus.REWARD);
updateQuestStatus(env);
PacketSendUtility.sendPacket(player, new SM_DIALOG_WINDOW(env.getVisibleObject().getObjectId(), 10));
PacketSendUtility.sendPacket(player, new SM_PLAY_MOVIE(0, 154));
return true;
}
}
}
}
else if (qs.getStatus() == QuestStatus.REWARD)
{
if(targetId == 203557)
{
if (env.getDialogId() == -1)
return sendQuestDialog(env, 1352);
else
return defaultQuestEndDialog(env);
}
}
return false;
}
@Override
public boolean onKillEvent(QuestCookie env)
{
Player player = env.getPlayer();
QuestState qs = player.getQuestStateList().getQuestState(questId);
if(qs == null)
return false;
int var = qs.getQuestVarById(0);
int targetId = 0;
if(env.getVisibleObject() instanceof Npc)
targetId = ((Npc) env.getVisibleObject()).getNpcId();
if(qs.getStatus() != QuestStatus.START)
return false;
switch(targetId)
{
case 210753:
if(var >= 3 && var < 4)
{
qs.setQuestVarById(0, qs.getQuestVarById(0) + 1);
updateQuestStatus(env);
return true;
}
}
return false;
}
@Override
public boolean onLvlUpEvent(QuestCookie env)
{
Player player = env.getPlayer();
QuestState qs = player.getQuestStateList().getQuestState(questId);
if(qs == null || qs.getStatus() != QuestStatus.LOCKED)
return false;
int[] quests = {2200, 2011, 2012, 2013, 2014, 2015, 2016, 2017, 2018, 2019, 2020, 2021};
for (int id : quests)
{
QuestState qs2 = player.getQuestStateList().getQuestState(id);
if (qs2 == null || qs2.getStatus() != QuestStatus.COMPLETE)
return false;
}
qs.setStatus(QuestStatus.START);
updateQuestStatus(env);
return true;
}
}
320030000_Bregirun.xml
Код: <!-- Abyss Gate (Object Normal lvl:1) -->
<spawn map="320030000" npcid="700551" pool="1" interval="295">
<object x="276.05295" y="162.95338" z="205.29982" h="94"/>
portal_templates.xml
Код: <!-- Abyss Gate Bregirun To Altgard [Sealing The Abyss Gate Quest] Asmodians -->
<portal npcid="700551" instance="true" minlevel="15" maxlevel="55" group="false">
<entrypoint mapid="320030000" x="273.08926" y="174.22618" z="204.34718"/>
<exitpoint mapid="220030000" x="2452.0867" y="2547.304" z="317.40292"/>
</portal>
<!-- Abyss Gate [Sealing the Abyss Gate] Elyos -->
<portal npcid="700141" instance="true" group="true" race="ELYOS">
<entrypoint mapid="210030000" x="2684.308" y="1068.7382" z="199.375" race="ELYOS"/>
<exitpoint mapid="310030000" x="270.5" y="174.3" z="204.3"/>
</portal>
<!-- Abyss Gate Altgard To Bregirun [Sealing The Abyss Gate Quest] Asmodians -->
<portal npcid="700143" minlevel="10" maxlevel="55" group="false">
<entrypoint mapid="220030000" x="2452.0867" y="2547.304" z="317.40292"/>
<exitpoint mapid="320030000" x="273.08926" y="174.22618" z="204.34718"/>
Осталась одна проблемка: При выходе из портала ID700143 не увеличивается значение quest_vars в таблице player_quests базы что приводит к невозможности активации обелиска. При ручной правке базы дальше квест выполняется без осложнений.
Сообщений: 202
Тем: 7
Зарегистрирован: Dec 2010
Репутация:
54
Сделал по старинке , небольшая инструкция внутри. С патчем в черепашке мутить не стал, там слишком много уже изменений внёс, долго редарктировать...
Ссылка на архив
Mozilla, править portal_templates.xml незачем, поскольку в скрипте квеста используется TeleportService , сам квест занимается телепортацией персонажа, для того чтобы скрипт мог тпешить надо чтобы объект на который он ссылается ,имел тип USEITEM (правится в npc_template.xml), а также обязательно все объекты которые участвуют в квесте должны быть объявлены в переменных скрипта квеста.
|