Рейтинг темы:
  • 0 Голос(ов) - 0 в среднем
  • 1
  • 2
  • 3
  • 4
  • 5
ошибка geodata
#11
iqman Написал:Ну не надо из меня дурака делать и закрывать глаза на вторую часть кода которую я выставил, конструктор пат-фаинд инициализирует массив, так что извини доктор, не то лекарство прописал.

дооо...100%...код смотри внимательней...

когда создается new PathFind(...) на 73 строке есть вот такая шняжка...
path = findPath();, на 99 строке идет вызов метода handleNode(...), далее на 182 строке идет вызов метода getNeighbour(...) в этом методе на строке 347 идет вызов метода addDebugItem(...) собственно внутри которого и вылазит НПЕ...
Так вот, открываем свои глаза и мы видим, что весь этот процесс происходит еще до того как на 76 строке вызывается метод debugPath(...); в которм на 396 строке идет инициализация...
так, что дурака я из тебя не делаю...

Добавлено через 1 минуту
Перед тем как прописать лекарство, доктор не поленился и сделал все необходимые анализы и учел все симптомы:loltt0:

Добавлено через 8 минут
P.S. Предыдущий ответ я начал писать еще до того как ты дописал вторую часть кода, правда это все равно ничего не меняет)
open-team.ru - Freya, HighFive...
Ответ
#12
Так доктор продолжаем.

По логу я и так это вижу что куда ведет.

Цитата:Суть проблемы такова гео грузится норм.Но когда начинаешь бегать в игре чар останавливается и приходится начинать движения на стрелочках.

Сейчас смотрим еще глубже:

Код:
public boolean moveToLocation(int x_dest, int y_dest, int z_dest, int offset, boolean pathfinding)

Код:
if(buildPathTo(x_dest, y_dest, z_dest, offset, pathfinding, false))

Код:
ArrayList<ArrayList<Location>> targets = GeoMove.findMovePath(getX(), getY(), getZ(), dest.clone(), this, true, ref);

Код:
    public static ArrayList<ArrayList<Location>> findMovePath(int x, int y, int z, Location target, L2Object obj, boolean showTrace, int refIndex)
    {
        return getNodePath(findPath(x, y, z, target, obj, showTrace, refIndex), refIndex);
    }

Код:
public static ArrayList<Location> findPath(int x, int y, int z, Location target, L2Object obj, boolean showTrace, int refIndex)

Код:
PathFind n = new PathFind(x, y, z, target.x, target.y, target.z, obj, refIndex);

Собственно и конструктор, сейчас обьясни мне это как он до движение не инициализирует конструктор ПФ?

p.s. Это путь от момента когда игрок решил двинутся до инициализации ПФ.
Ответ
#13
А теперь одень очки и посмотри:

Код:
    public PathFind(int x, int y, int z, int destX, int destY, int destZ, L2Object obj, int refIndex)
    {
        this.refIndex = refIndex;

        Location startpoint = Config.PATHFIND_BOOST == 0 ? new Location(x, y, z) : GeoEngine.moveCheckWithCollision(x, y, z, destX, destY, true, refIndex);
        Location native_endpoint = new Location(destX, destY, destZ);
        Location endpoint = Config.PATHFIND_BOOST != 2 || Math.abs(destZ - z) > 200 ? native_endpoint.clone() : GeoEngine.moveCheckBackwardWithCollision(destX, destY, destZ, startpoint.x, startpoint.y, true, refIndex);

        startpoint.world2geo();
        native_endpoint.world2geo();
        endpoint.world2geo();

        startpoint.z = GeoEngine.NgetHeight(startpoint.x, startpoint.y, startpoint.z, refIndex);
        endpoint.z = GeoEngine.NgetHeight(endpoint.x, endpoint.y, endpoint.z, refIndex);

        int xdiff = Math.abs(endpoint.x - startpoint.x);
        int ydiff = Math.abs(endpoint.y - startpoint.y);

        if(xdiff == 0 && ydiff == 0)
        {
            if(Math.abs(endpoint.z - startpoint.z) < 32)
            {
                path = new ArrayList<Location>();
                path.add(0, startpoint);
            }
            return;
        }

        if((buff = PathFindBuffers.alloc(64 + 2 * Math.max(xdiff, ydiff), obj.isPlayable(), startpoint, endpoint, native_endpoint)) != null)
        {
            if(Config.PATHFIND_DEBUG && obj.isPlayer() && ((L2Player) obj).isGM())
            {
                if(debugItems != null)
                {
                    for(L2ItemInstance item : debugItems)
                        item.deleteMe();
                    debugItems.clear();
                }
                custom_debug = true;
            }

            path = findPath();

            if(Config.GEODATA_DEBUG && obj.isPlayer())
                debugPath((L2Player) obj, buff, path); // TODO дебаг не для лайва!

            buff.free();

            if(obj.isNpc())
            {
                L2NpcInstance npc = (L2NpcInstance) obj;
                npc.pathfindCount++;
                npc.pathfindTime += (System.nanoTime() - buff.useStartedNanos) / 1000000.0;
            }
        }
    }

path = findPath(); вызывается перед тем как debugPath((L2Player) obj, buff, path); // TODO дебаг не для лайва!

собственно весь процесс описанный мною происходит при вызове первого!!!
open-team.ru - Freya, HighFive...
Ответ
#14
Все вижу, ты абсалютно прав Smile
Ответ
#15
Жесткая битва Smile
Ответ


Возможно похожие темы ...
Тема Автор Ответы Просмотры Последний пост
  [GitHub] Geodata Lineage II High Five 5 PROGRAMMATOR 6 7,939 02-21-2017, 02:00 AM
Последний пост: iDarkEmpire
  Geodata & pathnode под epilogue от stazis BaldIriskin 0 3,259 02-07-2016, 10:06 PM
Последний пост: BaldIriskin
  L2jserver & geodata ccc 7 5,568 02-06-2016, 03:21 PM
Последний пост: mountaineer
  Geodata память cmd 1 5,926 07-21-2015, 04:41 PM
Последний пост: Cache
  GeoData, PathFinding, GeoEngine mountaineer 3 3,664 05-28-2015, 10:55 AM
Последний пост: gorodetskiy
  Geodata - пару вопросов Valent 0 1,696 04-01-2014, 03:04 PM
Последний пост: Valent
  Rev Soulshoutm Geodata Prablema OpineL 8 2,693 02-24-2013, 08:50 PM
Последний пост: OpineL
  Все тот же geodata in builder kloni1 15 5,686 07-02-2012, 01:49 PM
Последний пост: kloni1
  Ошибка Гео в сборке SHT Raffinary 38 8,100 06-09-2012, 02:50 AM
Последний пост: ANZO
  Geodata Goddess of Destruction deMEV 12 8,604 02-18-2012, 01:03 AM
Последний пост: R2D2

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


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