Chatradius einstellen

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,
    wo kann ich hier mein Radius einstellen?


    public OnPlayerText(playerid, text[])
    {
    if(AFK[playerid] == 1)
    {
    SendClientMessage(playerid, COLOR_RED, "Du kannst nicht schreiben wenn du AFK bist, schreibe /back um zu schreiben!");
    return 0;
    }
    if(aduty[playerid] == false)
    {
    new string[128],name[24];
    new stunde1, minute1, sekunde1;
    gettime(stunde1, minute1, sekunde1);
    GetPlayerName(playerid, name, 24);
    format(string, 128,"[%02d:%02d:%02d | ID: %d] %s %s : {FFFFFF}%s",stunde1,minute1,sekunde1,playerid,Admintextname(playerid),name,text);
    SendClientMessageToAll(GetPlayerColor(playerid), string);
    SetPlayerChatBubble(playerid,text, GetPlayerColor(playerid), 50.0, 6000);
    }
    else
    {
    new string[128],name[24];
    new stunde1, minute1, sekunde1;
    gettime(stunde1, minute1, sekunde1);
    GetPlayerName(playerid, name, 24);
    format(string, 128,"[%02d:%02d:%02d | ID: %d] %s %s : %s",stunde1,minute1,sekunde1,playerid,Admintextname(playerid),name,text);
    SendClientMessageToAll(FARBE_WARNING, string);
    SetPlayerChatBubble(playerid,text, FARBE_ROT, 50.0, 6000);
    }
    //LimitGlobalChatRadius(70.0); Das bringt auch nichts :D
    return 0;
    }


    MfG Freestyyler

    MfG SkrilLinux


    Ich habe euch erfolgreich geholfen?
    -Dann wäre es nett wenn ihr 1x auf Bedanken klickt :)

  • Sicherlich nicht mit SendClientMessageToAll.
    Nutze einfach den ProxDetector.


    2 Sekunden gegoogelt:



    public ProxDetectorS(Float:radi, playerid, targetid)
    {
    if(IsPlayerConnected(playerid)&&IsPlayerConnected(targetid))
    {
    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);
    GetPlayerPos(targetid, posx, posy, posz);
    tempposx = (oldposx -posx);
    tempposy = (oldposy -posy);
    tempposz = (oldposz -posz);
    if (((tempposx < radi) && (tempposx > -radi)) && ((tempposy < radi) && (tempposy > -radi)) && ((tempposz < radi) && (tempposz > -radi)))
    {
    return true;
    }
    }
    return false;
    }


    Damit eine Abfrage erstellen und mit SendClientMessage arbeiten.

    RFT

  • LimitGlobalChatRadius ist nur wenn du OnPlayerText nicht manuell machst (kein return 0)
    darum bleibt dir nichts anderes übrig, als eine Schleife zu machen, und abzufragen ob der Spieler in der Nähe ist und dann die Nachricht zu schicken


    Anstatt SendClientMessageToAll

  • Den Proxdetector bitte doch nicht benutzen ist Quatsch.
    Mach es so:



    for(new i = 0; i < MAX_PLAYERS; i++)
    {
    if(!IsPlayerConnected(i))continue;
    if(IsPlayerInRangeOfPoint(playerid, Radius, X, Y, Z))
    {
    Hier das SendClientMessage rein.
    }
    }

    RFT


  • Was soll ich dann bei xyz eintragen?

    MfG SkrilLinux


    Ich habe euch erfolgreich geholfen?
    -Dann wäre es nett wenn ihr 1x auf Bedanken klickt :)

  • Sollte so stimmen oder?


    public OnPlayerText(playerid, text[])
    {
    if(AFK[playerid] == 1) // Abfrage ob er AFK ist wenn er schreiben möchte!
    {
    SendClientMessage(playerid, COLOR_RED, "Du kannst nicht schreiben wenn du AFK bist, schreibe /back um zu schreiben!"); // Falls er AFK ist , ist er gemutet und kann erst schreiben wenn er /back macht!
    return 0;
    }
    if(aduty[playerid] == false)
    {
    new Float:X,Float:Y,Float:Z;
    GetPlayerPos(playerid,X,Y,Z);
    for(new i = 0; i < MAX_PLAYERS; i++)
    {
    if(!IsPlayerConnected(i))continue;
    if(IsPlayerInRangeOfPoint(playerid, 70, X, Y, Z))
    {
    new string[128],name[24];
    new stunde1, minute1, sekunde1;
    gettime(stunde1, minute1, sekunde1);
    GetPlayerName(playerid, name, 24);
    format(string, 128,"[%02d:%02d:%02d | ID: %d] %s %s : {FFFFFF}%s",stunde1,minute1,sekunde1,playerid,Admintextname(playerid),name,text);
    SendClientMessage(i,GetPlayerColor(playerid), string);
    SetPlayerChatBubble(playerid,text, GetPlayerColor(playerid), 50.0, 6000);
    }
    }
    }
    else
    {
    new string[128],name[24];
    new stunde1, minute1, sekunde1;
    gettime(stunde1, minute1, sekunde1);
    GetPlayerName(playerid, name, 24);
    format(string, 128,"[%02d:%02d:%02d | ID: %d] %s %s : %s",stunde1,minute1,sekunde1,playerid,Admintextname(playerid),name,text);
    SendClientMessageToAll(FARBE_WARNING, string);
    SetPlayerChatBubble(playerid,text, FARBE_ROT, 50.0, 6000);
    }
    return 0;
    }

    MfG SkrilLinux


    Ich habe euch erfolgreich geholfen?
    -Dann wäre es nett wenn ihr 1x auf Bedanken klickt :)

    • Du musst den ChatBubble nur einmal setzen.
    • Du musst bei IsPlayerInRangeOfPoint die Variable i verwenden und nicht playerid.
    • Den String musst du ebenfalls nur einmal formatieren.
    • Du musst den ChatBubble nur einmal setzen.
    • Du musst bei IsPlayerInRangeOfPoint die Variable i verwenden und nicht playerid.
    • Den String musst du ebenfalls nur einmal formatieren.


    Du siehst schon das es einmal als Admin-Duty ist und einmal normal!
    Danke wegen dem i :)
    MfG

    MfG SkrilLinux


    Ich habe euch erfolgreich geholfen?
    -Dann wäre es nett wenn ihr 1x auf Bedanken klickt :)


  • Du siehst schon das es einmal als Admin-Duty ist und einmal normal!
    Danke wegen dem i :)
    MfG


    Ich sehe, dass du innerhalb der Schleife konstant alles neu machst. Das ist Quatsch. Genauso ist Variablen zu definieren in Schleifen Quatsch, da du nur Arbeitsspeicher verschwendest.