Рейтинг темы:
  • 0 Голос(ов) - 0 в среднем
  • 1
  • 2
  • 3
  • 4
  • 5
Перестал работать скилл "Печать правителя"
#1
Сборка Phenix/Open, с полгода назад все работало, а вчера на сервере владельцы замков решили поменяться замками и выяснилось, что при выделении артефакта и попытке использовать скилл "печать правителя" ничего не происходит. Совершенно ничего. Сервер ничего не пишет.
Сбой скорее всего закрался в БД, т.к. доступа к ядру у меня нет.
Предпринял: Сделал частичный вайп ивента 7 печатий (сегодня в 18-00 закончится первый период после вайпа), Обнулил результаты тв (вернул флаги в замки), снизил уровни кланов с 11-го до 10-го (повышал я, через админку).
Какая еще может быть причина того, что КЛ не может использовать скилл "Печать правителя" при осаде замка?
Заранее благодарен за помощь!

P.S. В data/ нет текстового файла world_regions.txt для удаления.
Ответ
#2
Появились подробности: Выключил геодату, персонаж куда-то ломится, потом начинает кастовать, замок переходит к его клану. Но ведь раньше работало и с включенной геодатой. Что удалось найти в шаре, содержимое TakeCastle:
Код:
public class TakeCastle extends L2Skill
{
    @Override
    public boolean checkCondition(L2Character activeChar, L2Character target, boolean forceUse, boolean dontMove, boolean first)
    {
        if(!super.checkCondition(activeChar, target, forceUse, dontMove, first))
            return false;

        if(activeChar == null || !activeChar.isPlayer())
            return false;

        L2Player player = (L2Player) activeChar;
        if(player.getClan() == null || !player.isClanLeader())
            return false;

        Siege siege = SiegeManager.getSiege(activeChar, true);
        if(siege == null || siege.getSiegeUnit().getType() != ResidenceType.Castle)
            return false;
        if(siege.getAttackerClan(player.getClan()) == null)
            return false;
        if(player.isMounted())
            return false;

        if(!player.isInRangeZ(target, 120))
        {
            player.sendPacket(Msg.YOUR_TARGET_IS_OUT_OF_RANGE);
            return false;
        }

        if(first)
            for(SiegeClan sc : siege.getDefenderClans().values())
            {
                L2Clan clan = sc.getClan();
                if(clan != null)
                    clan.broadcastToOnlineMembers(Msg.THE_OPPONENT_CLAN_HAS_BEGUN_TO_ENGRAVE_THE_RULER);
            }

        return true;
    }

    public TakeCastle(StatsSet set)
    {
        super(set);
    }

    @Override
    public void useSkill(L2Character activeChar, GArray<L2Character> targets)
    {
        for(L2Character target : targets)
            if(target != null)
            {
                if(!target.isArtefact())
                    continue;
                L2Player player = (L2Player) activeChar;
                Siege siege = SiegeManager.getSiege(activeChar, true);
                if(siege != null)
                {
                    siege.announceToPlayer(new SystemMessage(SystemMessage.CLAN_S1_HAS_SUCCEEDED_IN_ENGRAVING_THE_RULER).addString(player.getClan().getName()), false, true);
                    siege.Engrave(player.getClan(), target.getObjectId());
                }
            }
    }
}
cast_range у скилла 246 "Печать правителя" - 150, с запасом.
На скрине видно, что артефакт и персонаж очень близко:
[Изображение: Shot00104J_1428929_26250115.jpg]
Содержимое конфига геодаты не менялось:
Код:
#===================================================#
# Даный файл является конфигуратором геодаты.       #
#===================================================#
GeodataEnabled = True
GeodataDebug = false
PathfindDebug = false
MultiThreadedLoad = false

GeoFirstX = 11
GeoFirstY = 10
GeoLastX = 26
GeoLastY = 26

# Паттерн для файлов геодаты.
# Файлы что подойдут под паттерн будут считатся файлами геодаты
GeoFilesPattern = (\\d{2}_\\d{2})\\.l2j

# Обрабатывать ли двери в геодате
# Настройка влияет на ГеймСервер
AllowDoors = True

