Fraktions Chat

  • Fraktions Chat

    Hallo,

    ich würde gerne, dass mehrere Fraktionen diesen Befehl nutzen können, jedoch sollten es nur dxie Fraktionsmember sehen.
    Ich hab es hingekriegt, jedoch nur für eine Fraktion.
    [pwn]
    ocmd:f(playerid,params[])
    {
    if(!isPlayerInFrakt(playerid,10)) return SendClientMessage(playerid,ROT,"[Fehler]{FFFFFF} Du bist kein Mitglied der Grove Street.");
    new text[128],string[128];
    if(sscanf(params,"s",text))return SendClientMessage(playerid,ROT,"[Hilfe]{FFFFFF} Benutze /f [Text].");
    for(new i=0; i<GetMaxPlayers(); i++)
    {
    if(IsPlayerConnected(i))
    {
    if(isPlayerInFrakt(i,10))
    {
    format(string,sizeof(string),"[Fraktions Chat] %s:{FFFFFF} %s",SpielerName(playerid),text);
    SendClientMessage(i,COLOR_YELLOW,string);
    }
    }
    }
    return 1;
    }[/pwn]

    Neu im Bereich Pawn? Du kommst nicht klar? Du bist verwirrt und möchtest endlich scripten können?
    Klick mich für mehr Informationen.

    Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von [21]Code ()

  • Ich gehe mal davon aus, das Frak ID 0 = Zivilist (Fraktionslos) ist:

    [pwn]
    ocmd:f(playerid,params[])
    {
    if(isPlayerInFrakt(playerid,0)) return SendClientMessage(playerid,ROT,"[Fehler]{FFFFFF} Du bist in keiner Fraktion!");
    new text[128],string[128];
    if(sscanf(params,"s",text))return SendClientMessage(playerid,ROT,"[Hilfe]{FFFFFF} Benutze /f [Text].");
    new playerfrak = GetPlayerFraktion(playerid); //Oder wie auch immer du abfragst, in welcher Frak er ist, geht auch mit GetPVarInt(playerid, "Fraktion") oder halt den PVar.
    for(new i=0; i<GetMaxPlayers(); i++)
    {
    if(IsPlayerConnected(i))
    {
    if(isPlayerInFrakt(i,playerfrak))
    {
    format(string,sizeof(string),"[Fraktions Chat] %s:{FFFFFF} %s",SpielerName(playerid),text);
    SendClientMessage(i,COLOR_YELLOW,string);
    }
    }
    }
    return 1;
    }
    [/pwn]

    Nun kann jeder zu seiner Fraktion den Chat absenden,
    nur User der selben Frak bekommen die Nachricht und viel kürzer kann man das nun net mehr scripten^^
    Gru´ß,
    Dennis
  • Dann musst du von dem Spieler den rank auslesen,
    also beispiels:
    [pwn]new playerrank = GetPlayerRank(playerid); // Auch hier wieder durch deine Abfrage ersetzen, auch PVars möglich, hauptsache in "playerrank" ist der Rank von playerid[/pwn]
    und das einfach dann in der Nachricht ergänzen:

    [pwn]
    format(string,sizeof(string),"[Fraktions Chat] %s (Rank %s):{FFFFFF} %s",SpielerName(playerid), playerrank, text);
    SendClientMessage(i,COLOR_YELLOW,string);
    [/pwn]

    Hier hast du nun in den String noch den Raknk "playerrank" in (Rank %s) hinuzgefügt,
    edr dann mit ausgegeben wird.

    jetzt steht im Game z.B.:

    [Fraktions Chat]Dennis321 (Rank 2): Moin



    Zusammen sieht dies so aus:
    [pwn]
    ocmd:f(playerid,params[])
    {
    if(isPlayerInFrakt(playerid,0)) return SendClientMessage(playerid,ROT,"[Fehler]{FFFFFF} Du bist in keiner Fraktion!");
    new text[128],string[128];
    if(sscanf(params,"s",text))return SendClientMessage(playerid,ROT,"[Hilfe]{FFFFFF} Benutze /f [Text].");
    new playerfrak = GetPlayerFraktion(playerid); //Oder wie auch immer du abfragst, in welcher Frak er ist, geht auch mit GetPVarInt(playerid, "Fraktion") oder halt den PVar.
    new playerrank = GetPlayerRank(playerid); // Auch hier wieder durch deine Abfrage ersetzen, auch PVars möglich, hauptsache in "playerrank" ist der Rank von playerid
    for(new i=0; i<GetMaxPlayers(); i++)
    {
    if(IsPlayerConnected(i))
    {
    if(isPlayerInFrakt(i,playerfrak))
    {
    format(string,sizeof(string),"[Fraktions Chat] %s (Rank %s):{FFFFFF} %s",SpielerName(playerid), playerrank, text);
    SendClientMessage(i,COLOR_YELLOW,string);
    }
    }
    }
    return 1;
    }
    [/pwn]



    Da ich gerade parallel telefoniert habe,
    habe ich unun keine richtige Erklärung zu der ersten Sache geschrieben,
    dazu kurz und einfach:
    in "playerfrak" lädst du die Fraktion des Spielers rein.

    Du hast vorher hier:
    if(isPlayerInFrakt(i,10))
    abgefragt, ob edr Spieler die Fraktion 10 hat, also in der Schleife, wenn ja bekommt er die Nachricht.
    Das haben wir einfach durch die Ausgelesene Fraktionsid von playerid ersetzt:
    if(isPlayerInFrakt(i,playerfrak))

    Gruß,
    Dennis