Member liste auch offline anzeigen & Member offline kicken.

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,
    ich wollte mal fragen ob es möglich ist Ingame Member seiner Fraktion zu sehen auch wenn sie nicht Online sind?
    Und sie auch zu kicken auch wenn sie offline sind?
    Danke im Voraus...
    Wenn jemand Helfen kann:



    Member Befehl:
    if(strcmp(cmdtext, "/members", true)==0 || strcmp(cmd, "/member",true) == 0)
    {
    if(PlayerInfo[playerid][pMember] > 0)
    {
    SendClientMessage(playerid, COLOR_LIGHTBLUE, "-->> Mitglieder deiner Fraktion die Online sind: <<--");
    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, 0x00FFBEFF, string);
    }
    }
    }
    return 1;
    }
    & Uninvite Befehl.. :
    if(strcmp(cmd, "/uninvite", true) == 0)
    {
    if(IsPlayerConnected(playerid))
    {
    tmp = strtok(cmdtext, idx);
    if(!strlen(tmp))
    {
    SendClientMessage(playerid, COLOR_GRAD2, "BENUTZUNG: /uninvite [Spieler ID / Name]");
    return 1;
    }
    new para1;
    para1 = ReturnUser(tmp);
    if (PlayerInfo[playerid][pLeader] >= 1)
    {
    if(IsPlayerConnected(para1))
    {
    if(para1 != INVALID_PLAYER_ID)
    {
    if (PlayerInfo[para1][pMember] > 0 && PlayerInfo[para1][pMember] == PlayerInfo[playerid][pLeader])
    {
    GetPlayerName(para1, giveplayer, sizeof(giveplayer));
    GetPlayerName(playerid, sendername, sizeof(sendername));
    printf("AdminSystem: %s hat %s rausgeschmissen.", sendername, giveplayer);
    format(string, sizeof(string), "* Du wurdest aus deiner Fraktion %s vom Leader %s gekickt.",Fracs[PlayerInfo[para1][pMember]-1],sendername);
    SendClientMessage(para1, COLOR_LIGHTBLUE, string);
    SendClientMessage(para1, COLOR_LIGHTBLUE, "* Du bist nun wieder ein Zivilist.");
    SendClientMessage(para1, COLOR_LIGHTBLUE, "* Dein Gehalt wurde wieder auf 0$ gesetzt.");
    PlayerInfo[para1][pGehalt] = 0;
    gTeam[para1] = 3;
    PlayerInfo[para1][pTeam] = 3;
    PlayerInfo[para1][pMember] = 0;
    PlayerInfo[para1][pRank] = 0;
    PlayerInfo[para1][pChar] = 0;
    new rand = random(sizeof(CIV));
    SetSpawnInfo(para1, gTeam[para1], CIV[rand],0.0,0.0,0.0,0,0,0,0,0,0,0);
    PlayerInfo[para1][pModel] = CIV[rand];
    MedicBill[para1] = 0;
    SpawnPlayer(para1);
    format(string, sizeof(string), " Du hast %s aus der Fraktion gekickt.", giveplayer);
    SendClientMessage(playerid, COLOR_LIGHTBLUE, string);
    }
    else
    {
    SendClientMessage(playerid, COLOR_GRAD1, " Du kannst nur die Member deiner Fraktion uninviten!");
    }
    }
    }//not connected
    }
    else
    {
    SendClientMessage(playerid, COLOR_GRAD1, " Nur der Leader kann diesen Befehl nutzen!");
    }
    }
    return 1;
    }


    Danke an alle die Helfen :)

  • Wenn es dir wirklich wichtig ist, müsstest du dir wohl MySQL zulegen.
    Du musst aber nicht alle Account mit MySQL speichern.
    Das setzt jedoch voraus, dass du alle fraktionsbezogenen Daten mit MySQL speicherst.


    Naja... wenn jemand eine andere Lösung hat, kann er sie ja posten.

  • Soweit ich weiß, geht das nur mit MySQL.
    Welche Speichermethode verwendest du?


    Das ist Unsinn. Man kann auch alle Dateien durchsuchen, nur ist dies eben uneffizient und keineswegs zu empfehlen. Wenn du DINI verwendest (was totaler Schwachsinn ist), dann solltest du diese Funktion lieber bleiben lassen.

  • Zur Erklärung:


    Dini müsstest du alle Dateien die du hast öffnen und schauen ob der Spieler ein Member ist.
    500.000 Accounts -> 500.000 Dateien öffnen und schauen.


    Hast du aber Mysql sagst du "Wo ist member = xyz"
    Mysql ist so schlau, dass es sich das merkt und nur schaut wo der Member xyz ist.
    ich kann dir die genaue Arbeitsweise von mysql nicht nennen aber ich versichere dir ,dass es 10412331251719824 mal schneller ist (je nachdem wv. Accounts halt registriert sind)


    Grüße

    ik bin der vito c:

  • Dann können die aber doch befehle nutzen wenn sie nicht connected sind :D ?
    Oder kann man dann ebenhalt auch befehle an spielern nutzen die off sind o.o

  • Beitrag von FileZilla ()

    Dieser Beitrag wurde gelöscht, Informationen über den Löschvorgang sind nicht verfügbar.
  • Also habe im Befehl das mit Connect rausgenommen & tortzdem wird es nicht angezeigt^^

  • Die for-Schleife geht durch alle Spieler (MAX_PLAYER).
    Dann kommt die Abfrage IsPlayerConnected(i). Heißt dann doch, das jeder der Online ist, dann auch angezeigt wird. Meine Theorie war dabei: wenn man die Abfrage dann evtl. entfernt, könnte dann jeder, der in der Fraktion drinne ist, angezeigt werden.

  • Die for-Schleife geht durch alle Spieler (MAX_PLAYER).
    Dann kommt die Abfrage IsPlayerConnected(i). Heißt dann doch, das jeder der Online ist, dann auch angezeigt wird. Meine Theorie war dabei: wenn man die Abfrage dann evtl. entfernt, könnte dann jeder, der in der Fraktion drinne ist, angezeigt werden.


    Die for-Schleife zählt von 0 bis 500 (es sei denn MAX_PLAYERS wurde erneut definiert). Grund? Es können i.d.R. 500 Spieler -online- sein. IsPlayerConnected() ist lediglich benötigt, da man hier von Index 0 bis Index 500 eines Arrays zählt und zuvor schauen muss, ob dieser Index derzeit überhaupt in Verwendung ist (d.h. SpielerID auf Server vorhanden). Hat garnichts, aber wirklich null und garnichts mit offline Spielern zu tun. Erstmals überlegen, was ein Quellcode tut, bitte.

  • Du könntest in deinem Fraktionssystem für jede Fraktion eine Datei erstellen und beim inviten / uninvite ergänzen bzw. um den jeweiligen Spieler vermindern und dann wenn jemand /members eingibt die Liste mit den Namen der Spieler vergleichen aber meiner Meinung nach ist das ziemlich umständlich und MySQL bzw. SQL ist da besser geeignet.
    Das mit dem uninviten ist nicht so wirklich das Problem einfach /uninvite Name und abfragen ob der Spieler on ist, falls ja ganz normalen uninvite, falls nein die Spielerdatei öffnen, Rang, Fraktion überprüfen und vergleichen und dann einfach jeweils die Variablen in der Datei auf 0 setzen bzw. alle Variablen dem normalen uninvite anpassen.