Frage zu Area

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 leute,
    weis nicht genau wie ich es bennenen sollte und habe es dan einfahc mal so benannt.
    Undzwa Frage ich mich, wie man es machen kann, das wen ein spieler ein bestimmtes area verlässt das ihm iwas passiert oder er eine nachricht bekommt ^^

    Mein I-Net ^^

  • PlayerInZone(playerid,Float:maxX,Float:minX,Float:maxY,Float:minY)
    {
    new Float:jx,Float:jy,Float:jz;
    GetPlayerPos(playerid,jx,jy,jz);
    if(jx < maxX && jx > minX && jy < maxY && jy > minY){return true;}else{return false;}
    }


    Dann per Timer:


    forward myclass();


    public myclass()
    {
    if(PlayerInZone(playerid,Float:maxX,Float:minX,Float:maxY,Float:minY))
    {
    // aktion
    }
    return 1;
    }

    Mfg. BlackFoX_UD_ alias [BFX]Explosion


  • ich versteh das garnicht was du da meindest.
    Der 2te timmer wird doch nirgenzwo befragt oder so..
    und bei dem ersten passiert garnichts..
    ich wil nur das wen du z.b im puff bist das da steht du bist im puff.. und das wen du da weg gehst da steht du hast den ka verrlassen

    Mein I-Net ^^

  • PlayerToPoint ?

    forward PlayerToPoint(Float:radi, playerid, Float:xs, Float:ys, Float:zs);
    public PlayerToPoint(Float:radi, playerid, Float:xs, Float:ys, Float:zs)
    {
    if(IsPlayerConnected(playerid))
    {
    new Float:oldposx, Float:oldposy, Float:oldposz;
    new Float:tempposx, Float:tempposy, Float:tempposz;
    GetPlayerPos(playerid, oldposx, oldposy, oldposz);
    tempposx = (oldposx -xs);
    tempposy = (oldposy -ys);
    tempposz = (oldposz -zs);
    if (((tempposx < radi) && (tempposx > -radi)) && ((tempposy < radi) && (tempposy > -radi)) && ((tempposz < radi) && (tempposz > -radi)))
    {
    return 1;
    }
    }
    return 0;
    }


    Bei OnGameModeInit:


    SetTimer("ptpclass",1000,1);



    new send[MAX_PLAYERS];


    forward ptpclass();


    public ptpclass()
    {
    for(new i = 0;i<MAX_PLAYERS;i++)
    {
    if(PlayerToPoint(Radius,playerid,x,y,z))
    {
    if(send[playerid] == 0)
    {
    send[playerid] = 1;
    SendClientMessage(playerid,Farbe,"Du bist iwo.");
    }
    }
    else
    {
    send[playerid] = 0;
    }
    }
    }

    Mfg. BlackFoX_UD_ alias [BFX]Explosion


  • new send[MAX_PLAYERS];
    new verlassen[MAX_PLAYERS];
    forward ptpclass();


    public ptpclass()
    {
    for(new i = 0;i<MAX_PLAYERS;i++)
    {
    if(PlayerToPoint(Radius,playerid,x,y,z))
    {
    if(send[playerid] == 0)
    {
    send[playerid] = 1;
    SendClientMessage(playerid,Farbe,"Du bist iwo.");
    verlassen[playerid] = 0;
    }
    }
    else
    {
    send[playerid] = 0;
    if(verlassen[playerid] == 0)
    {
    SendClientMessage(playerid,farbe,"verlassen");
    verlassen[playerid] = 1;
    }
    }
    }
    }

    Mfg. BlackFoX_UD_ alias [BFX]Explosion


  • er hat mir immer gesagt undefine symbol playerid.. dan habe ich es so gemacht.


    public ptpclass()
    {
    for(new i = 0;i<MAX_PLAYERS;i++)
    {
    if(PlayerToPoint(20.0,i,311.4324,-9.3529,26.7422))
    {
    if(send[i] == 0)
    {
    send[i] = 1;
    SendClientMessage(i,COLOR_ORANGE,"Du bist in der bank.");
    verlassen[i] = 0;
    }
    }
    else
    {
    send[i] = 0;
    if(verlassen[i] == 0)
    {
    SendClientMessage(i,COLOR_ORANGE,"Du hast die Bank Verlassen");
    verlassen[i] = 1;
    }
    }
    }
    }


    aber leider passiert nichts

    Mein I-Net ^^

  • Ich habe es mal so aufgebaut , wie du es in ICQ wolltest
    Für alle die die Lösung haben wollen,
    Fiedel hat die 2te Methode genommen!


    Erste Methode:


    Ganz unten im Script!
    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;
    }


    bei OnPlayerDeath:
    if(IsPlayerInArea(playerid,Die Cordinaten von Der Zone))
    {
    // Nichts Passiert
    }
    else // wenn er aus der zone rausgeht
    {
    // das was passieren soll
    }


    Hier eine Zweite Methode mit PlayerToPoint:


    Bei OnPlayerDeath: & Exit:
    if (PlayerToPoint(20.0, playerid,2305.6890,-16.0881,26.7496))
    {
    if(ausrauben == 1)
    {
    new s[100];//, name[MAX_PLAYER_NAME];
    GetPlayerName(playerid,name,sizeof(name));
    ausrauben = 0;
    format(s,sizeof(s),"%s wurde GETÖTET. Der Bankraub ist fehlgeschlagen!!!",name);
    SendClientMessageToAll(COLOR_LIGHTBLUE,s);
    }
    }



    Lua: 63% C++: 23% C#: 53% VB: 96%

  • die lösung hast du halb von mir :P... habs ja dan hinbekommen und dir geschickt..
    habe es bei /exit mit playertopoint gemacht und bei onplayerdeath genauso <3

    Mein I-Net ^^