/f Chat Funktioniert Falsch

In 10 Minuten startet der nächtliche Backupvorgang! Es kann währenddessen (ca. 10 Minuten) zu Einschränkungen bei der Nutzung des Forums kommen
Weitere Infos findet ihr im Thema Backup des Forums
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
  • Hallo Community


    Ich habe hier ein Kleines F-Chat zusammengebaut, Jedoch Funktioniert es nicht so wie ich es mir Vorgestellt habe.


    ocmd:f(playerid,params[])
    {
    new string[128],rangn[128],SpielerName[MAX_PLAYER_NAME];
    if(SpielerInFraktion(playerid,0))return SendClientMessage(playerid,COLOR_RED,"SERVER: {FFFFFF}Du darfst diesen Befehl nicht benutzen.");
    if(sscanf(params,"s[128]",string)) return SendClientMessage(playerid,COLOR_RED,"FEHLER: {FFFFFF}/f [Text]");
    new fID = sInfo[playerid][fraktion];
    GetPlayerName(playerid,SpielerName,sizeof(SpielerName));
    if(sInfo[playerid][fraktion] == 9)
    {
    if(sInfo[playerid][rang] == 0) { format(string,sizeof(rangn),"Praktikant"); }
    if(sInfo[playerid][rang] == 1) { format(string,sizeof(rangn),"Azubi"); }
    if(sInfo[playerid][rang] == 2) { format(string,sizeof(rangn),"Reporter"); }
    if(sInfo[playerid][rang] == 3) { format(string,sizeof(rangn),"Redaktions Assisten"); }
    if(sInfo[playerid][rang] == 4) { format(string,sizeof(rangn),"Redaktions Manager"); }
    if(sInfo[playerid][rang] == 5) { format(string,sizeof(rangn),"Redakteur"); }
    if(sInfo[playerid][rang] == 6) { format(string,sizeof(rangn),"Chefredakteur"); }
    }
    format(string,sizeof(string)," * %s %s: %s. *",rangn, SpielerName, string);
    for(new i=0; i<MAX_PLAYERS; i++)
    {
    if(!IsPlayerConnected(i))continue;
    if(!SpielerInFraktion(i,fID))continue;
    SendClientMessage(playerid,COLOR_FRAKTIONCHAT,string);
    }
    return 1;
    }


    Ingame Sieht es so aus


    * PeG: Praktikant



    Was mein Problem nun ist, das Rangname und Name Falsch geordnet sind. Obwohl es laut Script alles Richtig ist.
    Und mein Problem ist, Das der Text auch Fehlt, wenn ich was eingebe, fehlt es...


    Danke im Vorraus


    Gruß









    ///EDIT:


    Fehler hab ich nun Gefunden.


    Es lag an diesen Zeilen :


    if(sInfo[playerid][rang] == 0) { format(string,sizeof(rangn),"Praktikant"); }
    if(sInfo[playerid][rang] == 1) { format(string,sizeof(rangn),"Azubi"); }
    if(sInfo[playerid][rang] == 2) { format(string,sizeof(rangn),"Reporter"); }
    if(sInfo[playerid][rang] == 3) { format(string,sizeof(rangn),"Redaktions Assisten"); }
    if(sInfo[playerid][rang] == 4) { format(string,sizeof(rangn),"Redaktions Manager"); }
    if(sInfo[playerid][rang] == 5) { format(string,sizeof(rangn),"Redakteur"); }
    if(sInfo[playerid][rang] == 6) { format(string,sizeof(rangn),"Chefredakteur"); }




    Statt format(string,sizeof(rangn),"........"); }




    Musste dort format(rangn,sizeof(rangn),"......"); }

    Einmal editiert, zuletzt von PeG ()

  • Füge mal die Variable "text[128]" hinzu und formatieren sie in "string". Also:
    if(sscanf(params,"s[128]",text))..


    format(string,sizeof(string),"* %s %s : %s",rangn, SpielerName, text);


    Außerdem musst du vor den "if-statements" ein "else" setzen.
    if..
    else if..
    else if..

    Zu guter letzt kannst du einen string in diesem Fall auch so zuweisen:
    rangn = "Azubi";


    /edit
    Fehler gefunden, alles klar :thumbup:

  • ocmd:f(playerid,params[])
    {
    new string[128],rangn[128],SpielerName[MAX_PLAYER_NAME];
    if(SpielerInFraktion(playerid,0))return SendClientMessage(playerid,COLOR_RED,"SERVER: {FFFFFF}Du darfst diesen Befehl nicht benutzen.");
    if(sscanf(params,"s[128]",string)) return SendClientMessage(playerid,COLOR_RED,"FEHLER: {FFFFFF}/f [Text]");
    new fID = sInfo[playerid][fraktion];
    GetPlayerName(playerid,SpielerName,sizeof(SpielerName));
    if(sInfo[playerid][fraktion] == 9)
    {
    if(sInfo[playerid][rang] == 0) format(string,sizeof(rangn),"Praktikant");
    else if(sInfo[playerid][rang] == 1) format(string,sizeof(rangn),"Azubi");
    else if(sInfo[playerid][rang] == 2) format(string,sizeof(rangn),"Reporter");
    else if(sInfo[playerid][rang] == 3) format(string,sizeof(rangn),"Redaktions Assisten");
    else if(sInfo[playerid][rang] == 4) format(string,sizeof(rangn),"Redaktions Manager");
    else if(sInfo[playerid][rang] == 5) format(string,sizeof(rangn),"Redakteur");
    else if(sInfo[playerid][rang] == 6) format(string,sizeof(rangn),"Chefredakteur");
    return rangn;
    }
    format(string,sizeof(string)," * %s %s: %s. *",rangn, SpielerName(playerid), string);
    for(new i=0; i<MAX_PLAYERS; i++)
    {
    if(!IsPlayerConnected(i))continue;
    if(!SpielerInFraktion(i,fID))continue;
    SendClientMessage(i,COLOR_FRAKTIONCHAT,string);
    }
    return 1;
    }


    SpielerName musst du auch ein Parameter angeben so wie du es deklariert hast. heißt SpielerName(von wem? playerid--> der den Befehl ausführt);.
    An wem wollen wir es senden? an i--> alle die online & in der Fraktion sind.
    Dann müssen wir den Rang name return, weil wir ja am ende den Rang namen wollen.
    return rangn;
    Probiere mal ob es so Funktioniert.


    //EDIT: Zu lange geschrieben & zu spät gemerkt :rolleyes: