Hilfe bei /afkliste

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,


    ich hab ein kleines AFK System gemacht,


    allerdings, bei der AFKliste zeigt es den spieler immer an, egal ob er afk ist oder nicht.


    Das ist der befehl:


    if(strcmp(cmdtext, "/afkliste", true) == 0)
    {
    new i = 0, aname[256];
    for(; i < MAX_PLAYERS; i++)
    {
    if(IsPlayerConnected(i))
    {
    GetPlayerName(i, aname, sizeof(aname));
    new string[256];
    format(string,sizeof(string),"%s",aname);
    SendClientMessage(playerid,gelb,"Abwesende Spieler:");
    SendClientMessage(playerid,grau,string);
    return 1;
    }
    }
    }


    Damit der Server weiß wer AFK ist hab ich natürlich auch was:


    AFKPLAYERS[playerid][AFK] = 1;
    Das passiert wenn er /afk geht. Es wird auf eins gesetzt. Im /afkliste Befehl fehlt das, das er nur die anzeigt die im AFK sind und nicht alle, aber wie bastel ich das rein? ich hab keine ahnung.


    Danke im Vorraus ;)


    Lg Tom



    Einmal editiert, zuletzt von Tomsen ()

  • if(IsPlayerConnected(i)&&AFKPLAYERS[i][AFK] >= 1)


    müsste klappen ;)

    Zitat

    naja aufm homeserver mit kumpel getestet und nix laggt von daher sollte nen richtiger server mit sowas keine probs haben

    *an Kopf schlag
    sowas kommt Raus wenn man erst absendet ohne nachzudenken. Bitte Leute Hirn einschalten beim Posten...

  • denkfehler xD^^


    musst ne neue if abfrage mit afkplayers[usw] Machen


    MfG Paddy


    /edit
    if(strcmp(cmdtext, "/afkliste", true) == 0)
    {
    new i = 0, aname[256];
    for(; i < MAX_PLAYERS; i++)
    {
    if(IsPlayerConnected(i))
    {
    if(AFKPLAYERS[i][AFK] >= 1)
    {
    GetPlayerName(i, aname, sizeof(aname));
    new string[256];
    format(string,sizeof(string),"%s",aname);
    SendClientMessage(playerid,gelb,"Abwesende Spieler:");
    SendClientMessage(playerid,grau,string);
    return 1;
    }
    }
    return 1;
    }
    }

    Zitat

    naja aufm homeserver mit kumpel getestet und nix laggt von daher sollte nen richtiger server mit sowas keine probs haben

    *an Kopf schlag
    sowas kommt Raus wenn man erst absendet ohne nachzudenken. Bitte Leute Hirn einschalten beim Posten...

  • Ne geht immernoch nicht ^^
    Also nur wenn man /afk ist gehts


    man darf das doch nicht als if abfrage machen oder? weil dann muss das ja nur den angezigt werden die /Afk sind. weil die if(bedinung) somit erfüllt ist. muss man des net irgentwie definieren, also die spieler die afk sind, und die dann in den string reinbasteln? aber wie :|



    Einmal editiert, zuletzt von Tomsen ()

  • Wie ich gerade sehe hast du sogar 2x return 1; drin stehn
    das bewirkt das er code abbricht ähnlich wie break; nur bei break läuft der Code unter der Schleife nich weiter, bei return bricht er komplett ab

    "Bevor ich mir Informationen aus der "Bild" hole,
    werde ich anfangen, Wahlergebnisse danach vorauszusagen,
    neben welchen Busch unsere Katze gepinkelt hat."

    Margarete Stokowski

  • if(strcmp(cmdtext, "/afkliste", true) == 0)
    {
    if(IsPlayerConnected(playerid))
    {
    new i = 0;
    SendClientMessage(playerid,COLOR_YELLOW,"Abwesende Spieler:");
    for(; i < MAX_PLAYERS; i++)
    {
    if(IsPlayerConnected(i))
    {
    if(AFKPLAYERS[i] >= 1)
    {
    GetPlayerName(i, giveplayer, sizeof(giveplayer));
    format(string,sizeof(string),"%s",giveplayer);
    SendClientMessage(playerid,COLOR_GRAD1,string);
    return 1;
    }
    }
    return 1;
    }
    }
    }


    getestet und funkt
    brauchst nur noch unter onplayercommand text nen new giveplayer[MAX_PLAYER_NAME]; erstellen ;)


    MfG Paddy1991

    Zitat

    naja aufm homeserver mit kumpel getestet und nix laggt von daher sollte nen richtiger server mit sowas keine probs haben

    *an Kopf schlag
    sowas kommt Raus wenn man erst absendet ohne nachzudenken. Bitte Leute Hirn einschalten beim Posten...

  • das kann nicht funktionieren, da der Code nach dem ersten Spieler, auch wenn er nicht Online ist abbricht

    "Bevor ich mir Informationen aus der "Bild" hole,
    werde ich anfangen, Wahlergebnisse danach vorauszusagen,
    neben welchen Busch unsere Katze gepinkelt hat."

    Margarete Stokowski

  • den afklist befehl hernehmen und überall wo du AFKPLAYERS hast nur noch ein i bzw playerid stehen haben was das [AFK] bewirken soll weiß ich auch nicht ;)
    /edit wo er recht hat hat er recht xD


    musst noch das erste return 1; löschen ^^ (alleine getestet :D)

    Zitat

    naja aufm homeserver mit kumpel getestet und nix laggt von daher sollte nen richtiger server mit sowas keine probs haben

    *an Kopf schlag
    sowas kommt Raus wenn man erst absendet ohne nachzudenken. Bitte Leute Hirn einschalten beim Posten...

  • habs nach dem tut gemacht, nur ein bisschen angepasst. das eizigste was halt nicht funktionierte war der /afklist befehl. allerdings hat es erst garnichts angezeigt, dann hats den spieler immer angezeigt, und dann hab ichs hinbekommen das man es nur sehen kann wenn man selber im /afk ist


    [ SCRIPTING ] AFK System + AFK Liste


    //edit: der error kommt


    array must be indexed (variable "AFKPLAYERS")


    bei der Zeile:


    if(AFKPLAYERS[i] >= 1)



    Einmal editiert, zuletzt von Tomsen ()

  • Hast du auch ->


    enum AFK_SPIELER
    { AFK
    }
    new AFKPLAYERS[MAX_PLAYERS][AFK_SPIELER];


    ?

  • //edit: ok, habs hinbekommen. Hab dann einfach noch [AFK] mit reingeschrieben.


    allerdings hab ich nen haufen warnings. :(


    Entweder so einen:


    number of arguments does not match definition


    oder den:


    tag mismatch.


    Kann mir jemand sagen was das heißt? ich schick auch die zeilen wenns notwendig ist-


    aber trotzdem erstmal danke


    Lg byBSE


  • number of arguments, beispiel:
    SetPlayerPos(playerid,23333,21111,244444,111111);// is die 111111 zu viel ;)


    tag mistach mal bitte posten

  • Das mit dem Number of.... kommt unteranderen bei den beiden hier:
    TextDrawDestroy(afktext1,(playerid));
    TextDrawDestroy(afktext2,(playerid));


    Was ist da zuviel?


    Ehm, das mit dem tag mismatch betrifft die 2 zeilen hier:


    if(!AFKPLAYERS[playerid][AFK]==0) return SendClientMessage(playerid,rot,"Du bist schon AFK!");
    if(!AFKPLAYERS[playerid][AFK]==1) return SendClientMessage(playerid,rot,"Du bist nicht AFK!");
    Wobei ich hier so ne leise Ahnung hab, das ich es lieber mit Else machen sollte, ist das richtig? ^^


    Lg byBSE