{"action":"created","issue":{"url":"https://api.github.com/repos/samp-incognito/samp-streamer-plugin/issues/94","labels_url":"https://api.github.com/repos/samp-incognito/samp-streamer-plugin/issues/94/labels{/name}","comments_url":"https://api.github.com/repos/samp-incognito/samp-streamer-plugin/issues/94/comments","events_url":"https://api.github.com/repos/samp-incognito/samp-streamer-plugin/issues/94/events","html_url":"https://github.com/samp-incognito/samp-streamer-plugin/issues/94","id":125016467,"number":94,"title":"inefficient use of networking RPCs when streaming objects.","user":{"login":"JernejL","id":1741375,"avatar_url":"https://avatars.githubusercontent.com/u/1741375?v=3","gravatar_id":"","url":"https://api.github.com/users/JernejL","html_url":"https://github.com/JernejL","followers_url":"https://api.github.com/users/JernejL/followers","following_url":"https://api.github.com/users/JernejL/following{/other_user}","gists_url":"https://api.github.com/users/JernejL/gists{/gist_id}","starred_url":"https://api.github.com/users/JernejL/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/JernejL/subscriptions","organizations_url":"https://api.github.com/users/JernejL/orgs","repos_url":"https://api.github.com/users/JernejL/repos","events_url":"https://api.github.com/users/JernejL/events{/privacy}","received_events_url":"https://api.github.com/users/JernejL/received_events","type":"User","site_admin":false},"labels":[],"state":"open","locked":false,"assignee":null,"milestone":null,"comments":16,"created_at":"2016-01-05T17:47:04Z","updated_at":"2016-01-21T17:36:41Z","closed_at":null,"body":"In streamer.cpp:\r\n\r\nint internalID = CreatePlayerObject(player.playerID, d->second->modelID, 0.0f, 0.0f, 0.0f, d->second->rotation[0], d->second->rotation[1], d->second->rotation[2], d->second->drawDistance);\r\n\r\nSetPlayerObjectPos(player.playerID, internalID, d->second->position[0], d->second->position[1], d->second->position[2]);\r\n\r\nCreating the object when streaming it in ALWAYS creates it at coordinates 0,0,0 followed by a SetPlayerObjectPos call, this basically causes additional network load on raknet rpcs and increases bandwidth by 14 bytes per object stream-in (basically 1/3 extra load which can add up greatly in the end). \r\n \r\nThere seems to be no explanation in source code for this, i cannot figure out the reason for why it is done so, but this basically makes networking do double work on streaming in object (createplayerobject is 40 bytes rpc and setplayerobjectpos is additional 14 bytes per object). \r\n \r\nHopefully this is fixed, because it will save bandwidth, improve responsivness of servers and reduce load on rpcs which causes desync. \r\n "},"comment":{"url":"https://api.github.com/repos/samp-incognito/samp-streamer-plugin/issues/comments/173647530","html_url":"https://github.com/samp-incognito/samp-streamer-plugin/issues/94#issuecomment-173647530","issue_url":"https://api.github.com/repos/samp-incognito/samp-streamer-plugin/issues/94","id":173647530,"user":{"login":"JernejL","id":1741375,"avatar_url":"https://avatars.githubusercontent.com/u/1741375?v=3","gravatar_id":"","url":"https://api.github.com/users/JernejL","html_url":"https://github.com/JernejL","followers_url":"https://api.github.com/users/JernejL/followers","following_url":"https://api.github.com/users/JernejL/following{/other_user}","gists_url":"https://api.github.com/users/JernejL/gists{/gist_id}","starred_url":"https://api.github.com/users/JernejL/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/JernejL/subscriptions","organizations_url":"https://api.github.com/users/JernejL/orgs","repos_url":"https://api.github.com/users/JernejL/repos","events_url":"https://api.github.com/users/JernejL/events{/privacy}","received_events_url":"https://api.github.com/users/JernejL/received_events","type":"User","site_admin":false},"created_at":"2016-01-21T17:36:41Z","updated_at":"2016-01-21T17:36:41Z","body":"The author claims he had this in the works for a year, and i know a 3-4 year old sobeit had gta-sa object pool dumping (not via rpc hook) - which basically meant it would work regardless of any protection. And in the end the commit to plugin itself mentioned the code's purpose anyway, they could have figured it out from commit log and source.. https://github.com/samp-incognito/samp-streamer-plugin/commit/c556dae8f97e6d3e23486b850516d57bc850a4cb \r\n \r\nThere is really no way to prevent object stealing, if your server and community is quality and well made then i don't think you have to worry about objects stealing being a big problem."}}