Skip to content
La2Base
Home
DownloadsWikiForumFAQ
ruen
Sign up Login
HomeFilesWikiLogin
  • Home
  • Downloads
  • Wiki
  • FAQ
  • Contact Us
  • About
  • Rules
  • Privacy
  • Terms of Service

© 2026 la2base.com · All rights reserved

ruen
Forum/Форум для новичков[JAVA]/Tvt изменения(проверка)
Search

Tvt изменения(проверка)

7 replies164 viewsCurrently viewing: 1
V
Vo1N

User

Участник

Posts: 85

На форуме с: 08/26/2007

Репутация: +29

Рейтинг: 0

· 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();
        }
    }


Как мне показалось это основной кусок кода TvT, который постоянно повторяется в течении работы сервера.
В общем проблема собственно в том как мне в файле TvTManager.java какой-нито переменной допустим _teamNull присваивать значения колличества участников TvT...
и второе в каком из методов потом сравнивать значения и досрочно заверщать евент...

Я пытался присваивать значения и записывать условия досрочного завершения TvT в метод waiter, но проблема была в том что набор участников был, и когда TvT начиналось, то TvT бой не имел конца, хотя через 20 минут должно было все завершаться.

0
V
Vo1N

User

Участник

Posts: 85

На форуме с: 08/26/2007

Репутация: +29

Рейтинг: 0

· 10/31/2009, 08:05 PM

Проблема актуально... Неужели знатоки java исчерпали свои ресурсы=(

0
V
VlLight

User

Бывалый

Posts: 235

На форуме с: 05/20/2009

Репутация: +63

Рейтинг: 0

· 10/31/2009, 09:05 PM

В l2jserver завершением эвента занимается класс TvTStartTask в TvTManager.java. Завершает эвент метод endEvent

0
V
Vo1N

User

Участник

Posts: 85

На форуме с: 08/26/2007

Репутация: +29

Рейтинг: 0

· 10/31/2009, 09:51 PM

TvT евент постоянный, он не должен завершаться... Работает он всегда только лишь стоят временные рамки, по запуску битвы...

0
V
VlLight

User

Бывалый

Posts: 235

На форуме с: 05/20/2009

Репутация: +63

Рейтинг: 0

· 10/31/2009, 10:05 PM

Цитата
Проблема: Если после запуска TvT во время битвы участников становится по 0 в обеих командах, то евент не завершается.

Цитата
TvT евент постоянный, он не должен завершаться... Работает он всегда только лишь стоят временные рамки, по запуску битвы

Тогда в чём проблема? :)
Под завершением я имел в виду конец цикла "регистрация, бой, награждение".

0
V
Vo1N

User

Участник

Posts: 85

На форуме с: 08/26/2007

Репутация: +29

Рейтинг: 0

· 11/01/2009, 02:43 PM

VlLight: В l2jserver завершением эвента занимается класс TvTStartTask в TvTManager.java. Завершает эвент метод endEvent

класса TvTStartTask нет, и метода endEvent тоже не такого... И все-таки проблема та не в том чтобы выключить евент, а в том что битва была досрочно завершена и заного шло время до начала евента.

0
V
Vo1N

User

Участник

Posts: 85

На форуме с: 08/26/2007

Репутация: +29

Рейтинг: 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);
    }


Вот подскажите мне как мне в файле TvTManager записать в переменные допустим TeamNull[0] и TeamNull[1] число игроков в командах?

0
Войдите или зарегистрируйтесь чтобы ответить