- Added item priority support via the new "priority" parameter for most item creation natives
- Added IsLineInDynamicArea, IsLineInAnyDynamicArea, GetDynamicAreasForLine, and GetNumberDynamicAreasForLine
- Added Streamer_ToggleItem and Streamer_IsToggleItem
- Added Streamer_ToggleAllItems with an "exceptions" parameter which allows every item except the ones specified to be toggled
- Added Streamer_GetLastUpdateTime
- Added Streamer_(Is)ToggleItemAntiAreas which, if toggled, allows the per-item area feature to exlude items from being streamed in the areas specified
- Renamed Streamer_(Is)ToggleStaticItem to Streamer_(Is)ToggleItemStatic
- Stopped duplicate log entries from being created
- Fixed parameter order bug with CreateDynamicObjectEx
- Added ability to stream items only in specified areas by using an "areaid" parameter in the item creation natives
- Added Streamer_(Get/Set)TypePriority
- Reduced number of RPCs used when streaming objects
- Fixed bug with OnPlayer(Enter/Leave)DynamicArea and OnDynamicObjectMoved
- Fixed bug with GetPlayerDynamicAreas/GetDynamicAreasForPoint
- Added offsets to attached area natives
- Made OnPlayerShootDynamicObject handle return values
- Made GetDynamicPolygonPoints, GetPlayerDynamicAreas, and GetDynamicAreasForPoint return the size of the array
- Fixed several bugs
- Added GetDynamicObjectNoCameraCol
- Made attached objects stream in after base objects (thanks uint32)
- Added definitions to include file for default draw distances and streaming distances
- Fixed a bug with area callbacks that could cause a server crash under certain conditions
- Fixed bugs with Streamer_(Get/Set)MaxItems and IsPlayerIn(Any)DynamicArea
- Ordered the results stored in the GetPlayerDynamicAreas array by player distance from the area
- Added GetDynamicAreasForPoint (also ordered by distance) and GetNumberDynamicAreasForPoint
- Added IsDynamicObjectMaterialUsed and IsDynamicObjectMaterialTextUsed
- Added "STREAMER_ENABLE_TAGS" definition to include file which turns on tags for all types of items (in the format of "DynamicObject:", for example)
- Fixed various bugs
- Added a delay to setting checkpoints in an attempt to fix the checkpoint size bug
- Made some improvements to EditDynamicObject and AttachCameraToDynamicObject for non-streamed objects
- Added SetDynamicObjectNoCameraCol, Streamer_(Is)ToggleCameraUpdate, and Streamer_(Is)ToggleStaticItem
- Added Streamer_OnPluginError, Streamer_ToggleErrorCallback, and Streamer_IsToggleErrorCallback
- Fixed pickup crash
- Fixed moving object rotation bug
- Updated sampgdk, resolving some issues with callbacks
- Added type parameter to Streamer_Update(Ex)
- Added AttachDynamicObjectToObject and AttachDynamicObjectToPlayer (requires YSF by kurta999 to be loaded)
- Made visible item amounts configurable per player
- Added Streamer_(Get/Set)RadiusMultiplier
- Made items static if a negative stream distance is specified
- Made OnPlayerLeaveDynamicArea callbacks execute when areas are destroyed
- Made OnPlayerLeaveDynamicArea callbacks execute before OnPlayerEnterDynamicArea callbacks (regression from a previous version)
- Updated libraries, fixing some miscellaneous bugs
- Allowed moving object rotations to be set
- Added integrated callback hooks from sampgdk
- Renamed CreateDynamicCube to CreateDynamicCuboid
- Added CreateDynamicCylinder
- Made E_STREAMER_EXTRA_ID data sequential and allowed multiple amounts of the same value to be used
- Allowed Streamer_(Get/Set)IntData to be used with E_STREAMER_EXTRA_ID, E_STREAMER_INTERIOR_ID, E_STREAMER_PLAYER_ID, and E_STREAMER_WORLD_ID
- Fixed some minor bugs
- Updated sampgdk version
- Added OnPlayerShootDynamicObject for 0.3z
- Added Streamer_GetItemInternalID and Streamer_GetItemStreamerID for getting SA-MP IDs from streamer IDs and vice versa
- Added Streamer_GetTickRate, Streamer_GetMaxItems, Streamer_GetVisibleItems, Streamer_GetCellDistance, Streamer_GetCellSize, Streamer_IsToggleIdleUpdate, Streamer_IsToggleItemUpdate, Streamer_DestroyAllItems, Streamer_CountItems, GetDynamicPolygonPoints, GetDynamicPolygonNumberPoints, IsAnyPlayerInDynamicArea, IsAnyPlayerInAnyDynamicArea, GetPlayerDynamicAreas, and GetPlayerNumberDynamicAreas
- Renamed Streamer_TickRate, Streamer_VisibleItems, Streamer_CellDistance, and Streamer_CellSize (all natives begin with Streamer_Set* now, but old natives are still usable)
- Deprecated DestroyAllDynamic* and CountDynamic* natives (new natives Streamer_DestroyAllItems and Streamer_CountItems are preferred now, but old natives are still usable)
- Added a new parameter called "serverwide" to the destroy and count natives that makes them work either across all scripts or only within the calling script
- Added a new parameter called "recheck" to Is(Any)PlayerIn(Any)DynamicArea which allows an area check to occur without issuing a full update for the player
- Added a "dimensions" parameter to Streamer_GetDistanceToItem which allows the script to specify whether a 2D or 3D distance check should be performed
- Added "drawdistance" to the end of CreateDynamicObject and "style" to the end of CreateDynamicMapIcon
- Added AttachCameraToDynamicObject
- Added AttachDynamicObjectToVehicle
- Added EditDynamicObject
- Added OnPlayerEditDynamicObject
- Added OnPlayerSelectDynamicObject
- Added GetDynamicObjectMaterial and SetDynamicObjectMaterial
- Added GetDynamicObjectMaterialText and SetDynamicObjectMaterialText
- Added Streamer_ToggleItemUpdate
- Allowed NPCs to trigger area and checkpoint callbacks
- Fixed IsPlayerInDynamicRaceCP
- Adjusted algorithm for searching cells that contain visible items, improving performance for players moving around the map frequently
- Greatly improved speed of spatial queries
- Implemented predictive streaming algorithm based on the player's current velocity and the average time between updates
- Replaced PAWN invoke system with Zeex's SA-MP GDK, improving overall performance
- Added functionality for preventing runtime errors due to outdated include files
- Added check for include file version in the plugin
- Fixed rare bug that sometimes stopped updates from occurring when Streamer_TickRate was used
- Changed interior check implementation to allow an unlimited number of interiors to be added per item, fixing the crash that occurred when players were in interior IDs 20 or above
- Changed virtual world check implementation for pickups to allow an unlimited number to be added
- Slightly improved streaming algorithm for pickups
- Made OnPlayerLeaveDynamicArea callbacks execute before OnPlayerEnterDynamicArea callbacks
- Added Streamer_ToggleIdleUpdate for allowing or disallowing updates to process for players who are not moving
- Added CreateDynamicPolygon
- Added IsPlayerInAnyDynamicArea
- Added optional parameters to Streamer_UpdateEx for specifying the world ID and interior ID
- Added rotation parameters to MoveDynamicObject (SA-MP 0.3d only)
- Added IsDynamicObjectMoving
- Added extended natives for item creation with up-to-date parameters
- Added Streamer_GetArrayData and Streamer_SetArrayData
- Added Streamer_ProcessActiveItems to force updates for moving and attached items
- Added Streamer_GetDistanceToItem
- Added GetPlayerVisibleDynamicCP and GetPlayerVisibleDynamicRaceCP
- Added IsPointInDynamicArea and IsPointInAnyDynamicArea
- Added AttachDynamicAreaToObject
- Added GetDynamic3DTextLabelText
- Fixed some minor bugs
- Added support for map icon styles in 0.3c
- Made cell boundaries contiguous
- Improved speed of spatial queries
- Fixed visibility of items with large streaming distances
- Added natives for attaching areas to players and vehicles
- Implemented functionality for adding and removing multiple virtual worlds, interiors, and players to and from items
- Update: Fixed bug with array bounds check and made attached areas and 3D text labels stream out when their positions cannot be retrieved
- Added grid system for partitioning the game world into cells
- Added hash tables for numerous performance improvements
- Improved object streaming algorithm
- Optimized a lot of streaming code
- Improved checkpoint handling
- Improved moving objects
- Resolved possible callback bugs
- Added Streamer_IsItemVisible, Streamer_DestroyAllVisibleItems, Streamer_CountVisibleItems, and Streamer_GetUpperBound
- Fixed 3D text label crash
- Optimized more streaming code
- Resolved some checkpoint problems
- Added area detection natives and callbacks
- Optimized some streaming code
- Fixed crash that may have occurred when destroying objects under OnDynamicObjectMoved
- Added plural tags to the data manipulation natives so that 3D text labels can be passed to them without a tag mismatch warning
- Added an extra ID to every item that can be set and retrieved with Streamer_SetIntData and Streamer_GetIntData
- Made any item that is altered with Streamer_SetFloatData or Streamer_SetIntData restream for every player automatically
- Added natives for each item to check if they're valid
- Consolidated all of the settings natives (with the exception of Streamer_TickRate) into Streamer_MaxItems and Streamer_VisibleItems
- Added data manipulation natives: Streamer_GetFloatData, Streamer_GetIntData, Streamer_SetFloatData, and Streamer_SetIntData
- Fixed bug with OnPlayerPickUpDynamicPickup that resulted in it being called too many times when multiple scripts were loaded
- Fixed bug with checkpoints and race checkpoints that caused none to be streamed until the one that was visible was no longer in range
- Slightly improved native address finding and added an error message that prints in the server log when all natives cannot be found
- Consolidated all of the update natives into Streamer_Update
- Added Streamer_UpdateEx for loading items in a specified area
- Cleaned up and reorganized code
- Made the plugin automatically destroy all items created in a script when it is unloaded
- Added natives for toggling all dynamic checkpoints and race checkpoints
- Made a check to prevent too many objects, pickups, or 3D text labels from being created
- Fixed 3D text label attachment bug
- Fixed internal map icon ID assignment bug
- Rewrote PAWN invoke function
- Fixed PAWN invoke bug in Linux (thanks pod)
- Fixed item ID assignment bug
- Corrected another typo in the include file
- Improved moving objects slightly
- Made a few adjustments to the default streaming distances
- Made all streaming distances customizable via an extra optional parameter
- Removed global distance natives and slightly renamed a few other natives related to the settings to make them a bit less confusing
- Fixed a small issue with pickups that involved a typo in the include file
- Renamed the custom pickup callback to OnPlayerPickUpDynamicPickup (note the capitalization)
- Numerous bug fixes and optimizations
- Added support for pickups, checkpoints, race checkpoints, map icons, and 3D text labels
- Added optional parameters for specifying virtual worlds, interiors, and/or players
- Added more natives and callbacks for the new items
- Renamed and reorganized several natives
- Heavily modified dynamic moving objects so that they now are tracked in the plugin and synchronized with all players
- MoveDynamicObject now returns the time in milliseconds that it will take to reach the destination (just like the default native)
- Added CreatePlayerDynamicObject, CreateVWDynamicObject, DestroyAllDynamicObjects, CountDynamicObjects, and OnDynamicObjectMoved
- Optimized some streaming code and fixed a few bugs in the automatic setup system
- Initial release