Speedo Textdraws
#1

Heres the full code for the speedo:

Код:
/*
================================================================================
================================================================================
===============     Speedo - For SA-MP's Finest on‌ly	 	 ===============
===============                         ===============
================================================================================
================================================================================
*/
#define FILTERSCRIPT

#include <a_samp>

#if defined FILTERSCRIPT

// The textdraw news

forward SpeedUpdate(playerid);

new Text:Speed0[MAX_PLAYERS];
new Text:Speed1[MAX_PLAYERS];
new Text:Speed2[MAX_PLAYERS];

public OnFilterScriptInit()
{
 	print("\n--------------------------------------");
	print(" 		Speedo by Christopher		");
	print("--------------------------------------\n");

	return 1;
}

public OnFilterScriptExit()
{
	return 1;
}

#endif

public OnPlayerConnect(playerid)
{
	TextDrawUseBox(Speed0[playerid],1);
	TextDrawBoxColor(Speed0[playerid],0xff000099);
	TextDrawTextSize(Speed0[playerid],0.000000,-1.000000);
	TextDrawAlignment(Speed0[playerid],0);
	TextDrawAlignment(Speed1[playerid],0);
	TextDrawAlignment(Speed2[playerid],0);
	TextDrawBackgroundColor(Speed0[playerid],0xff000066);
	TextDrawBackgroundColor(Speed1[playerid],0x000000ff);
	TextDrawBackgroundColor(Speed2[playerid],0x000000ff);
	TextDrawFont(Speed0[playerid],3);
	TextDrawLetterSize(Speed0[playerid],1.000000,1.000000);
	TextDrawFont(Speed1[playerid],3);
	TextDrawLetterSize(Speed1[playerid],0.399999,2.200003);
	TextDrawFont(Speed2[playerid],3);
	TextDrawLetterSize(Speed2[playerid],0.599999,2.200000);
	TextDrawColor(Speed0[playerid],0xffffffff);
	TextDrawColor(Speed1[playerid],0xffffffff);
	TextDrawColor(Speed2[playerid],0xffffffff);
	TextDrawSetOutline(Speed0[playerid],1);
	TextDrawSetOutline(Speed1[playerid],1);
	TextDrawSetOutline(Speed2[playerid],1);
	TextDrawSetProportional(Speed0[playerid],1);
	TextDrawSetProportional(Speed1[playerid],1);
	TextDrawSetProportional(Speed2[playerid],1);
	TextDrawSetShadow(Speed0[playerid],1);
	TextDrawSetShadow(Speed1[playerid],1);
	TextDrawSetShadow(Speed2[playerid],1);
	return 1;
}

public OnPlayerCommandText(playerid, cmdtext[])
{
	if (strcmp("/speed", cmdtext, true, 10) == 0)
	{
	  new SpeedMessage[128];
    format(SpeedMessage, sizeof(SpeedMessage), "You're speed: %d", GetPlayerSpeedSpeedo(playerid, false));
    SendClientMessage(playerid, 0xFF0000AA, SpeedMessage);
		return 1;
	}
	return 0;
}
stock GetPlayerSpeedSpeedo(playerid, bool:kmh) // by misco
{
  new Float:Vx,Float:Vy,Float:Vz,Float:rtn;
  if(IsPlayerInAnyVehicle(playerid)) GetVehicleVelocity(GetPlayerVehicleID(playerid),Vx,Vy,Vz); else GetPlayerVelocity(playerid,Vx,Vy,Vz);
  rtn = floatsqroot(floatabs(floatpower(Vx + Vy + Vz,2)));
  return kmh?floatround(rtn * 100 * 1.61):floatround(rtn * 100);
}

