Beiträge von Jeffry

    Da steht erst was drin, wenn du sie sperrst, oder ihr einen Leader zuweist.
    Solange du keinen Daten vergeben hast, muss ja auch nichts drin stehen. ;)


    Falls du unbedingt was drin stehen haben willst, nachdem die Dateien erstellt worden sind, dann ändere:
    if(!dini_Exists(Fraktionsdatei)) dini_Create(Fraktionsdatei);
    zu:
    if(!dini_Exists(Fraktionsdatei))
    {
    dini_Create(Fraktionsdatei);
    dini_Set(Fraktionsdatei, "LeaderName", "Niemand");
    dini_Set(Fraktionsdatei, "frakGesperrt", "0");
    }

    Speichern:
    dini_Set(Fraktionsdatei, "LeaderName", SpielerName(pID));
    ^ Beim /makeleader Befehl muss das hin, sonst bringt es nichts.


    Laden:
    format(frakLeaderName[fraktionsid], MAX_PLAYER_NAME, dini_Get(Fraktionsdatei, "LeaderName));


    Mit:
    new frakLeaderName[MAX_FRAKS][MAX_PLAYER_NAME];

    Nein, die playerid hat ja nichts mit dem Laden der Fraktion zu tun.
    Du speicherst entweder den Namen des Leaders ab, oder gar nicht, weil du es ja in der Spielerdatei schon speicherst, da musst du es nicht nochmal in der Fraktion speichern, außer du arbeitest mit User-IDs, dann macht das vielleicht Sinn.

    Oh, dachte das geht. Meh.
    Dann so:
    frakGeschlossen[fraktionsid] = bool:dini_Int(Fraktionsdatei, "frakGeschlossen");


    Und wenn das auch nicht geht:
    new geschlossen = dini_Int(Fraktionsdatei, "frakGeschlossen");
    if(geschlossen != 0) frakGeschlossen[fraktionsid] = true;
    else frakGeschlossen[fraktionsid] = false;

    Du Genie. :D
    Hier:
    public FraktionsLaden(fraktionsid)
    {
    new Fraktionsdatei[64];
    format(Fraktionsdatei,sizeof(Fraktionsdatei),"/Fraktionen/%s.txt",FraktionsNamen(fraktionsid));
    if(!dini_Exists(Fraktionsdatei)) dini_Create(Fraktionsdatei);
    frakGeschlossen[fraktionsid] = dini_Int(Fraktionsdatei, "frakGeschlossen");
    //Den Leader laden?...
    return 1;
    }


    Dann kannst du das FraktionsSave bei OnGameModeInit zu FraktionsLaden ändern, dann passt das, die Datei wird dann auch erstellt, falls sie nicht existiert. ;)

    Dann ist die Fraktion nicht geschlossen.
    Hast du den Server nach dem Schließen der Fraktion neu gestartet?
    Wenn ja, poste bitte dein FraktionLaden Code.


    Übrigens:
    for(new i=0; i<26; i++) FraktionsSave(i);
    muss nach dem Laden der Fraktionen hin, sonst geht es natürlich nicht, weil du dann alles überschreibst. Das kannst du theoretisch auch wieder weg machen, da die Dateien ja jetzt erstellt sind. Oder du lässt es, falls jemand sie löscht, aber dann muss es nach dem Laden hin.

    Dann füge mal unter:
    new id = PlayerInfo[playerid][pFraktion];
    das ein:
    printf("id: %d / Geschlossen: %d", id, frakGeschlossen[id]);


    Was wird dann geprintet?
    Wenn geschlossen als 0 geprintet wird, dann hast du die Fraktion nicht geschlossen. :huh:

    Ah, da hab ich nicht drauf geschaut.


    ICy.:
    Du hast das return vergessen, sonst kommt die Nachricht wieder immer.
    Also so:
    ocmd:blitzer(playerid, params[])
    {
    new speed;
    if(sscanf(params, "i", speed))return SendClientMessage(playerid, Rot, "Benutzung: /blitzer [Geschwindigkeit]");
    if(speed >= 30 && speed <= 150)
    {
    AddBlitzer(playerid, speed);
    return 1;
    }
    return SendClientMessage(playerid, Rot, "Die Geschwindigkeit muss zwischen 30 und 150 km/h sein.");
    }

    Siehst du die Nachricht, wenn du dich einloggst?
    SendClientMessage(playerid,Gelb,"** Die Fraktion in der du warst, wurde geschlossen! Du bist nun Zivilist.");

    Dann musst du beim Login abfragen:
    if(frakGeschlossen[PlayerInfo[playerid][pFraktion]]) PlayerInfo[playerid][pFraktion] = 0; //Wenn die Fraktion geschlossen ist, fliegt der Spieler aus der Fraktion raus.


    Du kannst auch beim Schließen noch einen Loop einbauen:
    for(new i=0; i<MAX_PLAYERS; i++) if(PlayerInfo[i][pFraktion] == fID) PlayerInfo[i][pFraktion] = 0;

    Da fehlt ein return.


    ocmd:blitzer(playerid, params[])
    {
    new speed;
    if(sscanf(params, "i", speed))return SendClientMessage(playerid, Rot, "Benutzung: /blitzer [Geschwindigkeit]");
    if(speed < 30 || speed > 150)
    {
    AddBlitzer(playerid, speed);
    return 1;
    }
    return SendClientMessage(playerid, Rot, "Die Geschwindigkeit muss zwischen 30 und 150 km/h sein.");
    }

    Alles klar.
    Ich würde dir die Variante mit den Fremdschlüsseln empfehlen, also dass du die ID einfach in die Datenbank an die richtige Position schreibst, das ist am flexibelsten und du wirst die wenigsten Probleme haben.
    Danach einfach den Wert mit aus der Datenbank laden und mit einer Schleife durch bsInfo schauen, dann die Fremd_ID gleich dem Index (i) von bdInfo ist.


    Wenn du Fragen hast, einfach melden. :)