Replaced GeoData engine with newest version.

This commit is contained in:
MobiusDev
2017-07-19 23:56:27 +00:00
parent dc770c4a85
commit 40563ace6c
62 changed files with 4212 additions and 3499 deletions

View File

@@ -0,0 +1,75 @@
# ---------------------------------------------------------------------------
# GeoData
# ---------------------------------------------------------------------------
# Pathfinding options:
# 0 = Disabled
# 1 = Enabled using path node files
# 2 = Enabled using geodata cells at runtime
# Default: 0
PathFinding = 0
# Pathnode directory
# Default: data/pathnode
PathnodeDirectory = data/pathnode
# Pathfinding array buffers configuration
PathFindBuffers = 100x6;128x6;192x6;256x4;320x4;384x4;500x2
# Weight for nodes without obstacles far from walls
LowWeight = 0.5
# Weight for nodes near walls
MediumWeight = 2
# Weight for nodes with obstacles
HighWeight = 3
# Angle paths will be more "smart", but in cost of higher CPU utilization
AdvancedDiagonalStrategy = True
# Weight for diagonal movement. Used only with AdvancedDiagonalStrategy = True
# Default: LowWeight * sqrt(2)
DiagonalWeight = 0.707
# Maximum number of LOS postfilter passes, 0 will disable postfilter.
# Default: 3
MaxPostfilterPasses = 3
# Path debug function.
# Nodes known to pathfinder will be displayed as adena, constructed path as antidots.
# Number of the items show node cost * 10
# Potions display path after first stage filter
# Red potions - actual waypoints. Green potions - nodes removed by LOS postfilter
# This function FOR DEBUG PURPOSES ONLY, never use it on the live server !
DebugPath = False
# True = Loads GeoData buffer's content into physical memory.
# False = Does not necessarily imply that the GeoData buffer's content is not resident in physical memory.
# Default: True
ForceGeoData = True
# This setting controls Client <--> Server Player coordinates synchronization:
# -1 - Will synchronize only Z from Client --> Server. Default when no geodata.
# 1 - Synchronization Client --> Server only. Using this option (without geodata) makes it more difficult for players to bypass obstacles.
# 2 - Intended for geodata (at least with cell-level pathfinding, otherwise can you try -1).
# Server sends validation packet if client goes too far from server calculated coordinates.
# Default: -1
CoordSynchronize = -1
# Geodata files folder
GeoDataPath = ./data/geodata
# True: Try to load regions not specified below(won't disturb server startup when file does not exist)
# False: Don't load any regions other than the ones specified with True below
TryLoadUnspecifiedRegions = True
# List of regions to be required to load
# eg.:
# Both regions required
# 22_22=True
# 19_20=true
# Exclude region from loading
# 25_26=false
# True: Region is required for the server to startup
# False: Region is not considered to be loaded

View File

@@ -1,16 +0,0 @@
# Geodata files folder
geodataPath = ./data/geodata
# True: Try to load regions not specified below(won't disturb server startup when file does not exist)
# False: Don't load any regions other than the ones specified with True below
tryLoadUnspecifiedRegions = True
# List of regions to be required to load
# eg.:
# Both regions required
# 22_22=True
# 19_20=true
# Exclude region from loading
# 25_26=false
# True: Region is required for the server to startup
# False: Region is not considered to be loaded

View File

@@ -376,9 +376,8 @@ admin_geo_pos = 100
admin_geo_spawn_pos = 100
admin_geo_can_see = 100
admin_geo_can_move = 100
admin_geoeditor_connect = 100
admin_geoeditor_join = 100
admin_geoeditor_leave = 100
admin_geogrid = 100
admin_geomap =100
###############
### MANOR ###

View File

@@ -5,7 +5,6 @@
Debug = False
Assert = False
Developer = False
AcceptGeoeditorConn = False
# if true the server will be a test server (listed by clients setted up to list testserver)
TestServer = False
@@ -253,77 +252,6 @@ GridsAlwaysOn = False
GridNeighborTurnOnTime = 1
GridNeighborTurnOffTime = 90
# =================================================================
# GeoData & PathNode
# =================================================================
# GeoData options:
# 0 = GeoData and PathFinding OFF (default)
# 1 = GeoData used to check Line Of Sight (LOS) targetting and
# L2Playable movement. You need to download files for data/geodata folder.
# Monsters can pass walls but not aggro through them.
# 2 = Full GeoData enabled. Includes PathFinding (requires also /data/pathnode
# files if CellPathFinding not enabled) and all character moves go through
# geodata checks (if a mob passes a wall, pathfinding didn't find a route
# but we allow attack and returning home).
# Recommended server memory minimum 2 GB, rather 3 GB.
GeoData = 0
# GeoData driver to use
# Default: com.l2j.geodriver.GeoDriver
GeoDataDriver = com.l2j.geodriver.GeoDriver
# Cell-level pathfinding, produces more accurate routes but is (maybe 10x)
# heavier to calculate. Recommended for small servers at least. If False,
# pathnode files are used. Uses a max nr of nodes in calculation which can
# be adjusted in the algorithm if it needs to be faster.
CellPathFinding = False
# Pathnode directory folder
PathnodeDirectory = ./data/pathnode
# Pathfinding array buffers configuration
PathFindBuffers = 100x6;128x6;192x6;256x4;320x4;384x4;500x2
# Weight for nodes without obstacles far from walls
LowWeight = 0.5
# Weight for nodes near walls
MediumWeight = 2
# Weight for nodes with obstacles
HighWeight = 3
# Angle paths will be more "smart", but in cost of higher CPU utilization
AdvancedDiagonalStrategy = True
# Weight for diagonal movement. Used only with AdvancedDiagonalStrategy = True
# Default: LowWeight * sqrt(2)
DiagonalWeight = 0.707
# Maximum number of LOS postfilter passes, 0 will disable postfilter.
# Default: 3
MaxPostfilterPasses = 3
# Path debug function.
# Nodes known to pathfinder will be displayed as adena, constructed path as antidots.
# Number of the items show node cost * 10
# Potions display path after first stage filter
# Red potions - actual waypoints. Green potions - nodes removed by LOS postfilter
# This function FOR DEBUG PURPOSES ONLY, never use it on the live server!
DebugPath = False
#[True]Loads GeoData buffer's content into physical memory.
#[False] Does not necessarily imply that the GeoData buffer's content is not resident in physical memory.
ForceGeodata = True
# This is setting of Client <--> Server Player coordinates synchronization,
# -1 - Will synchronize only Z from Client --> Server. Default when no geodata.
# 1 - Synchronization Client --> Server only. Using this option (without geodata) it is more difficult for players to bypass obstacles
# 2 - Intended for geodata (at least when cell-level pathfinding, otherwise can try -1 also)!
# Server sends validation packet if client goes too far from server calculated coordinates.
CoordSynchronize = -1
# Falling Damage
# ---------------------------------------------------------------------------
# Allow characters to receive damage from falling.

