Форум администраторов игровых серверов

Форум администраторов игровых серверов (https://forum.zone-game.info/TT.php)
-   Работа с геодатой (https://forum.zone-game.info/forumdisplay.php?f=38)
-   -   ошибка geodata (https://forum.zone-game.info/showthread.php?t=20789)

nimens 22.06.2012 16:47

ошибка geodata
 
Cборка l2 phoenix 20736

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

В гс выдаёт

Код:

Exception in thread "Pathfind Pool-1" java.lang.NullPointerException
        at l2p.gameserver.geodata.PathFind.addDebugItem(PathFind.java:383)
        at l2p.gameserver.geodata.PathFind.getNeighbour(PathFind.java:347)
        at l2p.gameserver.geodata.PathFind.handleNode(PathFind.java:182)
        at l2p.gameserver.geodata.PathFind.findPath(PathFind.java:99)
        at l2p.gameserver.geodata.PathFind.<init>(PathFind.java:73)
        at l2p.gameserver.geodata.GeoMove.findPath(GeoMove.java:28)
        at l2p.gameserver.geodata.GeoMove.findMovePath(GeoMove.java:67)
        at l2p.gameserver.model.L2Character.buildPathTo(L2Character.java:2193)
        at l2p.gameserver.model.L2Character.moveToLocation(L2Character.java:2315
)
        at l2p.gameserver.model.L2Character.moveToLocation(L2Character.java:2277
)
        at l2p.gameserver.clientpackets.MoveBackwardToLocation$StartMoveTask.run
(MoveBackwardToLocation.java:158)
        at java.util.concurrent.ThreadPoolExecutor$Worker.runTask(Unknown Source
)
        at java.util.concurrent.ThreadPoolExecutor$Worker.run(Unknown Source)
        at java.lang.Thread.run(Unknown Source)
Exception in thread "Pathfind Pool-66" java.lang.NullPointerException
        at l2p.gameserver.geodata.PathFind.addDebugItem(PathFind.java:383)
        at l2p.gameserver.geodata.PathFind.getNeighbour(PathFind.java:347)
        at l2p.gameserver.geodata.PathFind.handleNode(PathFind.java:182)
        at l2p.gameserver.geodata.PathFind.findPath(PathFind.java:99)
        at l2p.gameserver.geodata.PathFind.<init>(PathFind.java:73)
        at l2p.gameserver.geodata.GeoMove.findPath(GeoMove.java:28)
        at l2p.gameserver.geodata.GeoMove.findMovePath(GeoMove.java:67)
        at l2p.gameserver.model.L2Character.buildPathTo(L2Character.java:2193)
        at l2p.gameserver.model.L2Character.moveToLocation(L2Character.java:2315
)
        at l2p.gameserver.model.L2Character.moveToLocation(L2Character.java:2277
)
        at l2p.gameserver.clientpackets.MoveBackwardToLocation$StartMoveTask.run
(MoveBackwardToLocation.java:158)
        at java.util.concurrent.ThreadPoolExecutor$Worker.runTask(Unknown Source
)
        at java.util.concurrent.ThreadPoolExecutor$Worker.run(Unknown Source)
        at java.lang.Thread.run(Unknown Source)

geodata
Код:

#===================================================#
# Даный файл является конфигуратором геодаты.      #
#===================================================#

GeodataDebug = True
PathfindDebug = True
MultiThreadedLoad = True

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

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

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

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

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

# оптимизация размещение гео в памяти, экономит около 150Мб памяти
# для оптимизации нужно сначала нужно сгенерировать карты совпадений
# java -Xms1g -Xmx3000m -Xmn3000m -XX:PermSize=16m -cp l2pserver.jar l2p.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

гс.bat
Код:

@echo off
title L2Phoenix: Game Server Console
:start
set user=root
set pass=root
set DBname=l2pdb
set DBHost=localhost
set ctime=%TIME:~0,2%
if "%ctime:~0,1%" == " " (
set ctime=0%ctime:~1,1%
)
set ctime=%ctime%'%TIME:~3,2%'%TIME:~6,2%
echo.
echo Making a full backup into %DATE%-%ctime%_backup_full.sql
echo.
mysqldump.exe %Ignore% --add-drop-table -h %DBHost% -u %user% --password=%pass% %DBname% > backup/%DATE%-%ctime%_backup_full.sql
echo.
echo Backup complite %DATE%-%ctime%_backup_full.sql
echo.
echo %DATE% %TIME% Game server is running !!! > gameserver_is_running.tmp
echo Starting L2P Game Server.
echo.
rem ======== Optimize memory settings =======
rem Minimal size with geodata is 1.5G, w/o geo 1G
rem Make sure -Xmn value is always 1/4 the size of -Xms and -Xmx.
rem -Xms and -Xmx should always be equal.
rem ==========================================
java -server -Dfile.encoding=UTF-8 -Xms1024m -Xmx3500m -cp bsf.jar;bsh-2.0.jar;javolution.jar;c3p0-0.9.1.2.jar;mysql-connector-java-bin.jar;l2pserver.jar;jython.jar;rrd4j-2.0.5.jar;jacksum.jar l2p.gameserver.GameServer
if ERRORLEVEL 2 goto restart
if ERRORLEVEL 1 goto error
goto end
:restart
echo.
echo Admin Restart ...
echo.
goto start
:error
echo.
echo Server terminated abnormaly
echo.
:end
echo.
echo server terminated
echo.
del gameserver_is_running.tmp
pause


L2scripts-Guard 22.06.2012 18:15

Re: ошибка geodata
 
Битая гео и слепому понятно (если феникс это не самопал со своим гео движком), если не хотите менять гео, отключили сглаживание пути.

nimens 22.06.2012 19:11

Re: ошибка geodata
 
Спс iqman.Может кто нибудь посоветовать хорошую геодату для данной сборки

Mangol 23.06.2012 18:54

Re: ошибка geodata
 
Цитата:

Сообщение от nimens (Сообщение 198258)
Спс iqman.Может кто нибудь посоветовать хорошую геодату для данной сборки

Пользовался из шары гео датой всё ок.

DiagoD 23.06.2012 19:12

Re: ошибка geodata
 
Цитата:

Сообщение от iqman (Сообщение 198243)
Битая гео и слепому понятно (если феникс это не самопал со своим гео движком), если не хотите менять гео, отключили сглаживание пути.

а причем здесь гео то:redlol::redlol::redlol:
нпе бьет не из-за кривой гео, а из-за дебага геодвижка...так как нету сорсов не могу сказать точно почему но для того, что бы это решить достаточно не врубать все конфиги подрят, а хотя бы вдумыватся для чего они и врубать только нужные...

выключите дебаг и параллельную подгрузку)

GeodataDebug = False
PathfindDebug = False
MultiThreadedLoad = False

G1ta0 23.06.2012 19:12

Re: ошибка geodata
 
Exception in thread "Pathfind Pool-1" java.lang.NullPointerException
at l2p.gameserver.geodata.PathFind.addDebugItem(PathF ind.java:383)

Есть мнение что надо выключить дебаг:

GeodataDebug = False
PathfindDebug = False

Добавлено через 34 секунды
Опередили...

L2scripts-Guard 23.06.2012 19:21

Re: ошибка geodata
 
Согласен если отключить дебаг то ошибок не будет, НО:

Код:

                        if(custom_debug && Config.PATHFIND_DEBUG)
                                addDebugItem(57, 1, n.getLoc().geo2world());

Код:

                L2ItemInstance item = ItemTable.getInstance().createItem(item_id);
                if(item_count > 1)
                        item.setCount(item_count);
                debugItems.add(item);
                item.dropMe(null, loc);

т.е вы предполагаете что сервер не узнает 57-ой ИД?

Добавлено через 2 минуты
Код:

PathfindDebug = True
Код:

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

Код:

                if(debugItems == null)
                        debugItems = new GArray<L2ItemInstance>();
                else
                {
                        for(L2ItemInstance item : debugItems)
                                item.deleteMe();
                        debugItems.clear();
                }


DiagoD 23.06.2012 19:25

Re: ошибка geodata
 
Цитата:

Сообщение от iqman (Сообщение 198399)
Согласен если отключить дебаг то ошибок не будет, НО:

Код:

                        if(custom_debug && Config.PATHFIND_DEBUG)
                                addDebugItem(57, 1, n.getLoc().geo2world());

Код:

                L2ItemInstance item = ItemTable.getInstance().createItem(item_id);
                if(item_count > 1)
                        item.setCount(item_count);
                debugItems.add(item);
                item.dropMe(null, loc);

т.е вы предполагаете что сервер не узнает 57-ой ИД?

нетXD
я не поленился и скачал сорсы...
383 строка это debugItems.add(item);
если не смотря на код и логически подумать то у нас может быть только 1 причина почему бьет НПЕ, это не инициализированный debugItems...
самый простой способ это исправить - заменить на строке 376
private static GArray<L2ItemInstance> debugItems;

на

private static GArray<L2ItemInstance> debugItems = new GArray<L2ItemInstance>();

Добавлено через 6 минут
но лучше сделать не так...

debugItems.add(item); заменить на

if(debugItems == null)
debugItems = new GArray<L2ItemInstance>();
debugItems.add(item);

L2scripts-Guard 23.06.2012 20:03

Re: ошибка geodata
 
Ну не надо из меня дурака делать и закрывать глаза на вторую часть кода которую я выставил, конструктор пат-фаинд инициализирует массив, так что извини доктор, не то лекарство прописал.

helly 23.06.2012 20:19

Re: ошибка geodata
 
offtop:
Свернуть ↑Развернуть ↓


Текущее время: 20:16. Часовой пояс GMT +3.

Powered by vBulletin® Version 3.8.6
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd. Перевод: zCarot