fehler bei einem dmcd..

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
  • Guten tag, Ich habe ein chat für Fraktionen gescriptet. Also mit /f schreibt man in seiner fraktion. diese nachricht soll auch nur für die angezeigt werde, die in der selben fraktion sind.
    dabei kommt folgende nachricht:


    Bei Members:
    NAME Rank X): TEXT


    Bei Leaders
    NAME(Leader): Text.


    doch iwie wird das an alle geschickt, und es klappt auch nicht, das bei dem Leader (Leader) steht.


    könnte ein Tippfehler sein oder ich habe iwas vertauscht, habe es öfters überprüft undgetauscht, aber klappt iwie net. hier mein scriptausschnitt:


    dcmd_f(playerid,params[])
    {
    new msg[256];
    if(sscanf(params, "s", msg))
    {
    return SendClientMessage(playerid,0xFF0000FF,"Benutzung: /f [Nachricht]");
    }
    else
    {
    new aname[MAX_PLAYER_NAME], astr[256];
    GetPlayerName(playerid, aname, sizeof(aname));


    for(new j = 0; j < MAX_PLAYERS; j++)
    {
    if(IsPlayerConnected(j))
    {
    if(Spieler[playerid][Member] >= 1 || Spieler[playerid][Leader] >= 1)
    {
    if(Spieler[playerid][Member] == Spieler[j][Member] || Spieler[playerid][Member] == Spieler[j][Leader])
    {
    format(astr, sizeof(astr),"%s (Rank %d): %s", aname, Spieler[playerid][Rank], msg);
    SendClientMessage(j,0xFFA400FF, astr);
    }
    else if(Spieler[playerid][Leader] == Spieler[j][Leader] || Spieler[playerid][Leader] == Spieler[j][Member])
    {
    format(astr, sizeof(astr), "%s (Leader): %s", aname, msg);
    SendClientMessage(j,0xFFA400FF, astr);
    }
    }
    }
    }
    }
    return 1;
    }


    Ich hoffe ihr könnt mir helfen, da ich denke das es sich um ein kleineres problem handelt.


    MfG
    Simon

  • Ich verstehe diese Zeile nicht:

    if(Spieler[playerid][Member] == Spieler[j][Member] || Spieler[playerid][Member] == Spieler[j][Leader])


    Was überprüfst du damit?


    Sollte das nicht so in dem Format sein:

    for(new i = 0; i < MAX_PLAYERS; i++)
    {
    if(IsPlayerConnected(i)) // Eigentlich sinnlose, da es eh nur die verbundenen Spieler überprüft
    {
    if(Spieler[i][member] == 1)
    {
    SendClientMessage(i, FARBE, "Nachricht");
    }
    }
    }

  • ja ich habs gerade schon gefixxt.. :D hier wie ich es habe:


    dcmd_f(playerid,params[])
    {
    new msg[256];
    if(sscanf(params, "s", msg))
    {
    return SendClientMessage(playerid,0xFF0000FF,"Benutzung: /f [Nachricht]");
    }
    if(Spieler[playerid][Member] == 0 && Spieler[playerid][Leader] == 0)
    {
    return 0;
    }
    else
    {
    if(Spieler[playerid][Leader] >= 1)
    {
    new name[MAX_PLAYER_NAME],str[256];
    GetPlayerName(playerid,name,sizeof(name));
    format(str,sizeof(str),"%s (Leader): %s", name, msg);
    for(new j = 0; j < MAX_PLAYERS; j++)
    {
    if(Spieler[j][Member] == Spieler[playerid][Leader] || Spieler[j][Leader] == Spieler[playerid][Leader])
    {
    SendClientMessage(j,0xFFB500FF,str);
    }
    }
    }
    if(Spieler[playerid][Member] >= 1)
    {
    new name[MAX_PLAYER_NAME],str[256];
    GetPlayerName(playerid,name,sizeof(name));
    format(str,sizeof(str),"%s (Rank %d): %s", name, Spieler[playerid][Rank], msg);
    for(new j = 0; j < MAX_PLAYERS; j++)
    {
    if(Spieler[j][Member] == Spieler[playerid][Member] || Spieler[j][Leader] == Spieler[playerid][Member])
    {
    SendClientMessage(j,0xFFB500FF,str);
    }
    }
    }
    }
    return 1;
    }