[Problem] mit Gangwar-system

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
  • Hallo Community,


    Ich habe zwei Probleme mit meinem Gangwarsystem, undzwar einmal mit der Minimap, da die Ganggebiete auf der Minimap rum buggen, und zum 2. das der befehl /gw nicht funktioniert!


    ocmd:gw(playerid)
    {
    new gangzone = IsPlayerInGangZone(playerid);
    if(fInfo[sInfo[playerid][fraktion]][gangfightable]==0)
    {
    if(sInfo[playerid][fraktion]==0)
    {
    SendClientMessage(playerid,COLOR_RED,"Du bist in keiner Fraktion!");
    return 1;
    }
    else
    {
    SendClientMessage(playerid,COLOR_RED,"Deine Fraktions kann keine Gangwars führen!");
    return 1;
    }
    }
    if(gwInfo[gangzone][besitzer]==sInfo[playerid][fraktion]) return SendClientMessage(playerid,C_Gruen,"Dieses Gebiet gehört bereits deiner Fraktion.");
    if(gwInfo[gangzone][running]==1) return SendClientMessage(playerid,COLOR_RED,"Es läuft gereits ein Gangwar in diesem Gebiet!");
    if(sInfo[playerid][rang]!=5) return SendClientMessage(playerid,COLOR_RED,"Nur der Leader einer Fraktion kann einen Gangwar starten!");
    gwInfo[gangzone][angreifer]=sInfo[playerid][fraktion];
    SetTimerEx("GangFight",3600000,0,"i",gangzone);
    for(new i; i<MAX_PLAYERS;i++)
    {
    if(sInfo[i][fraktion]==gwInfo[gangzone][besitzer])
    {
    SendClientMessage(i,COLOR_RED,"Eines deiner Gebiete wird angegriffen!");
    }
    else if(sInfo[i][fraktion]==gwInfo[gangzone][angreifer])
    {
    SendClientMessage(i,C_Gruen,"Deine Fraktion greift ein Gebiet an!");
    }
    }
    return 1;
    }


    IsPlayerInGangZone(playerid)
    {
    new Float:x,Float:y,Float:z;
    GetPlayerPos(playerid,x,y,z);
    for(new i;i<sizeof(gwInfo);i++)
    {
    if(x>gwInfo[i][minx]&&x<gwInfo[i][maxx]&&y>gwInfo[i][miny]&&y<gwInfo[i][maxy])
    {
    return i;
    }
    }
    return -1;
    }


    Und Minimap :


    //Das enum



    enum gangZones{
    besitzer,
    Float:minx,
    Float:miny,
    Float:maxx,
    Float:maxy,
    punkteAngreifer,
    punkteVerteidiger,
    running,
    angreifer
    }


    new gwInfo[10][gangZones] = {
    {3,343.2366,-221.5531,120.9273,-3.2783,0,0,0,0},
    {3,696.6437,1335.3184,487.8692,1100.1583,0,0,0,0},
    {3,-316.4751,2213.3062,-459.6156,2266.0515,0,0,0,0},
    {3,-141.9772,2629.3047,-341.6631,2792.3972,0,0,0,0},
    {3,-926.2476,1612.3423,-733.4478,1455.1957,0,0,0,0},
    {3,1238.9016,2722.8767,1598.3860,2579.4768,0,0,0,0},
    {3,878.0677,-617.6247,598.3074,-480.1673,0,0,0,0},
    {3,1876.9275,-1145.8002,2056.8618,-1250.8899,0,0,0,0},
    {3,2717.5879,-1267.0513,2648.2690,-1598.0088,0,0,0,0},
    {3,2406.9998,-2060.2517,2624.3269,-1922.7266,0,0,0,0}
    };




    //Unter OnGameModeInit
    for(new i;i<sizeof(gwInfo); i++)
    {
    new id=GetFreeGangZoneID();
    gangZone[id] = GangZoneCreate(gwInfo[i][minx],gwInfo[i][miny],gwInfo[i][maxx],gwInfo[i][maxy]);
    }



    Ich hoffe irgendjemand kann mir helfen :D. MFG German_ScripterHD


    Mit freundlichen Grüßen
    German_ScripterHD

  • Zu Problem 1:
    Du hast die Koordinaten falsch eingetragen:
    Beispiel:
    {3,343.2366,-221.5531,120.9273,-3.2783,0,0,0,0},
    Du sagst: minX, minY, maxX, maxY.
    So, 343 ist aber größer als 120, daher ist das falsch herum. Bei den anderen Koordinaten drunter ist es zum Teil auch falsch (auch bei den Y Werten!), prüfe die alle nochmal.


    Problem 2:
    Was funktioniert nicht? Bzw, was passiert und was sollte passieren?