Wie Textdraw mit Timer aktuallisieren?

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

  • forward UpdateTextDraw(Text:ID, string[]);
    public UpdateTextDraw(Text:ID, string[])
    {
    TextDrawSetString(ID, string);
    return 1;
    }
    //irgendein callback
    SetTimerEx("UpdateTextDraw", 1000*60, true, "ds", ID, "bla");


    Keine Scripting-Fragen per PM!

  • Code
    SetTimerEx("UpdateTextDraw", 1000*60, true, "ds", ID, "bla");


    Okay, und bei ds und bla muss was rein? ;D


    Gruß


    //Edit:


    public UpdatePayday(Text:ID, string)
    {
    TextDrawSetString(PayDayZeit, string[]);
    return 1;
    }

    Wenn ich dann Compile bekomme ich folgende Errors:


    Code
    C:\Script.pwn(17728) : error 025: function heading differs from prototype
    C:\Script.pwn(17730) : error 028: invalid subscript (not an array or too many subscripts): "string"

    Einmal editiert, zuletzt von tMike ()

  • "ds" bleibt so, das gibt das format der parameter an.
    (d für dezimalzahl (ID) und s für string)
    danach werden die parameter angegeben, die beim aufruf an "UpdateTextDraw" übergeben werden.
    also für "ID" die ID des textdraws angeben und für "bla" eben den string, den du über das textdraw ausgeben willst.
    /E:
    hast du die funktion mit "forward" definert?
    wenn ja, achte darauf, dass der ausdruck nach forward exakt mit der definition der funktion übereinstimmt.

    Keine Scripting-Fragen per PM!

    Einmal editiert, zuletzt von Crank93 ()

  • forward UpdateTextDraw(Text:ID, string[]);


    public UpdatePayday(Text:ID, string)
    {
    TextDrawSetString(PayDayZeit, string[]);
    return 1;
    }
    Das hast du ja auch umgekehrt gemacht ^^ es solte so stehen:
    public UpdatePayday(Text:ID, string[])
    {
    TextDrawSetString(PayDayZeit,string);
    return 1;
    }

  • SetTimerEx("UpdatePayday", 1000*60, true, "ds", PayDayZeit, "bla");


    Hab das jetzt so gelöst.. Was muss jetzt bei bla genau rein?


    z.B. so?


    SetTimerEx("UpdatePayday", 1000*60, true, "ds", PayDayZeit, "~w~Spielzeit seit Zahltag:~g~ %d Minuten", PlayerInfo[playerid][pPaydayZeit]");

  • so, da sich für jeden spieler ein spezifisches textdraw ergibt, hab ich den code etwas abgeändert.



    //oben
    new string[128];
    //da der text vom jeweilgen spieler abhängt, musst du für jeden spieler einzeln ein textdraw erstellen, also:
    new Text:td_PayDay[MAX_PLAYERS];
    //OnPlayerConnect
    td_PayDay[playerid]=TextDrawCreate(...);
    //
    //etwas abgeändert, da sich für jeden spieler ein anderer text ergibt
    public UpdatePayday()
    {
    for(new i=0; i<MAX_PLAYERS; i++) //td für jeden spieler updaten
    {
    //erst formatieren
    format(string, sizeof(string), "~w~Spielzeit seit Zahltag:~g~ %d Minuten", PlayerInfo[playerid][pPaydayZeit]);
    TextDrawSetString(PayDay[i], string);
    }
    return 1;
    }
    //OnGameModeInit
    SetTimer("UpdatePayday", 1000*60, true);


    Keine Scripting-Fragen per PM!

  • C:\Users\Dennis\Desktop\test.pwn(17747) : error 017: undefined symbol "playerid"
    C:\Users\Dennis\Desktop\test.pwn(17748) : error 028: invalid subscript (not an array or too many subscripts): "PayDay"
    C:\Users\Dennis\Desktop\test.pwn(17748) : warning 215: expression has no effect
    C:\Users\Dennis\Desktop\test.pwn(17748) : error 001: expected token: ";", but found "]"
    C:\Users\Dennis\Desktop\test.pwn(17748) : error 029: invalid expression, assumed zero
    C:\Users\Dennis\Desktop\test.pwn(17748) : fatal error 107: too many error messages on one line


    Bekomme ich bei


    new string[128];
    public UpdatePayday()
    {
    for(new i=0; i<MAX_PLAYERS; i++) //td für jeden spieler updaten
    {
    //erst formatieren
    format(string, sizeof(string), "~w~Spielzeit seit Zahltag:~g~ %d Minuten", PlayerInfo[playerid][pPaydayZeit]);
    TextDrawSetString(PayDay[i], string);
    }
    return 1;
    }

    Einmal editiert, zuletzt von tMike ()

  • new string[128];
    public UpdatePayday()
    {
    for(new i=0; i<MAX_PLAYERS; i++) //td für jeden spieler updaten
    {
    //erst formatieren
    format(string, sizeof(string), "~w~Spielzeit seit Zahltag:~g~ %d Minuten", PlayerInfo[playerid][pPaydayZeit]);
    TextDrawSetString(PayDay[i], string);
    }
    return 1;
    }



    Du hast im Abschnitt PlayerInfo[playerid][pPaydayZeit]


    in diesem Zusammenhang gibt es playerid nicht


    mach es so:
    new string[128];
    public UpdatePayday()
    {
    for(new i=0; i<MAX_PLAYERS; i++) //td für jeden spieler updaten
    {
    //erst formatieren
    format(string, sizeof(string), "~w~Spielzeit seit Zahltag:~g~ %d Minuten", PlayerInfo[i][pPaydayZeit]);
    TextDrawSetString(PayDay[i], string);
    }
    return 1;
    }

  • Hatte ich probiert:
    C:\Users\Dennis\Desktop\test.pwn(17748) : error 028: invalid subscript (not an array or too many subscripts): "PayDay"
    C:\Users\Dennis\Desktop\test.pwn(17748) : warning 215: expression has no effect
    C:\Users\Dennis\Desktop\test.pwn(17748) : error 001: expected token: ";", but found "]"
    C:\Users\Dennis\Desktop\test.pwn(17748) : error 029: invalid expression, assumed zero
    C:\Users\Dennis\Desktop\test.pwn(17748) : fatal error 107: too many error messages on one line