mirror of
https://github.com/mangosfour/server.git
synced 2025-12-17 16:37:00 +00:00
[10596] Apply restrictions to vmap options.
After switch to new vmap version and later height check code chnages some vmap related options now outdated. * Option vmap.ignoreMapIds removed. You can't now diable vmaps use for selected maps. * Option vmap.enableHeight must be always enabled for normal work server and server at startup now pring error if it's diabled. Option still supported just for special work cases (debug, new clients testing, etc). Possible soon option vmap.ignoreSpellIds also will be removed, because like los ignore checks must be in spell code instead options.
This commit is contained in:
parent
926381824f
commit
304bd3d7b6
6 changed files with 8 additions and 52 deletions
|
|
@ -857,15 +857,17 @@ void World::LoadConfigSettings(bool reload)
|
|||
setConfig(CONFIG_BOOL_VMAP_INDOOR_CHECK, "vmap.enableIndoorCheck", true);
|
||||
bool enableLOS = sConfig.GetBoolDefault("vmap.enableLOS", false);
|
||||
bool enableHeight = sConfig.GetBoolDefault("vmap.enableHeight", false);
|
||||
std::string ignoreMapIds = sConfig.GetStringDefault("vmap.ignoreMapIds", "");
|
||||
std::string ignoreSpellIds = sConfig.GetStringDefault("vmap.ignoreSpellIds", "");
|
||||
|
||||
if (!enableHeight)
|
||||
sLog.outError("VMAP height use disabled! Creatures movements and other things will be in broken state.");
|
||||
|
||||
VMAP::VMapFactory::createOrGetVMapManager()->setEnableLineOfSightCalc(enableLOS);
|
||||
VMAP::VMapFactory::createOrGetVMapManager()->setEnableHeightCalc(enableHeight);
|
||||
VMAP::VMapFactory::createOrGetVMapManager()->preventMapsFromBeingUsed(ignoreMapIds.c_str());
|
||||
VMAP::VMapFactory::preventSpellsFromBeingTestedForLoS(ignoreSpellIds.c_str());
|
||||
sLog.outString( "WORLD: VMap support included. LineOfSight:%i, getHeight:%i",enableLOS, enableHeight);
|
||||
sLog.outString( "WORLD: VMap support included. LineOfSight:%i, getHeight:%i, indoorCheck:%i",
|
||||
enableLOS, enableHeight, getConfig(CONFIG_BOOL_VMAP_INDOOR_CHECK) ? 1 : 0);
|
||||
sLog.outString( "WORLD: VMap data directory is: %svmaps",m_dataPath.c_str());
|
||||
sLog.outString( "WORLD: VMap config keys are: vmap.enableLOS, vmap.enableHeight, vmap.ignoreMapIds, vmap.ignoreSpellIds");
|
||||
}
|
||||
|
||||
/// Initialize the World
|
||||
|
|
|
|||
|
|
@ -137,12 +137,6 @@ BindIP = "0.0.0.0"
|
|||
# Default: 0 (disable)
|
||||
# 1 (enable)
|
||||
#
|
||||
# vmap.ignoreMapIds
|
||||
# Map id that will be ignored by VMaps
|
||||
# List of ids with delimiter ','
|
||||
# If more then one id is defined and spaces are included, the string has to be enclosed by "
|
||||
# Example: "369,0,1,530"
|
||||
#
|
||||
# vmap.ignoreSpellIds
|
||||
# These spells are ignored for LoS calculation
|
||||
# List of ids with delimiter ','
|
||||
|
|
|
|||
|
|
@ -1,4 +1,4 @@
|
|||
#ifndef __REVISION_NR_H__
|
||||
#define __REVISION_NR_H__
|
||||
#define REVISION_NR "10595"
|
||||
#define REVISION_NR "10596"
|
||||
#endif // __REVISION_NR_H__
|
||||
|
|
|
|||
|
|
@ -89,12 +89,6 @@ namespace VMAP
|
|||
|
||||
virtual std::string getDirFileName(unsigned int pMapId, int x, int y) const =0;
|
||||
/**
|
||||
Block maps from being used.
|
||||
parameter: String of map ids. Delimiter = ","
|
||||
e.g.: "0,1,530"
|
||||
*/
|
||||
virtual void preventMapsFromBeingUsed(const char* pMapIdString) =0;
|
||||
/**
|
||||
Query world model area info.
|
||||
\param z gets adjusted to the ground height for which this are info is valid
|
||||
*/
|
||||
|
|
|
|||
|
|
@ -87,43 +87,12 @@ namespace VMAP
|
|||
return fname.str();
|
||||
}
|
||||
|
||||
//=========================================================
|
||||
/**
|
||||
Block maps from being used.
|
||||
parameter: String of map ids. Delimiter = ","
|
||||
e.g.: "0,1,590"
|
||||
*/
|
||||
|
||||
void VMapManager2::preventMapsFromBeingUsed(const char* pMapIdString)
|
||||
{
|
||||
iIgnoreMapIds.clear();
|
||||
if (pMapIdString != NULL)
|
||||
{
|
||||
std::string map_str;
|
||||
std::stringstream map_ss;
|
||||
map_ss.str(std::string(pMapIdString));
|
||||
while (std::getline(map_ss, map_str, ','))
|
||||
{
|
||||
std::stringstream ss2(map_str);
|
||||
int map_num = -1;
|
||||
ss2 >> map_num;
|
||||
if (map_num >= 0)
|
||||
{
|
||||
DETAIL_LOG("Ignoring Map %i for VMaps", map_num);
|
||||
iIgnoreMapIds[map_num] = true;
|
||||
// unload map in case it is loaded
|
||||
unloadMap(map_num);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
//=========================================================
|
||||
|
||||
VMAPLoadResult VMapManager2::loadMap(const char* pBasePath, unsigned int pMapId, int x, int y)
|
||||
{
|
||||
VMAPLoadResult result = VMAP_LOAD_RESULT_IGNORED;
|
||||
if (isMapLoadingEnabled() && !iIgnoreMapIds.count(pMapId))
|
||||
if (isMapLoadingEnabled())
|
||||
{
|
||||
if (_loadMap(pMapId, pBasePath, x, y))
|
||||
result = VMAP_LOAD_RESULT_OK;
|
||||
|
|
|
|||
|
|
@ -67,8 +67,6 @@ namespace VMAP
|
|||
// Tree to check collision
|
||||
ModelFileMap iLoadedModelFiles;
|
||||
InstanceTreeMap iInstanceMapTrees;
|
||||
// UNORDERED_MAP<unsigned int , bool> iMapsSplitIntoTiles;
|
||||
UNORDERED_MAP<unsigned int , bool> iIgnoreMapIds;
|
||||
|
||||
bool _loadMap(uint32 pMapId, const std::string &basePath, uint32 tileX, uint32 tileY);
|
||||
/* void _unloadMap(uint32 pMapId, uint32 x, uint32 y); */
|
||||
|
|
@ -96,7 +94,6 @@ namespace VMAP
|
|||
|
||||
bool processCommand(char *pCommand) { return false; } // for debug and extensions
|
||||
|
||||
void preventMapsFromBeingUsed(const char* pMapIdString);
|
||||
bool getAreaInfo(unsigned int pMapId, float x, float y, float &z, uint32 &flags, int32 &adtId, int32 &rootId, int32 &groupId) const;
|
||||
bool GetLiquidLevel(uint32 pMapId, float x, float y, float z, uint8 ReqLiquidType, float &level, float &floor, uint32 &type) const;
|
||||
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue