Stats Zeitangabe

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
  • Hey Leute,


    ich habe grade eine kleine Zeitangabe für meine späteren Stats geschrieben.
    Es werden die minuten,stunden und tage gespeichert.
    alles wird in die spielerdatei geschrieben bis auf das eigentliche Kernsystem.
    Hier treten ein paar Fehler auf:


    public Zeitenrechnung()
    {
    pInfo[spielzeitminuten] +=1; //alle 60000 wird einmal +1 gemacht.
    if(pInfo[playerid][spielzeitminuten] ==60)
    {
    pInfo[playerid][spielzeitstunden] +=1;
    pInfo[playerid][spielzeitminuten] ==0;
    }
    if(pInfo[playerid][spielzeitstunden] ==24)
    {
    pInfo[playerid][spielzeitstunden] ==0;
    pInfo[playerid][spielzeittage] +=1;
    }
    return 1;
    }


    Nachher soll in den Stats einfach abgefragt werden ob:
    - eine Stunde (+60 Spielzeitminuten) danach wieder reset.
    - Wie viele Tage (+24 Spielzeitstunden) danach reset.


    es wurde ein Timer errichtet der sich jede Minute wiederholt. (60000ms)


    Nun treten also folgende Fehler auf --->
    C:\Users\Adrian\Desktop\Own SAMP\gamemodes\Skript.pwn(549) : warning 213: tag mismatch
    C:\Users\Adrian\Desktop\Own SAMP\gamemodes\Skript.pwn(549) : error 023: array assignment must be simple assignment
    C:\Users\Adrian\Desktop\Own SAMP\gamemodes\Skript.pwn(549) : warning 215: expression has no effect
    C:\Users\Adrian\Desktop\Own SAMP\gamemodes\Skript.pwn(550) : error 017: undefined symbol "playerid"
    C:\Users\Adrian\Desktop\Own SAMP\gamemodes\Skript.pwn(552) : error 017: undefined symbol "playerid"
    C:\Users\Adrian\Desktop\Own SAMP\gamemodes\Skript.pwn(552) : warning 215: expression has no effect
    C:\Users\Adrian\Desktop\Own SAMP\gamemodes\Skript.pwn(553) : error 017: undefined symbol "playerid"
    C:\Users\Adrian\Desktop\Own SAMP\gamemodes\Skript.pwn(555) : error 017: undefined symbol "playerid"
    C:\Users\Adrian\Desktop\Own SAMP\gamemodes\Skript.pwn(557) : error 017: undefined symbol "playerid"
    C:\Users\Adrian\Desktop\Own SAMP\gamemodes\Skript.pwn(557) : warning 215: expression has no effect
    C:\Users\Adrian\Desktop\Own SAMP\gamemodes\Skript.pwn(558) : error 017: undefined symbol "playerid"

  • Moin Adrian, eig. ist der error nicht schwer zu übersehen. Du sagt dem Server er soll was im enum von "playerid" umschreiben, dabei weiß er nicht wer playerid ist. Um es kurz zu fassen,
    musst du eine schleife erstellen der alle 60 sekunden jeden Spieler bearbeitet. ganz einfach:public Zeitenrechnung()
    {
    for(new i = 0; i<MAX_PLAYERS; i++)
    {
    if(IsPlayerConnected(i) && !IsPlayerNPC(i))
    {
    pInfo[spielzeitminuten] +=1; //alle 60000 wird einmal +1 gemacht.
    if(pInfo[i][spielzeitminuten] ==60)
    {
    pInfo[i][spielzeitstunden] +=1;
    pInfo[i][spielzeitminuten] ==0;
    }
    if(pInfo[i][spielzeitstunden] ==24)
    {
    pInfo[i][spielzeitstunden] ==0;
    pInfo[i][spielzeittage] +=1;
    }
    return 1;
    }
    }
    return 1;
    }


    ich habe folgendes hinzugefügt: Er soll bei ID 0 anfangen und soll seinen enum berechnen. dann soll er eine ID weiter auf 1 und so weiter. Falls du noch weiter arbeiten willst, bedenke es gibt kein "playerid" du musst dort "i" einsetzten. Falls noch schwirikkeiten vorkommen sollen PN an mich.


  • Unnötig! eine schleife wie im GF? einfach statt
    "public Zeitenrechnung()"


    machst du
    "public Zeitenrechnung(playerid)
    und
    "forward Zeitenrechnung(playerid);"

  • Unnötig! eine schleife wie im GF? einfach statt
    "public Zeitenrechnung()"


    machst du
    "public Zeitenrechnung(playerid)
    und
    "forward Zeitenrechnung(playerid);"


    Nein, um die schleife wirst du nicht rumkommen denn du hast zwar im public und im forward playerid definiert aber der forward weiß nicht wer. Es macht alles viel schwerer weil er muss dann mit SetTimerEx playerid in den Timer bringen.
    Und wie bringt man alle existierenden ID in SetTimerEx? Genau! mit der for(new i ... ) schleife. Er muss ja jeden Spieler berechnen und nicht nur einen.