mit timer zone abfragen

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
  • Guten Tag


    Ich habe eine Zone erstellt, wo keine waffen getragen werden sollen. nun muss ich ja ein timer erstellen, der alle paar sekunden abfrag ob er in dieser zone ist.
    nun ist meine erste frage dazu wie ich das mit dem timer mache das er alle paar sekunden abfragt ob er in der zone ist, und ob man das so machen kann das einem nicht die waffen weggenommen werden, sondern man nur die faust anlegen kann.


    hier die zone:


    new lsadmzone;


    //OnGameModeInit:
    lsadmzone = GangZoneCreate(1850.0753,-2658.5370,2055.6101,-2177.5970);//lsairport dm frei

  • Ganz oben im script unter den defines, am besten bei die anderen forwards:


    forward ZoneAbfrage();


    unter ongamemodeinit:


    SetTimer("ZoneAbfrage", 1000, 1);


    Das is ein ein-sekunden timer


    Ganz unten im script


    public ZoneAbfrage()
    {
    for(new i; i<MAX_PLAYERS;i++)
    {
    dann hier den kram rein mit den abfragen, ob der typ in der zone is :D anstatt playerid musst du i benutzen ;)
    }
    return 1;
    }


    Sollte gehen xD


    MFG, Robdeflop®

  • Also waffen wegnehmen mit ResetPlayerWeapons :D Ob man gangzones abfragen kann, kp


    Ansonsten muss halt z.B. ne Funktion erstellen, mitder du das abfragen kannst :D
    z.B. hier sowas:


    public Gebiet(playerid, Float:FX, Float:fX, Float:FY, Float:fY)
    {
    new Float:gebietX, Float:gebietY, Float:unused;
    GetPlayerPos(playerid, gebietX, gebietY, unused);

    if(gebietX > fX && gebietX < FX && gebietY > fY && gebietY < FY)
    {
    return 1;
    }
    return 0;
    }


    Das sollte so gehen :D

  • :o sieht ser kompliziert aus also hab nun:


    public lsairdm(playerid, Float:FX, Float:fX, Float:FY, Float:fY)
    {
    for(new i; i<MAX_PLAYERS;i++)
    {
    new Float:lsadmzoneX, Float:lsadmzoneY, Float:unused;
    GetPlayerPos(i, lsadmzoneX, lsadmzoneY, unused);


    if(lsadmzoneX > fX && lsadmzoneX < FX && lsadmzoneY > fY && lsadmzoneY < FY)
    {
    SendClientMessage(i,BLAU,"test");
    return 1;
    }
    }
    return 0;
    }


    keine warnings, keine errors doch ich bekomme keine nachricht.

  • ja würde ich machen wenn ich aber erstma abfragen könnte in welchem bereich er ist. wenn ich ganz einfach mache if(IsPlayerInZone(playerid,zone)) { dann kann er damit nichts anfangen, das muss dann erst definiert werden, da ich ja ein neues public gemacht habe. das wollten wir so umgehen, aber es klappt net.