IsPlayerInRangeOfPoint X Y, X Y ?

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
  • Reicht das, wenn das ein Umkreis von paar Metern ist, oder soll das eine bestimmte Zone sein?
    Bei einem Umkreis von paar Metern kannst du das nehmen:
    [wiki]IsPlayerInRangeOfPoint[/wiki]


    Ansonsten, wenn das in eine bestimmte Zone sein soll, dann diese Funktion:

  • Beispiel:


    Du hast eine Zone, die eine untere Ecke ist z.B (0|0|0) die obere (100|100|100). Es muss bei der Funktion ein Rechteck sein,


    Dann schreibst du das so:


    Code
    IsPlayerInArea(playerid, Float:MinX, Float:MinY, Float:MaxX, Float:MaxY);
    
    
    IsPlayerInArea(playerid, 0.0, 0.0, 100.0, 100.0);

    Einmal editiert, zuletzt von Simon2202 ()

  • Beitrag von [DT]midomen ()

    Dieser Beitrag wurde vom Autor gelöscht ().
  • Ich habe es mal so versucht doch ich bekomme Fehler,


    IsPlayerInArea(playerid, 1449.4847,-1446.6949, 1557.6279,-1732.3186);
    {
    new Float:X, Float:Y, Float:Z;
    GetPlayerPos(playerid, X, Y, Z);
    if(X >= MinX && X <= MaxX && Y >= MinY && Y <= MaxY)
    {
    SendClientMessage(playerid,BLAU,"tot?");
    return 1;
    }
    return 0;
    }


    Die Errors sind:


    (3122) : error 017: undefined symbol "IsPlayerInArea"
    (3126) : error 017: undefined symbol "MinX"
    (3226) : warning 225: unreachable code
    2 Errors. 1 Warning

  • Beispielsweise :


    public IsPlayerInArea.....


    // Fail
    Willst du das in nen Befehl einbauen?

  • do.de - Domain-Offensive - Domains für alle und zu super Preisen
  • So kannst du das auch nicht verwenden! Das hier:


    Code
    stock IsPlayerInArea(playerid, Float:MinX, Float:MinY, Float:MaxX, Float:MaxY)
    {
    	new Float:X, Float:Y, Float:Z;
    	GetPlayerPos(playerid, X, Y, Z);
    	if(X >= MinX && X <= MaxX && Y >= MinY && Y <= MaxY) {
    		return 1;
    	}
    	return 0;
    }


    kopierst du und fügst du ganz unten in dein Script ein. Verwenden tust du es Beispielsweise so:



    Code
    if(IsPlayerInArea(playerid,0,1000,0,1000) == 1) {print("Spieler ist in Area);} else { print("Spieler ist nicht in Area);}
    
    
    
    
    Die Funktion gibt 1 zurück, wenn der Spieler in der Area ist und 0 wenn er es nicht ist!
  • Nur zur Klärung damit du es demnächst besser machst:
    IsPlayerInArea(playerid, 1449.4847,-1446.6949, 1557.6279,-1732.3186);
    muss zu
    IsPlayerInArea(playerid, 1449.4847,-1446.6949, 1557.6279,-1732.3186)

  • Ebenfalls nur zur Erklärung:


    IsPlayerInArea(playerid, 1449.4847,-1446.6949, 1557.6279,-1732.3186)
    Das ist so nicht richtig, weil minY (-1446.6949) nicht kleiner ist als maxY (-1732.3186).



    -1732.3186 ist kleiner als -1446.6949 und somit sind die Werte vertauscht.
    -1€ sind mehr (größer) als -50€, macht es vllt verständlicher.