Wie mache ich einen Fraktionschat? (--Mehre Chats)

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.
    Erstmal vorweg:
    Ich benutze KEIN Godfather!
    Also:
    Ich habe bei mir mehre gTeams und die dazugehörigen gLeader. Nun möchte ich das JEDER dieser Fraktionen einen eigenen Fraktionschat hat.
    Ich möchte aber auch das er je nach Fraktion und Fraktionsrang den Text anders ausgibt! Bei mir ist alles so definiert:



    gTeam == TEAM_NAME
    gLeader == TEAM_NAME
    pInfo[playerid][fRang] == Rang


    Also wie mache ich es so, das z.b. bei Rang 1 da steht:
    **(1( Rekrut Name: Text))**


    und bei Rang 2
    **(2( Cop Name: Text))** ?


    Aber es sollte auch wie gesagt z.b. bei
    gTeam 1 ||| Rang 1 da stehen Cadet,
    und z.b. bei gTeam 2 || Rang 1 Jäger. (beispiele)


    Hab schon ein paar missglückte versuche hinter mir -.-



    Dankeschön.
    [NeS]Teddy


    Bitte auf das Bild Klicken für Mehr Info's!



    Bitte auf das Bild Klicken für Mehr Info's!

    Einmal editiert, zuletzt von [NeS]Teddy ()

  • Sorry habe nicht geschlaffen 29 stunden :D


    == Und Sorry ich kann dir nicht helfen.

    Einmal editiert, zuletzt von ★ !Blanco! _Since_ ★ ()

  • Bitte verbessern !! [Fraktion Chat ]

    Wieso das, Fraktionschat stimmt doch, das ist Mehrzahl nicht Einzahl ...
    Frak-tions-chat ...
    Aber eig ist das auch egal ...


    //edit: Was solls, sry ich kann dir leider net Helfen.

  • ICh kenne deinen Gamemode nicht, du müsstest noch sagen welche Definition enum für gTeam hat also zb.


    PlayerInfo[playerid][gTeam]



    forward TeamChat(team, color, string[]);


    public TeamChat(team, color, string[])
    {
    for(new i = 0; i < MAX_PLAYERS; i++)
    {
    if(IsPlayerConnected(i))
    {
    if(pInfo[i][gTeam] == TEAM_NAME || pInfo[i][gTeam] == TEAM_NAME)
    {
    if(!fRang[i])
    {
    SendClientMessage(i, color, string);
    }
    }
    }
    }
    }


    //Unter deinen /Clanchat Befehl


    if(pInfo[playerid][gTeam] == TEAM_NAME || pInfo[playerid][gTeam] == TEAM_NAME)
    {
    format(string, sizeof(string), "** Godfather %s: %s. )) **", sendername, result);
    TeamChat(PlayerInfo[playerid][gLeader ], Grau, string);
    }

    [align=center]
    Mta Script Editor - Work in Progress

  • Bisher hatte ich alles so:


    new gTeam[MAX_PLAYERS];
    new gLeader[MAX_PLAYERS];


    #define TEAM_NAME 1
    #define TEAM_NAME 2
    #define TEAM_NAME 3
    #define TEAM_NAME 4
    #define TEAM_NAME 5
    #define TEAM_NAME 6
    #define TEAM_NAME 7


    Aber ich schreibs in: pInfo[playerid][fMember] und pInfo[playerid][fLeader] um.
    Wie gesagt, es soll bitte je nach pInfo[playerid][fRang] einen anderen Text ausgeben.
    Also als Rang 1 : Rekrut Name: Text. |||| Rang2 : Soldat Name Text


    Bitte auf das Bild Klicken für Mehr Info's!



    Bitte auf das Bild Klicken für Mehr Info's!

  • Poste mal deinen Clanchat Befehl


    Was meinst du mit Clanchat ? Ich habe einen /Adminchat .. (Gamemode ist 100% Selfmade)


    dcmd_a(playerid, params[])
    {
    new msg[100],
    str[128],
    pname[16];


    if(sscanf(params,"s",msg))
    {
    if (pInfo[playerid][alevel] == 1 || pInfo[playerid][alevel] == 2 || pInfo[playerid][alevel] == 1337 || pInfo[playerid][alevel] == 1338)
    {
    return SendClientMessage(playerid, 0xFF0000FF, "Benutze: /A [TEXT].");
    }
    else
    {
    SendClientMessage(playerid, 0xFF0000FF, "Du bist kein Admin!");
    }
    }
    GetPlayerName(playerid, pname, sizeof(pname));
    format(str, sizeof(str), "%s (Level: %d): %s", pname, pInfo[playerid][alevel], msg);
    for(new i = 0; i < MAX_PLAYERS; i++)
    {
    if (pInfo[i][alevel] == 1 || pInfo[i][alevel] == 2 || pInfo[i][alevel] == 1337 || pInfo[i][alevel] == 1338)
    {
    SendClientMessage(i, 0xFFFF00FF, str);
    }
    }
    return 1;
    }


    Ich hätte halt gerne für die 5 Fraktionen (2 sind standart. da will ich keinen fchat) einen Fraktionschat, der je nach Rang etwas anderes ausgibt.


    Bitte auf das Bild Klicken für Mehr Info's!



    Bitte auf das Bild Klicken für Mehr Info's!

  • "Extra Frage":
    Wie stelle ich den normalen Text von Global (alle können es lesen) auf Nähe (nur die in der nähe können den text lesen)?


    Alte Frage (fchat je nach fraktion und rang) besteht immernoch.
    Danke
    mfg
    [NeS]Teddy


    Bitte auf das Bild Klicken für Mehr Info's!



    Bitte auf das Bild Klicken für Mehr Info's!

    Einmal editiert, zuletzt von [NeS]Teddy ()

  • LimitGlobalChatRadius(Float:radius);
    unter OnGameModeInit.


    Hier mal ein Fraktions Chat:
    stock sendTeamMsg(teamid, color, str[])
    {
    for(new j = 0; j < MAX_PLAYERS; j++)
    {
    if(IsPlayerConnected(j) && gTeam[j] == teamid || gLeader[j] == teamid)
    {
    new string[128], name[16]; GetPlayerName(j, name, sizeof(name));
    format(string, sizeof(string), "%s (Rank %d): %s", name, pRank[j], str);
    SendClientMessage(j, color, string);
    return 1;
    }
    }
    return 1;
    }


    public OnPlayerText(playerid, text[])
    {
    if(text[0] == '!')
    {
    sendTeamMsg(gTeam[playerid], 0xFFFF00FF, text);
    return 0;
    }
    return 1;
    }

  • Habs endlich^^
    Hab mir ein GF runtergeladen und da den Family Chat rauskopiert und auf meins Umgeschrieben^^
    Danke an alle die mir Geholfen haben ;) (Das mit dem Global Chat geht auch^^).


    [NeS]Teddy


    Noch eine Frage:
    /S(chreien)
    Also wenn ich /s [text] mache, können das leute auch in 50m entfernung hören. Wie mache ich sowas ?
    Unter OnGameModeInit habe ich: LimitGlobalChatRadius(30);
    Wie mache ich also einen Schreien befehl?


    Bitte auf das Bild Klicken für Mehr Info's!



    Bitte auf das Bild Klicken für Mehr Info's!

  • Das kannst du mit PlayerToPoint,Godfather´s ProxDetector oder LimitGlobalChatRadius(200.0); machen


    Float:chat_radius


    Die 200 steht für den Radius, desto größer der ist, desto größer der Radius indem andere Spieler deine ClientNachricht lesen können.
    Aber weil du ja gf schon hast würd ich dir ProxDetector empfehlen.


    Funktioniert praktisch wie PlayerToPoint mit Radiusangabe und direkt Output für die SendClientMessage

    [align=center]
    Mta Script Editor - Work in Progress

  • Also erstmal vorweg: Ich benutze kein GF, Ist mir zusehr "standart".
    Wie muss der /s Befehl aussehen, das man auch innerhalb von 60m den Text lesen kann ?, aber der normale auf der Beschränkung bleibt ? (Habs bis jetzt so, das der Normale auf 30,0 Beschränkt ist. /s sollte auf 60).


    MFG
    [NeS]Teddy


    Bitte auf das Bild Klicken für Mehr Info's!



    Bitte auf das Bild Klicken für Mehr Info's!

  • Zuerst mal brauchst du das hier:
    /* By Alex "Y_Less" Cole */
    stock IsPlayerInRangeOfPoint(Float:range, playerid, Float:x, Float:y, Float:z)
    {
    new
    Float:px,
    Float:py,
    Float:pz;
    GetPlayerPos(playerid, px, py, pz);
    px -= x;
    py -= y;
    pz -= z;
    return ((px * px) + (py * py) + (pz * pz)) < (range * range);
    }


    /* Dann eine Funktion für Message an alle im Umkreis: */


    stock Shout(playerid, color, text[], Float:range2read)
    {
    new
    i,
    Float:sX,
    Float:sY,
    Float:sZ;
    GetPlayerPos(playerid, sX, sY, sZ);
    for(i = 0; i < MAX_PLAYERS; i++)
    {
    if(IsPlayerInRangeOfPoint(range2read, i, sX, sY, sZ))
    {
    SendClientMessage(i, color, text);
    return 1;
    }
    }
    return 1;
    }


    Ich habs nicht getestet, aber kompiliert ohne Errors.

  • Dankeschön Bright ;) Bei mir auch kein Error beim Compilen, und ingame zeigt er denn Text (String) an. Aber jetzt muss ich nurnoch testen ob die Reichweite stimmt :P


    [NeS]Teddy


    Bitte auf das Bild Klicken für Mehr Info's!



    Bitte auf das Bild Klicken für Mehr Info's!

  • Also das schreien Geht irgendwie nicht (er zeigt den Text nur bei mir 2mal)
    + Plötzlich sehe ich andere Spieler auf der Karte nurnoch, wenn diese auch in meiner nähe sind. Also in dem vorgegebenen LimitGlobalChatRadius...
    mein schreien:
    dcmd_s(playerid, params[])
    {
    new msg[128];
    new j;


    if(sscanf(params,"s",msg))
    {
    SendClientMessage(playerid, 0xFF0000FF, "Benutze: /S [TEXT].");
    return 1;
    }


    for(j = 0; j < MAX_PLAYERS; j++)
    {
    new str[128], pname[16];


    GetPlayerName(playerid, pname, sizeof(pname));
    format(str, sizeof(str), "%s schreit: %s", pname, msg);
    Shout(j, COLOR_WHITE, str, 50);
    }
    return 1;
    }


    Bitte auf das Bild Klicken für Mehr Info's!



    Bitte auf das Bild Klicken für Mehr Info's!