Leaderliste Funkt nicht warum

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
  • Die Fraktionen werden in den Accountdatein gespeichert:

    format(Spielerdatei,sizeof(Spielerdatei),"/Accounts/%s.txt",name);


    enum pInfo{
    pEingeloggt,
    pLevel,
    pGeschlecht,
    pAlter,
    pSpawnhealth,
    pBar,
    pBank,
    pAdminlevel,
    pEhe,
    pSpielstunden,
    pJob,
    pSkin,
    pNummer,
    pFisch,
    pBiggestFisch,
    pLevelupgrade,
    pRespekt,
    pHartz4,
    pPremium,
    pMorde,
    pTode,
    pVerbrechen,
    pKnastbesuche,
    pWantedtode,
    pWantedlevel,
    pWarn,
    pDrogen,
    pMaterialien,
    pLeader, //Leader
    pFraktion, //Fraktion
    pMember,
    pKrankheiten,
    pRank,
    pBanned,
    pAutoschein,
    pBikeschein,
    pBootschein,
    pLkwschein,
    pAngelschein,
    pFlugschein,
    pK1schein,
    pK2schein,
    pTogwhisper,
    pErlaubnis,
    pLesson
    }
    new PlayerInfo[MAX_PLAYERS][pInfo];

  • Ich glaube du meinst das hier:

    stock FraktionsNamen(playerid)
    {
    new rankname[32];
    switch(PlayerInfo[playerid][pFraktion])
    {
    case 0: rankname="Zivilist";
    case 1: rankname="LSPD";
    case 2: rankname="FBI";
    case 3: rankname="Army";
    case 4: rankname="Medic";
    case 5: rankname="News Reporter";
    case 6: rankname="T-GmbH";
    case 7: rankname="Abfallwirtschaft";
    case 8: rankname="Hitman";
    case 9: rankname="Grove Street";
    case 10: rankname="Al-Qaida";
    case 11: rankname="Ballas";
    case 12: rankname="Fahrschule";
    case 13: rankname="La Cosa Nostra";
    case 14: rankname="Taxi";
    case 15: rankname="Yakuza";
    case 16: rankname="Staatsverwaltung";
    case 17: rankname="SAPD";
    case 18: rankname="Aztecas";
    case 19: rankname="Rifas";
    case 20: rankname="RS";
    case 21: rankname="Cripz";
    case 22: rankname="Russische Mafia";
    case 23: rankname="SFBC";
    case 24: rankname="Vagos";
    case 25: rankname="Wheelmen";
    }
    return rankname;
    }


    stock LeaderRank(playerid)
    {
    new rankname[32];
    switch(PlayerInfo[playerid][pLeader])
    {
    case 0: rankname="Zivilist";
    case 1: rankname="LSPD";
    case 2: rankname="FBI";
    case 3: rankname="Army";
    case 4: rankname="Medic";
    case 5: rankname="News Reporter";
    case 6: rankname="T-GmbH";
    case 7: rankname="Abfallwirtschaft";
    case 8: rankname="Hitman";
    case 9: rankname="Grove Street";
    case 10: rankname="Al-Qaida";
    case 11: rankname="Ballas";
    case 12: rankname="Fahrschule";
    case 13: rankname="La Cosa Nostra";
    case 14: rankname="Taxi";
    case 15: rankname="Yakuza";
    case 16: rankname="Staatsverwaltung";
    case 17: rankname="SAPD";
    case 18: rankname="Aztecas";
    case 19: rankname="Rifas";
    case 20: rankname="RS";
    case 21: rankname="Cripz";
    case 22: rankname="Russische Mafia";
    case 23: rankname="SFBC";
    case 24: rankname="Vagos";
    case 25: rankname="Wheelmen";
    }
    return rankname;
    }

  • Naja, dann so:
    ocmd:leaderliste(playerid,params[])
    {
    if(PlayerInfo[playerid][pEingeloggt] < 1 ) return SendClientMessage(playerid,Rot,"Du kannst diesen Befehl nicht nutzen, weil du nicht eingeloggt bist.");
    new string[1024];
    for(new i=0; i<MAX_PLAYERS; i++)
    {
    if(!IsPlayerConnected(i)) continue;
    if(PlayerInfo[playerid][pLeader] == 0) continue;
    format(string, sizeof(string), "%s%s: Leader: %s\n", string, LeaderRank(i), SpielerName(i));
    }
    ShowPlayerDialog(playerid,DIALOG_LEADERS,DIALOG_STYLE_MSGBOX,"Leader Liste",string,"Schliesen","");
    return 1;
    }

  • Hey,
    etwas muss du schon mit denken :thumbdown:


    stock f_pName(playerid)
    {
    new name[MAX_PLAYER_NAME];
    GetPlayerName(playerid, name, MAX_PLAYER_NAME);
    return name;
    }
    Das hast du nun? oder?
    Das setzt du für SpielerName ein
    f_pName(i) statt SpielerName(i)



    Oder


    Nach unten ins Script
    stock SpielerName(playerid)
    {
    new name[MAX_PLAYER_NAME];
    GetPlayerName(playerid, name, MAX_PLAYER_NAME);
    return name;
    }


    Mit freundlichen Grüßen
    PermanenT

  • Hey TheTutoFreak:
    genau lesen! Wenn du es nicht verstehst ließ es nochmal!


    Dein Speicherungssystem ist für den Zweck den du es haben möchtest nicht geeignet.
    Da du lediglich eine Account Datei anlegst.
    Wenn du die Offline Leader angezeigt bekommen möchtest musst du eine Fraktions Datei anlegen.


    Momentan kannst du nur die Online Leader anzeigen lassen da du das von mir oben genannte nicht hast.


    Weshalb es dir Jeffry auch nicht gemacht hat


    Wie löst du das Problem:
    Du erstellst für jede Fraktion eine Datei.
    Dort speicherst du den Leader.
    Dann kannst du durch alle Datein loopen und den Leader auslesen lassen.

  • Nein.
    Schau mal wie es hier gemacht wurde: [ FILTERSCRIPT ] Dynamisches Fraktion System


    Wie gesagt, du brauchst ein kompletten Fraktionssystem, du hast momentan gar nichts.


    Ich rate dir erst mal die Grundlagen von so einem System zu lernen und aufzubauen, bevor du dich gleich da dran setzt, da du offensichtlich die Funktionsweise von enums und allem was dazugehört noch nicht kennst.

  • Dann mach eben ein statisches Fraktionssystem, allerdings macht das wenig Sinn, da die Daten nach dem Neustart des Servers ja wieder weg wären.
    Vom Aufbau wäre es identisch, außer dass du eben nichts aus Dateien lädst, sondern alles in den Code schreibst, was ja keinen Sinn macht.

  • Da ich das nicht so wirklich verstanden habe, habe ich mir jetzt ne MySQL Datenbank angelegt und in meinem Server eingebaut. Jetzt ist aber das Problem, dass ich schon beim Einloggen der Login Dialog nicht kommt.
    Oben im Script:

    //MySQL
    #define db_host "127.0.0.1"
    #define db_user "sampserver"
    #define db_pass "samppasswort"
    #define db_db "sampserver"
    new dbhandle;

    Bei OnGamemodeInit:

    //MySQL
    dbhandle = mysql_connect(db_host,db_user,db_db,db_pass);

    Bei OnGamemodeExit:

    mysql_close(dbhandle);

  • Nimm den root Benutzer ohne Passwort:


    #define db_host "localhost" //Oder 127.0.0.01
    #define db_user "root"
    #define db_db "sampserver"
    #define db_pass ""


    Das ist in 99% aller Fälle standardmäßig so eingestellt.
    Dein user "samp" wird nicht die richtigen Berechtigungen haben, das ist auf localhost (dein Rechner) so eingestellt, standardmäßig zumindest.
    Deshalb benutze, wie ich oben geschrieben habe, den root - User ohne Passwort, der hat ALLE Berechtigungen. Dem kannst du später auch, je nach Client, ein Passwort geben.