Wie erstelle ich ein Chat Radius ? (by |John|)

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 Breadfish :)
    Da bin ich mal wieder aber diesmal mit
    einen Tutorial den es (glaub ich) nicht gibt.
    Also gut wir benötigen nur 3 Sachen.


    • Grundwissen.
    • 10 Minuten.
    • Wissen wie man mit strings umgeht.


    Fangen wir an.
    ___________________________________________________________________


    So jetzt würde man denken wir setzten den LimitGlobalChatRadius auf 20 oder
    40 aber genau das tun wir nicht. wir setzen ihn auf 0. Also gehen wir unter
    OnGameModeInit und setzten den GlobalChatRadius auf 0. Das sollte so aus-
    sehen :


    public OnGameModeInit()
    {
    LimitGlobalChatRadius(0);
    return 1;
    }


    So aber warum 0 wenn wir doch die Message an die Senden möchten
    die bei uns In der nähe sind? ganz einfach und zwar möchten wir machen
    das man die Message so bekommt : SpielerX sagt : X ich meine das so
    "|John| sagt : Hallo Welt". Um das hinzubekommen machen wir uns
    erstmal ein stock. wir nennen ihn SMessage


    stock SMessage(playerid,farbe,text[],Float:umkreis)
    {
    new Float:xm, Float:ym, Float:zm,maxplayers=GetMaxPlayers(); //erklärt ich von selbst
    if(GetPlayerPos(playerid,xm,ym,zm)) //das sollte sich auch von selbst erklären
    {
    for(new i=0;i<maxplayers;i++) //schleife die durch alle spieler geht
    if(IsPlayerConnected(i) && (i==playerid || IsPlayerInRangeOfPoint(i,umkreis,xm,ym,zm)))
    SendClientMessage(i,farbe,text);
    return 1;
    }
    return 0;
    }


    So nun muss die Nachricht auch irgendwie verschickt werden
    dafür gehen wir in das publlic OnPlayerText
    und schreben nun rein was passieren soll wenn er die nachricht abschickt


    public OnPlayerText(playerid, text[])
    {
    new string[128]; //string
    format(string, sizeof(string), "%s sagt: %s",Spielername(playerid),text); // sollte sich von selbst erklären
    SMessage(playerid,farbe,string,20); //Hier wird der text gesendet
    return 0;
    }


    So die 20 heißt das nur spieler die Nachricht bekommen die im Umkreis von 20m sind
    so ich hoffe ich konnte euch helfen
    viel spaß :)


    mfg John


    //warum ich das heir gemacht hab Ganz einfahc ich glaube das viele so einen Chat radius brauchen ..

    -Ted.

    2 Mal editiert, zuletzt von Ted. ()

  • Vielen dank :D Jetzt klappts endlich was ich vorhatte ;D


    11/10.


    Sehr Anfängerfreundlich finde ich.


    Endlich hab ichs hinbekommen das als Hitman steht Unbekannter sagt: %s und als normaler Playerid sagt: %s :D


    Aber was du da noch erwähnen solltest, das hab ich auch erst nach 2 minuten gecheckt. das man dort des return 1; was dort standartmäßig ist wegnehmen sollte, da sonst n Error kommt :D sonst, Kleines aber Feines tut. :p :thumbup: :thumbup:

  • bekomme einen Error:


    error 017: undefined symbol "Spielername"



    Zeile:
    format(string, sizeof(string), "%s sagt: %s",Spielername(playerid),text);




    Edit:Ja mein Script weis das mit Spielername der Name des spielers gemeint ist der die nachricht geschrieben hat.

  • Wenn du es nicht auf deins abändern willst bau am besten das in dein Script ein:


    stock Spielername(playerid)
    {
    new name[MAX_PLAYERS];
    GetPlayerName(playerid,name,sizeof(name));
    return name;
    }


    Zum Tutorial ist echt hilfreich hab ich hier sonst noch nicht gesehen. - 10/10


    Gruß Brand

  • Mann kann es auch anders machen Sonderzeichen ;)
    aber so ist es ein einfacher weg, und wenn machen
    will das ein spieler irgendwas als text senden soll kann man
    machen SMessage benutzen


    Und außerdem wenn man ein text schreibt steht dor jetzt X sagt : X

    -Ted.

  • @ |John|: Für mich ist es Spam, wenn du unter jeder Bewertung der spammenden Usern ein Danke schreibst.


    @ Tutorial: LimitGlobalChatRadius sollte unter OnGameModeInit benutzt werden und nicht jedesmal, falls eine Nachricht gesendet wird - unnötig!

  • Stätig ein Danke unter Bewertungen zu schreiben hat eigentlich nur den Sinn die Beitragszahl eines Benutzers hochzuschrauben.

    So mir geht es nicht um die Beitragszahl da es mir egal ist wie viele sterne ich hab oder wie viele Beiträge ich hab
    Ja ich bedanke mich, ich find da ist nichts bei, wie gesagt nicht wegen der Beitragszahl ehr um das zu pushen ;)
    mfg;

    -Ted.