Сообщений: 498
Тем: 9
Зарегистрирован: Jun 2011
Репутация:
1,101
01-28-2012, 04:37 AM
(Сообщение последний раз редактировалось: 01-29-2012, 12:12 AM FriendlyGhost.)
Доброго утречка. Который день пытаюсь решить одну проблему, но все-таки знаний моих пока не хватает, не могу понять в чем дело, соответственно и исправить не могу (да со временем изучения явы может бы и пришел к решению, но игроки просят сейчас , вот решил попросить помощи тут).
Сборка L2brick Freya, рева в районе 1300. Команда закрылась, причем закрыт и СВН и форум, так что обратиться к разработчикам или даже найти собрата по несчастью из пользователей не могу, приходится самому разбираться или у знакомых спрашивать.
Суть такова - не срабатывают телепорты в замки/кх/флаг/палатку/форт, а так же при смерти вставание в эти точки через табличку "to castle", "to clanhall" и т.д.
Вот лог ошибки:
Ниже подробнее выпишу, чтобы было проще разобраться, если кто захочет помочь.
развернуть полностью
Как понимаю - не выводит значение строки 83, т.е. оно null. Идем по следу в
MapRegionManager.java (332 строка)
Код: if (castle != null && castle.getCastleId() > 0)
{
if (player.getKarma() > 0)
return castle.getCastleZone().getChaoticSpawnLoc();
else
return castle.getCastleZone().getSpawnLoc(); [color=SeaGreen][B]// <-- вот она 332-я[/B][/color]
}
getSpawnLoc() находим в L2ZoneRespawn.java:
Код: public final Location getSpawnLoc()
{
if (Config.RANDOM_RESPAWN_IN_TOWN_ENABLED)
return _spawnLocs.get(Rnd.get(_spawnLocs.size()));
else
return _spawnLocs.get(0); [color=SeaGreen][B]// <--вот 83-я строка, если не ошибаюсь, она должна вывести первое значение из листа _spawnlocs[/B][/color]
}
там же находим:
Код: public final void addSpawn(int x, int y, int z)
{
if (_spawnLocs == null)
_spawnLocs = new ArrayList<Location>(); [B][color=SeaGreen]// <-- тут делается массив точек возможных телепортов?[/color][/B]
_spawnLocs.add(new Location(x, y, z));
}
Но этот метод addSpawn не используется, может быть поэтому мой _spawnLocs остается == null ? Если так, то помогите его активировать.
ну и, соответственно описание выше:
Код: private List<Location> _spawnLocs = null;
далее отправляемся в location.java:
Код: public Location(int x, int y, int z)
{
_x = x;
_y = y;
_z = z;
}
а вот целиком класс L2CastleZone.java если нужно:
развернуть
Код: public class L2CastleZone extends L2ZoneRespawn
{
private int _castleId;
private Castle _castle = null;
public L2CastleZone(int id)
{
super(id);
}
@Override
public void setParameter(String name, String value)
{
if (name.equals("castleId"))
_castleId = Integer.parseInt(value);
else
super.setParameter(name, value);
}
@Override
protected void onEnter(L2Character character)
{
if (getCastle() != null)
character.setInsideZone(L2Character.ZONE_CASTLE, true);
}
@Override
protected void onExit(L2Character character)
{
if (getCastle() != null)
character.setInsideZone(L2Character.ZONE_CASTLE, false);
}
@Override
public void onDieInside(L2Character character)
{
}
@Override
public void onReviveInside(L2Character character)
{
}
/**
* Removes all foreigners from the castle
* @param owningClanId
*/
public void banishForeigners(int owningClanId)
{
for (L2Character temp : getCharactersInsideArray())
{
if (!(temp instanceof L2PcInstance))
continue;
if (((L2PcInstance) temp).getClanId() == owningClanId)
continue;
((L2PcInstance) temp).teleToLocation(MapRegionManager.TeleportWhereType.Town);
}
}
public int getCastleId()
{
return _castleId;
}
private final Castle getCastle()
{
if (_castle == null)
_castle = CastleManager.getInstance().getCastleById(_castleId);
return _castle;
}
}
Ну и, собственно вопрос - откуда берутся заветные X,Y,Z, возможно они где-то не вписаны в датапаке, но почему их не достает оттуда? Подскажите, кто может, не привык просить что-то готовое, но уже кучу времени потратил, а результата 0 .
.
Добавлено через 19 часов 34 минуты
АП чтоли ( . Самое смешное, что больше полугода как зарегался не создавал нубских тем, находил все сам, уже и новичкам подсказываю многое )) , а вот 2-я серьезная проблема и ни 1 ответа как назло ) , хоть бы намекнули где может быть проблема, а то брики закрылись и теперь разбирайся с их кодом как хочешь ( , а снова менять исходы не охото, переносить все свои наработки заново...
Сообщений: 94
Тем: 12
Зарегистрирован: Jan 2012
Репутация:
-5
Я в этом деле вообще новенький, идёт всеголишь 13й день, как я занялся поднятием сервера , и мой пост можно вообще считать за оффтоп, но судя по указанной ошибкой, ява не может получить спавн локу
может у тебя криво прописаны локи замков\пвп зон\ и т.д ? в data\zones\zone.xml:cs:
Бешенство, это не болезнь :di: © Pumo4ka
Сообщений: 498
Тем: 9
Зарегистрирован: Jun 2011
Репутация:
1,101
это-то я понимаю ) , что не может получить. Есть файл castle_zones.xml , там вот такие строки по каждому замку:
Код: <!-- Castle Zones -->
<zone name="gludio_castle" type="CastleZone" shape="NPoly" minZ="-4452" maxZ="3547">
<stat name="castleId" val="1" />
<!-- residence_territory -->
<node X="-20300" Y="106700" />
<node X="-15700" Y="106700" />
<node X="-15700" Y="113800" />
<node X="-20300" Y="113800" />
<!-- owner_restart_point_list -->
<spawn X="-16554" Y="109382" Z="-1799" />
<spawn X="-16869" Y="109375" Z="-1799" />
<spawn X="-16659" Y="109261" Z="-1799" />
<spawn X="-16618" Y="109485" Z="-1799" />
<!-- chao_restart_point_list -->
<spawn X="-81616" Y="157104" Z="-3150" isChaotic="true" />
<spawn X="-80688" Y="157216" Z="-3150" isChaotic="true" />
<spawn X="-79568" Y="156960" Z="-3150" isChaotic="true" />
<spawn X="-78800" Y="157744" Z="-3150" isChaotic="true" />
<spawn X="-80448" Y="157968" Z="-3130" isChaotic="true" />
<spawn X="-81712" Y="159536" Z="-3230" isChaotic="true" />
<spawn X="-79744" Y="160592" Z="-3330" isChaotic="true" />
<spawn X="-79584" Y="159408" Z="-3180" isChaotic="true" />
<spawn X="-74016" Y="150656" Z="-2800" isChaotic="true" />
<spawn X="-72720" Y="149632" Z="-2780" isChaotic="true" />
<spawn X="-75904" Y="162000" Z="-3300" isChaotic="true" />
<spawn X="-75488" Y="161472" Z="-3250" isChaotic="true" />
<spawn X="-74688" Y="160736" Z="-3200" isChaotic="true" />
<spawn X="-74352" Y="161488" Z="-3250" isChaotic="true" />
<spawn X="-76656" Y="160768" Z="-3280" isChaotic="true" />
<spawn X="-77472" Y="160960" Z="-3470" isChaotic="true" />
<spawn X="-77776" Y="158752" Z="-3270" isChaotic="true" />
<spawn X="-80448" Y="161488" Z="-3420" isChaotic="true" />
<spawn X="-75440" Y="162672" Z="-3350" isChaotic="true" />
<spawn X="-81760" Y="161248" Z="-3200" isChaotic="true" />
</zone>
т.е. судя по всему должно забирать .get(0), т.е. первую строку из вариантов, а вот где найти этот "способ забирания" ?
Сообщений: 498
Тем: 9
Зарегистрирован: Jun 2011
Репутация:
1,101
Выяснил в итоге где именно проблема, не читает некоторые данные из XML файлов, но так как пока не разбираюсь в парсерах, пришлось сделать как умею - "спарсил" вручную координаты всех точек ТП замков/КХ/Фортов из файла в скрипт , хорошо что их всего около 70, а не 1000 например...
Но вот с палаткой ТВ (битва земель) пока не знаю что сделать, с пакетами пока "на вы" , не знаю как добавить кнопочку "К АВАНПОСТУ" при смерти персонажа.
Если есть желающие помочь - буду рад.
А если с пакетами возиться не охота, то подскажите, как сделать так, чтобы клановый ФЛАГ (Headquarter) был не убиваемым во время ТВ, а во время осад обычным?
|