# Разрешать игроку падать с горизонтальной стены если он кликает по самой стене
AllowFallFromWalls = False

# Движение клавиатурой (стрелочками)
AllowMoveWithKeyboard = True

# оптимизация размещение гео в памяти, экономит около 150Мб памяти
# для оптимизации нужно сначала нужно сгенерировать карты совпадений
# java -Xms1g -Xmx1400m -Xmn192m -XX:PermSize=16m -cp l2openserver.jar l2open.debug.benchmark.GeoMatchesGenerator
CompactGeoData = False

# Мобы срезают углы, за счет чего нагрузка падает в несколько раз
# Могут застревать на поворотах и некрасиво обходить деревья
SimplePathFindForMobs = True

# Диагональный поиск. Возможно тратит больше ресурсов.
PathFindDiagonal = True

# Сглаживает путь.
# Стоит отключать только для дебага.
PathClean = True

# Сильно ускоряет поиск, как влияет на качество неизвестно
# 0 - отключить, 1 - только начало пути, 2 - начало и конец пути
PathFindBoost = 2

# Максимальная высота ступеньки для поиска пути
PathFindMaxZDiff = 32

# Максимальная высота ступеньки для геодаты
MaxZDiff = 64

# Минимальная разница между слоями
MinLayerHeight = 64

# Базовый вес ячейки
Weight0 = 0.5

# Вес "плохих" клеток первого плана
Weight1 = 2

# Вес "плохих" клеток второго плана
Weight2 = 1

# Настройка буфферов для поиска пути
PathFindBuffers = 8x100;8x128;8x192;4x256;2x320;2x384;1x500

# Прибавка к Z для пакетов
ClientZShift = 16

# Глубина видимости (количество видимых регионов). От 1 и более.
ViewOffset = 1

# Размер региона. Менять с учетом ViewOffset.
DivBy = 2048
DivByForZ = 1024

# Номера квадратов геодаты с вертикальным разделением регионов (густонаселенные многоэтажные локации)
# Cruma Tower, Swamp of Screams, Garden of Eva, Tower of Insolence, Forge of the Gods, Imperial Tomb, Giant's Cave
VerticalSplitRegions = 20_21;22_16;22_25;23_18;25_14;25_15;25_19;24_23

# Отложенный спавн
DelayedSpawn = False
Попробовал выстрелить по артефакту из лука или нанести магический урон через CTRL - не получается. Возможно именно в этом причина сбоя в работе скилла. Ваши советы:
Ответ
#3
ntking Написал:Появились подробности: Выключил геодату, персонаж куда-то ломится, потом начинает кастовать, замок переходит к его клану. Но ведь раньше работало и с включенной геодатой. Что удалось найти в шаре, содержимое TakeCastle:
Код:
public class TakeCastle extends L2Skill
{
    @Override
    public boolean checkCondition(L2Character activeChar, L2Character target, boolean forceUse, boolean dontMove, boolean first)
    {
        if(!super.checkCondition(activeChar, target, forceUse, dontMove, first))
            return false;

        if(activeChar == null || !activeChar.isPlayer())
            return false;

        L2Player player = (L2Player) activeChar;
        if(player.getClan() == null || !player.isClanLeader())
            return false;

        Siege siege = SiegeManager.getSiege(activeChar, true);
        if(siege == null || siege.getSiegeUnit().getType() != ResidenceType.Castle)
            return false;
        if(siege.getAttackerClan(player.getClan()) == null)
            return false;
        if(player.isMounted())
            return false;

        if(!player.isInRangeZ(target, 120))
        {
            player.sendPacket(Msg.YOUR_TARGET_IS_OUT_OF_RANGE);
            return false;
        }

        if(first)
            for(SiegeClan sc : siege.getDefenderClans().values())
            {
                L2Clan clan = sc.getClan();
                if(clan != null)
                    clan.broadcastToOnlineMembers(Msg.THE_OPPONENT_CLAN_HAS_BEGUN_TO_ENGRAVE_THE_RULER);
            }

        return true;
    }

    public TakeCastle(StatsSet set)
    {
        super(set);
    }

    @Override
    public void useSkill(L2Character activeChar, GArray<L2Character> targets)
    {
        for(L2Character target : targets)
            if(target != null)
            {
                if(!target.isArtefact())
                    continue;
                L2Player player = (L2Player) activeChar;
                Siege siege = SiegeManager.getSiege(activeChar, true);
                if(siege != null)
                {
                    siege.announceToPlayer(new SystemMessage(SystemMessage.CLAN_S1_HAS_SUCCEEDED_IN_ENGRAVING_THE_RULER).addString(player.getClan().getName()), false, true);
                    siege.Engrave(player.getClan(), target.getObjectId());
                }
            }
    }
}
cast_range у скилла 246 "Печать правителя" - 150, с запасом.
На скрине видно, что артефакт и персонаж очень близко:
[Изображение: Shot00104J_1428929_26250115.jpg]
Содержимое конфига геодаты не менялось:
Код:
#===================================================#
# Даный файл является конфигуратором геодаты.       #
#===================================================#
GeodataEnabled = True
GeodataDebug = false
PathfindDebug = false
MultiThreadedLoad = false

GeoFirstX = 11
GeoFirstY = 10
GeoLastX = 26
GeoLastY = 26

# Паттерн для файлов геодаты.
# Файлы что подойдут под паттерн будут считатся файлами геодаты
GeoFilesPattern = (\\d{2}_\\d{2})\\.l2j

# Обрабатывать ли двери в геодате
# Настройка влияет на ГеймСервер
AllowDoors = True

# Разрешать игроку падать с горизонтальной стены если он кликает по самой стене
AllowFallFromWalls = False

# Движение клавиатурой (стрелочками)
AllowMoveWithKeyboard = True

# оптимизация размещение гео в памяти, экономит около 150Мб памяти
# для оптимизации нужно сначала нужно сгенерировать карты совпадений
# java -Xms1g -Xmx1400m -Xmn192m -XX:PermSize=16m -cp l2openserver.jar l2open.debug.benchmark.GeoMatchesGenerator
CompactGeoData = False

# Мобы срезают углы, за счет чего нагрузка падает в несколько раз
# Могут застревать на поворотах и некрасиво обходить деревья
SimplePathFindForMobs = True

# Диагональный поиск. Возможно тратит больше ресурсов.
PathFindDiagonal = True

# Сглаживает путь.
# Стоит отключать только для дебага.
PathClean = True

# Сильно ускоряет поиск, как влияет на качество неизвестно
# 0 - отключить, 1 - только начало пути, 2 - начало и конец пути
PathFindBoost = 2

# Максимальная высота ступеньки для поиска пути
PathFindMaxZDiff = 32

# Максимальная высота ступеньки для геодаты
MaxZDiff = 64

# Минимальная разница между слоями
MinLayerHeight = 64

# Базовый вес ячейки
Weight0 = 0.5

# Вес "плохих" клеток первого плана
Weight1 = 2

# Вес "плохих" клеток второго плана
Weight2 = 1

# Настройка буфферов для поиска пути
PathFindBuffers = 8x100;8x128;8x192;4x256;2x320;2x384;1x500

# Прибавка к Z для пакетов
ClientZShift = 16

# Глубина видимости (количество видимых регионов). От 1 и более.
ViewOffset = 1

# Размер региона. Менять с учетом ViewOffset.
DivBy = 2048
DivByForZ = 1024

# Номера квадратов геодаты с вертикальным разделением регионов (густонаселенные многоэтажные локации)
# Cruma Tower, Swamp of Screams, Garden of Eva, Tower of Insolence, Forge of the Gods, Imperial Tomb, Giant's Cave
VerticalSplitRegions = 20_21;22_16;22_25;23_18;25_14;25_15;25_19;24_23

# Отложенный спавн
DelayedSpawn = False
Попробовал выстрелить по артефакту из лука или нанести магический урон через CTRL - не получается. Возможно именно в этом причина сбоя в работе скилла. Ваши советы:

