Сообщений: 526
Тем: 28
Зарегистрирован: Oct 2009
Репутация:
7,209
попробуйте увеличить зону видимости для двери
http://trac.l2jserver.com/browser/trunk/...nList.java
Цитата: @Override
public int getDistanceToWatchObject(L2Object object)
{
if (object instanceof L2DefenderInstance)
{
return 600;
}
else if (!object.isPlayer())
{
return 0;
}
return 3500;
}
Сообщений: 19
Тем: 5
Зарегистрирован: Aug 2013
Репутация:
62
08-05-2013, 12:14 PM
(Сообщение последний раз редактировалось: 08-05-2013, 04:16 PM Karamelka.)
MHard Написал:попробуйте увеличить зону видимости для двери
http://trac.l2jserver.com/browser/trunk/...nList.java
не помогло, но уже получилось сделать отображение хп . А вот с дверями не получается
Добавлено через 4 часа 2 минуты
Может кто помочь? как только уже не меняла это кусочек кода
Код: public void broadcastStatusUpdate()
{
Collection<L2PcInstance> knownPlayers = getKnownList().getKnownPlayers().values();
if ((knownPlayers == null) || knownPlayers.isEmpty())
{
return;
}
StaticObject su = new StaticObject(this, false);
StaticObject targetableSu = new StaticObject(this, true);
DoorStatusUpdate dsu = new DoorStatusUpdate(this);
OnEventTrigger oe = null;
if (getEmitter() > 0)
{
oe = new OnEventTrigger(this, getOpen());
}
for (L2PcInstance player : knownPlayers)
{
if (player == null)
{
continue;
}
if (player.isGM() || (((getCastle() != null) && (getCastle().getCastleId() > 0)) || ((getFort() != null) && (getFort().getFortId() > 0))))
{
player.sendPacket(targetableSu);
}
else
{
player.sendPacket(su);
}
player.sendPacket(dsu);
if (oe != null)
{
player.sendPacket(oe);
}
}
}
эффект один и тот же. Пакетик dsu не хочет ко мне лететь:ca3:. Ворота открываются только при клике на них.
А если сделать как тут http://forum.zone-game.info/showthread.php?t=19021, то вообще ошибка компиляции. Ругается на L2World.getInstance
Хоть какие нибудь идеи...
http://rghost.ru/47906583
Сообщений: 101
Тем: 28
Зарегистрирован: Jun 2013
Репутация:
53
ссылаясь на вашу же ссылку предположу, что изначально у автора выглядело так
Код: public void broadcastStatusUpdate()
{
final L2PcInstance [] knownPlayers = L2World.getInstance().getAllPlayersArray();
if (knownPlayers == null)
return;
StaticObject su = new StaticObject(this, false);
DoorStatusUpdate dsu = new DoorStatusUpdate(this);
OnEventTrigger oe = null;
if (_emitter > 0)
oe = new OnEventTrigger(this, getOpen());
for (L2PcInstance player : knownPlayers)
{
if ((getCastle() != null && getCastle().getCastleId() > 0) || (getFort() != null && getFort().getFortId() > 0 && !getIsCommanderDoor()))
su = new StaticObject(this, true);
player.sendPacket(su);
player.sendPacket(dsu);
if (oe != null)
player.sendPacket(oe);
}
}
А уж что он там потом усовершенствовал... не ясно.
Сообщений: 498
Тем: 9
Зарегистрирован: Jun 2011
Репутация:
1,101
08-05-2013, 09:52 PM
(Сообщение последний раз редактировалось: 08-05-2013, 10:39 PM FriendlyGhost.)
Сейчас гляну в исходниках старых (последние случайно удалил), если там уже была затычка - скину, а то по памяти сразу сказать не могу
Вот сделал декомпил, нашел . Отправлять стал не на весь мир, а только тем, кто в пределах олимп. стадионов (костыль, но сработало).
код
Постом выше начало метода, а вот тут добавление про границы стадионов. Код: for (L2Character player : knownPlayers)
{
if (((getCastle() != null) && (getCastle().getCastleId() > 0)) || ((getFort() != null) && (getFort().getFortId() > 0) && (!getIsCommanderDoor())))
su = new StaticObject(this, true);
if ((player.getX() < -74000) && (player.getX() > -90000) && (player.getY() > -254000) && (player.getY() < -237000)) {
player.sendPacket(su);
player.sendPacket(dsu);
if (oe != null)
player.sendPacket(oe);
}
}
Сообщений: 5,863
Тем: 105
Зарегистрирован: Sep 2010
Репутация:
13,014
В Вашем случае происходит так:
создается инстант, телепортируются игроки, начинается отсчет, за 10 секунд открываются двери (смотрите это место), Вам необходимо клиенту сообщить об этом (отправить пакет). Только и всего...
Сообщений: 19
Тем: 5
Зарегистрирован: Aug 2013
Репутация:
62
Мои спасители! pasibo:
Сообщений: 101
Тем: 28
Зарегистрирован: Jun 2013
Репутация:
53
FriendlyGhost Написал:Сейчас гляну в исходниках старых (последние случайно удалил), если там уже была затычка - скину, а то по памяти сразу сказать не могу
Вот сделал декомпил, нашел . Отправлять стал не на весь мир, а только тем, кто в пределах олимп. стадионов (костыль, но сработало).
код
Постом выше начало метода, а вот тут добавление про границы стадионов. Код: for (L2Character player : knownPlayers)
{
if (((getCastle() != null) && (getCastle().getCastleId() > 0)) || ((getFort() != null) && (getFort().getFortId() > 0) && (!getIsCommanderDoor())))
su = new StaticObject(this, true);
if ((player.getX() < -74000) && (player.getX() > -90000) && (player.getY() > -254000) && (player.getY() < -237000)) {
player.sendPacket(su);
player.sendPacket(dsu);
if (oe != null)
player.sendPacket(oe);
}
}
А вы могли бы поделиться багами, которые были у вас на сборке Brick? и их возможным решением А то у меня тоже она...
Сообщений: 5,863
Тем: 105
Зарегистрирован: Sep 2010
Репутация:
13,014
Karamelka, начните думать как машина. 1 действие - 1 строчка кода (утрирую конечно).
Сообщений: 11
Тем: 2
Зарегистрирован: Jun 2013
Репутация:
0
Подозреваю, что у вас после этого будет такая же проблема с воротами фортов. Правильнее будет сделать так...
Код: public void broadcastStatusUpdate()
{
final L2PcInstance [] knownPlayers = L2World.getInstance().getAllPlayersArray();
if (knownPlayers == null)
return;
StaticObject su = new StaticObject(this, false);
DoorStatusUpdate dsu = new DoorStatusUpdate(this);
OnEventTrigger oe = null;
if (_emitter > 0)
oe = new OnEventTrigger(this, getOpen());
for (L2PcInstance player : knownPlayers)
{
if ((getCastle() != null && getCastle().getCastleId() > 0) || (getFort() != null && getFort().getFortId() > 0 && !getIsCommanderDoor()))
su = new StaticObject(this, true);
{
player.sendPacket(su);
player.sendPacket(dsu);
}
if ((player.getX() < -74000) && (player.getX() > -90000) && (player.getY() > -254000) && (player.getY() < -237000))
{
player.sendPacket(su);
player.sendPacket(dsu);
}
if (oe != null)
player.sendPacket(oe);
}
}
ну и не забудьте
Код: import com.l2jserver.gameserver.model.L2World;
Сообщений: 555
Тем: 2
Зарегистрирован: Feb 2011
Репутация:
1,507
Sedoy, правильнее??
этот метод broadcastStatusUpdate воткнуть в дверь??
|