Gruppensystem, Fehler beim Laden

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
  • Ich möchte alle erstellten Gruppen laden. Das Problem ist, die gID, die auch im Spieler gespeichert ist, ist nicht gleich i.


    Wenn ich nun also ingame das aufrufe:
    format(string, sizeof(string), "Du bist in der Gruppe {0080C0}%s",Gruppen[Spieler[playerid][Gruppe]][gName]);
    SendClientMessage(playerid, COLOR_YELLOW,string);


    passiert nichts, bzw eine falsche gruppe wird/kann angezeigt werden


    Ich weiß nicht, wie ich das beheben kann.


    Code:

    [17:16:49] Schleife: 0, gID: 2, gName: Test2
    [17:16:49] Schleife: 1, gID: 3, gName: Macham
    [17:16:49] Schleife: 2, gID: 4, gName: 2222
    [17:16:49] Schleife: 3, gID: 5, gName: celo
    [17:16:49] Schleife: 4, gID: 6, gName: 534celo
    [17:16:49] Schleife: 5, gID: 7, gName: Pensi
    [17:16:49] Schleife: 6, gID: 8, gName: 9898
    [17:16:49] Schleife: 7, gID: 9, gName: H23n
    [17:16:49] Schleife: 8, gID: 0, gName: NULL
    [17:16:49] Schleife: 9, gID: 0, gName: NULL

  • format(string, sizeof(string), "Du bist in der Gruppe {0080C0}%s",Gruppen[Spieler[playerid][Gruppe]][gName]);
    zu:
    new id = GetGruppe(Spieler[playerid][Gruppe]);
    if(id == -1) format(string, sizeof(string), "Du bist in der Gruppe {0080C0}Unknown");
    else format(string, sizeof(string), "Du bist in der Gruppe {0080C0}%s",Gruppen[id][gName]);




    Mit dieser Funktion:
    stock GetGruppe(gid)
    {
    for(new i = 0; i < MAX_GRUPPEN; i++) if(Gruppen[i][gID] == gid) return i;
    return -1;
    }

  • Versuche es so:
    if(Ammus[i][Erpresser] < 1) format(bstr,sizeof(bstr),"Keiner");
    else if(GetGruppe(Ammus[i][Erpresser]) != -1) format(bstr,sizeof(bstr),"%s", Gruppen[GetGruppe(Ammus[i][Erpresser])][gName]);
    else format(bstr,sizeof(bstr),"Keiner");

  • Loadgruppen ist oben im Startpost,
    Das Laden der Ammus:


  • Ok, dann liegt es wahrscheinlich daran, dass du einmal die Cache Funktionen nutzt, und einmal nicht.
    Der Cache wird erst mit Verzögerung ausgelesen, sprich zu dem Zeitpunkt als die Ammus geladen werden, sind die Gruppen noch nicht geladen, auch wenn es vorher im Code steht.


    Füge den Code mit dem Laden der Ammus in LoadGruppen ein, vor das "return 1;" und versuche es dann.