Но в таргет возможно взять артефакт?
Ответ
#4
//Понял что слишком костыльно.
//Deleted.
Ответ
#5
Цитата:Но в таргет возможно взять артефакт?
GGteam, да, конечно.
Добавлю еще: Я ТП-шнулся за артефакт (возьмем примером Дион), и находясь сзади него, при включенной геодате - кастует. Но только я перехожу в левый бок или на перед артефакта не кастует, даже находясь на площадке в непосредственной близости, где стоит артефакт.
Я пробовал чистить геодату спереди атрефакта, убирал полностью условия, не помогает.
Единственное, что мне пришло в голову, что артефакты тупо застряли в текстурах и их "не видно" спереди. Это бы можно было принять как решение, если бы не артефакты Руны или того же Годдарда, где к ним можно подойти со всех сторон. Пробовал спавнить артефакты выше на сотку, по логике вещей должно было помочь, но нет, проблему не решило.

Еще раз повторюсь: не так давно такой проблемы не было. Ума не приложу, что могло произойти с геодатой или геодвижком (к коду которого у меня нет доступа). Максимум, что могу вспомнить - это я добавлял в геодату пару квадратов Грации, которые начали использовать ну и мелкие фиксы провалов по всей карте.

Персонаж по какой-то причине не видит артефакт, даже не бежит к нему. Если сесть на выверну - на выверне пытается подлететь к нему, но не кастует. Т.е. фактически логика сервера: артефакт находится в закрытой с 4-х сторон "комнате", в которую нет прямой видимости, а через "стены" соответственно скилл не активируется. Как такое произошло - понять и решить проблему не моих силах((( Возможно, если переставить артефакты на пол - все заработает. Но это очень не эстетично.
Ответ
#6
Решение найдено. Причиной возникновения данного сбоя был я и моя правка скиллов (как раз с полгода назад я занимался парсингом с pts). На сервере маги довольно дальнобойными были и я резанул всем дальность магии на 100. Вот и получилось, что попросту не хватало того самого cast_range=150 с запасом, т.к. фактически он был 50 и этого оказалось мало, чтобы кастовать с балконов. Непонятно только одно, почему сервер не предупреждал о том, что расстояние до артефакта слишком большое, ведь этот код это предусматривает:
Код:
        if(!player.isInRangeZ(target, 120))
        {
            player.sendPacket(Msg.YOUR_TARGET_IS_OUT_OF_RANGE);
            return false;
        }
Теперь это неважно. Проблема решена, извините за беспокойство.
Ответ
#7
ntking Написал:Решение найдено. Причиной возникновения данного сбоя был я и моя правка скиллов (как раз с полгода назад я занимался парсингом с pts). На сервере маги довольно дальнобойными были и я резанул всем дальность магии на 100.
Нормально так :redlol:
[Изображение: 4e38c909fcd08c5fcdf363b54a62.png]
Ответ


Возможно похожие темы ...
Тема Автор Ответы Просмотры Последний пост
  Удаляется скилл после рестарта перса ntking 2 1,627 09-10-2018, 04:47 PM
Последний пост: ntking
  [Хелп] Одеть 5 предметов - получить скилл Empatic 4 1,465 07-05-2014, 03:39 PM
Последний пост: Empatic
  Скилл в скилле vokforever 11 2,581 11-15-2013, 07:58 PM
Последний пост: Auri
  Скилл Landver 12 3,608 03-16-2013, 10:04 PM
Последний пост: Krasavella
  как скрыть скилл SlaeR 10 2,911 03-03-2012, 11:35 PM
Последний пост: Gaikotsu
  [share] скилл Trade Zone Teleport Gaikotsu 8 2,625 02-24-2012, 12:02 AM
Последний пост: Mangol
  ГС и ЛС не хотят вместе работать Bobo92 5 2,332 06-07-2011, 01:44 PM
Последний пост: TieLay
  Скилл Hide работает не корректно krisadr 13 3,906 05-30-2011, 09:43 PM
Последний пост: ANZO
  Как добавить скилл новому самону? kraleksandr 1 2,958 04-18-2011, 07:23 AM
Последний пост: VISTALL
  Перестал запускатся сервер. zippel 2 1,671 02-09-2011, 02:54 AM
Последний пост: Ozzy

Перейти к форуму:


Пользователи, просматривающие эту тему: 1 Гость(ей)