All pastes #1790080 Raw Edit

speedo-h8o-meter

public cpp v1 · immutable
#1790080 ·published 2010-02-08 13:11 UTC
rendered paste body
#define FILTERSCRIPT#include <a_samp>#include <foreach>#define SPEEDO_UPDATE_INTERVAL	100#define INVALID_TEXTDRAW		(Text:-1)new Text:player_hud[MAX_PLAYERS] = {INVALID_TEXTDRAW, ...};new bool:is_air_driver[MAX_PLAYERS];forward RedrawSpeedoForAll(playerid);forward Float:GetPlayerZ(playerid);forward Float:GetVehicleSpeed(vehicleid);Itter_Create(SpeedoUser, MAX_PLAYERS);public OnFilterScriptInit(){	foreach (Player, i)	{		if (IsPlayerInAnyVehicle(i))		{			TogglePlayerSpeedo(i, true);		}	}	SetTimer("RedrawSpeedoForAll", SPEEDO_UPDATE_INTERVAL, true);	return 1;}public OnFilterScriptExit(){	foreach (Player, i)	{		TogglePlayerSpeedo(i, false);	}	return 1;}public OnPlayerDisconnect(playerid, reason){	#pragma unused reason	if (!IsPlayerNPC(playerid))	{		TogglePlayerSpeedo(playerid, false);	}	return 1;}public OnPlayerStateChange(playerid, newstate, oldstate){	#pragma unused oldstate	if (!IsPlayerNPC(playerid))	{		if (newstate == PLAYER_STATE_DRIVER || newstate == PLAYER_STATE_PASSENGER)		{			TogglePlayerSpeedo(playerid, true);		}		else		{			TogglePlayerSpeedo(playerid, false);		}	}	return 1;}public RedrawSpeedoForAll(playerid){	new text[30];	foreach (SpeedoUser, i)	{		if (player_hud[i] != INVALID_TEXTDRAW)		{			if (is_air_driver[i])			{				format(text, sizeof(text), "%0.0f km/h ~n~ ~n~%0.0f m", 200 * GetVehicleSpeed(GetPlayerVehicleID(i)), GetPlayerZ(i));			}			else			{				format(text, sizeof(text), "%0.0f km/h", 200 * GetVehicleSpeed(GetPlayerVehicleID(i)));			}			TextDrawSetString(player_hud[i], text);		}	}	return 1;}Float:GetPlayerZ(playerid){	new Float:z;	GetPlayerPos(playerid, z, z, z);	return z;}Float:GetVehicleSpeed(vehicleid){	new Float:vX;	new Float:vY;	new Float:vZ;	GetVehicleVelocity(vehicleid, vX, vY, vZ);	return floatsqroot(vX*vX + vY*vY + vZ*vZ);}TogglePlayerSpeedo(playerid, bool:toggle){	if (toggle)	{		new Text:td = TextDrawCreate(620, 390, "0 km/h");		TextDrawColor(td, 0xEDFFDBFF);		TextDrawSetProportional(td, true);		TextDrawSetOutline(td, 1);		TextDrawAlignment(td, 3);		TextDrawLetterSize(td, 0.5, 1.6);		TextDrawFont(td, 3);		TextDrawShowForPlayer(playerid, td);		player_hud[playerid] = td;		Itter_Add(SpeedoUser, playerid);		is_air_driver[playerid] = bool:IsAirVehicle(GetPlayerVehicleID(playerid));	}	else	{		if (player_hud[playerid] != INVALID_TEXTDRAW)		{			TextDrawDestroy(player_hud[playerid]);			player_hud[playerid] = INVALID_TEXTDRAW;		}		Itter_Remove(SpeedoUser, playerid);	}	return 1;}IsAirVehicle(vehicleid){    switch (GetVehicleModel(vehicleid))	{		case 592, 577, 511, 512, 593, 520, 553, 476, 519, 460, 513, 548, 425, 417, 487, 488, 497, 563, 447, 469: return 1;	}	return 0;}