Lokal Chat (Radius) 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
  • Hallo,
    Ich hab im Sufu ein tutorial zum chat erstellen gefunden,
    wie kann ich machen das so mehr radius so dunkel wird die nachricht die er schreib.
    Ich will das z.b
    25 bis 20 = Weiß
    20 bis 15 = Grau
    ....


    Gibts ein wert das sowas kann?
    if(GetDistanceBetweenPlayers(i,playerid) <= 25)



    stock SendMeChat(string[],playerid) //DIe Funktion wird aufgerufen, wenn wir etwas ohne Befehl schreiben.
    {
    for(new i = 0;i < MAX_PLAYERS; i++) //Er durchläuft alle Spieler
    {
    if(GetDistanceBetweenPlayers(i,playerid) <= 25) //Die Funktion wird unten erklärt ;) Die 25 heißt, wie viel Meter soll man das Lesen können.
    {
    SendClientMessage(i,Grau,string); //Klar eure Farbe ^^
    }
    }
    return 1;
    }


    MFG Martinez

  • Damit ? :D



    stock SendClientMessageRadius(playerid, string[], f1, Float:u1, f2, Float:u2)
    {

    for(new i = 0;i < MAX_PLAYERS; i++)
    {
    if(GetDistanceBetweenPlayers(i,playerid) < u1)
    {
    SendClientMessage(i, f1, string);
    }
    else if(GetDistanceBetweenPlayers(i,playerid) >= u1 && GetDistanceBetweenPlayers(i,playerid) < u2)
    {
    SendClientMessage(i, f2, string);
    }
    }
    return 1;
    }


    Wenn du willst kann ich auch ein Tutorial damit machen :D


  • stock SendMeChat(string[],playerid) //DIe Funktion wird aufgerufen, wenn wir etwas ohne Befehl schreiben.
    {
    for(new i = 0;i < MAX_PLAYERS; i++) //Er durchläuft alle Spieler
    {
    if(GetDistanceBetweenPlayers(i,playerid) <= 25) //Die Funktion wird unten erklärt ;) Die 25 heißt, wie viel Meter soll man das Lesen können.
    {
    SendClientMessage(i,Grau,string); //Klar eure Farbe ^^
    }
    else if(GetDistanceBetweenPlayers(i,playerid) <= 20)
    {
    SendClientMessage(i,Grau,string); //andere farbe
    }
    }
    return 1;
    }



    Meinst du das oder habe ich was falsch verstanden?

  • Mach es so:



    #define COLOR_FADE1 0xFFFFFFFF
    #define COLOR_FADE2 0xBEBEBEFF
    #define COLOR_FADE3 0xAAAAAAFF
    #define COLOR_FADE4 0x8C8C8CFF
    #define COLOR_FADE5 0x505050FF


    public OnPlayerText(playerid, text[])
    {
    new sendername[32],string[128];
    GetPlayerName(playerid,sendername,sizeof(sendername));
    format(string, sizeof(string),"%s sagt: %s",sendername,text);
    ProxDetector(20.0, playerid, string,COLOR_FADE1,COLOR_FADE2,COLOR_FADE3,COLOR_FADE4,COLOR_FADE5);
    return 0;
    }


    hir der Stock:



    forward ProxDetector(Float:radi, playerid, string[],col1,col2,col3,col4,col5);
    public ProxDetector(Float:radi, playerid, string[],col1,col2,col3,col4,col5)
    {
    if(IsPlayerConnected(playerid))
    {
    new Float:posx, Float:posy, Float:posz;
    new Float:oldposx, Float:oldposy, Float:oldposz;
    new Float:tempposx, Float:tempposy, Float:tempposz;
    GetPlayerPos(playerid, oldposx, oldposy, oldposz);
    //radi = 2.0; //Trigger Radius
    for(new i = 0; i < MAX_PLAYERS; i++)
    {
    if(IsPlayerConnected(i))
    {
    if(!BigEar[i])
    {
    GetPlayerPos(i, posx, posy, posz);
    tempposx = (oldposx -posx);
    tempposy = (oldposy -posy);
    tempposz = (oldposz -posz);
    //printf("DEBUG: X:%f Y:%f Z:%f",posx,posy,posz);
    if (((tempposx < radi/16) && (tempposx > -radi/16)) && ((tempposy < radi/16) && (tempposy > -radi/16)) && ((tempposz < radi/16) && (tempposz > -radi/16)))
    {
    SendClientMessage(i, col1, string);
    }
    else if (((tempposx < radi/8) && (tempposx > -radi/8)) && ((tempposy < radi/8) && (tempposy > -radi/8)) && ((tempposz < radi/8) && (tempposz > -radi/8)))
    {
    SendClientMessage(i, col2, string);
    }
    else if (((tempposx < radi/4) && (tempposx > -radi/4)) && ((tempposy < radi/4) && (tempposy > -radi/4)) && ((tempposz < radi/4) && (tempposz > -radi/4)))
    {
    SendClientMessage(i, col3, string);
    }
    else if (((tempposx < radi/2) && (tempposx > -radi/2)) && ((tempposy < radi/2) && (tempposy > -radi/2)) && ((tempposz < radi/2) && (tempposz > -radi/2)))
    {
    SendClientMessage(i, col4, string);
    }
    else if (((tempposx < radi) && (tempposx > -radi)) && ((tempposy < radi) && (tempposy > -radi)) && ((tempposz < radi) && (tempposz > -radi)))
    {
    SendClientMessage(i, col5, string);
    }
    }
    else
    {
    SendClientMessage(i, col1, string);
    }
    }
    }
    }
    return 1;
    }


    //E Faben codes eingefügt

    Mit freundlichen Grüßen,


    Fabi.StaR :love::saint:



  • Ja wenn es nicht 2 nachrichten absendet?, ich will ja so haben so weiter er entfernt ist so dunkel wird die farbe

  • do.de - Domain-Offensive - Domains für alle und zu super Preisen
  • Ich glaube ich hab einen Fehler gemacht, du müsstest es anders herum machen, vom kleinen zum größeren Abstand.


    €: So sollte es richtig sein:



    stock SendMeChat(string[],playerid) //DIe Funktion wird aufgerufen, wenn wir etwas ohne Befehl schreiben.
    {
    for(new i = 0;i < MAX_PLAYERS; i++) //Er durchläuft alle Spieler
    {
    if(GetDistanceBetweenPlayers(i,playerid) <= 5) // 0-5 Meter
    {
    SendClientMessage(i,Grau,string); //Klar eure Farbe ^^
    }
    else if(GetDistanceBetweenPlayers(i,playerid) <= 10) // 6-10 Meter
    {
    SendClientMessage(i,Grau,string); //dunklere farbe
    }
    else if(GetDistanceBetweenPlayers(i,playerid) <= 15) // 11-15 Meter
    {
    SendClientMessage(i,Grau,string); //noch dunklere farbe
    }
    else if(GetDistanceBetweenPlayers(i,playerid) <= 20) // 16-20 Meter
    {
    SendClientMessage(i,Grau,string); //noch dunklere farbe
    }


    }
    return 1;
    }

    Einmal editiert, zuletzt von Showtek ()


  • Joa geht.