Hallo,
Ich sitze zur Zeit an einem Selfmadescript und habe letztens 2 Textdraws erstellt. Einen für die Uhr und einen für das Tacho. Diese haben auch eigentlich erstmal super funktioniert. Doch seit ein paar Tagen vertauschen sich immer Uhr und Tacho. Wenn man in keinem Auto sitzt ist das Feld wo die Uhr sein sollte Leer und wenn man dann drinnen sitzt wechseln sich Uhr und Tacho auf Position der Uhr ab . Ich bin mir ziemlich sicher, dass ich an den Textdraws seit es funktioniert hat nichts mehr geändert habe. Vielleicht könnt ihr mir ja helfen. Eine Datumsanzeige habe ich auch gemacht, aber die Funktioniert tadellos.
Defines usw.:
new Text:EchtZeitUhr;
new Text:datum;
new Text:Tacho[MAX_PLAYERS];
#define TACHOTIMER 1000
Gamemodeinit:
SetTimer("UpdateTacho",TACHOTIMER,1);
//uhr
new stunde, minute, sek, astring[128];
gettime(stunde, minute, sek);
if(stunde<9 && minute<9){format(astring,sizeof(astring),"0%d:0%d",stunde,minute);}
else if(stunde>9 && minute<9){format(astring,sizeof(astring),"%d:0%d",stunde,minute);}
else if(stunde<9 && minute>9){format(astring,sizeof(astring),"0%d:%d",stunde,minute);}
else
{
format(astring,sizeof(astring),"%d:%d",stunde,minute);
}
EchtZeitUhr = TextDrawCreate(560 ,47, astring);
//TextDrawAlignment(EchtZeitUhr,3);
TextDrawBackgroundColor(EchtZeitUhr,0x000000FF);
TextDrawFont(EchtZeitUhr,3);
TextDrawLetterSize(EchtZeitUhr,0.6,1.2);
TextDrawColor(EchtZeitUhr,0xFFFFFFFF);
TextDrawSetOutline(EchtZeitUhr,1);
TextDrawSetShadow(EchtZeitUhr,9);
//datum
new Year, Month, Day, strang[128];
getdate(Year, Month, Day);
format(strang,sizeof(strang),"%02d.%02d.%02d",Day,Month,Year);
datum = TextDrawCreate(550 ,35,strang);
TextDrawBackgroundColor(datum,0x000000FF);
TextDrawFont(datum,3);
TextDrawLetterSize(datum,0.4,0.8);
TextDrawColor(datum,0xFFFFFFFF);
TextDrawSetOutline(datum,1);
TextDrawSetShadow(datum,9);
for( new x = 0;x<MAX_PLAYERS;x++)
{
/*Tacho[x] = TextDrawCreate(450,377,"Uninteressant");
TextDrawSetShadow(Tacho[x],0);
TextDrawSetOutline(Tacho[x],1);
TextDrawLetterSize(Tacho[x] , 0.4, 1.0);
TextDrawUseBox(Tacho[x] , 1);
TextDrawBackgroundColor(Tacho[x] ,255);
TextDrawBoxColor(Tacho[x] ,0x00000066);
TextDrawSetOutline(Tacho[x],1);
TextDrawTextSize(Tacho[x], 30, 10);*/
//TextDrawAlignment(Tacho[x], 3);
Tacho[x] = TextDrawCreate(448.000000, 377.000000, "Geschwindigkeit: 1000km/h ~n~ t ~n~ t ~n~ t");
TextDrawBackgroundColor(Tacho[x], 255);
TextDrawFont(Tacho[x], 1);
TextDrawLetterSize(Tacho[x], 0.400000, 1.000000);
TextDrawColor(Tacho[x], -1);
TextDrawSetOutline(Tacho[x], 1);
TextDrawSetProportional(Tacho[x], 1);
TextDrawUseBox(Tacho[x], 1);
TextDrawBoxColor(Tacho[x], 125);
TextDrawTextSize(Tacho[x], 638.000000, 119.000000);
}
Playerdisconnect:
TextDrawHideForPlayer(playerid,EchtZeitUhr);
TextDrawHideForPlayer(playerid,datum);
Playerspawn:
TextDrawShowForPlayer(playerid,EchtZeitUhr);
new stunde, minute, sek, astring[128];
gettime(stunde, minute, sek);
if(stunde<9 && minute<9){format(astring,sizeof(astring),"0%d:0%d",stunde,minute);}
else if(stunde>9 && minute<9){format(astring,sizeof(astring),"%d:0%d",stunde,minute);}
else if(stunde<9 && minute>9){format(astring,sizeof(astring),"0%d:%d",stunde,minute);}
else
{
format(astring,sizeof(astring),"%d:%d",stunde,minute);
}
TextDrawSetString(EchtZeitUhr, astring);
TextDrawShowForPlayer(playerid,datum);
public UpdateClock()
{
new Hour,Minute,Sec,String[256];
gettime(Hour,Minute,Sec);
if(Hour<9 && Minute<9){format(String,sizeof(String),"0%d:0%d",Hour,Minute);}
else if(Hour>9 && Minute<9){format(String,sizeof(String),"%d:0%d",Hour,Minute);}
else if(Hour<9 && Minute>9){format(String,sizeof(String),"0%d:%d",Hour,Minute);}
else
{
format(String,sizeof(String),"%d:%d",Hour,Minute);
}
TextDrawSetString(EchtZeitUhr,String);
SetWorldTime(Hour);
return 1;
}
Update Tacho:
public UpdateTacho()
{
for(new i = 0;i<MAX_PLAYERS;i++)
{
if(IsPlayerConnected(i) && GetPlayerState(i) == PLAYER_STATE_DRIVER && !IsPlayerNPC(i))
{
new Float:Strecke,Float:Geschwindigkeit,Float:carhealth1,vehicle = GetPlayerVehicleID(i),Float:carhealth2;
GetVehicleHealth(vehicle,carhealth1) ;
carhealth2 = (carhealth1 / 10 - 25 )* 1.3333333333;
if(carhealth2 <= 0)
{
carhealth2 = 0;
}
GetVehiclePos(GetPlayerVehicleID(i),X1[i],Y1[i],Z1[i]);
Strecke = floatsqroot(floatpower(floatabs(floatsub(X1[i],X2[i])),2)+floatpower(floatabs(floatsub(Y1[i],Y2[i])),2)+floatpower(floatabs(floatsub(Z1[i],Z2[i])),2));
Geschwindigkeit = (Strecke / (TACHOTIMER/1000)) * 3.6;
if(Geschwindigkeit>=350)
{
Geschwindigkeit = 0;
}
new String[128];
if(Geschwindigkeit >=99)
{
format(String,128,"Geschwindigkeit: %dkm/h~n~~w~Fahrzeugtyp: %s~n~~w~Zustand: ~y~%0.0f%%~n~~w~Tank: ~g~%.1f Liter",floatround(Geschwindigkeit),vehStats[GetVehicleModel(GetPlayerVehicleID(i))-400][modelname],carhealth2, cInfo[GetPlayerVehicleID(i)][cTank]);
}
else if(Geschwindigkeit >9)
{
format(String,128,"Geschwindigkeit: %dkm/h~n~~w~Fahrzeugtyp: %s~n~~w~Zustand: ~y~%0.0f%%~n~~w~Tank: ~g~%.1f Liter",floatround(Geschwindigkeit),vehStats[GetVehicleModel(GetPlayerVehicleID(i))-400][modelname],carhealth2, cInfo[GetPlayerVehicleID(i)][cTank]);
}
else
{
format(String,128,"Geschwindigkeit: %dkm/h~n~~w~Fahrzeugtyp: %s~n~~w~Zustand: ~y~%0.0f%%~n~~w~Tank: ~g~%.1f Liter",floatround(Geschwindigkeit),vehStats[GetVehicleModel(GetPlayerVehicleID(i))-400][modelname],carhealth2, cInfo[GetPlayerVehicleID(i)][cTank]);
}
TextDrawSetString(Tacho[i],String);
GetVehiclePos(GetPlayerVehicleID(i),X2[i],Y2[i],Z2[i]);
TextDrawShowForPlayer(i,Tacho[i]);
}
else
{
TextDrawHideForPlayer(i,Tacho[i]);
}
}
return 1;
}
Auf den Screens nochmal zur Veranschaulichung... Das Tacho gehört nach unten rechts..