Textdraw7 = TextDrawCreate(230.799987, 403.953308, "usebox"); TextDrawLetterSize(Textdraw7, 0.000000, 1.591485); TextDrawTextSize(Textdraw7, 129.199996, 0.000000); TextDrawAlignment(Textdraw7, 1); TextDrawColor(Textdraw7, 0); TextDrawUseBox(Textdraw7, true); TextDrawBoxColor(Textdraw7, 102); TextDrawSetShadow(Textdraw7, 0); TextDrawSetOutline(Textdraw7, 0); TextDrawFont(Textdraw7, 0); Textdraw8 = TextDrawCreate(139.199981, 403.946777, "1000 ~w~Km/h"); TextDrawLetterSize(Textdraw8, 0.415599, 1.473066); TextDrawAlignment(Textdraw8, 1); TextDrawColor(Textdraw8, -16776961); TextDrawSetShadow(Textdraw8, 0); TextDrawSetOutline(Textdraw8, 1); TextDrawBackgroundColor(Textdraw8, 51); TextDrawFont(Textdraw8, 1); TextDrawSetProportional(Textdraw8, 1); |
for(new i = 0; i < GetMaxPlayers(); i++)
{
//more textdraws before
Textdraw7 = TextDrawCreate(230.799987, 403.953308, "usebox"); //box
TextDrawLetterSize(Textdraw7, 0.000000, 1.591485);
TextDrawTextSize(Textdraw7, 129.199996, 0.000000);
TextDrawAlignment(Textdraw7, 1);
TextDrawColor(Textdraw7, 0);
TextDrawUseBox(Textdraw7, true);
TextDrawBoxColor(Textdraw7, 102);
TextDrawSetShadow(Textdraw7, 0);
TextDrawSetOutline(Textdraw7, 0);
TextDrawFont(Textdraw7, 0);
for(new i = 0; i < GetMaxPlayers(); i++)
{
Textdraw8[i] = TextDrawCreate(139.199981, 403.946777, ""); //speed
TextDrawLetterSize(Textdraw8[i], 0.415599, 1.473066);
TextDrawAlignment(Textdraw8[i], 1);
TextDrawColor(Textdraw8[i], -16776961);
TextDrawSetShadow(Textdraw8[i], 0);
TextDrawSetOutline(Textdraw8[i], 1);
TextDrawBackgroundColor(Textdraw8[i], 51);
TextDrawFont(Textdraw8[i], 1);
TextDrawSetProportional(Textdraw8[i], 1);
//more textdraws, such as fuel, health and etc.
}
}
public OnPlayerStateChange(playerid, newstate, oldstate)
{
if(newstate == PLAYER_STATE_DRIVER || newstate == PLAYER_STATE_PASSENGER) {
TextDrawShowForPlayer(playerid, Textdraw7); //show box
for(new i = 0; i < MAX_PLAYERS; i++)
{
TextDrawShowForPlayer(playerid, Textdraw8[playerid]); //show speed
}
}
else if(oldstate == PLAYER_STATE_DRIVER || oldstate == PLAYER_STATE_PASSENGER) {
TextDrawHideForPlayer(playerid, Textdraw7); //show box
for(new i = 0; i < MAX_PLAYERS; i++)
{
TextDrawHideForPlayer(playerid, Textdraw8[playerid]); //show speed
}
}
}
//after public OnGameModeInit()
SetTimer("speedoUpdate", 10, true); //the bigger number is, the slower speedometer will be (this is time in milliseconds).
//somewhere at the bottom of your script
forward speedoUpdate(playerid);
public speedoUpdate(playerid)
{
for(new i = 0; i < MAX_PLAYERS; i++)
{
if(IsPlayerConnected(i) && IsPlayerInAnyVehicle(i))
{
new string [ 32 ],
format(string, sizeof(string), "%d", GetPlayerSpeed(i, 0)); //set string for Texdraw8
TextDrawSetString(Texdraw8[i], string);
}
}
return 1;
}
stock GetPlayerSpeed(playerid, get3d) //get player speed
{
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);
}
[PHP]
PHP код:
|
speedoUpdate(playerid);
new Text:spbox;
new PlayerText:speedometer[MAX_PLAYERS];
public OnPlayerConnect(playerid){
speedometer[playerid]=CreatePlayerTextDraw(playerid,139.19, 403.94, ""); //speed
PlayerTextDrawLetterSize(playerid,speedometer[playerid], 0.415599, 1.473066);
PlayerTextDrawAlignment(playerid,speedometer[playerid], 1);
PlayerTextDrawColor(playerid,speedometer[playerid], -16776961);
PlayerTextDrawSetShadow(playerid,speedometer[playerid], 0);
PlayerTextDrawSetOutline(playerid,speedometer[playerid], 1);
PlayerTextDrawBackgroundColor(playerid,speedometer[playerid], 51);
PlayerTextDrawFont(playerid,speedometer[playerid], 1);
PlayerTextDrawSetProportional(playerid,speedometer[playerid], 1);
return 1;
}
public OnGameModeInit(){
SetTimer("Update02sec",200,true);
spbox = TextDrawCreate(230.79, 403.95, "_"); //box
TextDrawLetterSize(spbox, 0.0, 1.591485);
TextDrawTextSize(spbox, 129.199996, 0.0);
TextDrawAlignment(spbox, 1);
TextDrawColor(spbox, 0);
TextDrawUseBox(spbox, true);
TextDrawBoxColor(spbox, 102);
TextDrawSetShadow(spbox, 0);
TextDrawSetOutline(spbox, 0);
TextDrawFont(spbox, 0);
return 1;
}
public OnPlayerStateChange(playerid){
if(newstate==PLAYER_STATE_DRIVER || newstate==PLAYER_STATE_PASSENGER){
PlayerTextDrawShow(playerid,speedometer[playerid]);
TextDrawShowForPlayer(playerid,spbox);
}
if(newstate==PLAYER_STATE_ONFOOT){
PlayerTextDrawHide(playerid,speedometer[playerid]);
TextDrawHideForPlayer(playerid,spbox);
}
return 1;
}
forward Update02sec();
public Update02sec(){
new str[20];
for(new i;i<MAX_PLAYERS;i++){
if(!IsPlayerConnected(i) || !IsPlayerInAnyVehicle(i))continue;
format(str,sizeof(str),"speed: %d",GetVehSpeed(GetPlayerVehicleID(i));
PlayerTextDrawSetString(i,speedometer[i],str);
}
return 1;
}
GetVehSpeed(vid){
new Float:pos[3];
GetVehicleVelocity(vid,pos[0],pos[1],pos[2]);
return floatround(floatsqroot(pos[0] * pos[0] + pos[1] * pos[1] + pos[2] * pos[2]) * 180.0);
}
i think that you only need around 100-300ms, no need to go 10ms. Dont use global textdraws, when dealing with different values, every single player, so use CreatePlayerTextDraw.
PHP код:
|