Beiträge von Kaliber

    Mir ist gerade was besseres eingefallen, mache es so:


    //oben im Script
    new btimer[MAX_PLAYERS], gehalten[MAX_PLAYERS];


    //Einen Timer Für alle Spieler setzen
    public OnPlayerConnect(playerid)
    {
    SetTimerEx("Check", 1000, 1, "i", playerid);
    return 1;
    }


    //Der Callback
    public OnPlayerKeyStateChange(playerid, newkeys, oldkeys)
    {
    if (HOLDING( KEY_FIRE ))
    {
    if(IsPlayerInRangeOfPoint(playerid, 7.5, X, Y, Z)) //Wieder koords ersetzen
    {
    btimer[playerid] = SetTimerEx("Hold", 1000*15, 0, "i", playerid);
    }
    else if(IsPlayerInRangeOfPoint(playerid, 7.5, X, Y, Z))//X, Y, Z ersetzen durch die Koordinaten von Baum 2
    {
    btimer[playerid] = SetTimerEx("Hold", 1000*15, 0, "i", playerid);
    }
    }
    else
    {
    KillTimer(btimer[playerid]);
    }
    return 1;
    }


    forward Hold(playerid);
    public Hold(playerid)
    {
    gehalten[playerid] = 1;
    return 1;
    }


    forward Check(playerid);
    public Check(playerid)
    {
    if(IsPlayerInRangeOfPoint(playerid, 7.5, X, Y, Z)) //X, Y, Z ersetzen durch die Koordinaten von dem Baum
    {
    if(gehalten[playerid] == 1)
    {
    DestroyObject(baum1);
    }
    }
    else if(IsPlayerInRangeOfPoint(playerid, 7.5, X, Y, Z))//X, Y, Z ersetzen durch die Koordinaten von Baum 2
    {
    if(gehalten[playerid] == 1)
    {
    DestroyObject(baum2);
    }
    }
    return 1;
    }


    mfg. :thumbup:

    Nein, du musst mehrere if Abfragen machen, da ja jeder Baum einzeln verschwinden soll ^^


    Also hier mal ein Bsp:


    for(new i; i<100; i++)
    {
    if(IsPlayerInRangeOfPoint(playerid, 7.5, X, Y, Z)) //X, Y, Z ersetzen durch die Koordinaten von dem Baum
    {
    if(15sekgesägt(playerid) == 1)
    {
    DestroyObject(baum1);
    break;
    }
    }
    else if(IsPlayerInRangeOfPoint(playerid, 7.5, X, Y, Z))//X, Y, Z ersetzen durch die Koordinaten von Baum 2
    {
    if(15sekgesägt(playerid) == 1)
    {
    DestroyObject(baum2);
    break;
    }
    }
    }


    mfg. :thumbup:

    1.


    Mit diesem define:
    #define HOLDING(%0) \
    ((newkeys & (%0)) == (%0))
    und einem kleinen Timer ;)


    2.
    Mit einer kleinen Schleife:


    for(new i; i<100; i++)//100 ist die Spieleranzahl falls du mehr Spieler auf deinem Server hast, erhöhen
    {
    if(!IsPlayerConnected(i)) continue;
    if(IsPlayerInRangeOfPoint(playerid, 7.5, X, Y, Z)) //X, Y, Z ersetzen durch die Koordinaten von dem Baum
    {
    //Hier befindet er sich dann in der Nähe des Objekts
    }
    }


    Viel Spaß damit ;)


    mfg. :thumbup:

    Hab auch nen Zombieserver geschrieben, und jetzt? Bist ein richtiger Troll.
    Finde dich so richtig peinlich, hast wohl nie was von 'ForAllPlayers' gehört oder? Wurde extra für dieses Problem entwickelt. Wie jemand wie du sich als 'Scriptlehrer' einfach so betiteln kann, ist mir ein Rätsel. Das war mein Letzes Statement, zu deinem Scheiss. Deine Argumente entsprechen ungefähr denen von einem 12 jährigen. Keine Einsicht und auf Sturr schalten. Kein Wunder, dass du nur begrenzt Wissen vorweisen kannst. Finde dein Auftreten Peinlich und nicht passend.


    :D


    Schonmal daran gedacht, dass diese Funktion (dieses Include) auch eine Schleife durchläuft ?


    omg -.- Finde dich damit ab, dass es am besten mit dieser 100 ist ^^

    Du hast ein Fehler gemacht, gibs einfach zu und gut ist, statt dich hier lächerlich zu machen mit deinen Ausreden, das hält man im Kopfe nicht aus.


    Herr Scriptlehrer, geh bitte in Rente.


    Du kapierst es nicht oder ?


    Wenn du alle User abfragst die auf dem Server sind, benötigt man eine extra Funktion mit einer extra Schleife, was noch ressourcen fressender wäre...so einen Zombie Server aha, ich kenne nur 1nen der das geschafft hat mit der Hilfe von Blackace so ein Plugin zu schreiben...deshalb ist das sehr unwahrscheinlich das er einen Zombie Server eröffnet :pinch: und somit ist die 100 daoben nicht nur am ressourcen freundlichsten, sondern auch eigentlich am einfachsten ;)


    Somit, komm mal runter ! :whistling:

    Was hat das mit den Spielern zutun? Ich weiß worauf du hinaus willst, aber man kann eine ID über 100 bekommen, obwohl man alleine auf dem Server ist. Außerdem ist es (hoffentlich) dein Ziel gewesen einen Funktionierenden Chat zu schreiben und nicht eins, dass bei einer ID ab 100 nicht mehr funktioniert. Daher Fehler, sehs ein, und laber mir keine Kante ans Bein


    nix Fehler :D wenn er sich da 100 Bots auf den Server tut (was kein normaler Mensch macht, weils dann nämlich leggt) ist er selbst schuld und muss dann halt die schleife editieren, ich hatte das auf 100 gesetzt, weil es Ressourcen freundlich ist ;)


    mfg. :thumbup:

    Vorher den Radius für den Allchat verkleinern.


    Ich returne mit 0, d.h. es wird kein Allchat abgesendet !


    Herr Scriptlehrer, vllt. sollten Sie ihre Gläser aufsetzen!


    Herr User den ich nicht kenne, vielleicht erstmal nachdenken ;)


    mfg. :whistling:


    //Edit:



    //<- Das da vllt. nochmal überdenken, sonst gibts wohl probleme mit einem 200Slot server, meinste nicht?


    1. Dieser Code war nur für diesen User bestimmt !
    2. Nein, da es nicht auf die Slots drauf ankommt, sondern auf die Spieler und ich bezweifle mal stark das auf seinem Server gleichzeitig mehr als 100 User online sein werden ;)

    noch ein kleiner tipp; der Chat kann maximal 128 zeichen ausgeben also brauch man ihn nicht Größer der name des Spielers kann maximal 28 zeichen lang sein (nicht sicher wen falsch bitte korigieren)


    gründsätzlich gilt den Array nicht größer zu machen als man braucht. (beipsiel : für einen chat stat 128 500)


    Trotzdem gibt es Situationen wie z.B. einen Dialog wo du einzelne Strings zu einem großen Zusammenfügst, wo du sogar mehr als 256 Zeichen brauchst ;)


    mfg. :thumbup:

    entweder abzählen oder einfach auf eine Standart Zahl setzen wie z.B.:


    16, 32, 64, 128, 256 //höher als 256 ist er meistens nicht


    mfg. :thumbup:

    Die Funktion ist aus dem Kopf geschrieben, ein GF oder so macht das bestimmt anders:


    //Bei OnPlayerText
    new string[128], name[24];
    GetPlayerName(playerid, name, 24);
    format(string, sizeof string,"%s sagt: %s",name, text);
    InRange(playerid, string);
    return 0;


    //Der stock
    stock InRange(playerid, text[])
    {
    new Float: X, Float: Y, Float: Z;
    GetPlayerPos(playerid, X, Y, Z);
    for(new i; i<100; i++)
    {
    if(!IsPlayerConnected(i)) continue;
    if(IsPlayerInRangeOfPoint(i, 25.0, X, Y, Z))//bekommt die message wenn er in einem radius von 25m in der Nähe des Spielers ist
    {
    SendClientMessage(i, grau, text);//farbe kannst du halt ändern
    }
    }
    return 1;
    }


    mfg. :thumbup:


    //Edit: Denkfehler