Tvt изменения(проверка)
7 replies156 viewsCurrently viewing: 1
· 10/30/2009, 01:39 PM
Сборка: Interlude Equal 305
Проблема: Если после запуска TvT во время битвы участников становится по 0 в обеих командах, то евент не завершается.
Соображения:
Вот код из файла TvTManager.java
Код
public void run()
{
TvTEvent.init();
for (;;)
{
waiter(Config.TVT_EVENT_INTERVAL * 60); // in config given as minutes
if (!TvTEvent.startParticipation())
{
Announcements.getInstance().announceToAll("TvT Event: TvT отменен.");
System.out.println("TvTEventEngine[TvTManager.run()]: Error spawning event npc for participation.");
continue;
}
else
Announcements.getInstance().announceToAll("TvT Event: Регистрация открыта в течении " + Config.TVT_EVENT_PARTICIPATION_TIME + " минут.");
waiter(Config.TVT_EVENT_PARTICIPATION_TIME * 60); // in config given as minutes
if (!TvTEvent.startFight())
{
Announcements.getInstance().announceToAll("TvT Event: Отсутсуют участники, ивент отменен.");
System.out.println("TvTEventEngine[TvTManager.run()]: Lack of registration, abort event.");
continue;
}
else
TvTEvent.sysMsgToAllParticipants("TvT Event: Вы будите отправлены на арену через " + Config.TVT_EVENT_START_LEAVE_TELEPORT_DELAY + " секунд.");
waiter(Config.TVT_EVENT_RUNNING_TIME * 60); // in config given as minutes
Announcements.getInstance().announceToAll(TvTEvent.calculateRewards());
TvTEvent.sysMsgToAllParticipants("TvT Event: Вы будите возвращены к регистратору TvT через " + Config.TVT_EVENT_START_LEAVE_TELEPORT_DELAY + " секунд.");
TvTEvent.stopFight();
}
}
{
TvTEvent.init();
for (;;)
{
waiter(Config.TVT_EVENT_INTERVAL * 60); // in config given as minutes
if (!TvTEvent.startParticipation())
{
Announcements.getInstance().announceToAll("TvT Event: TvT отменен.");
System.out.println("TvTEventEngine[TvTManager.run()]: Error spawning event npc for participation.");
continue;
}
else
Announcements.getInstance().announceToAll("TvT Event: Регистрация открыта в течении " + Config.TVT_EVENT_PARTICIPATION_TIME + " минут.");
waiter(Config.TVT_EVENT_PARTICIPATION_TIME * 60); // in config given as minutes
if (!TvTEvent.startFight())
{
Announcements.getInstance().announceToAll("TvT Event: Отсутсуют участники, ивент отменен.");
System.out.println("TvTEventEngine[TvTManager.run()]: Lack of registration, abort event.");
continue;
}
else
TvTEvent.sysMsgToAllParticipants("TvT Event: Вы будите отправлены на арену через " + Config.TVT_EVENT_START_LEAVE_TELEPORT_DELAY + " секунд.");
waiter(Config.TVT_EVENT_RUNNING_TIME * 60); // in config given as minutes
Announcements.getInstance().announceToAll(TvTEvent.calculateRewards());
TvTEvent.sysMsgToAllParticipants("TvT Event: Вы будите возвращены к регистратору TvT через " + Config.TVT_EVENT_START_LEAVE_TELEPORT_DELAY + " секунд.");
TvTEvent.stopFight();
}
}
Как мне показалось это основной кусок кода TvT, который постоянно повторяется в течении работы сервера.
В общем проблема собственно в том как мне в файле TvTManager.java какой-нито переменной допустим _teamNull присваивать значения колличества участников TvT...
и второе в каком из методов потом сравнивать значения и досрочно заверщать евент...
Я пытался присваивать значения и записывать условия досрочного завершения TvT в метод waiter, но проблема была в том что набор участников был, и когда TvT начиналось, то TvT бой не имел конца, хотя через 20 минут должно было все завершаться.
0
· 10/31/2009, 09:05 PM
В l2jserver завершением эвента занимается класс TvTStartTask в TvTManager.java. Завершает эвент метод endEvent
0
· 10/31/2009, 09:51 PM
TvT евент постоянный, он не должен завершаться... Работает он всегда только лишь стоят временные рамки, по запуску битвы...
0
· 10/31/2009, 10:05 PM
Цитата
Проблема: Если после запуска TvT во время битвы участников становится по 0 в обеих командах, то евент не завершается.
Цитата
TvT евент постоянный, он не должен завершаться... Работает он всегда только лишь стоят временные рамки, по запуску битвы
Тогда в чём проблема? :)
Под завершением я имел в виду конец цикла "регистрация, бой, награждение".
0
· 11/01/2009, 02:43 PM
VlLight: В l2jserver завершением эвента занимается класс TvTStartTask в TvTManager.java. Завершает эвент метод endEvent
класса TvTStartTask нет, и метода endEvent тоже не такого... И все-таки проблема та не в том чтобы выключить евент, а в том что битва была досрочно завершена и заного шло время до начала евента.
0
· 11/02/2009, 11:34 AM
Ладно, если с этим не можите помоч, подскажите хотяб упрощенный вариант...
в ядре за tvt отвечают 3 файла TvTEventTeam, TvTManager, и TvTEvent.
Вот в файле TvTEventTeam есть метод getParticipatedPlayerCount(), которые возвращает число игроков в команде.
в файле TvTEvent есть такие строки
Код
private static TvTEventTeam[] _teams = new TvTEventTeam[2];
Код
public static void init()
{
_teams[0] = new TvTEventTeam(Config.TVT_EVENT_TEAM_1_NAME, Config.TVT_EVENT_TEAM_1_COORDINATES);
_teams[1] = new TvTEventTeam(Config.TVT_EVENT_TEAM_2_NAME, Config.TVT_EVENT_TEAM_2_COORDINATES);
}
{
_teams[0] = new TvTEventTeam(Config.TVT_EVENT_TEAM_1_NAME, Config.TVT_EVENT_TEAM_1_COORDINATES);
_teams[1] = new TvTEventTeam(Config.TVT_EVENT_TEAM_2_NAME, Config.TVT_EVENT_TEAM_2_COORDINATES);
}
Вот подскажите мне как мне в файле TvTManager записать в переменные допустим TeamNull[0] и TeamNull[1] число игроков в командах?
0
Войдите или зарегистрируйтесь чтобы ответить
