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


    Ich habe ein kleines Problem, wenn ich einen Gangfight per /gangfight starten möchte.
    Ich bekomme immer die Message, dass ich mich in keiner Gangzone befinde.


    Meine Abfrage ob der Spieler in einer Gangzone ist:

    stock IsPlayerInGFZone(playerid)
    {
    for(new i;i<MAX_ZONES;i++)
    {
    new Float:GetX,Float:GetY,Float:GetZ;
    GetPlayerPos(playerid,GetX,GetY,GetZ);
    if(Zone[i][gMinX] < GetX && Zone[i][gMaxX] > GetX && Zone[i][gMinY] < GetY && Zone[i][gMaxY] > GetY)
    {
    return i;
    }
    else
    {
    return -1;
    }
    }
    return -1;
    }


    Und mein /Gangfight Command:

    CMD:gangfight(playerid, params[])
    {
    if(Spieler[playerid][pRank] >= 7)
    {
    if(IsPlayerInGFZone(playerid) > -1)
    {
    new gid = IsPlayerInGFZone(playerid);
    if(Zone[gid][gBlocked] == 0)
    {
    if(Zone[gid][gOwner] == Spieler[playerid][pFraktion]) return SendClientMessage(playerid, COLOR_GREY, "** Deine Fraktion ist bereits im Besitz dieses Gebietes.");
    if(Zone[gid][gRunning] == 1) return SendClientMessage(playerid, COLOR_GREY, "** In diesem Gebiet läuft bereits ein Gangfight.");
    Zone[gid][gAngreifer] = Spieler[playerid][pFraktion];
    Zone[gid][gRunning] = 1;
    Zone[gid][gBlocked] = 1;
    SetTimerEx("GangFight", 2400000,0, "i", Zone[gid]);
    for(new i;i<MAX_PLAYERS;i++)
    {
    if(Spieler[playerid][pFraktion] == Zone[gid][gAngreifer])
    {
    UpdateGangfightInfo(playerid);
    ShowGangfightInfo(playerid);
    }
    else if(Spieler[playerid][pFraktion] == Zone[gid][gOwner])
    {
    UpdateGangfightInfo(playerid);
    ShowGangfightInfo(playerid);
    }
    }
    }
    }
    else
    {
    SendClientMessage(playerid, COLOR_GREY, "** Du befindest dich in keinem Gangfight-Gebiet.");
    }
    }
    else
    {
    SendClientMessage(playerid, COLOR_GREY, "** Du kannst keinen Gangfight starten.");
    }
    return 1;
    }

  • Ändere die Funktion zu:
    stock IsPlayerInGFZone(playerid)
    {
    new Float:GetX,Float:GetY,Float:GetZ;
    GetPlayerPos(playerid,GetX,GetY,GetZ);
    for(new i;i<MAX_ZONES;i++)
    {
    if(Zone[i][gMinX] <= GetX && Zone[i][gMaxX] >= GetX && Zone[i][gMinY] <= GetY && Zone[i][gMaxY] >= GetY) return i;
    }
    return -1;
    }

    3HZXdYd.png

    2 Mal editiert, zuletzt von Jeffry ()

  • Dann schreibe die Funktion so, und poste dann was im Server Log steht, wenn du den Befehl eingibst:
    stock IsPlayerInGFZone(playerid)
    {
    new Float:GetX,Float:GetY,Float:GetZ;
    GetPlayerPos(playerid,GetX,GetY,GetZ);
    printf("Pos: %f/%f/%f", GetX, GetY, GetZ);
    for(new i;i<MAX_ZONES;i++)
    {
    printf("%f / %f | %f / %f", Zone[i][gMinX], Zone[i][gMaxX], Zone[i][gMinY], Zone[i][gMaxY]);
    if(Zone[i][gMinX] <= GetX && Zone[i][gMaxX] >= GetX && Zone[i][gMinY] <= GetY && Zone[i][gMaxY] >= GetY) return i;
    printf("Nein.");
    }
    return -1;
    }

    3HZXdYd.png

    Einmal editiert, zuletzt von Jeffry ()


  • [20:21:00] Pos: 2769.886962/-1936.390991/13.371947
    [20:21:00] 0.000000 / 0.000000 | 0.000000 / 0.000000
    [20:21:00] Nein.
    [20:21:00] 2724.520019 / 2812.629882 | -1984.310058 / -1900.729980
    [20:21:00] Nein.
    [20:21:00] 0.000000 / 0.000000 | 0.000000 / 0.000000
    [20:21:00] Nein.
    [20:21:00] 0.000000 / 0.000000 | 0.000000 / 0.000000
    [20:21:00] Nein.
    [20:21:00] 0.000000 / 0.000000 | 0.000000 / 0.000000
    [20:21:00] Nein.
    [20:21:00] 0.000000 / 0.000000 | 0.000000 / 0.000000
    [20:21:00] Nein.
    [20:21:00] 0.000000 / 0.000000 | 0.000000 / 0.000000
    [20:21:00] Nein.
    [20:21:00] 0.000000 / 0.000000 | 0.000000 / 0.000000
    [20:21:00] Nein.
    [20:21:00] 0.000000 / 0.000000 | 0.000000 / 0.000000
    [20:21:00] Nein.

  • Ohh, sorry da habe ich gepennt.
    stock IsPlayerInGFZone(playerid)
    {
    new Float:GetX,Float:GetY,Float:GetZ;
    GetPlayerPos(playerid,GetX,GetY,GetZ);
    printf("Pos: %f/%f/%f", GetX, GetY, GetZ);
    for(new i;i<MAX_ZONES;i++)
    {
    printf("%f / %f | %f / %f", Zone[i][gMinX], Zone[i][gMaxX], Zone[i][gMinY], Zone[i][gMaxY]);
    if(Zone[i][gMinX] <= GetX && Zone[i][gMaxX] >= GetX && Zone[i][gMinY] <= GetY && Zone[i][gMaxY] >= GetY) return i;
    printf("Nein.");
    }
    return -1;
    }


    Dann dürfte es klappen.

  • Alles klar, das Funktioniert jetzt danke.
    Aber direkt nächstes Problem, die Gangzone flasht nicht.


    GangZone Update:



    public UpdateZones()
    {
    for(new ui;ui<MAX_PLAYERS;ui++)
    {
    for(new i;i<MAX_ZONES;i++)
    {
    if(Zone[i][gOwner] == 2)
    {
    GangZoneShowForPlayer(ui, Zone[i][gZone], 0xFF80FF82);
    }
    else if(Zone[i][gOwner] == 4)
    {
    GangZoneShowForPlayer(ui, Zone[i][gZone], 0x00800044);
    }
    else if(Zone[i][gRunning] == 1)
    {
    if(Zone[i][gAngreifer] == 2)
    {
    GangZoneFlashForPlayer(ui, Zone[i][gZone], 0xFF80FF82);
    }
    if(Zone[i][gAngreifer] == 4)
    {
    GangZoneFlashForPlayer(ui, Zone[i][gZone], 0x00800044);
    }
    }
    }
    }
    return 1;
    }

  • Super funktioniert (War eigentlich klar xD), habe aber noch einen letzten Fehler wenn ich einen Gangfight starte, Verliere ich die Verbindung zum Server.
    Sprich:


    lost Connection, reconnecting...
    Could not connect to Server...
    You are banned from this Server.


    /gangfight Befehl ist ja oben, habe echt keine Ahnung woran das liegen könnte :whistling: