IsPlayerInGangZone ?

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
  • Moin Leute


    Ich hab jetzt :



    • armygebiet = GangZoneCreate(MinX,MinY,MaxX,MaxY);
      armygebiet = GangZoneCreate(-82.7372,1635.9313,421.9623,2155.2952);


    Und möchte wenn einer in diese Zone rein kommt eine Message bekommen aber mit welchem Befehl fragt man das ab ?
    ganz normal mit : if(IsPlayerInRangeOfPoint(playerid,-82.7372,1635.9313,421.9623,2155.2952);


    oder muss man das anders machen ?

  • if(IsPlayerInArea(playerid,-82.7372,1635.9313,421.9623,2155.2952))


    & das danz Oben
    forward IsPlayerInArea(playerid,Float:minX,Float:minY,Float:maxX,Float:maxY);


    & das irgendwo im Script aber nicht in einem Public/stock


    stock IsPlayerInArea(playerid,Float:minX,Float:minY,Float:maxX,Float:maxY)
    {
    new Float:pX,Float:pY,Float:pZ;
    GetPlayerPos(playerid,pX,pY,pZ);
    if(pX >= minX && pX <= maxX && pY >= minY && pY <= maxY) return 1;
    else return 0;
    }


    /edit Fehler ausgebessert

  • new inarmy[MAX_PLAYERS];
    forward TimerArmy();


    public TimerArmy()
    {
    for(new i = 0; i < MAX_PLAYERS; i++)
    {
    if(IsPlayerConnected(i))
    {
    if(IsPlayerInArea(i, 100.400100, 1765.730834, 396.400085, 2093.730957))
    {
    if(inarmy[i])continue;
    inarmy[i] = 1;
    if(!IsACop(i))// Hier einfach die Abfrage ändern
    {
    SendCopMessage(COLOR_YELLOW, "Ein Spieler hat die Army betreten, sichern sie den Ort!");
    SendClientMessage(i,COLOR_RED,"Du hast die Army betreten, verlass sie sonst kriegst du Wanteds!");
    }
    }
    else inarmy[i] = 0;
    }
    }
    }

  • Da wo du die Abfrage machst. Also zum Beispiel in einem Timer.
    Ganz oben forward Sekunde();


    Dann unter OnGameModeInit das hier SetTimer("Sekunde",1000,1);


    dann machste irgendwo das public Sekunde()
    {
    if(IsPlayerInArea(playerid,-82.7372,1635.9313,421.9623,2155.2952))// Area Abfrage
    {
    for(new i = 0; i < GetMaxPlayers(); i++)
    {
    if(isPlayerInFrakt(i,4))//Fraktionsabfrage
    {
    SendClientMessage(i, -1,"Du befindest dich in einer Sperrzone"); //Den Text kannst du ändern
    }
    }
    }
    return 1;
    }

  • Wenn ich das Jetzt richtig verstehe und einer rein geht kriegt er eine Message ?


    wenn ich jetzt SetTimer("Sekunde",10000,1); auf 10sek mache und eine Person befindet sich in diesem Gebiet kriegt Fraktion 4 Jede 10sek eine Message ?
    Bis die Person nicht mehr Dirne ist ?

  • Kurze Nebenfrage, ist das nicht etwas Ressourcenfressend? 8|

  • Angelo24 Ja hast du richtig erkannt. Kannst aber auch eine Abfrage reinmachen das die Message nur einmal gesendet wird. Und sobald die Person nicht mehr in der Area ist das dann die Abfrage auf 0 gesetzt wird.


    @ReasonDev Er kann das auch in einem existierenden Timer einbauen ist seine Sache. Anders wüsste ich nicht wie man sowas abfragen kann.


    mfg


    • public SpielerArea()
      {
      if(IsPlayerInArea(playerid,-82.7372,1635.9313,421.9623,2155.2952))// Area Abfrage
      {
      for(new i = 0; i < GetMaxPlayers(); i++)
      {
      if(isPlayerInFrakt(i,4))//Fraktionsabfrage
      {
      SendClientMessage(i, -1,"Du befindest dich in einer Sperrzone"); //Den Text kannst du ändern
      }
      }
      }
      return 1;
      }


    hab jetzt 1 Error :

    (3) : error 017: undefined symbol "playerid"

  • eh for(new i = 0; i < GetMaxPlayers(); i++)
    {
    if(IsPlayerInArea(i,-82.7372,1635.9313,421.9623,2155.2952))// Area Abfrage
    {
    if(isPlayerInFrakt(i,4))//Fraktionsabfrage
    {
    SendClientMessage(i, -1,"Du befindest dich in einer Sperrzone"); //Den Text kannst du ändern
    }
    }

    so :)