#if defined _calflodet_included
#endinput
#endif
#define _calflodet_included
#include <a_samp>
#define mintimebetweencallbacks 200 // In miliseconds.
#define cfdOnDialogResponse 0
#define cfdOnEnterExitModShop 1
#define cfdOnPlayerClickMap 2
#define cfdOnPlayerClickPlayer 3
#define cfdOnPlayerClickPlayerTextDraw 4
#define cfdOnPlayerClickTextDraw 5
#define cfdOnPlayerDisconnect 6
#define cfdOnPlayerEditAttachedObject 7
#define cfdOnPlayerEditObject 8
#define cfdOnPlayerEnterCheckpoint 9
#define cfdOnPlayerEnterRaceCheckpoint 10
#define cfdOnPlayerEnterVehicle 11
#define cfdOnPlayerExitVehicle 12
#define cfdOnPlayerExitedMenu 13
#define cfdOnPlayerInteriorChange 14
#define cfdOnPlayerLeaveCheckpoint 15
#define cfdOnPlayerLeaveRaceCheckpoint 16
#define cfdOnPlayerObjectMoved 17
#define cfdOnPlayerPickUpPickup 18
#define cfdOnPlayerRequestClass 19
#define cfdOnPlayerRequestSpawn 20
#define cfdOnPlayerSelectObject 21
#define cfdOnPlayerSelectedMenuRow 22
#define cfdOnPlayerStateChange 23
#define cfdOnVehicleRespray 24
new stock lastcallbacktime[MAX_PLAYERS][25]; // This is where I would have to manually change the number of cells if I add or remove defines.
stock checkcallbackflood(playerid, callback)
{
new currenttime, bool:flood;
currenttime = GetTickCount();
if( (currenttime - lastcallbacktime[playerid][callback]) < mintimebetweencallbacks )
{
flood = true;
}
lastcallbacktime[playerid][callback] = currenttime;
if(flood)
{
CallRemoteFunction("OnCallbackFlood", "ii", playerid, callback); // I use CallRemoteFunction so I can use this custom callback in filterscripts too.
return 1;
}
return 0;
}
#if defined _calflodet_included
#endinput
#endif
#define _calflodet_included
#include <a_samp>
#define mintimebetweencallbacks 200 // In miliseconds.
enum cfdCallbacks
{
cfdOnDialogResponse,
cfdOnEnterExitModShop,
cfdOnPlayerClickMap,
cfdOnPlayerClickPlayer,
cfdOnPlayerClickPlayerTextDraw,
cfdOnPlayerClickTextDraw,
cfdOnPlayerDisconnect,
cfdOnPlayerEditAttachedObject,
cfdOnPlayerEditObject,
cfdOnPlayerEnterCheckpoint,
cfdOnPlayerEnterRaceCheckpoint,
cfdOnPlayerEnterVehicle,
cfdOnPlayerExitVehicle,
cfdOnPlayerExitedMenu,
cfdOnPlayerInteriorChange,
cfdOnPlayerLeaveCheckpoint,
cfdOnPlayerLeaveRaceCheckpoint,
cfdOnPlayerObjectMoved,
cfdOnPlayerPickUpPickup,
cfdOnPlayerRequestClass,
cfdOnPlayerRequestSpawn,
cfdOnPlayerSelectObject,
cfdOnPlayerSelectedMenuRow,
cfdOnPlayerStateChange,
cfdOnVehicleRespray,
};
new stock lastcallbacktime[MAX_PLAYERS][cfdCallbacks]; // Now, if I add or remove callbacks from the enum, the number of cells will be automatically adjusted.
stock checkcallbackflood(playerid, callback)
{
new currenttime, bool:flood;
currenttime = GetTickCount();
if( (currenttime - lastcallbacktime[playerid][callback]) < mintimebetweencallbacks )
{
flood = true;
}
lastcallbacktime[playerid][callback] = currenttime;
if(flood)
{
CallRemoteFunction("OnCallbackFlood", "ii", playerid, callback); // I use CallRemoteFunction so I can use this custom callback in filterscripts too.
return 1;
}
return 0;
}
if( (currenttime - lastcallbacktime[playerid][callback]) < mintimebetweencallbacks )
lastcallbacktime[playerid][callback] = currenttime;
new stock lastcallbacktime[MAX_PLAYERS][25];
new lastcallbacktime[MAX_PLAYERS][25];
Код:
new stock lastcallbacktime[MAX_PLAYERS][25]; ![]() Код:
new lastcallbacktime[MAX_PLAYERS][25]; |
#if defined _calflodet_included
#endinput
#endif
#define _calflodet_included
#include <a_samp>
#define mintimebetweencallbacks 200 // In miliseconds.
enum cfdCallbacks
{
cfdOnDialogResponse,
cfdOnEnterExitModShop,
cfdOnPlayerClickMap,
cfdOnPlayerClickPlayer,
cfdOnPlayerClickPlayerTextDraw,
cfdOnPlayerClickTextDraw,
cfdOnPlayerDisconnect,
cfdOnPlayerEditAttachedObject,
cfdOnPlayerEditObject,
cfdOnPlayerEnterCheckpoint,
cfdOnPlayerEnterRaceCheckpoint,
cfdOnPlayerEnterVehicle,
cfdOnPlayerExitVehicle,
cfdOnPlayerExitedMenu,
cfdOnPlayerInteriorChange,
cfdOnPlayerLeaveCheckpoint,
cfdOnPlayerLeaveRaceCheckpoint,
cfdOnPlayerObjectMoved,
cfdOnPlayerPickUpPickup,
cfdOnPlayerRequestClass,
cfdOnPlayerRequestSpawn,
cfdOnPlayerSelectObject,
cfdOnPlayerSelectedMenuRow,
cfdOnPlayerStateChange,
cfdOnVehicleRespray
};
new lastcallbacktime[MAX_PLAYERS][cfdCallbacks];
stock checkcallbackflood(playerid, cfdCallbacks:callback)
{
new currenttime = GetTickCount(), bool:flood = false;
if((currenttime - lastcallbacktime[playerid][callback]) < mintimebetweencallbacks)
{
flood = true; //Do you need this?
CallRemoteFunction("OnCallbackFlood", "ii", playerid, callback);
}
lastcallbacktime[playerid][callback] = currenttime;
return 1;
}
pawn Код:
|