Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- // SendClientCheck example script by evgen1137
- // thanks to MTA devs for structs
- #include <a_samp>
- native SendClientCheck(playerid, type, arg, offset, size);
- forward OnClientCheckResponse(playerid, type, arg, response);
- #define GetBit(%0,%1) ((%0 >> %1) & 1)
- enum Flags
- {
- b0x01,
- bApplyGravity,
- bDisableFriction,
- bCollidable,
- b0x10,
- bDisableMovement,
- b0x40,
- b0x80,
- bSubmergedInWater,
- bOnSolidSurface,
- bBroken,
- b0x800,
- b0x1000,
- b0x2000,
- b0x4000,
- b0x8000,
- b0x10000,
- b0x20000,
- bBulletProof,
- bFireProof,
- bCollisionProof,
- bMeeleProof,
- bInvulnerable,
- bExplosionProof,
- b0x1000000,
- bAttachedToEntity,
- b0x4000000,
- bTouchingWater,
- bEnableCollision,
- bDestroyed,
- b0x40000000,
- b0x80000000
- };
- new PhysFlags[MAX_PLAYERS][Flags];
- new Timer;
- public OnFilterScriptInit()
- {
- Timer = SetTimer("TimerFunc", 1000, true);
- }
- public OnFilterScriptExit()
- {
- KillTimer(Timer);
- }
- public OnPlayerConnect(playerid)
- {
- for(new i = 0; i < 32; i++)
- {
- PhysFlags[playerid][Flags:i] = 0;
- }
- SendClientCheck(playerid, 0x48, 0, 0, 2);
- SendClientCheck(playerid, 0x46, 1598, 0, 28); // 1598 - beachball
- SendClientCheck(playerid, 0x47, 1598, 0, 48); // 1598 - beachball
- return 1;
- }
- public OnClientCheckResponse(playerid, type, arg, response)
- {
- new str[128];
- switch(type)
- {
- case 0x2:
- {
- // CPhysicalSAInterface
- // https://github.com/multitheftauto/mtasa-blue/blob/master/MTA10/game_sa/CPhysicalSA.h#L39-L73
- for(new i = 0; i < 32; i++)
- {
- PhysFlags[playerid][Flags:i] = GetBit(arg, i);
- }
- format(str, sizeof(str), "bSubmergedInWater: %d, bOnSolidSurface: %d", PhysFlags[playerid][bSubmergedInWater], PhysFlags[playerid][bOnSolidSurface]);
- SendClientMessage(playerid, -1, str);
- }
- case 0x46:
- {
- // CBaseModelInfoSAInterface
- // https://github.com/multitheftauto/mtasa-blue/blob/master/MTA10/game_sa/CModelInfoSA.h#L138-L181
- format(str, sizeof(str), "Model %d has checksum 0x%x", arg, response);
- SendClientMessage(playerid, -1, str);
- }
- case 0x47:
- {
- // CColModelSAInterface
- // https://github.com/multitheftauto/mtasa-blue/blob/master/MTA10/game_sa/CColModelSA.h#L87-L91
- format(str, sizeof(str), "Col model %d has checksum 0x%x", arg, response);
- SendClientMessage(playerid, -1, str);
- }
- case 0x48:
- {
- format(str, sizeof(str), "Your computer has been running for %s!", Convert(arg / 1000));
- SendClientMessage(playerid, -1, str);
- }
- }
- return 1;
- }
- forward TimerFunc();
- public TimerFunc()
- {
- for(new i = 0; i < MAX_PLAYERS; i++)
- {
- if(!IsPlayerConnected(i)) continue;
- SendClientCheck(i, 0x2, 0, 0, 2);
- }
- }
- Convert(number)
- {
- new hours = 0, mins = 0, secs = 0, string[100];
- hours = floatround(number / 3600);
- mins = floatround((number / 60) - (hours * 60));
- secs = floatround(number - ((hours * 3600) + (mins * 60)));
- if(hours > 0)
- {
- format(string, 100, "%d:%02d:%02d", hours, mins, secs);
- }
- else
- {
- format(string, 100, "%d:%02d", mins, secs);
- }
- return string;
- }
Add Comment
Please, Sign In to add comment