Fraktion schließen

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
  • 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;

  • Das habe ich ja schon beim Spawnen gemacht...

    if(PlayerInfo[playerid][pEingeloggt] == 0)
    {
    new string[128],name[MAX_PLAYER_NAME],fID = PlayerInfo[playerid][pFraktion];
    GetPlayerName(playerid,name,sizeof(name));
    format(string,sizeof(string),"{FFFFFF}=> {FF0073}%s {999999}hat den Server betreten. Herzlich Willkommen!",name);
    SendClientMessageToAll(Grau,string);
    SetPlayerPos(playerid,FraktSpawns[fID][PosX],FraktSpawns[fID][PosY],FraktSpawns[fID][PosZ]);
    SetPlayerFacingAngle(playerid,FraktSpawns[fID][PosA]);
    SetCameraBehindPlayer(playerid);
    SetPlayerColor(playerid,FraktSpawns[fID][Color]);
    SetPlayerSkin(playerid,FraktSpawns[fID][Skin]);
    PlayerInfo[playerid][pEingeloggt] = 1;
    new id = PlayerInfo[playerid][pFraktion];
    if(frakGeschlossen[id] && id != 0)
    {
    PlayerInfo[playerid][pFraktion] = 0;
    PlayerInfo[playerid][pMember] = 0;
    PlayerInfo[playerid][pLeader] = 0;
    PlayerInfo[playerid][pRank] = 0;
    SpawnPlayer(playerid);
    SendClientMessage(playerid,Gelb,"** Die Fraktion in der du warst, wurde geschlossen! Du bist nun Zivilist.");
    }
    for(new i = 0; i < 100; i++)
    {
    if(PlayerInfo[i][pAdminlevel] >= 1)
    {
    if(KillList == 1 || KillList == 0)
    {
    SendDeathMessage(INVALID_PLAYER_ID,playerid,200);
    }
    }
    }
    if(KillList == 1)
    {
    SendDeathMessage(INVALID_PLAYER_ID,playerid,200);
    }
    }
    else if(PlayerInfo[playerid][pEingeloggt] == 1)
    {
    new fID = PlayerInfo[playerid][pFraktion];
    SetPlayerPos(playerid,FraktSpawns[fID][PosX],FraktSpawns[fID][PosY],FraktSpawns[fID][PosZ]);
    SetPlayerFacingAngle(playerid,FraktSpawns[fID][PosA]);
    SetCameraBehindPlayer(playerid);
    SetPlayerColor(playerid,FraktSpawns[fID][Color]);
    SetPlayerSkin(playerid,FraktSpawns[fID][Skin]);
    PlayerInfo[playerid][pEingeloggt] = 1;
    new id = PlayerInfo[playerid][pFraktion];
    if(frakGeschlossen[id] && id != 0)
    {
    PlayerInfo[playerid][pFraktion] = 0;
    PlayerInfo[playerid][pMember] = 0;
    PlayerInfo[playerid][pLeader] = 0;
    PlayerInfo[playerid][pRank] = 0;
    SpawnPlayer(playerid);
    SendClientMessage(playerid,Gelb,"** Die Fraktion in der du warst, wurde geschlossen! Du bist nun Zivilist.");
    }
    }

  • 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:

  • 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.

  • 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. ;)

  • do.de - Domain-Offensive - Domains für alle und zu super Preisen
  • 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;

  • 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.

  • 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];

  • Hast du dir auch mit /makeleader als Leader gemacht? Ansonsten wird das ganze ja nicht in die Datei eingetragen :P

  • Ich habe es eingetragen:

    ocmd:makeleader(playerid,params[])
    {
    new pID,Fraktion,Fraktionsdatei[64];
    if(PlayerInfo[playerid][pEingeloggt] < 1 ) return SendClientMessage(playerid,Rot,"Du kannst diesen Befehl nicht nutzen, weil du nicht eingeloggt bist.");
    if(PlayerInfo[playerid][pAdminlevel] <= 1337)return SendClientMessage(playerid,Grau,"Du bist nicht befugt, diesen Befehl zu nutzen!");
    if(sscanf(params,"ui",pID,Fraktion))
    {
    SendClientMessage(playerid,Gelb,"Benutze: /makeleader [playerid/PartOfName] [Fraktion]");
    SendClientMessage(playerid,Gelb,"1 = LSPD, 2 = FBI, 3 = Army, 4 = Medic, 5 = News, 6 = T-GmbH,");
    SendClientMessage(playerid,Gelb,"7 = Abfallwirtschaft, 8 = Hitman, 9 = Grove Street, 10 = Al-Qaida,");
    SendClientMessage(playerid,Gelb,"11 = Ballas, 12 = Fahrschule, 13 = La Cosa Nostra, 14 = Taxi,");
    SendClientMessage(playerid,Gelb,"15 = Yakuza, 16 = Staatsverwaltung, 17 = SAPD, 18 = Aztecas,");
    SendClientMessage(playerid,Gelb,"19 = Rifas, 20 = RS, 21 = Cripz, 22 = Russische Mafia, 23 = SFBC,");
    SendClientMessage(playerid,Gelb,"24 = Vagos, 25 = Wheelmen");
    return 1;
    }
    if(!IsPlayerConnected(pID))return SendClientMessage(playerid,Grau,"Der angegebene Spieler ist nicht Online!");
    if(frakGeschlossen[Fraktion] == true) return SendClientMessage(playerid,Grau,"Die Fraktion ist geschlossen!");
    if(Fraktion < 0 || Fraktion > 26) return SendClientMessage(playerid,Grau,"Bitte nimm eine Fraktion zwischen 0 und 5!");
    PlayerInfo[pID][pLeader] = Fraktion;
    PlayerInfo[pID][pFraktion] = Fraktion;
    PlayerInfo[pID][pMember] = Fraktion;
    PlayerInfo[pID][pRank] = 7;
    dini_Set(Fraktionsdatei, "LeaderName", SpielerName(pID));
    SpawnPlayer(pID);
    if(Fraktion == 0)
    {
    Leaders--;
    }
    else if(Fraktion >= 1)
    {
    Leaders++;
    }
    new string[128],name[MAX_PLAYER_NAME];
    GetPlayerName(pID,name,sizeof(name));
    GetPlayerName(playerid,name,sizeof(name));
    format(string,sizeof(string),"Du hast %s Leader der Fraktion %s gemacht.",name,LeaderRank(pID));
    SendClientMessage(playerid,Blau,string);
    format(string,sizeof(string),"%s hat dich Leader der Fraktion %s gemacht.",name,LeaderRank(pID));
    SendClientMessage(pID,Blau,string);
    return 1;
    }