Fraktionschatproblem

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
  • HeyHoo,


    Habe das Problem, dass wenn Ich InGame "/f test" eingebe, nur "Polizeipresident DJ_Deagle: " ankommt.
    Pls help !
    Hier der Befehl:



    //Fraktionschat
    ocmd:f(playerid,params[])
    {
    new result[128];
    if(sscanf(params,"i",result))
    {
    new resultstring[128];
    new Name[MAX_PLAYER_NAME];
    GetPlayerName(playerid, Name, sizeof(Name));
    new member = GetPVarInt(playerid,"Fraktion");
    {
    if(member==1)
    {
    if(GetPVarInt(playerid,"frakrank") == 6) { format(resultstring, sizeof(resultstring), "Polizeipresident %s: %s", Name, result); }
    else if(GetPVarInt(playerid,"frakrank") == 5) { format(resultstring, sizeof(resultstring), "Lieutnant %s: %s", Name, result); }
    else if(GetPVarInt(playerid,"frakrank") == 4) { format(resultstring, sizeof(resultstring), "Kommissar %s: %s", Name, result); }
    else if(GetPVarInt(playerid,"frakrank") == 3) { format(resultstring, sizeof(resultstring), "Bewährungshelfer : %s", Name, result); }
    else if(GetPVarInt(playerid,"frakrank") == 2) { format(resultstring, sizeof(resultstring), "Officer %s: %s", Name, result); }
    else if(GetPVarInt(playerid,"frakrank") == 1) { format(resultstring, sizeof(resultstring), "Cadet %s: %s", Name, result); }
    }

    for(new i=0, j = GetMaxPlayers(); i < j; i++)
    {
    if(GetPVarInt(playerid,"Fraktion") == GetPVarInt(playerid,"Fraktion") || GetPVarInt(playerid,"Leader") == GetPVarInt(playerid,"Leader"))
    {
    SendClientMessage(i, ChatGrün, resultstring);
    }
    }
    }
    }
    return 1;
    }


    MfG
    Deagle

  • for(new i=0, j = GetMaxPlayers(); i < j; i++)


    was is das :D
    mach das mal so:


    for(new i; i<MAX_PLAYERS; i++)


    mfg. :thumbup:

    ast2ufdyxkb1.png


    Leute, lernt scripten und versucht mal lieber etwas selber zu schreiben, als es aus einem GF zu kopieren. :S

  • Ja, es funktioniert, aber, es wird InGame nur 1 Wort angezeigt. Z.B. Ich tippe "/f Moin Moin" ein, dann zeigt er nur "Polizeipresident DJ_Deagle: Moin" an...
    Hier nochmal der Beehl:


    //Fraktionschat
    ocmd:f(playerid,params[])
    {
    new result[128];
    if(sscanf(params,"s[128]",result))
    {
    new resultstring[128];
    new Name[MAX_PLAYER_NAME];
    GetPlayerName(playerid, Name, sizeof(Name));
    new member = GetPVarInt(playerid,"Fraktion");
    new leader = GetPVarInt(playerid,"Leader");
    {
    if(member==1)
    {
    if(GetPVarInt(playerid,"frakrank") == 6) { format(resultstring, sizeof(resultstring), "Polizeipresident %s: %s", Name, result); }
    else if(GetPVarInt(playerid,"frakrank") == 5) { format(resultstring, sizeof(resultstring), "Lieutnant %s: %s", Name, result); }
    else if(GetPVarInt(playerid,"frakrank") == 4) { format(resultstring, sizeof(resultstring), "Kommissar %s: %s", Name, result); }
    else if(GetPVarInt(playerid,"frakrank") == 3) { format(resultstring, sizeof(resultstring), "Bewährungshelfer %s: %s", Name, result); }
    else if(GetPVarInt(playerid,"frakrank") == 2) { format(resultstring, sizeof(resultstring), "Officer %s: %s", Name, result); }
    else if(GetPVarInt(playerid,"frakrank") == 1) { format(resultstring, sizeof(resultstring), "Cadet %s: %s", Name, result); }
    }
    else if(leader==1)
    {
    format(resultstring, sizeof(resultstring), "Polizeipresident %s: %s", Name, result);
    }
    for(new i; i<MAX_PLAYERS; i++)
    {
    if(GetPVarInt(playerid,"Fraktion") == GetPVarInt(playerid,"Fraktion") || GetPVarInt(playerid,"Leader") == GetPVarInt(playerid,"Leader"))
    {
    SendClientMessage(i, ChatGreen, resultstring);
    }
    }
    }
    }
    return 1;
    }



    MfG
    Deagle

  • Hier die Lösung!
    Ich habe einfach mal bisschen rumgeforscht.
    new result[254];
    if(sscanf(params,"s",result)) return SendClientMessage(playerid,BLAU,"Benutze: /f [Deine Nachricht]");
    Viel spaß damit ;)


    Hö?


    Zum einen kann es sein das er die Vorgängerversion nutzt, also war das mit dem [128] nicht falsch.
    Zum anderen, ist die länge dieses Strings doch mehr oder weniger erstmal egal.

  • new result[128];
    if(sscanf(params,"s[128]",result))
    {
    //Code


    So ist das Blödsinn.
    sscanf gibt 0 zurück wenn alle erforderlichen werte eingegeben worden sind und beispielsweise 1 wenn der erste Wert nicht eingegeben worden ist.
    und die aktuelle Abfrage lautet, wenn sscanf was anderes als 0 ein gibt dann ist die Abfrage wahr und es wird der der untere Code ausgeführt.


    Du musst jetzt verhindern das das passiert.
    Die meisten machen es mit return SendClientMessage(playerid,deine farbe, "dein text"); hinter der sscanf Abfrage.
    Du musst selber wissen, wie du es am besten machst ;)

    "Bevor ich mir Informationen aus der "Bild" hole,
    werde ich anfangen, Wahlergebnisse danach vorauszusagen,
    neben welchen Busch unsere Katze gepinkelt hat."

    Margarete Stokowski