Mitglieder-Liste

  • Mitglieder-Liste

    Hallo.
    Ich habe nun mit meiner Mitglieder Liste angefangen, für Spieler die online und offline sind.
    Dazu gibt es ein Mitglieder-Limit von 40, welches später noch konfiguriert wird etc.
    So, derzeit sieht das so aus:
    [pwn]CMD:mitglieder(playerid)
    {
    if(Spieler[playerid][pFraktion] < 1)return SendClientMessage(playerid, COLOR_GREY, "Du bist in keiner Fraktion!");
    new pState, pName[24], level[11], query[512], string[128], str2[2048];
    for(new i=0;i<40;i++)//Memberlimit: 40
    {
    format(query, sizeof(query), "SELECT Name FROM accounts WHERE Fraktion ='%d'", Spieler[playerid][pFraktion]);
    mysql_query(query);
    mysql_store_result();
    mysql_fetch_row(pName);
    mysql_free_result();
    format(query, sizeof(query), "SELECT Level FROM accounts WHERE Name ='%s'", pName);
    mysql_query(query);
    mysql_store_result();
    mysql_fetch_row(level);
    mysql_free_result();
    new lv = strval(level);
    pState = 0;
    new player = GetPlayerIdFromName(pName);
    if(IsPlayerConnected(player))
    {
    pState = 1;
    }
    new StateStr[16];
    if(pState == 0){StateStr ="Offline";}
    else if(pState == 1){StateStr ="Online";}
    format(string, sizeof(string), "{FFFFFF}(Status: %s, Name: %s, Level: %d, Rank: Kommt noch)", StateStr, pName, lv);
    strcat(str2, string);
    }
    ShowPlayerDialog(playerid, DIALOG_MEMBERS, DIALOG_STYLE_MSGBOX, "Mitglieder Liste", str2, "Schließen", "");
    return 1;
    }[/pwn]
    Wenn ich nun den Befehl im Spiel tippe, dauert es erst kurz, und dann zeigt es mir eine Liste an, aber sozusagen bin ich 40 mal drauf.
    Hat jemand einen Tipp, dass jeder Spieler 1x drauf erscheint?
    Mit freundlichen Grüßen, Ap0llinaris.

    [Blockierte Grafik: http://img6.imagebanana.com/img/lb4rwabb/newsig111.png]
  • [pwn]CMD:mitglieder(playerid)
    {
    if(Spieler[playerid][pFraktion] < 1)return SendClientMessage(playerid, COLOR_GREY, "Du bist in keiner Fraktion!");
    new query[128], pName[24], level[11], lv, StateStr[16], str2[2048];
    format(query, sizeof(query), "SELECT `Name`, `Level` FROM `accounts` WHERE `Fraktion` ='%d'", Spieler[playerid][pFraktion]);
    mysql_query(query);
    mysql_store_result();
    while(mysql_fetch_row_format(query))
    {
    // Name-Feld auslesen
    mysql_fetch_field("Name", pName);

    // Level-Feld auslesen
    mysql_fetch_field("Level", level);
    lv = strval(level);

    // Ob Spieler verbunden ist oder nicht (Ich hab mir mal erlaubt das ein wenig zu verkleinern,
    // damit nicht unnötig viele variablen erstellt werden müssen :p
    if( IsPlayerConnected( GetPlayerIdFromName(pName) ) ) {
    strcat(StateStr, "Offline");
    } else {
    strcat(StateStr, "Online");
    }

    // String formatieren
    format(string, sizeof(string), "{FFFFFF}(Status: %s, Name: %s, Level: %d, Rank: Kommt noch)", StateStr, pName, lv);
    strcat(str2, string);
    }
    mysql_free_result();
    ShowPlayerDialog(playerid, DIALOG_MEMBERS, DIALOG_STYLE_MSGBOX, "Mitglieder Liste", str2, "Schließen", "");
    return 1;
    }[/pwn]
    Ist allerdings ungetestet. Ich hoffe es stört dich nicht wenn ich ein wenig dran geändert habe^^ Sollten noch fragen offen sein, immer her damit.
  • Joa, ich probiers direkt mal aus.
    Nur weiß ich jetzt nicht ganz wohin mit dem Ding für Seite 1 etc.
    Da ich den Weiter und Zurück Button erst dann haben will wenn die Seiten auch 20 Einträge haben. :/ Wenn man auf Zurück klickt wird dann halt die Seite davor angezeigt und im Titel des Dialogs steht dann halt Mitglieder - Seite 1, etc.

    :/
    Mit freundlichen Grüßen, Ap0llinaris.

    [Blockierte Grafik: http://img6.imagebanana.com/img/lb4rwabb/newsig111.png]
  • Kleiner Fehler bei der mysql_fetch_field Funktion:

    Quellcode

    1. Current directory: C:\Dokumente und Einstellungen\Mirko.GRUNST-0AFC6847\Desktop\Sachen\0.3eVirtualReallife\gamemodes
    2. visualtest.pwn(6787) : error 035: argument type mismatch (argument 1)
    3. visualtest.pwn(6790) : error 035: argument type mismatch (argument 1)
    4. Pawn compiler 3.2.3664 Copyright (c) 1997-2006, ITB CompuPhase
    5. 2 Errors.
    6. ================ READY ================



    PS:
    Joa, ich probiers direkt mal aus.
    Nur weiß ich jetzt nicht ganz wohin mit dem Ding für Seite 1 etc.
    Da ich den Weiter und Zurück Button erst dann haben will wenn die Seiten auch 20 Einträge haben. :/ Wenn man auf Zurück klickt wird dann halt die Seite davor angezeigt und im Titel des Dialogs steht dann halt Mitglieder - Seite 1, etc.

    :/


    Danke ;P

    //Edit
    Habs jetzt so:
    [pwn]CMD:mitglieder(playerid)
    {
    if(Spieler[playerid][pFraktion] < 1)return SendClientMessage(playerid, COLOR_GREY, "Du bist in keiner Fraktion!");
    new query[128], pName[24], level[11], lv, StateStr[16], str2[2048], string[96];
    format(query, sizeof(query), "SELECT `Name`, `Level` FROM `accounts` WHERE `Fraktion` ='%d'", Spieler[playerid][pFraktion]);
    mysql_query(query);
    mysql_store_result();
    while(mysql_fetch_row_format(query))
    {
    // Name-Feld auslesen
    mysql_fetch_field_row(pName, "Name");

    // Level-Feld auslesen
    mysql_fetch_field_row(level, "Level");
    lv = strval(level);

    // Ob Spieler verbunden ist oder nicht (Ich hab mir mal erlaubt das ein wenig zu verkleinern,
    // damit nicht unnötig viele variablen erstellt werden müssen :p
    if( IsPlayerConnected( GetPlayerIdFromName(pName) ) ) {
    strcat(StateStr, "Online");
    } else {
    strcat(StateStr, "Offline");
    }

    // String formatieren
    format(string, sizeof(string), "{FFFFFF}(Status: %s, Name: %s, Level: %d, Rank: Kommt noch)", StateStr, pName, lv);
    strcat(str2, string);
    }
    mysql_free_result();
    ShowPlayerDialog(playerid, DIALOG_MEMBERS, DIALOG_STYLE_MSGBOX, "Mitglieder Liste", str2, "Schließen", "");
    return 1;
    }[/pwn]
    Klappt auch ganz gut, nur fehlt noch das mit den mehreren Seiten wie oben bzw. im Zitat beschrieben. :(
    Mit freundlichen Grüßen, Ap0llinaris.

    [Blockierte Grafik: http://img6.imagebanana.com/img/lb4rwabb/newsig111.png]

    Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von Ap0llinaris ()