hey, ich habe einen Timer erstellt, wo Textdraws verschwinden sollen.
Jetzt hab ich ein Problem, und zwar verschwinden die Textdraws nur bei ID 0 und sonst bei keinem???
ID 0
- Finger
- Geschlossen
- Erledigt
Wichtiger Hinweis: Bitte ändert nicht manuell die Schriftfarbe auf schwarz sondern belasst es bei der Standardeinstellung. Somit tragt ihr dazu bei dass euer Text auch bei Verwendung unseren dunklen Forenstils noch lesbar ist!
Tipp: Ihr wollt längere Codeausschnitte oder Logfiles bereitstellen? Benutzt unseren eigenen PasteBin-Dienst Link
-
-
schick mal das von dir geschriebene ??
-
public MotorLichttimer(playerid, Text:clickedid)
{
TextDrawHideForPlayer(playerid,MotorLicht);
return 1;
} -
Wie wird deine Funktion aufgerufen?
-
forward MotorLichttimer(playerid, Text:clickedid);
SetTimer("MotorLichttimer",10000,false);
-
SetTimerEx statt SetTimer nutzen, wenn man Funktionen mit Parametern aufruft
-
SetTimer("MotorLichttimer",10000,false);
mach das mal so:
SetTimerEx("MotorLichttimer", 10000, false, "i", playerid); -
Du übergibst so keine Id, weshalb das nur für ID 0 ausgeführt wird. Entweder du sendest eine ID mit
SetTimerEx("MotorLichttimer",10000,false,"i",id);
Oder du machst es bei allen Spielern in der Funktion per for loop.
public MotorLichttimer(Text:clickedid)
{
for(new i = 0;i<MAX_PLAYERS;i++)
{
if(!IsPlayerConnected(i)) continue;
TextDrawHideForPlayer(i,MotorLicht);
}
return 1;
}Beim zweiten wird das dann für alle Spieler gleichzeitig disabled. Dann nur SetTimer verwenden. Brauchst dann auch keinen Parameter playerid mehr.
Beim ersten wird es nur bei einem Spieler disabled -
Beim zweiten wird das dann für alle Spieler gleichzeitig disabled. Dann nur SetTimer verwenden. Brauchst dann auch keinen Parameter playerid mehr.
Beim ersten wird es nur bei einem Spieler disabled[/quote]Du übergibst so keine Id, weshalb das nur für ID 0 ausgeführt wird. Entweder du sendest eine ID mit
SetTimerEx("MotorLichttimer",10000,false,"i",id);
Oder du machst es bei allen Spielern in der Funktion per for loop.
public MotorLichttimer(Text:clickedid)
{
for(new i = 0;i<MAX_PLAYERS;i++)
{
if(!IsPlayerConnected(i)) continue;
TextDrawHideForPlayer(i,MotorLicht);
}
return 1;
}Beim zweiten wird das dann für alle Spieler gleichzeitig disabled. Dann nur SetTimer verwenden. Brauchst dann auch keinen Parameter playerid mehr.
Beim ersten wird es nur bei einem Spieler disabledwenn ich das 2 nehme, wie muss ich dann den timer machen?
so?
SetTimerEx("MotorLichttimer",10000,false,"i",playerid); -
Für alle gleichzeitig gibt es auch zwei Möglichkeiten.
1:
forward MotorLichttimer(playerid, Text:clickedid);
public MotorLichttimer(playerid, Text:clickedid)
{
TextDrawHideForPlayer(playerid,MotorLicht);
return 1;
}
for(new i = 0;i<MAX_PLAYERS;i++)
{
if(!IsPlayerConnected(i)) continue;
SetTimerEx("MotorLichttimer",10000,0,"i",i);
}Oder 2:
forward MotorLichttimer( Text:clickedid);
public MotorLichttimer(Text:clickedid)
{
for(new i = 0;i<MAX_PLAYERS;i++)
{
if(!IsPlayerConnected(i)) continue;
TextDrawHideForPlayer(i,MotorLicht);
}
return 1;
}
SetTimer("MotorLichttimer",10000,0);btw. clickedid kannst du auch rauswerfen wenn du es nicht verwendest.
-
-
ok, danke
Hätte noch eine Frage, und zwar es zeigt den Tacho beim Einsteigen schon an,
aber beim aussteigen bleibt er da..if(newstate == PLAYER_STATE_DRIVER)
{
TextDrawShowForPlayer(playerid,SpeedoBox);
TextDrawShowForPlayer(playerid,SpeedoVehText);
TextDrawShowForPlayer(playerid,SpeedoVeh[playerid]);
TextDrawShowForPlayer(playerid,SpeedoKMHText);
TextDrawShowForPlayer(playerid,SpeedoKMH[playerid]);
TextDrawShowForPlayer(playerid,SpeedoTankText);
TextDrawShowForPlayer(playerid,SpeedoTank[playerid]);
TextDrawShowForPlayer(playerid,SpeedoHealth[playerid]);
TextDrawShowForPlayer(playerid,SpeedoHealthText);
TextDrawShowForPlayer(playerid,MotorLicht);
SetTimer("MotorLichttimer",10000,false);
}
if(oldstate == PLAYER_STATE_DRIVER)
{
TextDrawHideForPlayer(playerid,SpeedoBox);
TextDrawHideForPlayer(playerid,SpeedoVehText);
TextDrawHideForPlayer(playerid,SpeedoVeh[playerid]);
TextDrawHideForPlayer(playerid,SpeedoKMHText);
TextDrawHideForPlayer(playerid,SpeedoKMH[playerid]);
TextDrawHideForPlayer(playerid,SpeedoTankText);
TextDrawHideForPlayer(playerid,SpeedoTank[playerid]);
TextDrawHideForPlayer(playerid,SpeedoHealth[playerid]);
TextDrawHideForPlayer(playerid,SpeedoHealthText);
} -
Ich mach beim aussteigen immer
if(newstate == PLAYER_STATE_ONFOOT)
-
if(newstate == PLAYER_STATE_ONFOOT)
{
TextDrawHideForPlayer(playerid,SpeedoBox);
TextDrawHideForPlayer(playerid,SpeedoVehText);
TextDrawHideForPlayer(playerid,SpeedoVeh[playerid]);
TextDrawHideForPlayer(playerid,SpeedoKMHText);
TextDrawHideForPlayer(playerid,SpeedoKMH[playerid]);
TextDrawHideForPlayer(playerid,SpeedoTankText);
TextDrawHideForPlayer(playerid,SpeedoTank[playerid]);
TextDrawHideForPlayer(playerid,SpeedoHealth[playerid]);
TextDrawHideForPlayer(playerid,SpeedoHealthText);
}so? da bleibt es trotzdem noch da
-
breadfish.de
Hat das Thema geschlossen.