14.02.2015, 13:47
(
Последний раз редактировалось Akcent_Voltaj; 31.03.2015 в 13:35.
)
fixed
stock Float: player_get_speed(playerid)
{
new
Float: fVelocity[4];
GetVehicleVelocity(GetPlayerVehicleID(playerid), fVelocity[0], fVelocity[1], fVelocity[2]);
fVelocity[3] = floatsqroot((fVelocity[0] * fVelocity[0]) + (fVelocity[1] * fVelocity[1]) + (fVelocity[2] * fVelocity[2])) * 100;
fVelocity[3] += fVelocity[3] / 2;
return fVelocity[3];
}
Timer:ServerHeartbeat[1000]()
{
foreach(Player, i)
{
if(GetPlayerState(i) == PLAYER_STATE_DRIVER && AdminDuty[i] != 1 && !IsAPlane(GetPlayerVehicleID(i))) {
new Float:fCurrentSpeed, zName[MAX_PLAYER_NAME];
fCurrentSpeed = player_get_speed(i);
fVehSpeed[i] = fCurrentSpeed;
if(fCurrentSpeed > 200) {
new string[74 + MAX_PLAYER_NAME];
format(string, sizeof(string), "{AA3333}AdmWarning{FFFF00}: %s (ID %d) may possibly be speed hacking (%.0f MPH).", szName, i, fCurrentSpeed);
ABroadCast(COLOR_YELLOW, string, 2);
}
}
}
}
#define SpeedCheck(%0,%1,%2,%3,%4) floatround(floatsqroot(%4?(%0*%0+%1*%1+%2*%2):(%0*%0+%1*%1) ) *%3*1.8)
stock GetPlayerSpeed(playerid, get3d)
{
new Float:x, Float:y, Float:z;
if(IsPlayerInAnyVehicle(playerid)) GetVehicleVelocity(GetPlayerVehicleID(playerid), x, y, z);
else GetPlayerVelocity(playerid, x, y, z);
return SpeedCheck(x, y, z, 100.0, get3d);
}
for(new i=0; i<MAX_PLAYERS; i++)
{
if(IsPlayerConnected(i))
{
new string1[128], sendername[25];
GetPlayerName(i, sendername, sizeof(sendername));
if(GetPlayerState(i) == PLAYER_STATE_DRIVER)
{
new speed=GetPlayerSpeed(i,0);
GetPlayerName(i, sendername, sizeof(sendername));
if(speed>225)
{
format(string1, sizeof(string1), "*ATENTIE*: %s [%d] circula cu viteza de %.0d km/h intr-un %s", sendername, i, speed,VehicleNames[GetVehicleModel(GetPlayerVehicleID(i))-400]);
//Aici pui functia care le trimite mesah adminilor. ABroadCast sau cum ai tu in GameMode.
}
}
}
}