forward OnPlayerFinishDownloading(playerid, datamb);
public OnPlayerFinishDownloading(playerid, datamb)
{
/*SendClientMessage(playerid, 1, "{00FF33}You have completely downloaded all files.");
new String[256];
format(String, 256, "{FFFFFF}Downloaded: {00FF33}%0.2f {FFFFFF}MBs of Data.", datamb);
SendClientMessage(playerid, 1, String);*/
// Put whatever you want
return 1;
}
#include <a_samp>
new Downloaded[MAX_PLAYERS];
new PlayerTick[MAX_PLAYERS];
stock GetTickDiff(newtick, oldtick)
{
if (oldtick < 0 && newtick >= 0) {
return newtick - oldtick;
} else if (oldtick >= 0 && newtick < 0 || oldtick > newtick) {
return (cellmax - oldtick + 1) - (cellmin - newtick);
}
return newtick - oldtick;
}
public OnFilterScriptInit()
{
print("\n--------------------------------------");
print(" Download Meter SA-MP 0.3.DL");
print("--------------------------------------\n");
return 1;
}
public OnPlayerConnect(playerid)
{
Downloaded[playerid] = 0;
PlayerTick[playerid] = GetTickCount();
return 1;
}
public OnPlayerFinishedDownloading(playerid, virtualworld)
{
if(Downloaded[playerid] == 1) return 1;
if(GetTickDiff(GetTickCount(), PlayerTick[playerid]) > 1000)
{
Downloaded[playerid] = 1;
new Float: bytesOfPlayer = NetStats_BytesSent(playerid);
new Float: Megabytes = bytesOfPlayer / 1024 / 1024;
CallRemoteFunction("OnPlayerFinishDownloading", "df", playerid, Megabytes);
}
else
{
Downloaded[playerid] = 1;
// Player changed virtual worlds
}
return 1;
}
|
If the server change virtual world before the player downloads, the callback will be called, Fix: Don't call SetPlayerVirtualWorld right on connect and only do it after OnplayerFinishDownloading is called. |
|
Did you get to test this correctly?
I used their logic and it was not even accurate ... I downloaded 30MB in files and the native's return told me that I downloaded about 40KB. |
|
I know, I couldn't find a way to calculate but I noticed that the bytes received from server increased as you were downloading so I thought to use it instead, but when I tried in my local server the results were like close to what I downloaded,
downloaded: 37 MB in actual server detected: 35 MB but do you mean 40 KB or 40 MB? |
|
Downloaded: 30mb
By the native: 40kb (bytes / 1024) PS: I believe that because I use RedirectDownload this is not functional. Downloading through the server it seems that the progress estimated by the NetStats function can work. |
|
Originally Posted by Kalcor
- Adds data compression to file downloads. Note: Downloads with thousands of small files can still be slow.
|