Сообщений: 1,340
Тем: 134
Зарегистрирован: Dec 2010
Репутация:
6,742
Добрый вечер всем! Возник вопрос. Возможно ли физически ограничить доступ во все локации и города мира ла2, кроме одной единственной? То есть чтобы действия всей игры происходили только в одном городе, (гк стоять не будут), и при попытке выйти за рамки границ (которые будут установлены админом), игрока бы автоматически возвращало обратно (на заданные админом координаты) ? Рассматриваю любой вариант реализации. Спасибо!
Сообщений: 5,670
Тем: 145
Зарегистрирован: Nov 2008
Репутация:
33,771
Создать одну зону и при попытке выйти из неё телепортировало назад
Сообщений: 3,968
Тем: 90
Зарегистрирован: Nov 2010
Репутация:
15,337
Обозначить зону, при выходе из которой - телепортирование..
Сообщений: 1,416
Тем: 44
Зарегистрирован: Mar 2010
Репутация:
2,310
Теоретически - возможно. Предполагаю, что реализация данного вопроса решается 2 способами:
1. Внесение соответствующих корректировок в файл zone.xml
2. Геодата
На практике такого не встречал. Могу ошибаться. Это всего лишь предположения.
Сообщений: 1,883
Тем: 53
Зарегистрирован: Feb 2011
Сообщений: 1,340
Тем: 134
Зарегистрирован: Dec 2010
Репутация:
6,742
А можно больше конкретики? Я человек далекий от технической реализации, но если дадите однозначный ответ в каком источнике и с какими настройками необходимо работать, то пойму.
Сообщений: 1,883
Тем: 53
Зарегистрирован: Feb 2011
PHP код: <?php
private class ZoneListener extends L2ZoneEnterLeaveListener
{
@Override
public void objectEntered(L2Zone zone, L2Object object)
{
if(object == null)
return;
L2Player player = object.getPlayer();
if(_status > 0 && player != null && !live_list1.contains(player.getStoredId()) && !live_list2.contains(player.getStoredId()))
ThreadPoolManager.getInstance().scheduleGeneral(new TeleportTask((L2Character) object, new Location(147451, 46728, -3410)), 3000);
}
@Override
public void objectLeaved(L2Zone zone, L2Object object)
{
if(object == null)
return;
L2Player player = object.getPlayer();
if(_status > 1 && player != null && player.getTeam() > 0 && (live_list1.contains(player.getStoredId()) || live_list2.contains(player.getStoredId())))
{
double angle = Util.convertHeadingToDegree(object.getHeading()); // угол в градусах
double radian = Math.toRadians(angle - 90); // угол в радианах
int x = (int) (object.getX() + 50 * Math.sin(radian));
int y = (int) (object.getY() - 50 * Math.cos(radian));
int z = object.getZ();
ThreadPoolManager.getInstance().scheduleGeneral(new TeleportTask((L2Character) object, new Location(x, y, z)), 3000);
}
}
}
Phoenix Epilogue
Сообщений: 1,416
Тем: 44
Зарегистрирован: Mar 2010
Репутация:
2,310
BlackPR Написал:А можно больше конкретики? Я человек далекий от технической реализации, но если дадите однозначный ответ в каком источнике и с какими настройками необходимо работать, то пойму. Нужно (как минимум) знать координты локации, в которой Вы хотите собирать людей.
Сообщений: 2,444
Тем: 59
Зарегистрирован: May 2010
Репутация:
13,020
Геодата 100% решение, но ньюансы всегда есть, свиток ТП, ГМ какой нить, ГК и т.д.
Бесплатно помогу сделать невидимую стену, на определённом участке территории.
Пока я добрый
СЕО Оптимизация сайтов
Сообщений: 1,883
Тем: 53
Зарегистрирован: Feb 2011
gorodetskiy Написал:Геодата 100% решение, но ньюансы всегда есть, свиток ТП, ГМ какой нить, ГК и т.д.
Бесплатно помогу сделать невидимую стену, на определённом участке территории.
Пока я добрый
Невидемые стены обходятся, свитки используются.
Допустим и это обыкновенный феникс, где можно с артмоней переместится в любую точку мира? ) как отследим? Не критично но портит идею имхо.
|