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
  • Nein, in dem Fall nicht, da du ausschließlich nach dem genauen Name suchst. Wenn du meine Funktion schon hast, dann benenne den kleinen stock den ich dir grade gegeben habe um, hänge einfach eine 2 dran, ebenso im leaderlist Befehl.

  • Ich habs mal versucht weiß aber nicht obs stimmt:
    ocmd:makeleader(playerid,params[])
    {
    new pID,Fraktion;
    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!");
    if(Fraktion == 0)
    {
    new Fraktionsdatei[64];
    format(Fraktionsdatei,sizeof(Fraktionsdatei),"/Fraktionen/%s.txt",FraktionsNamen(Fraktion));
    dini_Set(Fraktionsdatei, "LeaderName", "Niemand");
    }
    PlayerInfo[pID][pLeader] = Fraktion;
    PlayerInfo[pID][pFraktion] = Fraktion;
    PlayerInfo[pID][pMember] = Fraktion;
    PlayerInfo[pID][pRank] = 7;
    new Fraktionsdatei[64];
    format(Fraktionsdatei,sizeof(Fraktionsdatei),"/Fraktionen/%s.txt",FraktionsNamen(Fraktion));
    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;
    }

  • Nicht ganz.
    So sollte es passen:
    ocmd:makeleader(playerid,params[])
    {
    new pID,Fraktion;
    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(Fraktion < 0 || Fraktion > 25) return SendClientMessage(playerid,Grau,"Bitte nimm eine Fraktion zwischen 0 und 25!");
    if(frakGeschlossen[Fraktion] == true) return SendClientMessage(playerid,Grau,"Die Fraktion ist geschlossen!");
    if(Fraktion == 0)
    {
    new Fraktionsdatei[64];
    format(Fraktionsdatei,sizeof(Fraktionsdatei),"/Fraktionen/%s.txt",FraktionsNamen(PlayerInfo[pID][pFraktion]));
    dini_Set(Fraktionsdatei, "LeaderName", "Niemand");
    }
    else
    {
    new Fraktionsdatei[64];
    format(Fraktionsdatei,sizeof(Fraktionsdatei),"/Fraktionen/%s.txt",FraktionsNamen(Fraktion));
    dini_Set(Fraktionsdatei, "LeaderName", SpielerName(pID));
    }
    PlayerInfo[pID][pLeader] = Fraktion;
    PlayerInfo[pID][pFraktion] = Fraktion;
    PlayerInfo[pID][pMember] = Fraktion;
    PlayerInfo[pID][pRank] = 7;
    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;
    }


    Edit:
    TheTutoFreak: Fehler ausgebessert. Kopiere es nochmal.

  • Naja, dann musst du noch abfragen ob PlayerInfo[pID][pLeader] auch wirklich 0 ist, und wenn nicht, returnst du eine Nachricht.
    if(PlayerInfo[pID][pLeader]!=0 && Fraktion!=0) return SendClientMessage...


    Das fügst du nach der Zeile unter dem IsPlayerConnected Teil ein, also zwei Zeilen drunter.

  • Reloggen muss er sich nicht, das würde ja keinen Sinn geben, das könnte man ebenso wie bei MySQL automatisch machen.


    Allerdings verstehe ich das Problem nicht. Mit dem Code, wenn du den eingefügt hast, kannst du nicht zwei mal Leader werden, oder geht es trotzdem noch? Könntest du ggf mal ein Bild von dem Dialog zeigen?

  • ERST AUF NULL SETZTEN:

    Spoiler anzeigen
    ocmd:makeleader(playerid,params[])
    {
    new pID,Fraktion;
    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(PlayerInfo[pID][pLeader] != 0)return SendClientMessage(playerid,GRAU,"Der angebene Spieler ist bereit in einer Fraktion Leader!");
    if(Fraktion < 0 || Fraktion > 25)return SendClientMessage(playerid,Grau,"Bitte nimm eine Fraktion zwischen 0 und 25!");
    if(frakGeschlossen[Fraktion] == true) return SendClientMessage(playerid,Grau,"Die Fraktion ist geschlossen!");
    if(Fraktion == 0)
    {
    new Fraktionsdatei[64];
    format(Fraktionsdatei,sizeof(Fraktionsdatei),"/Fraktionen/%s.txt",FraktionsNamen(PlayerInfo[pID][pFraktion]));
    dini_Set(Fraktionsdatei, "LeaderName", "Niemand");
    }
    else
    {
    new Fraktionsdatei[64];
    format(Fraktionsdatei,sizeof(Fraktionsdatei),"/Fraktionen/%s.txt",FraktionsNamen(Fraktion));
    dini_Set(Fraktionsdatei, "LeaderName", SpielerName(pID));
    }
    PlayerInfo[pID][pLeader] = Fraktion;
    PlayerInfo[pID][pFraktion] = Fraktion;
    PlayerInfo[pID][pMember] = Fraktion;
    PlayerInfo[pID][pRank] = 7;
    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;
    }


    So, jetzt musst du den Spieler erst aus der aktuellen Fraktion wo er Leader ist ausladen und neu einladen
    Oder möchtest du das es sich automatisch ändert so das du nicht erst 0 und dann die FraktionsID eingeben musst?


    AUTOMATISCH AUS DER INI ENTFERNEN ALS LEADER:

    Spoiler anzeigen
    ocmd:makeleader(playerid,params[])
    {
    new pID,Fraktion;
    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(Fraktion < 0 || Fraktion > 25)return SendClientMessage(playerid,Grau,"Bitte nimm eine Fraktion zwischen 0 und 25!");
    if(frakGeschlossen[Fraktion] == true) return SendClientMessage(playerid,Grau,"Die Fraktion ist geschlossen!");
    if(Fraktion == 0)
    {
    new Fraktionsdatei[64];
    format(Fraktionsdatei,sizeof(Fraktionsdatei),"/Fraktionen/%s.txt",FraktionsNamen(PlayerInfo[pID][pFraktion]));
    dini_Set(Fraktionsdatei, "LeaderName", "Niemand");
    }
    else
    {
    //Du fragst ab ob er bereits Leader ist
    if(PlayerInfo[pID][pLeader] != 0)
    {
    //Du löscht seinen Namen als Leader und setzt "Niemand" dafür ein
    new Fraktionsdatei[64];
    format(Fraktionsdatei,sizeof(Fraktionsdatei),"/Fraktionen/%s.txt",FraktionsNamen(PlayerInfo[pID][pFraktion]));
    dini_Set(Fraktionsdatei, "LeaderName", "Niemand");
    //Du speicherst ihn in die neue Fraktion als Leader ein
    format(Fraktionsdatei,sizeof(Fraktionsdatei),"/Fraktionen/%s.txt",FraktionsNamen(Fraktion));
    dini_Set(Fraktionsdatei, "LeaderName", SpielerName(pID));
    //Jetzt bist du immer nur in einer ini Leader
    }
    else
    {
    new Fraktionsdatei[64];
    format(Fraktionsdatei,sizeof(Fraktionsdatei),"/Fraktionen/%s.txt",FraktionsNamen(Fraktion));
    dini_Set(Fraktionsdatei, "LeaderName", SpielerName(pID));
    }
    }
    PlayerInfo[pID][pLeader] = Fraktion;
    PlayerInfo[pID][pFraktion] = Fraktion;
    PlayerInfo[pID][pMember] = Fraktion;
    PlayerInfo[pID][pRank] = 7;
    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;
    }


    //EDIT: Automatische Änderung in der Ini hinzugefügt.
    //EDIT: Code in Spoiler gepackt.