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
  • Morgen.
    Un zwar habe ich folgende frage..


    Ich habe auf meinem Server 15 Fraktionen. davon 9 Gang/Mafien/Organisationen.


    Für die erste Fraktion, habe ich schon einen /f chat.
    ocmd:f(playerid,params[])
    {
    if(isPlayerInFrakt(playerid,3))
    {
    new text[128];
    if(sscanf(params,"s",text))return SendClientMessage(playerid,COLOR_GRAU,"/f [text]");
    format(text,sizeof(text),"Fraktionsmember %s: %s",SpielerName(playerid),text);
    for(new i=0; i<GetMaxPlayers(); i++)
    {
    if(IsPlayerConnected(i))
    {
    if(isPlayerInFrakt(i,GetPVarInt(playerid,"Fraktion")))
    {
    SendClientMessage(i,COLOR_GANGFARBE,text);
    }
    }
    }
    }
    return 1;
    }
    Meine frage ist: Ich habe ja 9 gangs/Mafien/Organisationen. und möchste das Alle den befehl /f benutzen um mit Ihren Fraktionsmembern zu schreiben.


    ie FraktionsID's wären 3,4,5,6,7,8,9,10,12 Diese Fraktionen sollen jewals /f benutzen können, und der text soll nur Innerhalb Dieser Fraktion bleiben.
    Wie mach ich das?
    ich war schonmal so blöd und hab versucht den befehl nochmal zu chreiben, aber es geht ja logischerweise nicht, da der befehl schon da ist

  • so wie go2nova schrieb.^^


    bekomme das per Pawn irgenwie grad nicht rein


    editiere gleich nochmal


    /edit:
    SetPVarInt(playerid,"Fraktion",dini_Int(Spielerdatei,"Fraktion")); ist Loadaccount.


    dini_IntSet(Spielerdatei,"Fraktion",GetPVarInt(playerid,"Fraktion"));


    Und ja GetPVarInt(playerid,"Fraktion")

  • Also meiner Meinung nach ist dein Code schon fertig bis auf die erste if-abfrage.
    Da brauchst du nur if(GetPVarInt(playerid,"Fraktion") > 0) hinmachen und dann hast du doch deine gewünschte Funktion.

    go2Nova Experience Innovation (go2Nova.de)
    SA-MP und Minecraft Serverhosting seit 2009, Softwareentwicklung und Webdesign.
    Webspace und Domains
    *NEU* Zahlen per paysafecard!

  • Ja dann eben if((GetPVarInt(playerid,"Fraktion") > 2 && GetPVarInt(playerid,"Fraktion") < 11) || GetPVarInt(playerid,"Fraktion") == 12) ?

    go2Nova Experience Innovation (go2Nova.de)
    SA-MP und Minecraft Serverhosting seit 2009, Softwareentwicklung und Webdesign.
    Webspace und Domains
    *NEU* Zahlen per paysafecard!

  • ^^ ach danke habe ich übersehen :).
    So sollte es gehen :



    ocmd:f(playerid,params[])
    {
    new frak = GetPVarInt(playerid,"Fraktion");
    if(frak == 3||frak == 4||frak == 5||frak == 6||frak == 7||frak == 8||frak == 9||frak == 10||frak == 12)
    {
    new text[128];
    if(sscanf(params,"s",text))return SendClientMessage(playerid,COLOR_GRAU,"/f [text]");
    format(text,sizeof(text),"Fraktionsmember %s: %s",SpielerName(playerid),text);
    TeamMessage(frak,text);
    return 1;
    }
    return 1;
    }
    forward TeamMessage(fraktion,text[]);
    public TeamMessage(fraktion,text[])
    {
    for(new i=0; i<GetMaxPlayers(); i++)
    {
    if(IsPlayerConnected(i))
    {
    if(isPlayerInFrakt(i,fraktion))
    {
    SendClientMessage(i, COLOR_GANGFARBE, text);
    }
    }
    }
    }



    Edit : Ausgebessert danke go2Nova :)

    „Auge um Auge - und die ganze Welt wird blind sein.“
    - Mahatma Gandhi