Schleife - wie geht das

In 10 Minuten startet der nächtliche Backupvorgang! Es kann währenddessen (ca. 10 Minuten) zu Einschränkungen bei der Nutzung des Forums kommen
Weitere Infos findet ihr im Thema Backup des Forums
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
  • Als erstes musst du den Spielern, die in der Arena drinne sind, eine Variable setzten. Dazu reicht eine boolean veriable, die du auf "true" setzt, wenn der SPieler die Arena betritt.


    In der Schleife fragst du dann ab, ob die Variable von den Spielern, die du durch gehst, auf true ist. Trifft die Bedingung zu, so freeze den Spieler mit TogglePlayerControllable(/*playerid*/);

  • Wie oben schon erwähnt musst Du eine Variale für die Spieler setzen, die sich in der Arena befinden!
    Diese dann für die Spieler in der Arena sind auf z.b 1 setzen.


    Anschließend einfach mit Hilfe der Schleife abfragen.


    Zum Beispiel so:


    for(new i = 0; i<MAX_PLAYERS; i++){
    if(IsPlayerConnected(i) && IsInArena[i] == 1) return TogglePlayerControllable(i, false);
    }


    Hoffe ich konnte Dir einen kleinen Wink geben wie Du es machen könntest.


    Freundliche Grüße
    [FoR]Hardcore

  • Vielen dank, mit den Schleifen habe ich es nicht so dicke, wie mache ich eine Schleife das jede 1minute durch gehen soll und gucken soll um jemand in der Arena ist wenn nicht Var auf 0 setzen!.


    Timer habe ich schon aber die doofe Schleife :S macht mir sorgen ^^

  • Ich verstehe nicht was du mit dem Schleifen hast, du kannst die Variable auch playerid nennen wenn es dich verwirrt mit i.

    for(new playerid; playerid<MAX_PLAYERS; playerid++)
    {
    }

    Den Code kannste selber reinschreiben.

  • SetTimer("timer",1000*60,1);


    forward timer();
    public timer()
    {
    for(new i = 0; i < MAX_PLAYERS; i++)
    {
    if(IsPlayerInRangeOfPoint(i,5.0,x,y,z))
    {
    TogglePlayerControllAble(i,1);
    SendClientMessage(i,-1,"Du wurdest gefreezed!");
    }
    }
    }


    Einrücken bitte selbst machen


    // Fehler fixxed

  • Zitat

    mit den Schleifen habe ich nicht so dicke habt ihr eventuell ein Tutorial? :D


    Hier mal eine ganz einfach Schleife, die alle Spieler die auf dem Server connected sind freezt.

    for(new i = 0; i < MAX_PLAYERS; i++)
    {
    if(IsPlayerConnected(i))
    {
    TogglePlayerControllable(i, 1);
    }
    }


    Das i steht einfach für den jeweiligen Spieler der grade in der Schleife dran ist.


    Also kannst du auch MAX_PLAYERS entfernen und z.B. 20 da hinschreiben. Dann geht die Schleife nur von 0 bis 20.


    Korrigiert mich wenn was falsch ist. Ist im Forum geschrieben^^

  • do.de - Domain-Offensive - Domains für alle und zu super Preisen


  • Meins ist doch shcon perfekt?

  • Einrücken geht hie rim Forum leider nicht schreibe direkt im Editor


    also ne Mini erklärung


    for // startet die schelife
    ( //klammer auf
    new i = 0; // versteht sich ja die veraibalbe difinieren kann man auch darüber abe rgal
    i < MAX_PLAYERS; //Da eine Schleife von 0 beginnt das < als
    i++// erhöht die variable um 1;
    ) //Klammer zu



    Zu verstehen du gehst jeden Spieler einmal durch


    Mfg