/** @file */ // ------------------------------------------------------------------------- // object (SF) Spawn Flags (use to setup behavior and/ or trigger functionality) // const int ECE_NONE = 0; const int ECE_SETUP = 2; // process full entity setup (when creating NEW entity) const int ECE_TRACE = 4; // trace under entity when being placed (from the point of creation) const int ECE_CENTER = 8; // use center from shape (model) for placement const int ECE_UPDATEPATHGRAPH = 32; // update navmesh when object placed upon it const int ECE_ROTATIONFLAGS = 512; // enable rotation flags for object placement const int ECE_CREATEPHYSICS = 1024; // create collision envelope and related physics data (if object has them) const int ECE_INITAI = 2048; // init ai const int ECE_AIRBORNE = 4096; // create flying unit in the air const int ECE_EQUIP_ATTACHMENTS = 8192; // equip with configured ATTACHMENTS const int ECE_EQUIP_CARGO = 16384; // equip with configured CARGO const int ECE_EQUIP = 24576; // equip with configured (ATTACHMENTS + CARGO) const int ECE_EQUIP_CONTAINER = 2097152; // populate DE/ group CONTAINER during spawn const int ECE_LOCAL = 1073741824; // create object locally const int ECE_NOSURFACEALIGN = 262144; // do not align object on surface/ terrain const int ECE_KEEPHEIGHT = 524288; // keep height when creating object (do not use trace or placement on surface) const int ECE_NOLIFETIME = 4194304; // do not set lifetime when creating the object const int ECE_NOPERSISTENCY_WORLD = 8388608; // do not save this object in world const int ECE_NOPERSISTENCY_CHAR = 16777216; // do not save this object in character const int ECE_DYNAMIC_PERSISTENCY = 33554432; // spawns in without persistency, once player takes it, persistency will be enabled if available // note: use predefined combination when not solving something specific // const int ECE_IN_INVENTORY = 787456; // ECE_CREATEPHYSICS|ECE_KEEPHEIGHT|ECE_NOSURFACEALIGN const int ECE_PLACE_ON_SURFACE = 1060; // ECE_CREATEPHYSICS|ECE_UPDATEPATHGRAPH|ECE_TRACE const int ECE_OBJECT_SWAP = 787488; // ECE_CREATEPHYSICS|ECE_UPDATEPATHGRAPH|ECE_KEEPHEIGHT|ECE_NOSURFACEALIGN const int ECE_FULL = 25126; // ECE_SETUP|ECE_TRACE|ECE_ROTATIONFLAGS|ECE_UPDATEPATHGRAPH|ECE_EQUIP // ------------------------------------------------------------------------- // object (RF) Rotation Flags (use to force and/ or invoke placement rotation) // const int RF_NONE = 0; const int RF_FRONT = 1; // front side placement const int RF_TOP = 2; // top side placement const int RF_LEFT = 4; // left side placement const int RF_RIGHT = 8; // right side placement const int RF_BACK = 16; // back side placement const int RF_BOTTOM = 32; // bottom side placement const int RF_ALL = 63; // RF_FRONT|RF_TOP|RF_LEFT|RF_RIGHT|RF_BACK|RF_BOTTOM const int RF_IGNORE = 64; // ignore placement RF flags - object will spawn as model was created const int RF_TOPBOTTOM = 34; // RF_TOP|RF_BOTTOM const int RF_LEFTRIGHT = 12; // RF_LEFT|RF_RIGHT const int RF_FRONTBACK = 17; // RF_FRONT|RF_BACK const int RF_RANDOMROT = 64; // allow random rotation around axis when placing const int RF_ORIGINAL = 128; // use default placement setuped on object in config const int RF_DECORRECTION = 256; // angle correction when spawning InventoryItem at Building angle const int RF_DEFAULT = 512; // use default placement setuped on object in config // ------------------------------------------------------------------------- //! Categories for CEApi.EconomyLog class EconomyLogCategories { private void EconomyLogCategories(); private void ~EconomyLogCategories(); const string Economy = "economy"; const string EconomyRespawn = "economy_respawn"; const string RespawnQueue = "respawn_queue"; const string Container = "container"; const string Matrix = "matrix"; const string UniqueLoot = "uniqueloot"; const string Bind = "bind"; const string SetupFail = "setupfail"; const string Storage = "storage"; const string Classes = "class"; const string Category = "category"; const string Tag = "tag"; const string SCategory = "s_category"; const string STag = "s_tag"; const string SAreaflags = "s_areaflags"; const string SCrafted = "s_crafted"; const string MapGroup = "map_group"; const string MapComplete = "map_complete"; const string InfectedZone = "infected_zone"; } // ------------------------------------------------------------------------- //! Special strings for CEApi.EconomyMap class EconomyMapStrings { private void EconomyMapStrings(); private void ~EconomyMapStrings(); /** \brief Generates string that will make CEApi.EconomyMap use all items with this category \note This is refering to the CE categories of loot defined in cfglimitsdefinition.xml \warning This is persistent per session, when you set it, it will persist until it is set to something else \param category \p string The desired loot category \return \p string The string to pass into CEApi.EconomyMap @code GetCEApi().EconomyMap(EconomyMapStrings.Category("food")); @endcode */ static string Category(string category) { return string.Format("category:%1", category); } /** \brief Generates string that will make CEApi.EconomyMap use all items with this tag \note This is refering to the CE tags of loot defined in cfglimitsdefinition.xml \warning This is persistent per session, when you set it, it will persist until it is set to something else \param category \p string The desired loot tag \return \p string The string to pass into CEApi.EconomyMap @code GetCEApi().EconomyMap(EconomyMapStrings.Tag("floor")); @endcode */ static string Tag(string tag) { return string.Format("tag:%1", tag); } //! Everything const string ALL_ALL = "all:all"; //! All loot const string ALL_LOOT = "all:loot"; //! All vehicles const string ALL_VEHICLE = "all:vehicle"; //! All infected const string ALL_INFECTED = "all:infected"; //! All animals const string ALL_ANIMAL = "all:animal"; //! All players const string ALL_PLAYER = "all:player"; //! All proxies const string ALL_PROXY = "all:proxy"; //! All static loot spawns const string ALL_PROXY_STATIC = "all:proxystatic"; //! All dynamic loot spawns const string ALL_PROXY_DYNAMIC = "all:proxydynamic"; //! All abandoned loot spawns const string ALL_PROXY_ABANDONED = "all:proxyabandoned"; } // ------------------------------------------------------------------------- //! Special strings for CEApi.EconomyOutput class EconomyOutputStrings { private void EconomyOutputStrings(); private void ~EconomyOutputStrings(); /** \brief Lists stats regarding which loot spawn) that are linked together and how many there are \note In logs: "[linked_groups]" */ const string LINKS = "links"; /** \brief Lists loot spawns that have more loot than their maximum + 4 \note In logs: "[autotest:ListSuspiciousGroups]" */ const string SUSPICIOUS = "suspicious"; /** \brief Lists DE spawns that have positions that are within supplied range (< fRange, not equal) \note In logs: "[ClosePosition]" */ const string DE_CLOSE_POINT = "declosepoint"; /** \brief Lists loot spawns that have been marked as abandoned \note In logs: "[autotest:ListAbandonedGroups]" */ const string ABANDONED = "abandoned"; /** \brief Lists loot spawns that are not abandoned but have no loot \note In logs: "[autotest:ListEmptyGroups]" */ const string EMPTY = "empty"; /** \brief Lists loot spawns that are not abandoned and within the supplied range (< fRange, not equal) \note In logs: "[autotest:ListCloseGroups]" \note Is the same as CEApi.ListCloseProxy */ const string CLOSE = "close"; /** \brief Lists the number of objects inside of categories \note In logs: "[autotest:ProcessDebugLog]" */ const string WORLD = "world"; /** \brief Lists overall CE stats \note In logs: "[autotest:OverallStatus]" */ const string STATUS = "status"; /** \brief Lists the maxlootsize of all CE items \note In logs: "[autotest:ListLootSize]" */ const string LOOT_SIZE = "lootsize"; } // ------------------------------------------------------------------------- enum ESpawnVolumeVis { OFF = 0, ADAPTIVE, VOLUME, OCCUPIED, } // ------------------------------------------------------------------------- /** \brief API to interact with Central Economy \note Accessible through GetCEApi, make sure to read the documentation for that as well \note Any mention of 'storage/' means the '$mission:storage_#' folder */ class CEApi { private void CEApi() {} private void ~CEApi() {} /** \brief Regenerates "storage/spawnpoints.bin" if necessary \note Already happens automatically when server starts before it is loaded in @code GetCEApi().ExportSpawnData(); @endcode */ proto native void ExportSpawnData(); /** \brief Generates "storage/export/mapgrouppos.xml" \param vCenter \p vector Center of area to generate from \note When using a zero vector, this will automatically get the world center \param fRadius \p float Radius in meters of area to generate from \note When 0, this will automatically get a radius covering the map @code // Export for whole map GetCEApi().ExportProxyData(); @endcode */ proto native void ExportProxyData( vector vCenter = vector.Zero, float fRadius = 0 ); /** \brief Generates "storage/export/mapgroupcluster.xml" @code GetCEApi().ExportClusterData(); @endcode */ proto native void ExportClusterData(); /** \brief Generates "storage/export/mapgroupproto.xml" @code GetCEApi().ExportProxyProto(); @endcode */ proto native void ExportProxyProto(); /** \brief Invalidates loot spawn points which are closer than the radius supplied \note Will output a message indicating how many points were invalidated \param fRadius \p float The minimum desired distance in meters between loot spawn points \note When 0 it will use a radius of 0.5 \param bAllSelections \p bool When false, will only check the points within a container against each other, when true will against all points @code // Example: I want there to be a minimum distance of 0.3m between any loot spawn point GetCEApi().MarkCloseProxy(0.3, true); @endcode */ proto native void MarkCloseProxy( float fRadius, bool bAllSelections ); /** \brief Removes all invalid points \note Is best paired with a MarkCloseProxy call first to invalidate unwanted points \note Will output a message indicating the amount of deleted points @code GetCEApi().RemoveCloseProxy(); @endcode */ proto native void RemoveCloseProxy(); /** \brief Outputs a list of all loot points closer than specified radius \note This will automatically be checking all points against all points \note This is a better way of handling it than the above two methods, as it can be then be removed manually from the xmls \note Is the same as CEApi.EconomyOutput(EconomyOutputStrings.CLOSE, fRadius) \param fRadius \p float The minimum desired distance in meters between loot spawn points @code GetCEApi().ListCloseProxy(0.3); @endcode */ proto native void ListCloseProxy( float fRadius ); /** \brief Will emulate the spawning of the item which is being looked at and generate images (.tga) in storage/lmap and output logs \note DEVELOPER/DIAG ONLY \note This will only work if the loot spawner is active \param sClassName \p string The class name of the desired item to analyze \note When using "*" as class name, instead of generating images, it will generate a .csv in storage/log containing the output of all spawnable items \return \p bool Whether the operation was successful, it might fail in certain scenarios if the CE doesn't update in time @code GetCEApi().SpawnAnalyze("FlatCap_Grey"); @endcode */ proto native bool SpawnAnalyze( string sClassName ); /** \brief Subtracts the supplied value from the current lifetime of all items in the world \note Uses RadiusLifetimeDecrease under the hood and then calculates the parameters to fit the world \note Will automatically clamp result between min and max lifetime [3, 316224000] (3 seconds to 10 years) \param fShift \p float The value in seconds which will be subtracted from the current lifetimes @code // Shortens the lifetimes of all items in the world by 3 seconds GetCEApi().TimeShift(3); @endcode */ proto native void TimeShift( float fShift ); /** \brief Fills in the Debug Lifetime, which will be used for any new DE spawned \param fLifeTime \p float The lifetime for any DE spawned after this call \note When this is set back to 0, it will stop using the Debug Lifetime @code // Any DE spawned after this call will have a lifetime of 300 seconds GetCEApi().OverrideLifeTime(300); @endcode */ proto native void OverrideLifeTime( float fLifeTime ); /** \brief Force spawn specific prototype group + loot at position \note DEVELOPER/DIAG ONLY \note This can also spawn in other CE & DE related objects, but is best used exclusively for testing prototype groups \param sGroupName \p string The group name to spawn \param vPos \p vector The position to spawn the Entity at \param fAngle \p float Angle to spawn the Entity with in degrees [0, 360] \note When a negative value, will pick a random one \return \p Entity The spawned Entity or null if unsuccessful @code GetCEApi().SpawnGroup("Land_Shed_M1", Vector(5, 10, 5)); @endcode */ proto native Entity SpawnGroup( string sGroupName, vector vPos, float fAngle = -1 ); /** \brief Force spawn specific dynamic event \note DEVELOPER/DIAG ONLY \note Versatile, can be used for Animal, Infected, Static, Item and Vehicle \note Is the only one capable of spawning DE's that have DE Groups \note Is the same as the next one, but has ECE_FULL flags and a hidden flag which overrides herd limit \note This is also FORCE spawn, so it will bypass any limit and avoidance checks \param sEvName \p string The DE to spawn \param vPos \p vector The position to spawn the Entity at \param fAngle \p float Angle to spawn the Entity with in degrees [0, 360] \note When a negative value, will pick a random one \return \p bool Whether the spawn was successful @code GetCEApi().SpawnDE("StaticHeliCrash", Vector(5, 10, 5)); @endcode */ proto native void SpawnDE( string sEvName, vector vPos, float fAngle = -1 ); /** \brief Force spawn specific dynamic event \note DEVELOPER/DIAG ONLY \note Is the same one as above but with the possibility of custom flags \param sEvName \p string The DE to spawn \param vPos \p vector The position to spawn the Entity at \param fAngle \p float Angle to spawn the Entity with in degrees [0, 360] \note When a negative value, will pick a random one \param uFlags \p int ECE flags to apply while spawning the DE \return \p bool Whether the spawn was successful @code GetCEApi().SpawnDEEx("StaticHeliCrash", Vector(5, 10, 5), ECE_FULL); @endcode */ proto native void SpawnDEEx( string sEvName, vector vPos, float fAngle, int uFlags ); /** \brief Spawn an item through CE \note DEVELOPER/DIAG ONLY \param sEvName \p string The DE to spawn \param vPos \p vector The position to spawn the Entity at \param fAngle \p float Angle to spawn the Entity with in degrees [0, 360] \note When a negative value, will pick a random one \param iCount \p int The amount of items \param fRange \p float Circle radius \note When iCount is larger than 1, changing this will make it so that they are spawned in a circle around vPos @code GetCEApi().SpawnLoot("Deagle", Vector(5, 10, 5), 0, 9, 1); @endcode */ proto native void SpawnLoot( string sEvName, vector vPos, float fAngle, int iCount = 1, float fRange = 1 ); /** \brief Spawn all entities with dynamic category through CE \note DEVELOPER/DIAG ONLY \note Will print additional logs to RPT \param vPos \p vector The position to spawn the Entities at \note This will be the starting position, the items will be split into segments by CE BBox size (smallest to largest) \param bShowCylinders \p bool Whether to draw the CE BBox with debug shapes \note Red: Invalid BBox; Yellow: Not in DB; Green: All ok \param fDefaultDistance \p float The default distance to use when the entity does not have a CE BBox \note This means that all the ones with invalid CE BBoxes will be piled up at the starting position when this is 0 @code GetCEApi().SpawnDynamic(Vector(5, 10, 5), true); @endcode */ proto native void SpawnDynamic( vector vPos, bool bShowCylinders = true, float fDefaultDistance = 0 ); /** \brief Spawn all entities with vehicles category through CE \note DEVELOPER/DIAG ONLY \note Will print additional logs to RPT \param vPos \p vector The position to spawn the Entities at \note This will be the starting position, vehicles spawn with 20m spacing \note Make sure you do it on a surface as flat and open as possible, they need a lot of space \param bShowCylinders \p bool Does nothing for Vehicles, left for backwards compat \param fDefaultDistance \p float The default distance to use when the entity does not have a CE BBox \note This means that all the ones with invalid CE BBoxes will be piled up at the starting position when this is 0 @code GetCEApi().SpawnVehicles(Vector(5, 10, 5)); @endcode */ proto native void SpawnVehicles( vector vPos, bool bShowCylinders = false, float fDefaultDistance = 20 ); /** \brief Spawn all entities with building category through CE \note DEVELOPER/DIAG ONLY \note Will print additional logs to RPT \param vPos \p vector The position to spawn the Entities at \note This will be the starting position, the items will be split into segments by CE BBox size (smallest to largest) \param bShowCylinders \p bool Whether to draw the CE BBox with debug shapes \note Red: Invalid BBox; Yellow: Not in DB; Green: All ok \note These will most likely just always be red \param fDefaultDistance \p float The default distance to use when the entity does not have a CE BBox \note This means that all the ones with invalid CE BBoxes will be piled up at the starting position when this is 0 @code GetCEApi().SpawnBuilding(Vector(5, 10, 5), true); @endcode */ proto native void SpawnBuilding( vector vPos, bool bShowCylinders = false, float fDefaultDistance = 20 ); /** \brief Spawn an entity through CE \note DEVELOPER/DIAG ONLY \note Is similar to SpawnLoot, but works better on Animal/Infected/Vehicle \param sClassName \p string The entity to spawn \param vPos \p vector The position to spawn the Entity at \param fRange \p float Circle radius \note When iCount is larger than 1, changing this will make it so that they are spawned in a circle around vPos \param iCount \p int The amount of items @code GetCEApi().SpawnEntity("Deagle", Vector(5, 10, 5), 1, 9); @endcode */ proto native void SpawnEntity( string sClassName, vector vPos, float fRange, int iCount ); /** \brief Spawn an entity through CE \note DEVELOPER/DIAG ONLY \note Is the same as SpawnEntity, but spawns only one and returns the spawned Object \param sClassName \p string The entity to spawn \param vPos \p vector The position to spawn the Entity at \return \p Object The spawned Object @code GetCEApi().SpawnSingleEntity("Deagle", Vector(5, 10, 5)); @endcode */ proto native Object SpawnSingleEntity( string sClassName, vector vPos ); /** \brief Spawn an entity through CE \note DEVELOPER/DIAG ONLY \note Is the same as SpawnEntity, under the hood it just defaults to RF_ORIGINAL \param sClassName \p string The entity to spawn \param vPos \p vector The position to spawn the Entity at \param fRange \p float Circle radius \note When iCount is larger than 1, changing this will make it so that they are spawned in a circle around vPos \param iCount \p int The amount of items \param iFlags \p int The rotation flags to apply @code GetCEApi().SpawnRotation("Deagle", Vector(5, 10, 5), 1, 9, RF_ALL); @endcode */ proto native void SpawnRotation( string sClassName, vector vPos, float fRange, int iCount, int iFlags ); /** \brief Spawn an entity through CE, x amount of times in a grid \note DEVELOPER/DIAG ONLY \note The name may imply it does something else, but a profiler is needed to actually benchmark it \note The position starts at 0 0 0 \param sClassName \p string The entity to spawn \param iCount \p int The amount of items @code GetCEApi().SpawnPerfTest("Deagle", 30); @endcode */ proto native void SpawnPerfTest( string sClassName, int iCount ); /** \brief Queue up the depleting of lifetime of everything in the world \note DEVELOPER/DIAG ONLY @code GetCEApi().CleanMap(); @endcode */ proto native void CleanMap(); /** \brief Outputs debug file to storage/log/*.csv \note DEVELOPER/DIAG ONLY \param sLogType \p string The type of log (EconomyLogCategories) @code GetCEApi().EconomyLog(EconomyLogCategories.Economy); @endcode */ proto native void EconomyLog( string sLogType ); /** \brief Outputs debug file to storage/lmap/*.tga showing the current places this is spawned \note DEVELOPER/DIAG ONLY \note This works best when you have an image of the map to overlay the tga with afterwards \param sMapType \p string The type of lmap, can be just a class name or a special string \note There are several prefixes and sets of strings that can be passed in here, see EconomyMapStrings @code // To check only a specific item GetCEApi().EconomyMap("Deagle"); @endcode */ proto native void EconomyMap( string sMapType ); /** \brief Outputs debug logs into server log or rpt \note DEVELOPER/DIAG ONLY \param sOutputType \p string One of the strings specified in EconomyOutputStrings \param fRange \p float Range parameter used for some of the options @code GetCEApi().EconomyOutput(EconomyOutputStrings.CLOSE, 3); @endcode */ proto native void EconomyOutput( string sOutputType, float fRange ); /** \brief Process lifetime increase within radius by value (sec) \note Will automatically clamp result between min and max lifetime [3, 316224000] (3 seconds to 10 years) \param vCenter \p vector The center point \param fRadius \p float The radius around the center point \param fValue \p float The value to increase the lifetime by \note When 0, this will reset it to default instead (but it's better to use RadiusLifetimeReset still) @code GetCEApi().RadiusLifetimeIncrease(Vector(500, 0, 500), 3, 500); @endcode */ proto native void RadiusLifetimeIncrease( vector vCenter, float fRadius, float fValue ); /** \brief Process lifetime decrease within radius by value (sec) \note Will automatically clamp result between min and max lifetime [3, 316224000] (3 seconds to 10 years) \param vCenter \p vector The center point \param fRadius \p float The radius around the center point \param fValue \p float The value to decrease the lifetime by @code GetCEApi().RadiusLifetimeDecrease(Vector(500, 0, 500), 3, 500); @endcode */ proto native void RadiusLifetimeDecrease( vector vCenter, float fRadius, float fValue ); /** \brief Process lifetime reset to default value from DB within radius \param vCenter \p vector The center point \param fRadius \p float The radius around the center point @code GetCEApi().RadiusLifetimeReset(Vector(500, 0, 500), 3); @endcode */ proto native void RadiusLifetimeReset( vector vCenter, float fRadius ); /** \name Globals API Get values from globals.xml */ //@{ /** \brief Get int from globals.xml \note type="0" \param varName \p string The name of the entry \return \p int The value or int.MIN if not found/not an int */ proto native int GetCEGlobalInt(string varName); /** \brief Get float from globals.xml \note type="1" \param varName \p string The name of the entry \return \p float The value or float.MIN if not found/not a float */ proto native float GetCEGlobalFloat(string varName); /** \brief Get string from globals.xml \note type="2" \param varName \p string The name of the entry \return \p string The value or empty string if not found/not a string */ proto native string GetCEGlobalString(string varName); //@} /** \name Avoidance API Optimized internal methods that the CE uses to avoid spawning DE within certain distances */ //@{ /** \brief Check if there is a player within a radius \param vPos \p vector The center point \param fDistance \p float The radius around the center point \return \p bool Returns false when there is a player inside supplied area, true when it successfully avoided players @code GetCEApi().AvoidPlayer(Vector(500, 0, 500), 20); @endcode */ proto native bool AvoidPlayer(vector vPos, float fDistance); // return false when there is a player /** \brief Check if there is a vehicle within a radius \param vPos \p vector The center point \param fDistance \p float The radius around the center point \param sDEName \p string A specific DE to avoid, if left empty, will avoid all vehicles \return \p bool Returns false when there is a vehicle inside supplied area, true when it successfully avoided vehicles @code GetCEApi().AvoidVehicle(Vector(500, 0, 500), 500, "VehicleCivilianSedan"); @endcode */ proto native bool AvoidVehicle(vector vPos, float fDistance, string sDEName = ""); /** \brief Check if there is a vehicle within a radius \param vPos \p vector The center point \param fRange \p float The radius around the center point \return \p int The amoutn of players inside supplied area @code GetCEApi().CountPlayersWithinRange(Vector(500, 0, 500), 500); @endcode */ proto native int CountPlayersWithinRange(vector vPos, float fRange); //@} /** \name CE Debug menu Script API DIAG ONLY: These options are available from the in-game debug menu on Diag exe (Game > Central Economy), documentation can be found on wiki */ //@{ // "Loot Spawn Edit" //{ //! "Spawn Volume Vis" proto native void LootSetSpawnVolumeVisualisation(ESpawnVolumeVis mode); //! "Setup Vis" proto native void LootToggleSpawnSetup(bool mode); //! "Edit Volume" proto native void LootToggleVolumeEditing(bool mode); //! "Re-Trace Group Points" proto native void LootRetraceGroupPoints(); //! "Export Group >>" proto native void LootExportGroup(); //! "Export All Groups >>>>" / GetCEApi.ExportProxyProto(); proto native void LootExportAllGroups(); //! "<<< Export Map" / GetCEApi.ExportProxyData(vector.Zero, 0); proto native void LootExportMap(); //! "<<< Export Clusters" / GetCEApi().ExportClusterData() proto native void LootExportClusters(); //} // "Loot Tool" //{ //! "Deplete Lifetime" proto native void LootDepleteLifetime(); //! "Set Damage = 1.0" proto native void LootSetDamageToOne(); //! "Damage + Deplete" proto native void LootDepleteAndDamage(); //} // "Infected" //{ //! "Infected Vis" proto native void InfectedToggleVisualisation(bool mode); //! "Infected Zone Info" proto native void InfectedToggleZoneInfo(bool mode); //! "Infected Spawn" proto native void InfectedSpawn(); //! "Reset Cleanup" proto native void InfectedResetCleanup(); //} // "Animal" //{ //! "Animal Vis" proto native void AnimalToggleVisualisation(bool mode); //! "Animal Spawn" proto native void AnimalSpawn(); //! "Ambient Spawn" proto native void AnimalAmbientSpawn(); //} //! "Vehicle&Wreck Vis" proto native void ToggleVehicleAndWreckVisualisation(bool mode); //! "Loot Vis" proto native void ToggleLootVisualisation(bool mode); //! "Cluster Vis" proto native void ToggleClusterVisualisation(bool mode); //! "Dynamic Events Status" proto native void ToggleDynamicEventStatus(bool mode); //! "Dynamic Events Vis" proto native void ToggleDynamicEventVisualisation(bool mode); //! "Dynamic Events Spawn" proto native void DynamicEventSpawn(); //! "Export Dyn Event >>" proto native void DynamicEventExport(); //! "Overall Stats" proto native void ToggleOverallStats(bool mode); //@} /** \name DEPRECATED/LEGACY These don't do anything anymore but are left for backwards compatibility */ //@{ proto native void PlatformStatTest(); proto native void LootToggleProxyEditing(bool mode); proto native void OnUpdate(); //@} }; /** \brief Get the CE API \warning Only exists when the game has CE enabled \note This means that this will work on anything which is running a mission with an initialized Hive \note Client does not have Hive when connected to a server, only the server does if it was set up in the init.c */ proto native CEApi GetCEApi(); // ------------------------------------------------------------------------- class CEItemProfile { private void CEItemProfile() {} private void ~CEItemProfile() {} proto native int GetNominal(); // nominal - how many items should be aproximately in map proto native int GetMin(); // min - minimal count should be available in map proto native float GetQuantityMin(); // min quantity (0.0 - 1.0) (like ammobox - this determine how many bullets are there, or water bottle) proto native float GetQuantityMax(); // max quantity (0.0 - 1.0) (like ammobox - this determine how many bullets are there, or water bottle) proto native float GetQuantity(); // random quantity (0.0 - 1.0) proto native float GetLifetime(); // maximum lifetime in (seconds) - what is the idle before item abandoned at ground gets deleted proto native float GetRestock(); // restock is oposite of lifetime - idle before item is allowed to respawn when required proto native int GetCost(); // cost of item determines its 'value' for players (this serve as priority during respawn and cleanup operation) proto native int GetUsageFlags(); // area usage flags (each bit has assigned group - which as part of map overlay effectively affects spawning) proto native int GetValueFlags(); // area value flags (each bit has assigned group - which as part of map overlay effectively affects spawning) };