Health-Abzug in einer bestimmten Zone?

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
  • Hi,


    wie kann ich machen das jemand in einer bestimmten Zone z.b AREA51 jede Sekunde 5hp abgezogen kriegt? Und wenn man aus der Zone weg ist da steht


    "Du hast dich mit einem Virus infiziert!


    Und dann kriegt man jede 5min 10hp abgezogen?


    Mit PlayerToPoint :/ ?


    M.f.G


    zombiemodder

    Zitat

    Nimm die Dinge wie sie sind: schlag, wenn du schlagen musst, tritt, wenn du Treten musst
    -Bruce Lee

  • naja helfen tut mir das nicht wirklich ?(?(?(



    Kann mir niemand ein bsp. Code machen? Ich habe echt NULL Ahnung davon :(



    M.f.g


    zombiemodder

    Zitat

    Nimm die Dinge wie sie sind: schlag, wenn du schlagen musst, tritt, wenn du Treten musst
    -Bruce Lee

  • Ich denke,dass es so ginge



    forward IsPlayerInArea(playerid,Float:X,Float:Y,Float:Z);
    //....


    public IsPlayerInArea(playerid,Float:X,Float:Y,Float:Z)
    {
    new Float:X;
    new Float:Y;
    New Float:Z;
    GetPlayerPos(playerid,X,Y,Z);
    if(X >= ... && X <= ... && Y >= .... && Y <= ...); {
    //... Hier könntest du beispielsweise mit einem Timer fortsetzen


    Suche Scriptlehrer :rolleyes:

  • sry aber das hilft mir nicht :(


    Kann mir keiner so ein skript erstellen? Einfach wenn man in area 51 oderi n die nähe geht kriegt mann jede 5sec 3hp abgezogen?


    Sry wenn ich nerve :(

    Zitat

    Nimm die Dinge wie sie sind: schlag, wenn du schlagen musst, tritt, wenn du Treten musst
    -Bruce Lee

  • Also, du bausts so ein, wie ichs dir erkläre:


    bei den forwards:
    forward Areacheck();


    bei OnGameModeInit()
    SetTimer("AreaCheck",5000,1);


    Irgwo 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;
    return 0;
    }
    public Areacheck()
    {
    for(new i = 0; i<GetMaxPlayers(); i++)
    {
    if( IsPlayerConnected(i) && IsPlayerInArea(playerid, 1.Speichern-X , 1.Speichern-Y , 2.Speichern-X , 2.Speichern-Y ) )
    {
    new Float:phealth;
    GetPlayerHealth(playerid,phealth);
    SetPlayerHealth(playerid,health-3);
    }
    }
    }


    Hier der Syntax von IsPlayerInArea:
    IsPlayerInArea(playerid,minX,minY,maxX,maxY)
    Du musst 2mal Koordinaten speichern, einmal unten links und einmal oben rechts des Bereiches und benötigst die X und Y Werte. Wenn du die Koordinaten einfügst sollte es so aussehen:
    IsPlayerInArea(playerid, 1.Speichern-X , 1.Speichern-Y , 2.Speichern-X , 2.Speichern-Y )


    Also, hoffe es funktioniert bei dir ;)


    Ich scripte NICHT mehr, ich möchte mit NIEMANDEM einen Server aufmachen habe auch NICHTS mehr mit LoH zu tun, also lasst es mit den PNs!

  • danke das du mir hilfst :D bist eine hilfe :D Ich mach des mit den Koordinaten einfach mit diesem Tool, dieses Xtreme ding da XD


    noch eine Frage, geht es, das wenn man aus dem Gebiet wieder rausgeht da steht "du bist mit dem Virus infiziert" und mann jede Minute auch 3hp points abgezogen werden?


    Vielen Dank

    Zitat

    Nimm die Dinge wie sie sind: schlag, wenn du schlagen musst, tritt, wenn du Treten musst
    -Bruce Lee

  • Ich denke mal so:

    public Areacheck()
    {
    for(new i = 0; i<GetMaxPlayers(); i++)
    {
    if( IsPlayerConnected(i) && IsPlayerInArea(playerid, 1.Speichern-X , 1.Speichern-Y , 2.Speichern-X , 2.Speichern-Y ) )
    {
    new Float:phealth;
    GetPlayerHealth(playerid,phealth);
    SetPlayerHealth(playerid,health-3);
    }
    else
    {
    new Float:h;
    GetPlayerHealth(playerid, h);
    SetPlayerHealth(playerid, h-5);
    }
    }
    }

    Suche Scriptlehrer :rolleyes:

  • jetzt habe ich keine errors aber ich kriege kein leben abgezogt und nix passiert.
    public Areacheck(playerid, health)
    {
    for(new i = 0; i<GetMaxPlayers(); i++)
    {
    if( IsPlayerConnected(i) && IsPlayerInArea(playerid, 1847.332, -1275.245, 2079.305, -1129.178) )
    {
    new Float:phealth;
    GetPlayerHealth(playerid,phealth);
    SetPlayerHealth(playerid,health-3);
    SendClientMessage(playerid,COLOR_DARKRED, "Du betrittst eine Verseuchte Zone!");
    GangZoneFlashForPlayer(playerid,alert,COLOR_RED);
    }
    }
    }



    was ist falsch :(?

    Zitat

    Nimm die Dinge wie sie sind: schlag, wenn du schlagen musst, tritt, wenn du Treten musst
    -Bruce Lee

    3 Mal editiert, zuletzt von zombie.modder ()

  • Kannst auch mit playertopoint arbeiten,

    forward PlayerInPoint();
    forward PlayerToPoint(Float:radi, playerid, Float:x, Float:y, Float:z); 

    public OnGameModeInit()
    {
    SetTimer("PlayerInPoint", 1000, 1); 

    public PlayerToPoint(Float:radi, playerid, Float:x, Float:y, Float:z)
    {
    if(IsPlayerConnected(playerid))
    {
    new Float:oldposx, Float:oldposy, Float:oldposz;
    new Float:tempposx, Float:tempposy, Float:tempposz;
    GetPlayerPos(playerid, oldposx, oldposy, oldposz);
    tempposx = (oldposx -x);
    tempposy = (oldposy -y);
    tempposz = (oldposz -z);
    //printf("DEBUG: X:%f Y:%f Z:%f",posx,posy,posz);
    if (((tempposx < radi) && (tempposx > -radi)) && ((tempposy < radi) && (tempposy > -radi)) && ((tempposz < radi) && (tempposz > -radi)))
    {
    return 1;
    }
    }
    return 0;


    public PlayerInPoint()
    {
    new playerid;
    if (PlayerToPoint(2.0,playerid, X,Y,Z))
    {
    new Float:phealth;
    GetPlayerHealth(playerid,phealth);
    SetPlayerHealth(playerid,health-3);
    SendClientMessage(playerid,COLOR_DARKRED, "Du betrittst eine Verseuchte Zone!");
    GangZoneFlashForPlayer(playerid,alert,COLOR_RED);
    return 1;
    }
    return 0;
    }

  • Danke aber:


    Der Spieler stirbt sofort beim betreten der Zone


    Die Meldung erscheint ununterbrochen (nicht mehr nach tod)


    Kann man machen wenn man aus der Zone raus ist, das man dan infiziert ist und jede Minute 3hp weg kriegt?


    Danke


    mfg


    zombiemodder

    Zitat

    Nimm die Dinge wie sie sind: schlag, wenn du schlagen musst, tritt, wenn du Treten musst
    -Bruce Lee