[Plugin] Streamer Plugin

Streamer Plugin

This plugin streams objects, pickups, checkpoints, race checkpoints, map icons, and 3D text labels at user-defined server ticks. Basic area detection is also included. Because it is written entirely in C++, much of the overhead from PAWN is avoided. This streamer, as a result, is quite a bit faster than any other implementation currently available in PAWN.


GitHub Commit History

Refer to the CHANGES file the binary package for the full changelog.


GitHub Wiki

Additional information can be found by searching this thread.


GitHub Releases Page

The Windows version requires the Microsoft Visual C++ 2015 Redistributable Package.

I love. Switching to this right away

I hope you release more of your awesome plugins in the future

Sounds interesting and useful, i'll try it out. Keep up the good work.

Maybe it would be useful to have a native 'CountDynamicObjects' which would return value of all the objects created, oh and OnDynamicObjectMoved would be nice callback for the future

I hope it won't make problems which combination zcmd + foreach + streamer because of all redefinitions:
\pawno\include\zcmd.inc(58) : warning 201: redefinition of constant/macro (symbol "OnGameModeInit")
\pawno\include\streamer.inc(75) : warning 201: redefinition of constant/macro (symbol "OnGameModeInit")
\pawno\include\streamer.inc(94) : warning 201: redefinition of constant/macro (symbol "OnPlayerConnect")
\pawno\include\streamer.inc(113) : warning 201: redefinition of constant/macro (symbol "OnPlayerDisconnect")

Yes, you are right—I actually forgot to include OnDynamicObjectMoved. That will be in the next version.

About the warnings, try the latest versions of zcmd and foreach. ****** made some recent additions to the callback hook procedure to fix that.

There is no source code.
Amazing plugin, though !

Originally Posted by Incognito
About the warnings, try the latest versions of zcmd and foreach. ****** made some recent additions to the callback hook procedure to fix that.
Heh, compiles without warnings now. Thanks for reminding me to update.

Anyway, I have just got another idea for a native 'CreateDynamicVWObject'. Basically like CreateDynamicObject just with virtual world parameter, so object is shown only in that virtual world. Very useful if you use the same interior for more different types of usage with custom objects.

LaZ: Thanks, the link has been fixed.

$ЂЯĢ: That is doable.

Originally Posted by Incognito
Right now, as I said, it just streams objects, but it is a relatively simple matter to add support for pickups, map icons, and checkpoints at a later date (vehicles are streamed automatically in 0.3, however, so they will not be added).
Good to hear this. I was just thinking about asking if you are thinking about expanding streamer's services

It will really promote your plugin and help peoples decide what streamer to use if you little tests about speed and memory...
Good streamer i guess

Great work!
I wanted to start such a project my self, but... you saved me time!
But I found my self in a weird situation that I need a filterscript along with the gamemode that has these dynamic objects.
If I include the <streamer> in both filterscript and gamemode, will this effect something? From the benchmarks point of view.
Also, will the CountDynamicObjects work in filterscript only or both on the same time? (will count filterscript+gamemode dynamic objects?)
Because I would need to destroy all filterscript objects in case of reloadfs, but that can me done my simply adding all dynamic-object-ids to an array.

Thanks for the quick update with those useful functions

potato: Yes, you can use the include and any of the plugin's natives across multiple scripts.

$ЂЯĢ: You're welcome.

I wanted to note that there seems to be some problem with the Linux version (or perhaps just a few distributions—if it is working for you, then tell me!). The streaming system works perfectly fine, but for some reason, the player objects do not appear. I will try to find a solution soon.

i have 7 plugins

Irc Audio Dns Streamer aMailer aEncriptPlus Filemanager

and your or another irc plugin fails whit this streamer plugin :S

Angelhj: It works fine here with the rest of my plugins loaded, but I have not tested with the last three you mentioned.

I found the source of the problem I spoke of earlier: Peter's PawnCommand. It seems to be partially bugged in Linux. When multiple float parameters are passed to it, they all get shuffled around for some odd reason. This causes the objects to always be created in the wrong place. The only solution I can think of is to execute a public function that will create each object in the script instead. This is obviously not quite as elegant, but it is the only thing I can do short of placing the entire streaming code inside the script as well. Fortunately, the speed should not suffer tremendously (OnPlayerUpdate gets called several times a second too). I will release a fixed version soon.

I would like to recommend you making a function that streams objects manually.
Stream_ObjectsForPlayer(playerid); - gets the current player location and streams objects that need to be there no matter what.
For "the lag" reducing...

Also I noticed a bug that also applies with your said.
Objects seem to appear really slow after a longer server runtime.
Some value keeps getting bigger?

Yes, I added a native earlier that will force an update for a player. This is particularly useful if you want to stream objects immediately at some point in your script. About your bug, it is probably related to a memory leak I found and fixed yesterday in PawnCommand.

Anyway, the Linux bug I described a few posts up has been fixed as well. The streaming code has also been reorganized and made slightly more efficient (nothing will stream for the player if his position has not changed since the last update). I was initially going to commit these changes and release v1.2, but instead, I think I will will skip ahead to v2 and add support for pickup, checkpoint, and map icon streaming. The algorithm will be almost identical, so it is really just a matter of writing some additional code to support more items. Look for it here soon.

Nice to see that pickup, checkpoint and map icon support is on its way. I hope you won't miss race checkpoints out.

Only as a suggestion for one of the future versions; it would be nice if you also added 3D text streamer.

Like the sound of the update. Has anyone done an official speed/max object test with this plug-in? Kinda curious to see the results before I go and try to switch everything over. I am mostly interested in seeing how it compares to YSI.

Very nice. But somehow could make make the objects load about 1 or 1/2 a second faster. They don't seem to be loading in time for places over the sea for example.

I would also like to request CreateInteriorObject.

Forum Jump:

Users browsing this thread: 3 Guest(s)