Frage zum Fraktionschat..

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


    Um mein Fraktionssystem, natürlich möglichst Dynamisch fertig zu stellen, brauch ich eure hilfe..


    Ich Speicher die Rangnamen der Fraktion, bsp: LSPD Rang 1 = Praktikant in einer Datei.


    Ich schick euch dazu nur ein paar codes..


    stock CreateFraction(frakname[])
    {
    new datei[64];
    for(new frak=1;frak<MAX_FRAKTION;frak++)
    {
    format(datei,sizeof(datei),"/Fraktionen/%i.txt",frak);
    if(!dini_Exists(datei))
    {
    dini_Create(datei);
    format(FraktionsDaten[frak][fName],64,"%s",frakname);
    dini_Set(datei,"Fraktionsname",FraktionsDaten[frak][fName]);
    dini_Set(datei,"Rang1","Rang1");
    dini_Set(datei,"Rang2","Rang2");
    dini_Set(datei,"Rang3","Rang3");
    dini_Set(datei,"Rang4","Rang4");
    dini_Set(datei,"Rang5","Rang5");
    dini_Set(datei,"Rang6","Rang6");
    dini_Set(datei,"Rang7","Rang7");
    dini_Set(datei,"Rang8","Rang8");
    dini_Set(datei,"Rang9","Rang9");
    dini_Set(datei,"Rang10","Rang10");
    dini_Set(datei,"Rang11","Rang11");
    dini_Set(datei,"Rang12","Rang12");
    return 1;
    }
    }
    return 1;
    } (mittlerweile lass ich die Datei mit Namen speichern. spricht nicht das die Datei 0.txt heißt sondern LSPD.txt)


    ocmd:setrankname(playerid, params[])
    {
    new File[100],Rank[50], RankSet[50], RankID[50], String[128];
    if(sscanf(params, "is", RankID, RankSet)) return SendClientMessage(playerid,COLOR_GRAU, "/setrankname [Ranknummer] [Neuer Rankname]");
    new pname[MAX_PLAYER_NAME], path[200];
    GetPlayerName(playerid, pname, sizeof(pname));
    format(path, sizeof(path), "/Accounts/%s.ini", pname);
    if(leader==1)
    {
    format(File,sizeof(File),"/Fraktionen/LSPD.txt");
    format(RankID, sizeof RankID, "Rang%d", Rank);
    dini_Set(File, RankSet, Rank);
    }//Einige Codeteile Weggelassen und verändert..(copy&paste)


    damit kann ich die Rangnamen ändern, wenn ich auch Leader der Fraktion bin.


    Meine frage wäre jetzt, wie mach ich daraus n Fraktionschat..?


    Ich hab noch teile aus meinem Altem Script


    ocmd:r(playerid,params[])
    {
    new frak = PlayerInfo[playerid][Member];
    if(frak == 1)
    {
    new text[128];
    if(sscanf(params,"s",text))return SendClientMessage(playerid,COLOR_GRAU,"/r [text]");
    format(text,sizeof(text),"%s | %s: %s", GetRangName(playerid),SpielerName(playerid),text);
    TeamMessage(frak,text);
    return 1;
    }
    return 1;
    }
    public TeamMessage(fraktion,text[])
    {
    for(new i=0; i<GetMaxPlayers(); i++)
    {
    if(IsPlayerConnected(i))
    {
    if(PlayerInfo[i][Member])
    {
    SendClientMessage(i, COLOR_GANGFARBE, text);
    }
    }
    }
    }

  • Mach eine Funktion (stock) wo GetRangName(playerid) heißt und Schreibe dort dann alle Fraktionsränke rein am besten alle Ränke in eine Variable packen und dann abfragen in welche Fraktion er ist und welchen Rank er hat (mit switch), um es besser zu Erklären:


    stock GetRangName(playerid)
    {
    new rangname[64];
    if(PlayerInfo[playerid][Member] == 1)
    {
    switch(PlayerInfo[playerid][FraktionRang])
    {
    case 0: {rangname = /*Deine Variable in der du Fraktionrank 1 hast*/}
    case 1: {rangname = /*Deine Variable in der du Fraktionrank 2 hast*/;}
    case 2: {rangname = /*Deine Variable in der du Fraktionrank 3 hast*/;}
    case 3: {rangname = /*Deine Variable in der du Fraktionrank 4 hast*/;}
    case 4: {rangname = /*Deine Variable in der du Fraktionrank 5 hast*/;}
    }
    }
    return rangname;
    }
    Wenn du das hast müsste dein Fraktionschat mit Rank Name funktionieren

  • Vergiss das einfach was die gelabert ham stimmt nicht ^^



    //hier in ocmd
    ocmd:f(playerid,params[])
    {


    new text[128],string[128];
    if(sscanf(params,"s",text))return SendClientMessage(playerid,ROT,"[Hilfe]{FFFFFF} Benutze /f [Text].");
    new frak = GetPVarInt(playerid,"Fraktion");
    format(text,sizeof(text),"**%s %s: %s",SpielerRank(playerid),SpielerName(playerid),text);
    FMsg(frak,text);
    return 1;


    }


    stock fmsg

    stock FMsg(fraktion,text[])
    {
    for(new i=0; i<GetMaxPlayers(); i++)
    {
    if(IsPlayerConnected(i))
    {
    if(PFraktion(i,fraktion))
    {
    SendClientMessage(i, BLAU, text);
    }
    }
    }
    }

    dann musste nur noch den rang auslesen lassen


    hier mal ein simmples beispiel

    //oben die rangnamen definieren


    #define Rang0 "Lappen"
    #define Rang1 "Azubi"
    #define Rang2 "Vollpfosten"
    #define Rang3 "Idiot"
    #define Rang4 "Homo"
    #define Rang5 "Mongo"


    switch(GetPVarInt(playerid,"FrakRang"))
    {
    case 0:{FrakRang=Rang0;}
    case 1:{FrakRang=Rang1;}
    case 2:{FrakRang=Rang2;}
    case 3:{FrakRang=Rang3;}
    case 4:{FrakRang=Rang4;}
    case 5:{FrakRang=Rang5;}
    }


    das simmple beispiel mal eingebaut



    ocmd:f(playerid,params[])
    {


    new text[128],string[128],FrakRang[64];
    if(sscanf(params,"s",text))return SendClientMessage(playerid,ROT,"[Hilfe]{FFFFFF} Benutze /f [Text].");
    new frak = GetPVarInt(playerid,"Fraktion");
    switch(GetPVarInt(playerid,"FrakRang"))
    {
    case 0:{FrakRang=Rang0;}
    case 1:{FrakRang=Rang1;}
    case 2:{FrakRang=Rang2;}
    case 3:{FrakRang=Rang3;}
    case 4:{FrakRang=Rang4;}
    case 5:{FrakRang=Rang5;}
    }
    format(text,sizeof(text),"**%s %s: %s",FrakRang,SpielerName(playerid),text);
    FMsg(frak,text);
    return 1;


    }


    public Inkompetenz
    {
    return 2;
    }

    Einmal editiert, zuletzt von Freak[ ()

  • Es ist Sehr schön das ihr mir helfen mögt.


    Was aber mein Problem ist..



    ich arbeite nicht mit Pvars sondern mit Enum's, sprich ich lasse meine Fraktionsränge in einer Datei Speichern.


    Hier ist das Enum für die Ränge der Fraktionen:
    enum FDaten
    {
    fName[64],
    fRang1,
    fRang2,
    fRang3,
    fRang4,
    fRang5,
    fRang6,
    fRang7,
    fRang8,
    fRang9,
    fRang10,
    fRang11,
    fRang12
    }
    new FraktionsDaten[MAX_FRAKTION][FDaten];


    Das ist der Befehl mit dem ich Die Fraktion in die Datei schreibe
    ocmd:createfraktion(playerid,params[])
    {
    new frName[64], string[100];
    if(sscanf(params,"s",frName))return SendClientMessage(playerid,COLOR_WHITE,"Benutze: /createfraktion [Fraktionsname]");
    CreateFraction(frName);
    format(string,sizeof(string),"Du findest die Fraktion %s nun in den Scriptfiles.",frName);
    SendClientMessage(playerid,COLOR_ORANGE,string);
    return 1;
    }


    Hier wird die Datei für die Fraktion erstellt..
    stock CreateFraction(frakname[])
    {
    new datei[64];
    for(new frak=1;frak<MAX_FRAKTION;frak++)
    {
    format(datei,sizeof(datei),"/Fraktionen/%i.txt",frak);
    if(!dini_Exists(datei))
    {
    dini_Create(datei);
    format(FraktionsDaten[frak][fName],64,"%s",frakname);
    dini_Set(datei,"Fraktionsname",FraktionsDaten[frak][fName]);
    dini_Set(datei,"Rang1","Rang1");
    dini_Set(datei,"Rang2","Rang2");
    dini_Set(datei,"Rang3","Rang3");
    dini_Set(datei,"Rang4","Rang4");
    dini_Set(datei,"Rang5","Rang5");
    dini_Set(datei,"Rang6","Rang6");
    dini_Set(datei,"Rang7","Rang7");
    dini_Set(datei,"Rang8","Rang8");
    dini_Set(datei,"Rang9","Rang9");
    dini_Set(datei,"Rang10","Rang10");
    dini_Set(datei,"Rang11","Rang11");
    dini_Set(datei,"Rang12","Rang12");
    return 1;
    }
    }
    return 1;
    }


    Falls euch das noch Helfen sollte.. Hier änder ich die Ränge von den Fraktion als Lieder in der Datei
    ocmd:setrankname(playerid, params[])
    {
    new File[100],Rank[50], RankSet[50], RankID[50], String[128];
    if(sscanf(params, "is", RankID, RankSet)) return SendClientMessage(playerid,COLOR_GRAU, "/setrankname [Ranknummer] [Neuer Rankname]");
    new pname[MAX_PLAYER_NAME], path[200];
    GetPlayerName(playerid, pname, sizeof(pname));
    format(path, sizeof(path), "/Accounts/%s.ini", pname);
    new leader = PlayerInfo[playerid][Leader];
    if(leader==1)
    {
    format(File,sizeof(File),"/Fraktionen/1.txt");
    format(Rank, sizeof Rank, "Rang%d", RankID);
    dini_Set(File, Rank, RankSet);
    }
    else if(leader==2)
    {
    format(File,sizeof(File),"/Fraktionen/2.txt");
    format(Rank, sizeof Rank, "Rang%d", RankID);
    dini_Set(File, Rank, RankSet);
    }
    else if(leader==3)
    {
    format(File,sizeof(File),"/Fraktionen/3.txt");
    format(Rank, sizeof Rank, "Rang%d", RankID);
    dini_Set(File, Rank, RankSet);
    }
    else if(leader==4)
    {
    format(File,sizeof(File),"/Fraktionen/4.txt");
    format(Rank, sizeof Rank, "Rang%d", RankID);
    dini_Set(File, Rank, RankSet);
    }
    else if(leader==5)
    {
    format(File,sizeof(File),"/Fraktionen/5.txt");
    format(Rank, sizeof Rank, "Rang%d", RankID);
    dini_Set(File, Rank, RankSet);
    }
    else if(leader==6)
    {
    format(File,sizeof(File),"/Fraktionen/6.txt");
    format(Rank, sizeof Rank, "Rang%d", RankID);
    dini_Set(File, Rank, RankSet);
    }
    else if(leader==7)
    {
    format(File,sizeof(File),"/Fraktionen/7.txt");
    format(Rank, sizeof Rank, "Rang%d", RankID);
    dini_Set(File, Rank, RankSet);
    }
    else if(leader==8)
    {
    format(File,sizeof(File),"/Fraktionen/8.txt");
    format(Rank, sizeof Rank, "Rang%d", RankID);
    dini_Set(File, Rank, RankSet);
    }
    else if(leader==9)
    {
    format(File,sizeof(File),"/Fraktionen/9.txt");
    format(Rank, sizeof Rank, "Rang%d", RankID);
    dini_Set(File, Rank, RankSet);
    }
    else if(leader==10)
    {
    format(File,sizeof(File),"/Fraktionen/10.txt");
    format(Rank, sizeof Rank, "Rang%d", RankID);
    dini_Set(File, Rank, RankSet);
    }
    else if(leader==11)
    {
    format(File,sizeof(File),"/Fraktionen/11.txt");
    format(Rank, sizeof Rank, "Rang%d", RankID);
    dini_Set(File, Rank, RankSet);
    }
    else if(leader==12)
    {
    format(File,sizeof(File),"/Fraktionen/12.txt");
    format(Rank, sizeof Rank, "Rang%d", RankID);
    dini_Set(File, Rank, RankSet);
    }
    else if(leader==13)
    {
    format(File,sizeof(File),"/Fraktionen/13.txt");
    format(Rank, sizeof Rank, "Rang%d", RankID);
    dini_Set(File, Rank, RankSet);
    }
    else if(leader==14)
    {
    format(File,sizeof(File),"/Fraktionen/14.txt");
    format(Rank, sizeof Rank, "Rang%d", RankID);
    dini_Set(File, Rank, RankSet);
    }
    else if(leader==15)
    {
    format(File,sizeof(File),"/Fraktionen/15.txt");
    format(Rank, sizeof Rank, "Rang%d", RankID);
    dini_Set(File, Rank, RankSet);
    }
    else if(leader==16)
    {
    format(File,sizeof(File),"/Fraktionen/16.txt");
    format(Rank, sizeof Rank, "Rang%d", RankID);
    dini_Set(File, Rank, RankSet);
    }
    format(String,sizeof(String),"Der Rang%i lautet nun: %s.",RankID,RankSet);
    SendClientMessage(playerid,COLOR_GRÜN,String);
    return 1;
    }



    So. Und MEIN Anliegen ist folgendes.. ich will einen Fraktionschat erstellen, der die Ränge also sprich von 1 bis 12 im Fraktionschat ausgeben tut..
    ein kleines Beispiel: Praktikant | SpielerName: Text//Rang1 | Name des Spielers: was er geschrieben hat.


    Verstanden was ich meine?


    --
    Ich speicher den Rang in der sInfo mit FRang
    --


    Edit: nochwas vergessen