/members im Dialog

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
  • Hallo Breadfish,
    Ich möchte gerade /members in einem Dialog anzeigen lassen.


    der Pwn Code:
    if(PlayerInfo[playerid][pMember] > 0)
    {
    SendClientMessage(playerid, COLOR_LIGHTBLUE, "~~~Deine Mitglieder~~~");
    for(new i = 0; i < MAX_PLAYERS; i++)
    {
    if(IsPlayerConnected(i))
    {
    new mymember;
    mymember = PlayerInfo[playerid][pMember];
    new myleader;
    myleader = PlayerInfo[playerid][pMember];
    if(PlayerInfo[i][pMember] == mymember || PlayerInfo[i][pLeader] == myleader)
    {
    GetPlayerName(i, sendername, sizeof(sendername));
    format(string, sizeof(string), "* %s [ID:%d][Rang:%d]", sendername,i,PlayerInfo[i][pRank]);
    SendClientMessage(playerid, COLOR_GRAD2, string);
    }
    }
    }
    return 1;
    }
    hab es schon versucht aber es zeigt nur mich an, mit id 0 und rang 0 :D


    MFG Crime



    Edit: Hab natürlich auch kein playerid drin :P

    Einmal editiert, zuletzt von Cr1me ()

  • Kann es sein, dass du pLeader bist?
    Danach wird nicht überprüft. Denn sonst müsste das so aussenen:

    if(IsPlayerConnected(i))
    {
    if(PlayerInfo[i][pMember] == PlayerInfo[playerid][pMember] || PlayerInfo[i][pLeader] == PlayerInfo[playerid][pMember] || PlayerInfo[i][pMember] == PlayerInfo[playerid][pLeader] || PlayerInfo[i][pLeader] == PlayerInfo[playerid][pLeader])
    {
    GetPlayerName(i, sendername, sizeof(sendername));
    format(string, sizeof(string), "* %s [ID:%d][Rang:%d]", sendername,i,PlayerInfo[i][pRank]);
    SendClientMessage(playerid, COLOR_GRAD2, string);
    }
    }

    PAWNit gratis nutzen?
    Geschenkcode: 2017VQXPKB8V3KA

    Hier könnte Ihre Werbung stehen.

  • das hab ich schon gemacht :P
    Hab es gerade so... new mymember;
    mymember = PlayerInfo[playerid][pMember];
    new myleader;
    myleader = PlayerInfo[playerid][pLeader];
    if(PlayerInfo[i][pMember] == mymember || PlayerInfo[i][pLeader] == myleader)
    {
    format(str, sizeof(string),"%s [ID:%d][Rang:%d]", sendername,i,PlayerInfo[i][pRank]);
    ShowPlayerDialog(playerid,FkassenMemberInfoDialog, 0, "Online Member",str,"Zurück","Abbrechen");
    return 1;
    }
    Edit: bei /members funktioniert es doch auch ^^

  • jede Fraktion hat eine Fkasse die man mit /fraktion aufrufen kann.


    ein paar dialoge weiter .....
    if(listitem == 2)
    {
    for(new i = 0; i < MAX_PLAYERS; i++)
    {
    new mymember;
    mymember = PlayerInfo[playerid][pMember];
    new myleader;
    myleader = PlayerInfo[playerid][pLeader];
    if(PlayerInfo[i][pMember] == mymember || PlayerInfo[i][pLeader] == myleader)
    {
    format(str, sizeof(string),"%s [ID:%d][Rang:%d]", sendername,i,PlayerInfo[i][pRank]);
    ShowPlayerDialog(playerid,FkassenMemberInfoDialog, 0, "Online Member",str,"Zurück","Abbrechen");
    return 1;
    }
    }
    }
    }
    }



    Edit: Es wird zwar Mein name angezeigt, ABER: ID 0 (obwohl 1) Kein rank(id 0 rank) und Nur ich werde angezeigt

  • versuchs so mal:


    if(PlayerInfo[playerid][pMember] > 0)
    {
    SendClientMessage(playerid,COLOR_RED,"Du kannst diesen Befehl nur nutzen wenn du in einer Fraktion bist!");
    }
    SendClientMessage(playerid,COLOR_ORANGE,"User die online sind!");
    for(new i = 0; i<MAX_PLAYERS; i++)
    {


    else if(PlayerInfo[playerid][pMember] > 1)
    {
    if(GetPVarInt(i,"Armykills") <10){new string[128]; format(string,sizeof(string),"Specialist: %s",SpielerName(i)); SendClientMessage(playerid,COLOR_ORANGE,string);}
    else if(GetPVarInt(i,"Armykills") <20){new string[128]; format(string,sizeof(string),"Oberst: %s",SpielerName(i)); SendClientMessage(playerid,COLOR_ORANGE,string);}
    else if(GetPVarInt(i,"Armykills") >=20){new string[128]; format(string,sizeof(string),"General: %s",SpielerName(i)); SendClientMessage(playerid,COLOR_ORANGE,string);}


    }


    else if(PlayerInfo[playerid][pMember] > 0)
    {
    if(GetPVarInt(i,"Armykills") <10){new string[128]; format(string,sizeof(string),"Streifencop: %s",SpielerName(i)); SendClientMessage(playerid,COLOR_ORANGE,string);}
    else if(GetPVarInt(i,"Armykills") <20){new string[128]; format(string,sizeof(string),"Kommissar: %s",SpielerName(i)); SendClientMessage(playerid,COLOR_ORANGE,string);}
    else if(GetPVarInt(i,"Armykills") >=20){new string[128]; format(string,sizeof(string),"Direktor: %s",SpielerName(i)); SendClientMessage(playerid,COLOR_ORANGE,string);}


    }
    else if(PlayerInfo[playerid][pMember] > 3)
    {
    if(GetPVarInt(i,"Armykills") <10){new string[128]; format(string,sizeof(string),"Anhänger: %s",SpielerName(i)); SendClientMessage(playerid,COLOR_ORANGE,string);}
    else if(GetPVarInt(i,"Armykills") <20){new string[128]; format(string,sizeof(string),"Attentäter: %s",SpielerName(i)); SendClientMessage(playerid,COLOR_ORANGE,string);}
    else if(GetPVarInt(i,"Armykills") >=20){new string[128]; format(string,sizeof(string),"Boss: %s",SpielerName(i)); SendClientMessage(playerid,COLOR_ORANGE,string);}


    }
    }
    return 1;
    }[/pwn]


    und für die Ränge was ich da hab wie zb bei der 3 Fraktion (Boss, anähnger) die kannst du natürlich ändern ;)

  • Wie du oben sehen kannst an deinem Beispiel, öffnet sich jedes mal der Dialog der Schleife neu, dh. wenn
    du noch jemanden als Member hättest würde immer den letzten Durchgang anzeigen dh. die höchste ID die bei dir Member ist.
    Deshalb ist es auch einfacher gelöst mit SendClientMessage, da es im Chat stehen bleibt und bei Dialogen ist das immer so eine Sache.


    //edit Duty war bisschen schneller

    Du hast ein Design und benötigst einen Coder ? PM me !
    Referenzen sind vorhanden unter diesem Link.
    User Control Panel by DiZZerZ: hier klicken
    GTABlue WBB³ Design nur 5€: hier klicken

  • if(listitem == 2)
    {
    for(new i = 0; i < MAX_PLAYERS; i++)
    {
    new mymember;
    mymember = PlayerInfo[playerid][pMember];
    new myleader;
    myleader = PlayerInfo[playerid][pLeader];
    if(PlayerInfo[i][pMember] == mymember || PlayerInfo[i][pLeader] == myleader)
    {
    format(str, sizeof(string),"%s\n%s [ID:%d][Rang:%d]",str, sendername,i,PlayerInfo[i][pRank]);
    }
    }
    ShowPlayerDialog(playerid,FkassenMemberInfoDialog, 0, "Online Member",str,"Zurück","Abbrechen");
    }
    }
    }


    Hey,


    müsste in diesem Schema gehen.
    So wird der string immer ersetzt und am Ende angezeigt.
    Sorry, die Eintrückung will nicht.


    Grüße,
    tonyalva

  • Ich verweise dich mal auf folgende Funktion:
    http://wiki.sa-mp.com/wiki/Strcat


    Diese Funktion fügt 2 Strings zusammen.
    In der Theorie:


    Du lässt die Schleife einmal durch alle Spieler durchlaufen.
    Jedesmal wenn die Schleife durchläuft und der Spieler zur Fraktion gehört erstellt du einen String.
    In diesen String trägst du die Daten ein.
    Dann fügst du den String in einen "All-String" wie ich ihn gerne nenne.
    Am ende hast du die Strings mit den Informationen der Member in einen "All-String" geladen.


    Jetzt einfach via "ShowPlayerDialog" ausgeben.




    Für mein Fraktions-Car-System hab ich das so geregelt:
    new string[100],content[600];
    for(new i=1; i<7; i++)
    {
    //....
    new model = mysql_fetch_int();
    format(string,sizeof(string),"Slot: %d | Fahrzeug: %s\n",i,CarName[model-400]);
    strcat(content,string);
    }
    ShowPlayerDialog(playerid,FRAK_ZEIGEGCARS,DIALOG_STYLE_LIST,"Fraktionsautos",content,"Ändern","Zurück");

    Hoffe das hilft dir als kleine Anregung ;)




    MfG Firer