View File

@@ -23,9 +23,9 @@ import java.util.ArrayList;
import java.util.Collection;
import java.util.List;
import com.l2jmobius.gameserver.GeoData;
import com.l2jmobius.gameserver.ThreadPoolManager;
import com.l2jmobius.gameserver.datatables.SkillTable;
import com.l2jmobius.gameserver.geodata.GeoData;
import com.l2jmobius.gameserver.instancemanager.GrandBossManager;
import com.l2jmobius.gameserver.model.L2Character;
import com.l2jmobius.gameserver.model.L2Effect;
@@ -165,24 +165,20 @@ public class Baium extends Quest
final L2GrandBossInstance baium = (L2GrandBossInstance) addSpawn(LIVE_BAIUM, loc_x, loc_y, loc_z, heading, false, 0);
GrandBossManager.getInstance().addBoss(baium);
final L2NpcInstance _baium = baium;
ThreadPoolManager.getInstance().scheduleGeneral(new Runnable()
ThreadPoolManager.getInstance().scheduleGeneral(() ->
{
@Override
public void run()
try
{
try
{
_baium.setCurrentHpMp(hp, mp);
_baium.setIsInvul(true);
_baium.setIsImmobilized(true);
_baium.setRunning();
_baium.broadcastPacket(new SocialAction(_baium.getObjectId(), 2));
startQuestTimer("baium_wakeup", 15000, _baium, null);
}
catch (final Exception e)
{
e.printStackTrace();
}
_baium.setCurrentHpMp(hp, mp);
_baium.setIsInvul(true);
_baium.setIsImmobilized(true);
_baium.setRunning();
_baium.broadcastPacket(new SocialAction(_baium.getObjectId(), 2));
startQuestTimer("baium_wakeup", 15000, _baium, null);
}
catch (final Exception e)
{
e.printStackTrace();
}
}, 100L);
}
@@ -219,20 +215,16 @@ public class Baium extends Quest
startQuestTimer("baium_despawn", 60000, npc, null, true);
startQuestTimer("skill_range", 500, npc, null, true);
final L2NpcInstance baium = npc;
ThreadPoolManager.getInstance().scheduleGeneral(new Runnable()
ThreadPoolManager.getInstance().scheduleGeneral(() ->
{
@Override
public void run()
try
{
try
{
baium.setIsInvul(false);
baium.setIsImmobilized(false);
}
catch (final Exception e)
{
e.printStackTrace();
}
baium.setIsInvul(false);
baium.setIsImmobilized(false);
}
catch (final Exception e)
{
e.printStackTrace();
}
}, 11100L);
@@ -313,23 +305,19 @@ public class Baium extends Quest
final L2GrandBossInstance baium = (L2GrandBossInstance) addSpawn(LIVE_BAIUM, npc);
GrandBossManager.getInstance().addBoss(baium);
final L2NpcInstance _baium = baium;
ThreadPoolManager.getInstance().scheduleGeneral(new Runnable()
ThreadPoolManager.getInstance().scheduleGeneral(() ->
{
@Override
public void run()
try
{
try
{
_baium.setIsInvul(true);
_baium.setIsImmobilized(true);
_baium.setRunning();
_baium.broadcastPacket(new SocialAction(_baium.getObjectId(), 2));
startQuestTimer("baium_wakeup", 15000, _baium, null);
}
catch (final Exception e)
{
e.printStackTrace();
}
_baium.setIsInvul(true);
_baium.setIsImmobilized(true);
_baium.setRunning();
_baium.broadcastPacket(new SocialAction(_baium.getObjectId(), 2));
startQuestTimer("baium_wakeup", 15000, _baium, null);
}
catch (final Exception e)
{
e.printStackTrace();
}
}, 100L);
}

View File

@@ -16,8 +16,8 @@
*/
package ai.individual;
import com.l2jmobius.gameserver.GeoData;
import com.l2jmobius.gameserver.ai.CtrlIntention;
import com.l2jmobius.gameserver.geodata.GeoData;
import com.l2jmobius.gameserver.model.L2CharPosition;
import com.l2jmobius.gameserver.model.L2Character;
import com.l2jmobius.gameserver.model.L2Summon;