rendered paste body#define FILTERSCRIPT#include <a_samp>#include <arrbit>#define COLOR_FORE 0x000000FF#define COLOR_BACK 0xD31919FF#define HUD_UPDATE_INTERVAL 100#define INVALID_TEXTDRAW_ID (Text:-1)new Text:gPlayerHUD[MAX_PLAYERS] = {INVALID_TEXTDRAW_ID, ...}, bitarray(gShownHUD, MAX_PLAYERS);forward LaunchTimers();forward UpdatePlayerHUD(playerid);Float:GetVehicleSpeed(vehicleid){ new Float:vX, Float:vY, Float:vZ; GetVehicleVelocity(vehicleid, vX, vY, vZ); return floatsqroot(vX*vX + vY*vY + vZ*vZ);}CreatePlayerHUD(playerid){ gPlayerHUD[playerid] = TextDrawCreate(620, 410, "0 kmh"); TextDrawSetProportional(gPlayerHUD[playerid], true); TextDrawUseBox(gPlayerHUD[playerid], false); TextDrawSetOutline(gPlayerHUD[playerid], 2); TextDrawAlignment(gPlayerHUD[playerid], 3); TextDrawLetterSize(gPlayerHUD[playerid], 0.7, 2.0); TextDrawFont(gPlayerHUD[playerid], 3); TextDrawColor(gPlayerHUD[playerid], COLOR_FORE); TextDrawBackgroundColor(gPlayerHUD[playerid], COLOR_BACK); return 1;}DestroyPlayerHUD(playerid){ TextDrawHideForPlayer(playerid, gPlayerHUD[playerid]); TextDrawDestroy(gPlayerHUD[playerid]); gPlayerHUD[playerid] = INVALID_TEXTDRAW_ID; return 1;}ShowPlayerHUD(playerid, bool:show){ if (show) { truebit(gShownHUD, playerid); TextDrawShowForPlayer(playerid, gPlayerHUD[playerid]); } else { falsebit(gShownHUD, playerid); TextDrawHideForPlayer(playerid, gPlayerHUD[playerid]); } return 1; } public UpdatePlayerHUD(playerid){ if (getbit(gShownHUD, playerid) && gPlayerHUD[playerid] != INVALID_TEXTDRAW_ID) { new text[30]; format(text, sizeof(text), "%.0f kmh", 200 * GetVehicleSpeed(GetPlayerVehicleID(playerid))); TextDrawSetString(gPlayerHUD[playerid], text); return 1; } return 0;}public LaunchTimers(){ static playerid; SetTimerEx("UpdatePlayerHUD", HUD_UPDATE_INTERVAL, true, "i", playerid); if (playerid < MAX_PLAYERS) { SetTimer("LaunchTimers", HUD_UPDATE_INTERVAL / MAX_PLAYERS, false); playerid++; } else { playerid = 0; } return 1;}public OnFilterScriptInit(){ for (new i; i < MAX_PLAYERS; i++) { if (IsPlayerConnected(i) && !IsPlayerNPC(i)) { CreatePlayerHUD(i); ShowPlayerHUD(i, (GetPlayerState(i) == PLAYER_STATE_DRIVER)); } } LaunchTimers(); return 1;}public OnFilterScriptExit(){ for (new i; i < MAX_PLAYERS; i++) { if (IsPlayerConnected(i) && !IsPlayerNPC(i)) { DestroyPlayerHUD(i); } } return 1;}public OnPlayerConnect(playerid){ if (!IsPlayerNPC(playerid)) { CreatePlayerHUD(playerid); } return 1;}public OnPlayerDisconnect(playerid, reason){ #pragma unused reason if (!IsPlayerNPC(playerid)) { DestroyPlayerHUD(playerid); } return 1;}public OnPlayerStateChange(playerid, newstate, oldstate){ #pragma unused oldstate if (!IsPlayerNPC(playerid)) { ShowPlayerHUD(playerid, (newstate == PLAYER_STATE_DRIVER)); } return 1;}