Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <a_samp>
- #include <Dini>
- #define GetServerAveragePlayers() j_a_GlobalInfo[CurrentAverage]
- #define TIME_USED 1
- /* TIME_USED is the interval for refreshing the average
- - Use '1' for each 10 seconds
- - Use '2' for each minute
- - Use '3' for each hour
- WARNING: When changing TIME_USED, you must reset the time saved (delete "j_average.jcfg")
- */
- enum j_a_gInfo
- {
- PlayersConnected,
- TotalPlayers,
- TotalChecks,
- Float:CurrentAverage
- };
- new j_a_GlobalInfo[j_a_gInfo];
- static gj_a__HasCB[2];
- #if defined FILTERSCRIPT
- #define UseCallback OnFilterScriptInit
- #else
- #define UseCallback OnGameModeInit
- #endif
- public UseCallback()
- {
- #if TIME_USED == 1
- SetTimer("OnAverageUpdate",10000,1);
- #elseif TIME_USED == 2
- SetTimer("OnAverageUpdate",60000,1);
- #elseif TIME_USED == 3
- SetTimer("OnAverageUpdate",3600000,1);
- #endif
- if(fexist("j_average.jcfg"))
- {
- j_a_GlobalInfo[TotalPlayers] = dini_Int("j_average.jcfg","TotalPlayers");
- j_a_GlobalInfo[TotalChecks] = dini_Int("j_average.jcfg","TotalChecks");
- j_a_GlobalInfo[CurrentAverage] = dini_Int("j_average.jcfg","CurrentAverage");
- }
- else dini_Create("j_average.jcfg");
- #if defined FILTERSCRIPT
- for(new i = 0; i < MAX_PLAYERS; i ++)
- {
- if(IsPlayerConnected(i)) j_a_GlobalInfo[OnlinePlayers] ++;
- }
- #endif
- gj_a__HasCB[0] = funcidx("j_a__OnPlayerConnect") != -1;
- gj_a__HasCB[1] = funcidx("j_a__OnPlayerDisconnect") != -1;
- if(funcidx("j_a__"#UseCallback"") != -1)
- {
- return CallLocalFunction("j_a__"#UseCallback"", "");
- }
- return 1;
- }
- #if defined FILTERSCRIPT
- #if defined _ALS_OnFilterScriptInit
- #undef OnFilterScriptInit
- #else
- #define OnFilterScriptInit
- #endif
- #define OnGameModeInit j_a__OnFilterScriptInit
- forward j_a__OnFilterScriptInit();
- #else
- #if defined _ALS_OnGameModeInit
- #undef OnGameModeInit
- #else
- #define _ALS_OnGameModeInit
- #endif
- #define OnGameModeInit j_a__OnGameModeInit
- forward j_a__OnGameModeInit();
- #endif
- public OnPlayerConnect(playerid)
- {
- j_a_GlobalInfo[PlayersConnected] ++;
- if(gj_a__HasCB[0])
- {
- return CallLocalFunction("j_a__OnPlayerConnect","i",playerid);
- }
- return 1;
- }
- #if defined _ALS_OnPlayerConnect
- #undef OnPlayerConnect
- #else
- #define _ALS_OnPlayerConnect
- #endif
- #define OnPlayerConnect j_a__OnPlayerConnect
- forward j_a__OnPlayerConnect(playerid);
- public OnPlayerDisconnect(playerid, reason)
- {
- j_a_GlobalInfo[PlayersConnected] --;
- if(gj_a__HasCB[1])
- {
- return CallLocalFunction("j_a__OnPlayerDisconnect","ii",playerid,reason);
- }
- return 1;
- }
- #if defined _ALS_OnPlayerDisconnect
- #undef OnPlayerDisconnect
- #else
- #define _ALS_OnPlayerDisconnect
- #endif
- #define OnPlayerDisconnect j_a__OnPlayerDisconnect
- forward j_a__OnPlayerDisconnect(playerid, reason);
- forward OnAverageUpdate();
- public OnAverageUpdate()
- {
- j_a_GlobalInfo[TotalChecks] ++;
- j_a_GlobalInfo[TotalPlayers] += j_a_GlobalInfo[PlayersConnected];
- j_a_GlobalInfo[CurrentAverage] = floatdiv(j_a_GlobalInfo[TotalPlayers],j_a_GlobalInfo[TotalChecks]);
- dini_IntSet("j_average.jcfg","TotalPlayers",j_a_GlobalInfo[TotalPlayers]);
- dini_IntSet("j_average.jcfg","TotalChecks",j_a_GlobalInfo[TotalChecks]);
- dini_FloatSet("j_average.jcfg","CurrentAverage",j_a_GlobalInfo[CurrentAverage]);
- return 1;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement