if(IsPlayerConnected(playerid) - unnötig?!?!?

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


    villeicht täusche ich mich, aber es gibt doch keine unnötigere zeile als diese hier


    if(IsPlayerConnected(playerid))


    die zeile überprüft ob der spieler der die aktion ausführt (playerid) online ist.


    WENN der spieler nicht online wäre hätte er diese funktion nicht ausführen können?!


    die Zeile kann doch nur sinn machen wenn dort ein bestimmter spieler (pID - wie bei dcmd) gesucht ist


    wie gesagt villeicht täusche ich mich, aber ich sehe da keinen wirklichen sinn


    warum gibt es den dann so oft?^^


    mfg

  • Sie macht Sinn - So kannst du einerseits bei FOR Schleifen durch alle Spieler viel unnötig ausgeführten Code verhindern, dazu kannst du Spieler darauf hinweisen, dass die ID, die sie zB heilen wollen nicht online ist. ;)

  • Im Beispiel wovon er redet,hat er sehr wohl recht.
    public OnPlayerCommandText(playerid, cmdtext[])
    {
    if (strcmp("/help", cmdtext, true, 5) == 0)
    {
    if(IsPlayerConnected(playerid)) {
    SendClientMessage(playerid,COLOR_RED,"Du hast die Hilfe abgefragt");
    }
    return 1;
    }
    return 0;
    }
    Wenn man zu so etwas ein Beispiel sucht,findet man nichts :pinch: , daher hier ein Beispiel.


    Sowas sieht man immer wieder, die Abfrage macht absolut keinen Sinn.Nur viele wollen das nicht begreifen,denn wie soll der Befehl eingegeben werden,wenn der Spieler der es eigentlich eingegeben haben soll, nicht auf dem Server ist bzw nicht existiert ?
    Irgendjemand hat mal damit angefangen den sinnlosen Check einzuführen,zu viele haben den Mist dann nachgemacht.

  • Das ist überhaupt nicht unnötig, damit kann man dem Server ne Menge "Stress" ersparen. Zum Beispiel wenn du jedem Spieler 100$ geben willst, macht es Sinn nur denen zu geben, die auch connected sind.

    mfg RedDragon 8)


    Was ist GFKD?


    Ein revolutionärer Clan, dessen Eröffnung kurz bevorsteht.
    Mehr Informationen folgen bald.

  • Bei commands ist der sinn = 0 wenn abgefragt ob der spieler online ist der denn Befehl eingegeben hat ( siehe GoldKiler's Beispiel).
    Bei schleifen kan mann wie Bloody auch schon gesagt hat sich unnötig ausführenden Code sparen(das spart resourcen) , bei cmd's kann man abfragen ob die eingegebene Spieler ID Online ist.


    LG

  • Das ist überhaupt nicht unnötig, damit kann man dem Server ne Menge "Stress" ersparen. Zum Beispiel wenn du jedem Spieler 100$ geben willst, macht es Sinn nur denen zu geben, die auch connected sind.


    wie soll denn der server jemand geld geben der nicht online ist?


    die abfrage macht nur sinn wenn in der klammer nicht playerid steht sondern eine angegebene spieler id die man bei zb. /givemoney [id] angibt


  • new geld[MAX_PLAYERS];
    Diese variable hat 501Slots, die for schleife zählt auch bis zu den 501 slots,und gibt jedem slot den Wert 100 (also 100$).
    Da das setzen der Variable länger braucht als das abfragen ob der Spieler Online ist sollte man also lieber abfragen und die schleife den slot einfach überspringen lassen, bei wenig Variablen bringt das zwar kaum was aber später wenn man erstmal ziemlich viel zeugs hat bringt es eben doch was.


    LG

  • wie soll denn der server jemand geld geben der nicht online ist?


    Klingt jetzt komisch, aber das tut er er sendet jedem SpielerSlot 100$, ob das Geld auch ankommt ist eine andere Frage.

    mfg RedDragon 8)


    Was ist GFKD?


    Ein revolutionärer Clan, dessen Eröffnung kurz bevorsteht.
    Mehr Informationen folgen bald.

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

  • new geld[MAX_PLAYERS];
    Diese variable hat 501Slots, die for schleife zählt auch bis zu den 501 slots,und gibt jedem slot den Wert 100 (also 100$).
    Da das setzen der Variable länger braucht als das abfragen ob der Spieler Online ist sollte man also lieber abfragen und die schleife den slot einfach überspringen lassen, bei wenig Variablen bringt das zwar kaum was aber später wenn man erstmal ziemlich viel zeugs hat bringt es eben doch was.


    LG


    Erzähl mal,wie kommst du auf 501 ?


    Die meisten Funktionen in SA:MP haben bereits intern einen IsPlayerConnected check.Anfängs in 0.1b gab es nämlich deshalb viele crashes soweit Ich weiss,wenn man Funktionen an SpielerIDs anwendete,die nicht benutzt sind.


    public PayDay() {
    for(new i ; i < MAX_PLAYERS ; i++) {
    GivePlayerMoney(i,1000);
    }
    return 1;
    }
    Ist daher auch problemlos möglich,erspart den IsPlayerConnected check,da sich dieser nochmal in GivePlayerMoney befindet.
    Würde aber der übersich halber dort immer den IsPlayerConnected check lassen.
    public PayDay() {
    for(new i ; i < MAX_PLAYERS ; i++) {
    if( IsPlayerConnected(i) ) {
    GivePlayerMoney(i,1000);
    }
    }
    return 1;
    }


    Deshalb kann man auch super so abfragen ob ein Spieler connected ist:
    if( GetPlayerName(i,sName,sizeof(sName) ) { }


    Kleiner Exkurs :P