public OnPlayerStateChange(playerid, newstate, oldstate)
{
	if(newstate == PLAYER_STATE_DRIVER || newstate == PLAYER_STATE_PASSENGER)
	{
	//////////////////////////////////////////////////
	//////////////////////////////////////////////////
	//// Creating the structure of the Textraws ////
	//////////////////////////////////////////////////
	//////////////////////////////////////////////////
	TextDrawUseBox(Speed0[playerid],1);
	TextDrawBoxColor(Speed0[playerid],0xff000099);
	TextDrawTextSize(Speed0[playerid],0.000000,-1.000000);
	TextDrawAlignment(Speed0[playerid],0);
	TextDrawAlignment(Speed1[playerid],0);
	TextDrawAlignment(Speed2[playerid],0);
	TextDrawBackgroundColor(Speed0[playerid],0xff000066);
	TextDrawBackgroundColor(Speed1[playerid],0x000000ff);
	TextDrawBackgroundColor(Speed2[playerid],0x000000ff);
	TextDrawFont(Speed0[playerid],3);
	TextDrawLetterSize(Speed0[playerid],1.000000,1.000000);
	TextDrawFont(Speed1[playerid],3);
	TextDrawLetterSize(Speed1[playerid],0.399999,2.200003);
	TextDrawFont(Speed2[playerid],3);
	TextDrawLetterSize(Speed2[playerid],0.599999,2.200000);
	TextDrawColor(Speed0[playerid],0xffffffff);
	TextDrawColor(Speed1[playerid],0xffffffff);
	TextDrawColor(Speed2[playerid],0xffffffff);
	TextDrawSetOutline(Speed0[playerid],1);
	TextDrawSetOutline(Speed1[playerid],1);
	TextDrawSetOutline(Speed2[playerid],1);
	TextDrawSetProportional(Speed0[playerid],1);
	TextDrawSetProportional(Speed1[playerid],1);
	TextDrawSetProportional(Speed2[playerid],1);
	TextDrawSetShadow(Speed0[playerid],1);
	TextDrawSetShadow(Speed1[playerid],1);
	TextDrawSetShadow(Speed2[playerid],1);
	
	Speed0[playerid] = TextDrawCreate(133.000000,144.000000,"     ");
	
	Speed1[playerid] = TextDrawCreate(13.000000,144.000000,"SA-MP's Finest");

	new SpeedMessage[128];
  format(SpeedMessage, sizeof(SpeedMessage), "%d MPH", GetPlayerSpeedSpeedo(playerid, false));
	Speed2[playerid] = TextDrawCreate(19.000000,206.000000,SpeedMessage);
  SetTimerEx("SpeedUpdate",200,true,"i",playerid);
  
  	TextDrawShowForPlayer(playerid, Speed0[playerid]);
	TextDrawShowForPlayer(playerid, Speed1[playerid]);
	TextDrawShowForPlayer(playerid, Speed2[playerid]);
	}
	return 1;
}

public SpeedUpdate(playerid)
{
	if(IsPlayerInAnyVehicle(playerid))
	{
		TextDrawUseBox(Speed0[playerid],1);
		TextDrawBoxColor(Speed0[playerid],0xff000099);
		TextDrawTextSize(Speed0[playerid],0.000000,-1.000000);
		TextDrawAlignment(Speed0[playerid],0);
		TextDrawAlignment(Speed1[playerid],0);
		TextDrawAlignment(Speed2[playerid],0);
		TextDrawBackgroundColor(Speed0[playerid],0xff000066);
		TextDrawBackgroundColor(Speed1[playerid],0x000000ff);
		TextDrawBackgroundColor(Speed2[playerid],0x000000ff);
		TextDrawFont(Speed0[playerid],3);
		TextDrawLetterSize(Speed0[playerid],1.000000,1.000000);
		TextDrawFont(Speed1[playerid],3);
		TextDrawLetterSize(Speed1[playerid],0.399999,2.200003);
		TextDrawFont(Speed2[playerid],3);
		TextDrawLetterSize(Speed2[playerid],0.599999,2.200000);
		TextDrawColor(Speed0[playerid],0xffffffff);
		TextDrawColor(Speed1[playerid],0xffffffff);
		TextDrawColor(Speed2[playerid],0xffffffff);
		TextDrawSetOutline(Speed0[playerid],1);
		TextDrawSetOutline(Speed1[playerid],1);
		TextDrawSetOutline(Speed2[playerid],1);
		TextDrawSetProportional(Speed0[playerid],1);
		TextDrawSetProportional(Speed1[playerid],1);
		TextDrawSetProportional(Speed2[playerid],1);
		TextDrawSetShadow(Speed0[playerid],1);
		TextDrawSetShadow(Speed1[playerid],1);
		TextDrawSetShadow(Speed2[playerid],1);
	
		TextDrawDestroy(Speed2[playerid]);
		new SpeedMessage[128];
	  format(SpeedMessage, sizeof(SpeedMessage), "%d MPH", GetPlayerSpeedSpeedo(playerid, false));
		Speed2[playerid] = TextDrawCreate(21.000000,182.000000,SpeedMessage);
		TextDrawShowForPlayer(playerid, Speed2[playerid]);
	}
	else
	{
 		TextDrawDestroy(Speed0[playerid]);
  	TextDrawDestroy(Speed1[playerid]);
  	TextDrawDestroy(Speed2[playerid]);
	}
}
It's supposed to show a red box in the backround and different text but it dose this:

Reply
#2

Well its simple but still ok..the thing is you should really optimize your code..you repeat a lot which is technically unnecessary.. you can use TextDrawSetString to update the speedo, but then again its your choice..if you like how it responds to you now then so be it.
Reply
#3

It's not creating the textdraws properly tho
Reply


Forum Jump:


Users browsing this thread: 1 Guest(s)