chat in einem bestimmten umkreis

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 viele möglichkeiten wie man miteinander schreiben kann:


    ein /o(oc) ein /w(hisper) ein /t(eam) ein /report für meldungen.
    nun habe ich außer diesen ja den normalen chat.
    ich möchte ihn nicht komplett ausschlaten, jedoch sollen nur leute in einem bestimmten bereich den text lesen können.
    könnte mir einer sagen wie ich soetwas mache?

  • Eine for schleife erstellen.
    z.B. so:


    for(new i=0;i<GetMaxPlayers();i++)
    {
    }


    Vorher die Koordinaten vom player der den text getippt hat per script rausfinden und dan bei der for-schleife
    mit IsPlayerInRangeOfPoint überprüfen ob er in der nähe der koordinaten des Spielers ist. Wen ja dan gebe den Text aus.

  • joa habs so halb verstanden, nur kanns nicht umsetzten. das ich die die koordinaten vom spieler abfragen muss und gucken ob der andere spieler in der nähe des spielerds ist, wusste ich auch, aber umsetzten kann ich es nicht.

  • @author: versuch es mal mit proxdetectors
    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);
    //radi = 2.0; //Trigger Radius
    GetPlayerPos(targetid, 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) && (tempposx > -radi)) && ((tempposy < radi) && (tempposy > -radi)) && ((tempposz < radi) && (tempposz > -radi)))
    {
    return 1;
    }
    }
    return 0;
    }

    Einmal editiert, zuletzt von cruzer ()

  • ach quatsch kinderchen geht viel easier!


    In OnGameModeInit LimitGlobalChatRadius(200.0);
    rein und fertig die 200.0 is der Radius ich weiss nich genau wie der berechnet wird aber das reicht ich hab das auch und es funzt!

  • ich hab es so verstanden das er das so haben will!

  • Zitat

    [...]Ich habe viele möglichkeiten wie man miteinander schreiben kann:


    ein /o(oc) ein /w(hisper)[...]

    ;) wäre ja voll für die Katz, wenn man einen bestehenden chat verändert und dann einen anderen sich noch dazuerstellen muss... :P

  • jo hast recht ich habs halt miss verstanden!


    Tut mir leid!

  • do.de - Domain-Offensive - Domains für alle und zu super Preisen
  • also:


    man hat von anfang an einen normalen chat. wenn man "t" drückt und schreibt kann es jeder lesen.
    genau diesen chat will ich einschränken. er soll nur in einem bestimmten umkreis lesbar sein.
    warum?
    ich habe genug andere chats mit denen man sich austauschen kann ( /o, /w, /t...) und der normale einfache schlichte chat kommt noch dazu.
    ich denke das mit dem global dings bums im OnGameMode ist das was ich meine

  • :D Na siehste!
    jop das sollte auch funktionieren fals du nen RL Server hast kann das echt stören! Wenn alle durcheinander schreiben! :thumbup:

  • so ist der chat radius

    LimitGlobalChatRadius(200.0);



    und 3d text eben eine label erstellen


    da es kein wiki mehr gibt kann ich es dir net sagen weil ich damit schon lange nix mehr zu tun hatte

  • ja wenn er schreibt also normaler chat, soll über den kopf ein 3dtextlabel erstellt werden mit genau seinem text. also ich muss bei OnPlayerText abfragen was er schreibt und das dann im 3dtextlabe format wiedergeben. dieser braucht dann acuh die koordinaten von spieler. nur wie frage ich ab was er geschrieben hat und dann brauche ich die koordinaten

  • ja wenn er schreibt also normaler chat, soll über den kopf ein 3dtextlabel erstellt werden mit genau seinem text. also ich muss bei OnPlayerText abfragen was er schreibt und das dann im 3dtextlabe format wiedergeben. dieser braucht dann acuh die koordinaten von spieler. nur wie frage ich ab was er geschrieben hat und dann brauche ich die koordinaten


    Ich empfehle dir in diesem Fall das Speechbubble Feature, das ist schließlich für exakt diesen Zweck da.

  • Klar, hier die Defintion aus der Wiki:


    SetPlayerChatBubble




    Example:


    public OnPlayerText(playerid, text[])
    {
    SetPlayerChatBubble(playerid, text, 0xFF0000FF, 100.0, 10000);
    return 1;
    }

  • do.de - Domain-Offensive - Domains für alle und zu super Preisen