Chat Radius Mit Spielername Farbe

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
  • Ich habe folgenden Code für meinen Chatradius:


    public OnPlayerText(playerid, text[])
    {
    new sendername[32],string[128];
    GetPlayerName(playerid,sendername,sizeof(sendername));
    format(string, sizeof(string),"%s says: %s",sendername,text);
    SendMeChat(string,playerid);
    return 0;


    }


    stock Float:GetDistanceBetweenPlayers(p1,p2){
    new Float:x1,Float:y1,Float:z1,Float:x2,Float:y2,Float:z2;
    if(!IsPlayerConnected(p1) || !IsPlayerConnected(p2)){
    return -1.00;
    }
    GetPlayerPos(p1,x1,y1,z1);
    GetPlayerPos(p2,x2,y2,z2);
    return floatsqroot(floatpower(floatabs(floatsub(x2,x1)),2)+floatpower(floatabs(floatsub(y2,y1)),2)+floatpower(floatabs(floatsub(z2,z1)),2));
    }


    stock SendMeChat(string[],playerid)
    {
    for(new i = 0;i < MAX_PLAYERS; i++)
    {
    if(GetDistanceBetweenPlayers(i,playerid) <= 25)
    {
    SendClientMessage(i,COLOR_WHITE,string);
    }
    }
    return 1;
    }


    Alles funktioniert nur der Name des Spielers wird trotz SetPlayerColor nicht bunt angezeigt. Bei den Scores is der Name auf jedenfall bunt...


    Frage: Was muss ich tun damit der Spielername bunt angezeigt wird?


    Danke im Vorraus :thumbup:

    Du brauchst Hilfe beim scripten? Siehe Hier:


    Klick mich!


    Derzeitiges Projekt: Youngs Deathmatch 1.0.0 [||||||||||]

  • Probier mal mit GetPlayerColor


    ließ das jedoch erst durch
    http://wiki.sa-mp.com/wiki/GetPlayerColor


    dann kannst du die Farbe des spielers abfragen lassen und ausgeben


    im string mit %x
    farbe = GetPlayerColor(playerid);
    format(string, sizeof(string),"{%x}%s says: %s",farbe,sendername,text);


    du kannst auch nur GetPlayerColor(playerid); verwenden ohne farbe neu zu definieren


    format(string, sizeof(string),"{%x}%s says: %s",GetPlayerColor(playerid),sendername,text);

  • naja die idee war schon richtig nur das dann der farbcode da steht aber nicht die farbe... d.h. es wird warscheinlich ein fehlerhafter Farbcode wiedergegeben:


    SO siehts dann aus (Beispiel):
    {-5FA00X3XE}Peter says: Hallo!

    Du brauchst Hilfe beim scripten? Siehe Hier:


    Klick mich!


    Derzeitiges Projekt: Youngs Deathmatch 1.0.0 [||||||||||]

  • Es gibt 2 Möglichkeiten
    die erste
    Nutze SendPlayerMessageToPlayer - welches genau den effekt hat den du willst


    die 2.
    Sende den Text als spielerfarbe und färbe den rest einfach weiß


    Beispiel
    format(string, sizeof(string),"%s says: {FFFFFF}%s",sendername,text);
    SendClientMessage(i,GetPlayerColor(playerid),string);
    Du musst nur darauf achten, das du auch SetPlayerColor verwendet hast,
    sonst geht das schief ;)

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

    Margarete Stokowski


  • Könntest du dieses SendPlayerMessageToPlayer an meinem Beispiel anwenden? Wäre seeehr nett :))

    Du brauchst Hilfe beim scripten? Siehe Hier:


    Klick mich!


    Derzeitiges Projekt: Youngs Deathmatch 1.0.0 [||||||||||]

  • SendPlayerMessageToPlayer(empfänger, sender, "Hallo Empfänger");


    in einer schleife sieht das dann so aus


    SendPlayerMessageToPlayer(i, playerid,"Hallo du");

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

    Margarete Stokowski

  • Das problem ist halt, dass es nicht an alle senden soll. Es ist ja ein Chatradius den ich hier erstellt habe :P

    Du brauchst Hilfe beim scripten? Siehe Hier:


    Klick mich!


    Derzeitiges Projekt: Youngs Deathmatch 1.0.0 [||||||||||]

  • stock SendMeChat(string[],playerid)
    {
    for(new i = 0;i < MAX_PLAYERS; i++)
    {
    if(GetDistanceBetweenPlayers(i,playerid) <= 25)
    {
    SendPlayerMessageToPlayer(i,playerid,string);
    }
    }
    return 1;
    }
    und schon ist es fertig,
    so schwer ist das nicht^^

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

    Margarete Stokowski