Hi Leute ich will ja nicht alles direkt hier fragen aber bin noch ein Anfänger und weiß gar nicht wo ich anfangen muss nach Fehlern zu suchen, deshalb frage ich doch nochmal hier warum mein Tacho nicht funktioniert, um genau zu sein sieht man nämlich im Spiel nichts davon.
forward sekunde(playerid);
public sekunde(playerid)
{
new string[128];
for(new i=0; i<MAX_PLAYERS; i++)
{
if(!IsPlayerConnected(i))continue;
if(!IsPlayerInAnyVehicle(i))continue;
format(string,sizeof(string),"%iKm/h",GetPlayerSpeed(i));
GameTextForPlayer(i,string,100,1);
}
return 1;
}
GetPlayerSpeed(playerid)
{
new Float:x;
new Float:y;
new Float:z;
new Float:rtn;
if (IsPlayerInAnyVehicle(playerid))
{
GetVehicleVelocity(GetPlayerVehicleID(playerid), x, y, z);
}
else
{
GetPlayerVelocity(playerid,x,y,z);
}
rtn = floatsqroot(x*x + y*y + z*z);
return floatround(rtn * 100 * 1.61);
}
-
-
Dafür ist das Forum ja da, brauchst dich nicht zu entschuldigen
Wie und wo startest du den Timer?
-
also es ist von mistermonat aber so wie ich das verstanden habe wird der timer gestartet wenn der spieler im fahrzeug ist
-
Such mal nach "sekunde" (mit Anführungszeichen) und poste dann was du dazu findest.
Schau dann auch nach, unter welchem Callback das steht. -
was ist ein callback? und wenn ich nach "sekunde" suche kommt nix
-
Dann liegt es wohl daran. Ein Callback ist ein public.
Füge das hier bei OnGameModeInit ein (das ist ein Callback zum Beispiel):
SetTimer("sekunde", 1000, 1);Und ändere
sekunde(playerid)
Zu
sekunde()Und
GameTextForPlayer(i,string,100,1);
Zu
GameTextForPlayer(i,string,2000,1); -
Dann liegt es wohl daran. Ein Callback ist ein public.
Füge das hier bei OnGameModeInit ein (das ist ein Callback zum Beispiel):
SetTimer("sekunde", 1000, 1);Und ändere
sekunde(playerid)
Zu
sekunde()Und
GameTextForPlayer(i,string,100,1);
Zu
GameTextForPlayer(i,string,2000,1);dauert leider ewig bis das aktualisiert wird.. könnte das damit zu tun haben das das ein gametext vom typus 1 ist? der ja 8 sekunden lang ausblendet?
-
Versuche es mal mit Style 4.
-
danke aber 1. wie verhindert man dass es immer so flackert? bei vielen servern flackert es nicht.
2. wie verschiebt man es? -
Indem du es mit PlayerTextDraws machst, anstatt mit einem GameText.
https://wiki.sa-mp.com/wiki/CreatePlayerTextDraw -
leider bekomme ich noch diesen fehler
C:\Users\SunRiZez\Desktop\samp037_svr_R1_win32\gamemodes\UltimateReallife.pwn(360) : error 035: argument type mismatch (argument 2)
Pawn compiler 3.2.3664 Copyright (c) 1997-2006, ITB CompuPhase1 Error.
format(string,sizeof(string),"%iKm/h",GetPlayerSpeed(i));
GameTextForPlayer(i,string,100,4);
CreatePlayerTextDraw(i, 320.0, 240.0,string);
PlayerTextDrawShow(i,string); -
Du musst das Textdraw bei OnPlayerConnect erstellen, schau dir den Link den ich dir gegeben habe mal genau an. Du musst auch die Einstellungen zwecks Größe, Position und Farbe vornehmen.
Im Timer setzt du nur den string und zeigst dem Spieler das Textdraw an.
-
public OnPlayerConnect(playerid)
{
new query[128];
new name[MAX_PLAYER_NAME];
GetPlayerName(playerid,name,sizeof(name));
format(query,sizeof(query),"SELECT ID FROM user WHERE username='%s'",name);
mysql_function_query(DB_HANDLE,query,true,"OnUserCheck","i",playerid);
SetPlayerColor(playerid,COLOR_WHITE);
PlayerTextDrawShow(playerid,tacho_td);
return 1;
}public sekunde()
{
new string[128];
for(new i=0; i<MAX_PLAYERS; i++)
{
if(!IsPlayerConnected(i))continue;
if(!IsPlayerInAnyVehicle(i))continue;
format(string,sizeof(string),"%iKm/h",GetPlayerSpeed(i));
CreatePlayerTextDraw(i,900,900,tacho_td);
}
return 1;
}C:\Users\SunRiZez\Desktop\samp037_svr_R1_win32\gamemodes\UltimateReallife.pwn(346) : error 017: undefined symbol "tacho_td"
C:\Users\SunRiZez\Desktop\samp037_svr_R1_win32\gamemodes\UltimateReallife.pwn(358) : error 017: undefined symbol "tacho_td"
Pawn compiler 3.2.3664 Copyright (c) 1997-2006, ITB CompuPhase2 Errors.
-
Schau mal:
Unter den Includes:
new PlayerText:tachoText[MAX_PLAYERS];OnPlayerConnect:
tachoText[playerid] = CreatePlayerTextDraw(playerid, 320.0, 240.0, "Tacho");
//Hier noch Farbe etc...Und im Timer:
PlayerTextDrawSetString(i, tachoText[i], string);
PlayerTextDrawShow(i, tachoText[i]);Bei OnPlayerDisconnect löschst du das Textdraw wieder:
PlayerTextDrawDestroy(i, tachoText[i]); -
breadfish.de
Hat das Thema geschlossen.