[Help!] gewöhnlicher und /r, /d, /f Chat

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
  • Ich bin ein Selfmade Scripter und scripte jetzt eine kleine Weile. Ich habe Fraktionen mit gTeam erstellt. Meine Fragen:


    1. Wie kann ich ein Fraktionschat machen, also mit /r, /d oder /f??


    2. Wenn ich einfach schreibe, dann können das alle lesen. Ich möchte, dass nur z. B. im Radius von 30 es lesen können und die im Radius von 50 noch in Grau lesen können. Und noch damit doch jeder mit dem anderen Komunizieren kann einen OOC Chat.


    pls Help.


    Gruss
    luckyguy

  • Einen Fraktionschat könntest du zum Beispiel so machen:


    Oben in den Script:

    new PlayerName[MAX_PLAYERS];


    Bei OnPlayerText

    if(strlen(text))
    {
    if(text[0]=='@') //wenn ein Spieler @ vor dem Text benutzt
    {
    if(IsPlayerAdmin(playerid)) //wenn ein Spieler Rcon Admin ist
    {
    SendClientMessage(FARBE,"%s: %s",PlayerName[playerid],text[1]); //dass erste "%s" zeigt den Spielernamen an, das zweite "%s" den text der gesendet werden soll
    return 0;
    }


    Bei if(text[0]=='@') kannst du das @ mit einem beliebigen Zeichen ersetzen.


    MfG Markus


    EDIT: Ich glaube ich werde mal eine inc machen für fraktionschats.

  • Danke vielmals, doch es hat noch Errors i-wie.


    C:\DOCUME~1\ADMINI~1\Desktop\gta.sa\Script\Windows\GAMEMO~1\REGIST~1.PWN(825) : error 035: argument type mismatch (argument 2)
    Pawn compiler 3.2.3664 Copyright (c) 1997-2006, ITB CompuPhase



    1 Error.


    Die dazugehörnde Zeilen:
    public OnPlayerText(playerid, text[])
    {
    if(strlen(text))
    {
    if(text[0]=='f') //wenn ein Spieler f vor dem Text benutzt
    {
    if(gTeam[playerid] == TEAM_ADAC)
    {
    SendClientMessage(0x33CCFFAA,"ADAC Member %s: %s",PlayerName[playerid],text[1]); //Zeile 825
    return 0;
    }
    }
    }
    return 1;
    }
    Und wäre das dann "/f [text]" oder "f [text]"??


    Und zum andern: Ich habe das mit O (OOC) Chat mit dcmd hinbekommen, doch wenn ich einfach schreibe, also z. b. "hallo", dann sehen dass alle und es soll so sein, "Hallo" soll man sehen im Radius von 50 und "/o hallo" sieht jeder. /o habe ich bereits hinbekommen, doch wie nehme ich das andere Raus? Und wo muss ich das mit

    Zitat

    "SendDistancedClientMessage"

    einfügen??


    Gruss
    luckyguy

  • new format_me[128],name[MAX_PLAYER_NAME];
    GetPlayerName(playerid,name,sizeof name);
    format(format_me,sizeof format_me,"ADAC Member %s: %s",name,text[1]);
    SendClientMessage(playerid,0x33CCFFAA,format_me);

    Mfg. BlackFoX_UD_ alias [BFX]Explosion


  • Leider hilft mir das was du gepostet hast nix BlackFox UD. Es sendet die Nachricht nur an sich selber und nicht an Alle ADAC Member. Ich habs mal mit DCMD probiert:


    dcmd(f,1,cmdtext); // unter OnPlayerCommandText


    dcmd_f(playerid,params[])
    {
    new fmsg[256];
    if(sscanf(params,"s",fmsg))
    {
    return SCM(playerid,GREY,"Benutzung: /f [Text]");
    }
    else
    {
    if(gTeam[playerid] == TEAM_ADAC)
    {
    new format_me[128],name[MAX_PLAYER_NAME];
    GetPlayerName(playerid,name,sizeof name);
    format(format_me,sizeof format_me,"Mechaniker %s: %s",name,fmsg);
    SendClientMessage(playerid,0x33CCFFAA,format_me);
    }
    }
    }


    Diese Nachricht sendet nur für diesen Spieler und ist daher für mich unbrauchlich.


    Pls jmd. Help.


  • dcmd(f,1,cmdtext); // unter OnPlayerCommandText


    dcmd_f(playerid,params[])
    {
    new fmsg[256];
    if(sscanf(params,"s",fmsg))
    {
    return SCM(playerid,GREY,"Benutzung: /f [Text]");
    }
    else
    {


    for(new i = 0;i < MAX_PLAYERS; i++)
    {
    if(IsPlayerConnected(i))
    {
    if(gTeam[i] == TEAM_ADAC)
    {

    new format_me[128],name[MAX_PLAYER_NAME];
    GetPlayerName(playerid,name,sizeof name);
    format(format_me,sizeof format_me,"Mechaniker %s: %s",name,fmsg);
    SendClientMessage(i, 0x33CCFFAA,format_me);
    }
    }
    }
    }
    }


    ;)

    Mfg kony




    Einmal editiert, zuletzt von QwErTs ()

  • Zum 2.


    oben:
    new Umgebungschat = 1;// 1 für an | 0 für aus
    Bei OnPlayerText:
    if (Umgebungschat)
    {
    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;
    }


    Zum 1.


    Benutzt du jetzt dcmd oder strcmp für die Commands?

  • Berichtigte Version, du willst ja nur Mechanicern senden:


    [pwn]
    dcmd(f,1,cmdtext); // unter OnPlayerCommandText


    dcmd_f(playerid,params[])
    {
    new fmsg[256];
    if(sscanf(params,"s",fmsg))
    {
    return SCM(playerid,GREY,"Benutzung: /f [Text]");
    }
    else
    {


    for(new i = 0;i < MAX_PLAYERS; i++)
    {
    if(IsPlayerConnected(i))
    {
    if(gTeam[i] == TEAM_ADAC)
    {

    new format_me[128],name[MAX_PLAYER_NAME];
    GetPlayerName(playerid,name,sizeof name);
    format(format_me,sizeof format_me,"Mechaniker %s: %s",name,fmsg);
    SendClientMessage(i, 0x33CCFFAA,format_me);
    }
    }
    }
    }
    }[/pwn]

    Mfg kony




  • Danke @ all. Ich werde es Testen.


    @ 8D: Ich bekomme folgenden Warn:
    C:\DOCUME~1\ADMINI~1\Desktop\gta.sa\Script\Windows\GAMEMO~1\REGIST~1.PWN(811) : warning 213: tag mismatch
    Pawn compiler 3.2.3664 Copyright (c) 1997-2006, ITB CompuPhase



    1 Warning.


    Ich habe da nur für mich entsprechend umgeändert. Hier die Zeilen:
    public OnPlayerText(playerid, text[])
    {
    if (Umgebungschat)
    {
    new msg[256];
    new aname[MAX_PLAYER_NAME];
    GetPlayerName(playerid, aname, sizeof(aname));
    format(msg, sizeof(msg), "((%s: %s))", aname, msg);
    SendDistancedClientMessage(20.0, playerid, msg,COLOR_WHITE,COLOR_WHITE,COLOR_WHITE,COLOR_WHITE,COLOR_WHITE); //Zeile 811
    }
    return 1;
    }


    Bei mir ging ProxDetector nicht, also habe ich dieses Incl runtergeladen und es mit SendDistancedClientMessage ersetzt.

  • do.de - Domain-Offensive - Domains für alle und zu super Preisen
  • (playerid, Float:radi, string[],col1,col2,col3,col4,col5);


    sorry mein Fehler. Hab es jetzt dementsprechend umgeändert. Ich teste es mal.


    Danke @ all nochmals


    //Edit: Es bugt 8D. Hier die Zeilen nochmals korrigiert:
    public OnPlayerText(playerid, text[])
    {
    if (Umgebungschat)
    {
    new msg[256];
    new aname[MAX_PLAYER_NAME];
    GetPlayerName(playerid, aname, sizeof(aname));
    format(msg, sizeof(msg), "%s sagt: %s", aname, msg);
    SendDistancedClientMessage(playerid,20.0,msg,COLOR_WHITE,COLOR_WHITE,COLOR_WHITE,GREY,GREY);
    }
    return 1;
    }


    Und habe noch Screen wie es ingame aussieht: