15.12.2013, 13:59
The rest is about speed and things,but okay,I will show it.
pawn Код:
public CrashListener()
{
for(new i = 0; i < MAX_PLAYERS; i ++)
{
if(IsPlayerConnected(i) && !IsPlayerNPC(i)) PlayerUpdateListener(i);
if(IsPlayerConnectedEx(i))
{
if(IsPlayerInAnyVehicle(i) && !crash_detection_disabled[i])
{
new veh = GetPlayerVehicleID(i);
new Float:hp;
GetVehicleHealth(veh,hp);
if(hp < crash_vhp[veh])
{
new Float:difference;
difference = (crash_vhp[veh] - hp);
if(difference > 100)
{
new Float:speed_x, Float:speed_y, Float:speed_z;
GetVehicleVelocity(GetPlayerVehicleID(i),speed_x,speed_y,speed_z);
new Float:final_speed = floatsqroot(((speed_x*speed_x)+(speed_y*speed_y))+(speed_z*speed_z))*99.4166672; // 250.666667 = kmph // 199,4166672 = mph
new speed = floatround(final_speed,floatround_round);
if(speed < player_vehicle_speed[i])
{
new Float:sdifference;
sdifference = (player_vehicle_speed[i] - speed);
if(sdifference > 20)
{
new drunk_gain = 4000;
if(seatbelt[i]) { drunk_gain = 3000; }
SetPlayerDrunkLevel(i,(GetPlayerDrunkLevel(i) + drunk_gain));
if(difference > 100)
{
new Float:phploss;
phploss = floatround((difference / 4));
if(seatbelt[i]) { phploss = floatround(phploss / 2); if(phploss < 0) { phploss = 0; } }
new Float:php;
GetPlayerHealth(i,php);
SetPlayerHealth(i,(php - phploss));
}
TextDrawShowForPlayer(i,crash_screen);
SetTimerEx("HideCrash",250,0,"i",i);
}
}
}
}
}
if(!speedcamera_cooldown[i] && GetPlayerState(i) == PLAYER_STATE_DRIVER)
{
for(new a = 0; a < sizeof(speed_cameras); a ++)
{
if(IsPlayerInRangeOfPoint(i,30.0,speed_cameras[a][0],speed_cameras[a][1],speed_cameras[a][2]))
{
if(player_vehicle_speed[i] >= 61)
{
if(!InCopCar(i) && !InAmbulance(i) && !IsAircraft(GetPlayerVehicleID(i)) && GetVehicleModel(GetPlayerVehicleID(i)) != 407)
{
new Float:X, Float:Y, Float:Z;
GetPlayerPos(i,X,Y,Z);
new name[MAX_PLAYER_NAME];
GetCharacterNameEx(i,name);
new str[256];
format(str,sizeof(str),"** FLASH ** Radarul a facut o poza asupra vehiculului lui %s",name);
SendServerEmote(str,X, Y, Z, 30.0, 0);
speedcamera_cooldown[i] = 60;
if(CharacterInfo[i][active_character[i]][cBank] >= 420) { CharacterInfo[i][active_character[i]][cBank] -= 420; FactionInfo[0][fBank] += 420; CharacterInfo[i][active_character[i]][cSpeedTicket] += 420; }
PlayerPlaySound(i,1132,0.0,0.0,0.0);
if(speed_camera_stats[a] == -1)
{
X = speed_cameras[a][0];
Y = speed_cameras[a][1];
GetPosInFrontOfCoord(X, Y, speed_cameras[a][2], 2.0);
speed_camera_flash[a] = CreateObject(18670,X, Y,(speed_cameras[a][2] + 4.5),0.0,0.0,0.0);
speed_camera_stats[a] = 3;
}
}
}
}
}
}
// Buildings
for(new h = 0; h < sizeof(InteriorInfo); h++)
{
new string[128];
if(IsPlayerInRangeOfPoint(i,1.5,InteriorInfo[h][iSpawnX], InteriorInfo[h][iSpawnY], InteriorInfo[h][iSpawnZ]))
{
format(string, sizeof(string), "%s", InteriorInfo[h][iNames]);
GameTextForPlayer(i, string, 2000, 3);
}
}
}
}
for(new b = 0; b < MAX_VEHICLES; b ++) { new Float:hp; GetVehicleHealth(b,hp); crash_vhp[b] = hp; }
}