Gangfightbox-Update Problem

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
  • Habe das Problem, dass wenn ich einen Gangfight starte, mir in der Gangfightbox die falschen "Daten" angezeigt werden.
    Also Ort, und die Fraktionen.

    forward GangfightUpdate(playerid);
    public GangfightUpdate(playerid)
    {
    new OwnerText[128], GegnerText[128], GZName[128], GZFZeit[128], Af[128], Bf[128], Cf[128], OwnerPoints[128], GegnerPoints[128];
    for(new i = 0; i < sizeof Gangzonen; i++)
    {
    if(Spieler[playerid][Fraktion] == Gangzonen[i][GFOwnerID] || Spieler[playerid][Fraktion] == Gangzonen[i][GFGegnerID])
    {
    //format(OwnerText,sizeof(OwnerText),"%s",Fraktionen[Gangzonen[i][GFOwnerID]][Frakname]);
    if(Gangzonen[i][GFOwnerID] != -1) format(OwnerText,sizeof(OwnerText),"%s",Fraktionen[Gangzonen[i][GFOwnerID]][Frakname]);
    else format(OwnerText,sizeof(OwnerText),"Niemand");
    if(Gangzonen[i][GFGegnerID] != -1) format(GegnerText,sizeof(GegnerText),"%s",Fraktionen[Gangzonen[i][GFGegnerID]][Frakname]);
    else format(GegnerText,sizeof(GegnerText),"Niemand");
    //format(GegnerText,sizeof(GegnerText),"%s",Fraktionen[Gangzonen[i][GFGegnerID]][Frakname]);
    format(GZName,sizeof(GZName),"~y~%s",Gangzonen[i][GangZoneName]);
    format(GZFZeit,sizeof(GZFZeit),"~r~Verbl. Zeit %d Minuten",60-Gangzonen[i][GFRunningTime]);
    format(Af,sizeof(Af),"~b~A: ~w~%s",Fraktionen[Gangzonen[i][GFFlaggenOwnerA]][Frakname]);
    format(Bf,sizeof(Bf),"~b~B: ~w~%s",Fraktionen[Gangzonen[i][GFFlaggenOwnerB]][Frakname]);
    format(Cf,sizeof(Cf),"~b~C: ~w~%s",Fraktionen[Gangzonen[i][GFFlaggenOwnerC]][Frakname]);
    format(OwnerPoints, sizeof(OwnerPoints),"%s%d/100",(Gangzonen[i][GFOwnerPoints] < 10) ? ("00") : (""), Gangzonen[i][GFOwnerPoints]);
    format(GegnerPoints, sizeof(GegnerPoints),"%s%d/100",(Gangzonen[i][GFGegnerPoints] < 10) ? ("00") : (""), Gangzonen[i][GFGegnerPoints]);
    UpdateGangfightBox(playerid, OwnerText, GegnerText, GZName, GZFZeit, Af, Bf, Cf, OwnerPoints, GegnerPoints);
    }
    }
    return 1;
    }


    enum GFInfo //Gangzonen
    {
    GangZoneName[64],
    GangzoneID,
    Float:koord1,
    Float:koord2,
    Float:koord3,
    Float:koord4,
    //Flaggen
    Float:AFlaggeX,
    Float:AFlaggeY,
    Float:AFlaggeZ,
    Float:BFlaggeX,
    Float:BFlaggeY,
    Float:BFlaggeZ,
    Float:CFlaggeX,
    Float:CFlaggeY,
    Float:CFlaggeZ,
    GFOwnerID,
    GFGegnerID,
    GFOwnerPoints,
    GFGegnerPoints,
    GFRunningTime,
    GFPauseTime,
    GFFlaggenOwnerA,
    GFFlaggenOwnerB,
    GFFlaggenOwnerC
    }


    Gangfight usw startet. Mein /zone Befehl funktioniert auch:
    for(new i = 0; i < sizeof(Gangzonen); i++)
    {
    if(IsPlayerInArea(playerid, Gangzonen[i][koord1],Gangzonen[i][koord2],Gangzonen[i][koord3],Gangzonen[i][koord4]))
    {
    if(Gangzonen[i][GFGegnerID] != -1)
    {
    format(string, sizeof(string), "|__________ Gebietinfo (%s) __________|", Gangzonen[i][GangZoneName]);
    SendClientMessage(playerid, COLOR_YELLOW, string);
    format(string, sizeof(string), "%s (%d)/ %s (%d)", Fraktionen[Gangzonen[i][GFOwnerID]][Frakname], Gangzonen[i][GFOwnerPoints], Fraktionen[Gangzonen[i][GFGegnerID]][Frakname], Gangzonen[i][GFGegnerPoints]);
    SendClientMessage(playerid, COLOR_GREY, string);
    {
    format(string, sizeof(string), "Der Kampf läuft noch %d Stunde(n) und %d Minute(n).", (60-Gangzonen[i][GFRunningTime])/60,(60-Gangzonen[i][GFRunningTime])%60);
    SendClientMessage(playerid, COLOR_GREY, string);
    }
    }
    else
    {
    format(string, sizeof(string), "|__________ Gebietinfo (%s) __________|", Gangzonen[i][GangZoneName]);
    SendClientMessage(playerid, COLOR_YELLOW, string);
    format(string, sizeof(string), "Besitzer: %s", Fraktionen[Gangzonen[i][GFOwnerID]][Frakname]);
    SendClientMessage(playerid, COLOR_GREY, string);
    SendClientMessage(playerid, COLOR_GREY, "Stündlicher Ertrag: 500$");
    if(Gangzonen[i][GFPauseTime] != -1)
    {
    format(string, sizeof(string), "Das Gebiet ist noch für %d Stunde(n) und %d Minute(n) gesperrt.", (480-Gangzonen[i][GFPauseTime])/60,(480-Gangzonen[i][GFPauseTime])%60);
    SendClientMessage(playerid, COLOR_GREY, string);
    return 1;
    }else{
    SendClientMessage(playerid, COLOR_GREY, "Das Gebiet ist nicht gesperrt und kann {009800}angegriffen{AFAFAF} werden.");
    }
    }
    }
    }
    Falls ihr etwas bestimmtes, weiteres braucht, sagt bescheid.

  • forward GangfightUpdate(playerid);
    public GangfightUpdate(playerid)
    {
    new OwnerText[128], GegnerText[128], GZName[128], GZFZeit[128], Af[128], Bf[128], Cf[128], OwnerPoints[128], GegnerPoints[128];
    for(new i = 0; i < sizeof Gangzonen; i++)
    {
    if(Spieler[playerid][Fraktion] == Gangzonen[i][GFOwnerID] || Spieler[playerid][Fraktion] == Gangzonen[i][GFGegnerID])
    {
    //format(OwnerText,sizeof(OwnerText),"%s",Fraktionen[Gangzonen[i][GFOwnerID]][Frakname]);
    if(Gangzonen[i][GFOwnerID] != -1) format(OwnerText,sizeof(OwnerText),"%s",Fraktionen[Gangzonen[i][GFOwnerID]][Frakname]);
    else format(OwnerText,sizeof(OwnerText),"Niemand");
    printf("GangfightUpdate: %s (OwnerText: %s | ID: %d)", Fraktionen[Gangzonen[i][GFOwnerID]][Frakname], OwnerText, Gangzonen[i][GFOwnerID]);
    if(Gangzonen[i][GFGegnerID] != -1) format(GegnerText,sizeof(GegnerText),"%s",Fraktionen[Gangzonen[i][GFGegnerID]][Frakname]);
    else format(GegnerText,sizeof(GegnerText),"Niemand");
    printf("GangfightUpdate: %s (GegnerText: %s | ID: %d)", Fraktionen[Gangzonen[i][GFGegnerID]][Frakname], GegnerText, Gangzonen[i][GFGegnerID]);
    //format(GegnerText,sizeof(GegnerText),"%s",Fraktionen[Gangzonen[i][GFGegnerID]][Frakname]);
    format(GZName,sizeof(GZName),"~y~%s",Gangzonen[i][GangZoneName]);
    printf("GangfightUpdate: %s (ID: %d)", Gangzonen[i][GangZoneName], Gangzonen[i][GangzoneID]);
    format(GZFZeit,sizeof(GZFZeit),"~r~Verbl. Zeit %d Minuten",60-Gangzonen[i][GFRunningTime]);
    printf("GangfightUpdate: Restl. Zeit: %d", 60-Gangzonen[i][GFRunningTime]);
    format(Af,sizeof(Af),"~b~A: ~w~%s",Fraktionen[Gangzonen[i][GFFlaggenOwnerA]][Frakname]);
    printf("GangfightUpdate: Flagge A - %s", Fraktionen[Gangzonen[i][GFFlaggenOwnerA]][Frakname]);
    format(Bf,sizeof(Bf),"~b~B: ~w~%s",Fraktionen[Gangzonen[i][GFFlaggenOwnerB]][Frakname]);
    printf("GangfightUpdate: Flagge B - %s", Fraktionen[Gangzonen[i][GFFlaggenOwnerB]][Frakname]);
    format(Cf,sizeof(Cf),"~b~C: ~w~%s",Fraktionen[Gangzonen[i][GFFlaggenOwnerC]][Frakname]);
    printf("GangfightUpdate: Flagge C - %s", Fraktionen[Gangzonen[i][GFFlaggenOwnerC]][Frakname]);
    format(OwnerPoints, sizeof(OwnerPoints),"%s%d/100",(Gangzonen[i][GFOwnerPoints] < 10) ? ("00") : (""), Gangzonen[i][GFOwnerPoints]);
    printf("GangfightUpdate: Punkte Owner - %d", Gangzonen[i][GFOwnerPoints]);
    format(GegnerPoints, sizeof(GegnerPoints),"%s%d/100",(Gangzonen[i][GFGegnerPoints] < 10) ? ("00") : (""), Gangzonen[i][GFGegnerPoints]);
    printf("GangfightUpdate: Punkte Gegner - %d", Gangzonen[i][GFGegnerPoints]);
    UpdateGangfightBox(playerid, OwnerText, GegnerText, GZName, GZFZeit, Af, Bf, Cf, OwnerPoints, GegnerPoints);
    }
    }
    return 1;
    }


    Ausgabe:
    [17:53:03] GangfightUpdate: Yakuza (OwnerText: Yakuza | ID: 12)
    [17:53:03] GangfightUpdate: Grove Street (GegnerText: Grove Street | ID: 9)
    [17:53:03] GangfightUpdate: Golfplatz LV (ID: 0)
    [17:53:03] GangfightUpdate: Restl. Zeit: 59
    [17:53:03] GangfightUpdate: Flagge A -
    [17:53:03] GangfightUpdate: Flagge B -
    [17:53:03] GangfightUpdate: Flagge C -
    [17:53:03] GangfightUpdate: Punkte Owner - 3
    [17:53:03] GangfightUpdate: Punkte Gegner - 0
    [17:53:03] GangfightUpdate: Grove Street (OwnerText: Grove Street | ID: 9)
    [17:53:03] [debug] Run time error 4: "Array index out of bounds"
    [17:53:03] [debug] Accessing element at negative index -1
    [17:53:03] [debug] AMX backtrace:
    [17:53:03] [debug] #0 00233a8c in public GangfightUpdate (0x00000001) from Server.amx
    Es gibt wohl den Fehler, dass OwnerText doppelt generiert wird.

  • forward GangfightUpdate(playerid);
    public GangfightUpdate(playerid)
    {
    new OwnerText[128], GegnerText[128], GZName[128], GZFZeit[128], Af[128], Bf[128], Cf[128], OwnerPoints[128], GegnerPoints[128];
    for(new i = 0; i < sizeof Gangzonen; i++)
    {
    printf("Fraktion %d == GFOwnerID %d || == GFGegnerID %d", Spieler[playerid][Fraktion], Gangzonen[i][GFOwnerID], Gangzonen[i][GFGegnerID]);
    if(Spieler[playerid][Fraktion] == Gangzonen[i][GFOwnerID] || Spieler[playerid][Fraktion] == Gangzonen[i][GFGegnerID])
    {
    printf("i: %d", i);
    if(Gangzonen[i][GFOwnerID] != -1) format(OwnerText,sizeof(OwnerText),"%s",Fraktionen[Gangzonen[i][GFOwnerID]][Frakname]);
    else format(OwnerText,sizeof(OwnerText),"Niemand");
    printf("OwnerText: %s", OwnerText);
    if(Gangzonen[i][GFGegnerID] != -1) format(GegnerText,sizeof(GegnerText),"%s",Fraktionen[Gangzonen[i][GFGegnerID]][Frakname]);
    else format(GegnerText,sizeof(GegnerText),"Niemand");
    printf("GegnerText: %s"; GegnerText);
    format(GZName,sizeof(GZName),"~y~%s",Gangzonen[i][GangZoneName]);
    printf("GZName: %s"; GZName);
    format(GZFZeit,sizeof(GZFZeit),"~r~Verbl. Zeit %d Minuten",60-Gangzonen[i][GFRunningTime]);
    printf("GZFZeit: %s", GZFZeit);
    format(Af,sizeof(Af),"~b~A: ~w~%s",Fraktionen[Gangzonen[i][GFFlaggenOwnerA]][Frakname]);
    format(Bf,sizeof(Bf),"~b~B: ~w~%s",Fraktionen[Gangzonen[i][GFFlaggenOwnerB]][Frakname]);
    format(Cf,sizeof(Cf),"~b~C: ~w~%s",Fraktionen[Gangzonen[i][GFFlaggenOwnerC]][Frakname]);
    printf("a: %s", Af);
    printf("c: %s", Bf);
    printf("a: %s", Cf);
    format(OwnerPoints, sizeof(OwnerPoints),"%s%d/100",(Gangzonen[i][GFOwnerPoints] < 10) ? ("00") : (""), Gangzonen[i][GFOwnerPoints]);
    format(GegnerPoints, sizeof(GegnerPoints),"%s%d/100",(Gangzonen[i][GFGegnerPoints] < 10) ? ("00") : (""), Gangzonen[i][GFGegnerPoints]);
    printf("OwnerPoints: %s", OwnerPoints);
    printf("GegnerPoints: %s", GegnerPoints);
    UpdateGangfightBox(playerid, OwnerText, GegnerText, GZName, GZFZeit, Af, Bf, Cf, OwnerPoints, GegnerPoints);
    }
    }
    return 1;
    }
    Debugge es so, der andere Debug ist fehlerhaft.

  • Beitrag von Apokrate ()

    Dieser Beitrag wurde gelöscht, Informationen über den Löschvorgang sind nicht verfügbar.
  • Und was ist jetzt der Fehler? ;)


    Hab vergessen den Text zu schreiben :<


    Ich würde mal sagen: Vorfüreffekt!
    Ging letztens nicht. Ich führe aber weitere Tests aus.


    /e
    Wenn ich einen Gangfight starte, klappt bei mir alles. alles wird richtig angezeigt. Bei meinem Partner in der anderen Fraktion wird das textdraw aber nicht geupdated, sondern zeigt nur das an, was ich erstellt habe.

  • for(new ppl = 0; ppl < MAX_PLAYERS; ppl++)
    {
    if(Spieler[ppl][Fraktion] == Spieler[playerid][Fraktion] || Spieler[ppl][Fraktion] == Gangzonen[i][GFOwnerID])
    {
    if(IsPlayerConnected(ppl) && LoggedIn[ppl] && !IsPlayerNPC(ppl))
    {
    SendClientMessage(ppl,COLOR_LIGHTGREEN,string);
    CreateGangfightBox(ppl);
    GFBoxTimer[ppl] = SetTimerEx("GangfightUpdate", 331, true, "i", playerid);
    //break;
    }
    }
    }


    forward GangfightUpdate(playerid);
    public GangfightUpdate(playerid)
    {
    new OwnerText[128], GegnerText[128], GZName[128], GZFZeit[128], Af[128], Bf[128], Cf[128], OwnerPoints[128], GegnerPoints[128];
    for(new i = 0; i < sizeof Gangzonen; i++)
    {
    printf("Fraktion %d == GFOwnerID %d || == GFGegnerID %d", Spieler[playerid][Fraktion], Gangzonen[i][GFOwnerID], Gangzonen[i][GFGegnerID]);
    if(Spieler[playerid][Fraktion] == Gangzonen[i][GFOwnerID] || Spieler[playerid][Fraktion] == Gangzonen[i][GFGegnerID])
    {
    printf("i: %d", i);
    if(Gangzonen[i][GFOwnerID] != -1) format(OwnerText,sizeof(OwnerText),"%s",Fraktionen[Gangzonen[i][GFOwnerID]][Frakname]);
    else format(OwnerText,sizeof(OwnerText),"Niemand");
    printf("OwnerText: %s", OwnerText);
    if(Gangzonen[i][GFGegnerID] != -1) format(GegnerText,sizeof(GegnerText),"%s",Fraktionen[Gangzonen[i][GFGegnerID]][Frakname]);
    else format(GegnerText,sizeof(GegnerText),"Niemand");
    printf("GegnerText: %s", GegnerText);
    format(GZName,sizeof(GZName),"~y~%s",Gangzonen[i][GangZoneName]);
    printf("GZName: %s", GZName);
    format(GZFZeit,sizeof(GZFZeit),"~r~Verbl. Zeit %d Minuten",60-Gangzonen[i][GFRunningTime]);
    printf("GZFZeit: %s", GZFZeit);
    format(Af,sizeof(Af),"~b~A: ~w~%s",Fraktionen[Gangzonen[i][GFFlaggenOwnerA]][Frakname]);
    format(Bf,sizeof(Bf),"~b~B: ~w~%s",Fraktionen[Gangzonen[i][GFFlaggenOwnerB]][Frakname]);
    format(Cf,sizeof(Cf),"~b~C: ~w~%s",Fraktionen[Gangzonen[i][GFFlaggenOwnerC]][Frakname]);
    printf("a: %s", Af);
    printf("c: %s", Bf);
    printf("a: %s", Cf);
    format(OwnerPoints, sizeof(OwnerPoints),"%s%d/100",(Gangzonen[i][GFOwnerPoints] < 10) ? ("00") : (""), Gangzonen[i][GFOwnerPoints]);
    format(GegnerPoints, sizeof(GegnerPoints),"%s%d/100",(Gangzonen[i][GFGegnerPoints] < 10) ? ("00") : (""), Gangzonen[i][GFGegnerPoints]);
    printf("OwnerPoints: %s", OwnerPoints);
    printf("GegnerPoints: %s", GegnerPoints);
    UpdateGangfightBox(playerid, OwnerText, GegnerText, GZName, GZFZeit, Af, Bf, Cf, OwnerPoints, GegnerPoints);
    }
    else//if(!(Spieler[playerid][Fraktion] == Gangzonen[i][GFOwnerID]) || !(Spieler[playerid][Fraktion] == Gangzonen[i][GFGegnerID]))
    {
    DestroyGangfightBox(playerid);
    KillTimer(GFBoxTimer[playerid]);
    }
    }
    return 1;
    }

  • Was wird für den anderen Spieler bei den prints ausgegeben?
    Ändere zur Identifikation der playerids den print zu:
    printf("playerid: %d // Fraktion %d == GFOwnerID %d || == GFGegnerID %d", playerid, Spieler[playerid][Fraktion], Gangzonen[i][GFOwnerID], Gangzonen[i][GFGegnerID]);

  • do.de - Domain-Offensive - Domains für alle und zu super Preisen
  • [15:04:43] playerid: 1 // Fraktion 9 == GFOwnerID 11 || == GFGegnerID 9
    [15:04:43] i: 0
    [15:04:43] OwnerText: Medellin Kartell
    [15:04:43] GegnerText: Grove Street
    [15:04:43] GZName: ~y~Golfplatz LV
    [15:04:43] GZFZeit: ~r~Verbl. Zeit 60 Minuten
    [15:04:43] a: ~b~A: ~w~Medellin Kartell
    [15:04:43] c: ~b~B: ~w~Medellin Kartell
    [15:04:43] a: ~b~C: ~w~Medellin Kartell
    [15:04:43] OwnerPoints: 000/100
    [15:04:43] GegnerPoints: 000/100
    [15:04:43] playerid: 1 // Fraktion 9 == GFOwnerID 10 || == GFGegnerID -1
    [15:04:43] playerid: 1 // Fraktion 9 == GFOwnerID 11 || == GFGegnerID -1
    [15:04:43] playerid: 1 // Fraktion 9 == GFOwnerID 15 || == GFGegnerID -1
    [15:04:43] playerid: 1 // Fraktion 9 == GFOwnerID 10 || == GFGegnerID -1
    [15:04:43] playerid: 1 // Fraktion 9 == GFOwnerID 11 || == GFGegnerID -1
    [15:04:43] playerid: 1 // Fraktion 9 == GFOwnerID 9 || == GFGegnerID -1
    [15:04:43] i: 6
    [15:04:43] OwnerText: Grove Street
    [15:04:43] GegnerText: Niemand
    [15:04:43] GZName: ~y~Dillimore
    [15:04:43] GZFZeit: ~r~Verbl. Zeit 61 Minuten
    [15:04:43] a: ~b~A: ~w~Grove Street
    [15:04:43] c: ~b~B: ~w~Grove Street
    [15:04:43] a: ~b~C: ~w~Grove Street
    [15:04:43] OwnerPoints: 000/100
    [15:04:43] GegnerPoints: 000/100
    [15:04:43] playerid: 1 // Fraktion 9 == GFOwnerID 9 || == GFGegnerID -1
    [15:04:43] i: 7
    [15:04:43] OwnerText: Grove Street
    [15:04:43] GegnerText: Niemand
    [15:04:43] GZName: ~y~Las Barrancas
    [15:04:43] GZFZeit: ~r~Verbl. Zeit 61 Minuten
    [15:04:43] a: ~b~A: ~w~Grove Street
    [15:04:43] c: ~b~B: ~w~Grove Street
    [15:04:43] a: ~b~C: ~w~Grove Street
    [15:04:43] OwnerPoints: 000/100
    [15:04:43] GegnerPoints: 000/100
    [15:04:43] playerid: 1 // Fraktion 9 == GFOwnerID 15 || == GFGegnerID -1
    [15:04:53] playerid: 1 // Fraktion 9 == GFOwnerID 11 || == GFGegnerID 9
    [15:04:53] i: 0
    [15:04:53] OwnerText: Medellin Kartell
    [15:04:53] GegnerText: Grove Street
    [15:04:53] GZName: ~y~Golfplatz LV
    [15:04:53] GZFZeit: ~r~Verbl. Zeit 60 Minuten
    [15:04:53] a: ~b~A: ~w~Medellin Kartell
    [15:04:53] c: ~b~B: ~w~Medellin Kartell
    [15:04:53] a: ~b~C: ~w~Medellin Kartell
    [15:04:53] OwnerPoints: 000/100
    [15:04:53] GegnerPoints: 000/100
    [15:04:53] playerid: 1 // Fraktion 9 == GFOwnerID 10 || == GFGegnerID -1
    [15:04:53] playerid: 1 // Fraktion 9 == GFOwnerID 11 || == GFGegnerID -1
    [15:04:53] playerid: 1 // Fraktion 9 == GFOwnerID 15 || == GFGegnerID -1
    [15:04:53] playerid: 1 // Fraktion 9 == GFOwnerID 10 || == GFGegnerID -1
    [15:04:53] playerid: 1 // Fraktion 9 == GFOwnerID 11 || == GFGegnerID -1
    [15:04:53] playerid: 1 // Fraktion 9 == GFOwnerID 9 || == GFGegnerID -1
    [15:04:53] i: 6
    [15:04:53] OwnerText: Grove Street
    [15:04:53] GegnerText: Niemand
    [15:04:53] GZName: ~y~Dillimore
    [15:04:53] GZFZeit: ~r~Verbl. Zeit 61 Minuten
    [15:04:53] a: ~b~A: ~w~Grove Street
    [15:04:53] c: ~b~B: ~w~Grove Street
    [15:04:53] a: ~b~C: ~w~Grove Street
    [15:04:53] OwnerPoints: 000/100
    [15:04:53] GegnerPoints: 000/100
    [15:04:53] playerid: 1 // Fraktion 9 == GFOwnerID 9 || == GFGegnerID -1
    [15:04:53] i: 7
    [15:04:53] OwnerText: Grove Street
    [15:04:53] GegnerText: Niemand
    [15:04:53] GZName: ~y~Las Barrancas
    [15:04:53] GZFZeit: ~r~Verbl. Zeit 61 Minuten
    [15:04:53] a: ~b~A: ~w~Grove Street
    [15:04:53] c: ~b~B: ~w~Grove Street
    [15:04:53] a: ~b~C: ~w~Grove Street
    [15:04:53] OwnerPoints: 000/100
    [15:04:53] GegnerPoints: 000/100
    [15:04:53] playerid: 1 // Fraktion 9 == GFOwnerID 15 || == GFGegnerID -1


    Bei ID 1 (hat gestartet beim Golfplatz | Besitzer: Medellin Kartell) geht die Box weg. Bei ID 2 (in der Fraktion Medellin Kartell) wird nur das Textdraw erstellt, aber nichts geupdated.


    Der Code:
    forward GangfightUpdate(playerid);
    public GangfightUpdate(playerid)
    {
    new OwnerText[128], GegnerText[128], GZName[128], GZFZeit[128], Af[128], Bf[128], Cf[128], OwnerPoints[128], GegnerPoints[128];
    for(new i = 0; i < sizeof Gangzonen; i++)
    {
    //printf("Fraktion %d == GFOwnerID %d || == GFGegnerID %d", Spieler[playerid][Fraktion], Gangzonen[i][GFOwnerID], Gangzonen[i][GFGegnerID]);


    printf("playerid: %d // Fraktion %d == GFOwnerID %d || == GFGegnerID %d", playerid, Spieler[playerid][Fraktion], Gangzonen[i][GFOwnerID], Gangzonen[i][GFGegnerID]);


    if(Spieler[playerid][Fraktion] == Gangzonen[i][GFOwnerID] || Spieler[playerid][Fraktion] == Gangzonen[i][GFGegnerID])
    {
    printf("i: %d", i);
    if(Gangzonen[i][GFOwnerID] != -1) format(OwnerText,sizeof(OwnerText),"%s",Fraktionen[Gangzonen[i][GFOwnerID]][Frakname]);
    else format(OwnerText,sizeof(OwnerText),"Niemand");
    printf("OwnerText: %s", OwnerText);
    if(Gangzonen[i][GFGegnerID] != -1) format(GegnerText,sizeof(GegnerText),"%s",Fraktionen[Gangzonen[i][GFGegnerID]][Frakname]);
    else format(GegnerText,sizeof(GegnerText),"Niemand");
    printf("GegnerText: %s", GegnerText);
    format(GZName,sizeof(GZName),"~y~%s",Gangzonen[i][GangZoneName]);
    printf("GZName: %s", GZName);
    format(GZFZeit,sizeof(GZFZeit),"~r~Verbl. Zeit %d Minuten",60-Gangzonen[i][GFRunningTime]);
    printf("GZFZeit: %s", GZFZeit);
    format(Af,sizeof(Af),"~b~A: ~w~%s",Fraktionen[Gangzonen[i][GFFlaggenOwnerA]][Frakname]);
    format(Bf,sizeof(Bf),"~b~B: ~w~%s",Fraktionen[Gangzonen[i][GFFlaggenOwnerB]][Frakname]);
    format(Cf,sizeof(Cf),"~b~C: ~w~%s",Fraktionen[Gangzonen[i][GFFlaggenOwnerC]][Frakname]);
    printf("a: %s", Af);
    printf("c: %s", Bf);
    printf("a: %s", Cf);
    format(OwnerPoints, sizeof(OwnerPoints),"%s%d/100",(Gangzonen[i][GFOwnerPoints] < 10) ? ("00") : (""), Gangzonen[i][GFOwnerPoints]);
    format(GegnerPoints, sizeof(GegnerPoints),"%s%d/100",(Gangzonen[i][GFGegnerPoints] < 10) ? ("00") : (""), Gangzonen[i][GFGegnerPoints]);
    printf("OwnerPoints: %s", OwnerPoints);
    printf("GegnerPoints: %s", GegnerPoints);
    UpdateGangfightBox(playerid, OwnerText, GegnerText, GZName, GZFZeit, Af, Bf, Cf, OwnerPoints, GegnerPoints);
    }
    else//if(!(Spieler[playerid][Fraktion] == Gangzonen[i][GFOwnerID]) || !(Spieler[playerid][Fraktion] == Gangzonen[i][GFGegnerID]))
    {
    DestroyGangfightBox(playerid);
    KillTimer(GFBoxTimer[playerid]);
    }
    }
    return 1;
    }

  • Problem 1:
    Versuche es so:
    forward GangfightUpdate(playerid);
    public GangfightUpdate(playerid)
    {
    new OwnerText[128], GegnerText[128], GZName[128], GZFZeit[128], Af[128], Bf[128], Cf[128], OwnerPoints[128], GegnerPoints[128];
    for(new i = 0; i < sizeof Gangzonen; i++)
    {
    //printf("Fraktion %d == GFOwnerID %d || == GFGegnerID %d", Spieler[playerid][Fraktion], Gangzonen[i][GFOwnerID], Gangzonen[i][GFGegnerID]);


    printf("playerid: %d // Fraktion %d == GFOwnerID %d || == GFGegnerID %d", playerid, Spieler[playerid][Fraktion], Gangzonen[i][GFOwnerID], Gangzonen[i][GFGegnerID]);
    if(Gangzonen[i][GFRunningTime] < 0) continue;
    if(Spieler[playerid][Fraktion] == Gangzonen[i][GFOwnerID] || Spieler[playerid][Fraktion] == Gangzonen[i][GFGegnerID])
    {
    printf("i: %d", i);
    if(Gangzonen[i][GFOwnerID] != -1) format(OwnerText,sizeof(OwnerText),"%s",Fraktionen[Gangzonen[i][GFOwnerID]][Frakname]);
    else format(OwnerText,sizeof(OwnerText),"Niemand");
    printf("OwnerText: %s", OwnerText);
    if(Gangzonen[i][GFGegnerID] != -1) format(GegnerText,sizeof(GegnerText),"%s",Fraktionen[Gangzonen[i][GFGegnerID]][Frakname]);
    else format(GegnerText,sizeof(GegnerText),"Niemand");
    printf("GegnerText: %s", GegnerText);
    format(GZName,sizeof(GZName),"~y~%s",Gangzonen[i][GangZoneName]);
    printf("GZName: %s", GZName);
    format(GZFZeit,sizeof(GZFZeit),"~r~Verbl. Zeit %d Minuten",60-Gangzonen[i][GFRunningTime]);
    printf("GZFZeit: %s", GZFZeit);
    format(Af,sizeof(Af),"~b~A: ~w~%s",Fraktionen[Gangzonen[i][GFFlaggenOwnerA]][Frakname]);
    format(Bf,sizeof(Bf),"~b~B: ~w~%s",Fraktionen[Gangzonen[i][GFFlaggenOwnerB]][Frakname]);
    format(Cf,sizeof(Cf),"~b~C: ~w~%s",Fraktionen[Gangzonen[i][GFFlaggenOwnerC]][Frakname]);
    printf("a: %s", Af);
    printf("c: %s", Bf);
    printf("a: %s", Cf);
    format(OwnerPoints, sizeof(OwnerPoints),"%s%d/100",(Gangzonen[i][GFOwnerPoints] < 10) ? ("00") : (""), Gangzonen[i][GFOwnerPoints]);
    format(GegnerPoints, sizeof(GegnerPoints),"%s%d/100",(Gangzonen[i][GFGegnerPoints] < 10) ? ("00") : (""), Gangzonen[i][GFGegnerPoints]);
    printf("OwnerPoints: %s", OwnerPoints);
    printf("GegnerPoints: %s", GegnerPoints);
    UpdateGangfightBox(playerid, OwnerText, GegnerText, GZName, GZFZeit, Af, Bf, Cf, OwnerPoints, GegnerPoints);
    return 1;
    }
    }
    DestroyGangfightBox(playerid);
    KillTimer(GFBoxTimer[playerid]);
    GFBoxTimer[playerid] = -1;
    return 1;
    }


    Problem 2:
    Dann wird der Timer für den Spieler nicht gestartet.

  • Problem 2:
    Schreibe den Timer so:
    forward GangfightUpdate();
    public GangfightUpdate()
    {
    new OwnerText[128], GegnerText[128], GZName[128], GZFZeit[128], Af[128], Bf[128], Cf[128], OwnerPoints[128], GegnerPoints[128];
    for(new playerid, = 0; playerid < MAX_PLAYERS; playerid++)
    {
    new set;
    for(new i = 0; i < sizeof Gangzonen; i++)
    {
    //printf("Fraktion %d == GFOwnerID %d || == GFGegnerID %d", Spieler[playerid][Fraktion], Gangzonen[i][GFOwnerID], Gangzonen[i][GFGegnerID]);


    printf("playerid: %d // Fraktion %d == GFOwnerID %d || == GFGegnerID %d", playerid, Spieler[playerid][Fraktion], Gangzonen[i][GFOwnerID], Gangzonen[i][GFGegnerID]);
    if(Gangzonen[i][GFRunningTime] < 0) continue;
    if(Spieler[playerid][Fraktion] == Gangzonen[i][GFOwnerID] || Spieler[playerid][Fraktion] == Gangzonen[i][GFGegnerID])
    {
    printf("i: %d", i);
    if(Gangzonen[i][GFOwnerID] != -1) format(OwnerText,sizeof(OwnerText),"%s",Fraktionen[Gangzonen[i][GFOwnerID]][Frakname]);
    else format(OwnerText,sizeof(OwnerText),"Niemand");
    printf("OwnerText: %s", OwnerText);
    if(Gangzonen[i][GFGegnerID] != -1) format(GegnerText,sizeof(GegnerText),"%s",Fraktionen[Gangzonen[i][GFGegnerID]][Frakname]);
    else format(GegnerText,sizeof(GegnerText),"Niemand");
    printf("GegnerText: %s", GegnerText);
    format(GZName,sizeof(GZName),"~y~%s",Gangzonen[i][GangZoneName]);
    printf("GZName: %s", GZName);
    format(GZFZeit,sizeof(GZFZeit),"~r~Verbl. Zeit %d Minuten",60-Gangzonen[i][GFRunningTime]);
    printf("GZFZeit: %s", GZFZeit);
    format(Af,sizeof(Af),"~b~A: ~w~%s",Fraktionen[Gangzonen[i][GFFlaggenOwnerA]][Frakname]);
    format(Bf,sizeof(Bf),"~b~B: ~w~%s",Fraktionen[Gangzonen[i][GFFlaggenOwnerB]][Frakname]);
    format(Cf,sizeof(Cf),"~b~C: ~w~%s",Fraktionen[Gangzonen[i][GFFlaggenOwnerC]][Frakname]);
    printf("a: %s", Af);
    printf("c: %s", Bf);
    printf("a: %s", Cf);
    format(OwnerPoints, sizeof(OwnerPoints),"%s%d/100",(Gangzonen[i][GFOwnerPoints] < 10) ? ("00") : (""), Gangzonen[i][GFOwnerPoints]);
    format(GegnerPoints, sizeof(GegnerPoints),"%s%d/100",(Gangzonen[i][GFGegnerPoints] < 10) ? ("00") : (""), Gangzonen[i][GFGegnerPoints]);
    printf("OwnerPoints: %s", OwnerPoints);
    printf("GegnerPoints: %s", GegnerPoints);
    UpdateGangfightBox(playerid, OwnerText, GegnerText, GZName, GZFZeit, Af, Bf, Cf, OwnerPoints, GegnerPoints);
    set = 1;
    break;
    }
    }
    if(!set) DestroyGangfightBox(playerid);
    }
    return 1;
    }


    Und starte ihn nur einmal bei OnGameModeInit.
    SetTimer("GangfightUpdate", 331, true);