[SUCHE] gTeam /g oder /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
  • Hallo leute,


    könnt Ihr mir helfen ? mein Script braucht nur noch diesen gangchat und zwar gibt es doch sowas das wenn man /f oder /g <text> schreibt das man dann nur im team schreiben und lesen kann z.b /g Hallo Gang Nachricht Atze: Hallo oder i-wie sowas aber nur Gangmitglieder das heißt groove street kann nur zu gs lesen und schreiben ballas zu ballas etc. :)


    100% Selfmade Reallife Loading ...



    Einmal editiert, zuletzt von Poseidon ()

  • Unter OnPlayerCommandText


    falls nicht vorhanden, dass einfügen:
    new idx,tmp[256],cmd[256];
    cmd = strtok(cmdtext, idx);


    danach:
    if(!strcmp("/f",cmd,true) || !strcmp("/g",cmd,true))
    {
    new sendername[MAX_PLAYER_NAME];
    GetPlayerName(playerid, sendername, sizeof(sendername));
    new length = strlen(cmdtext);
    while ((idx < length) && (cmdtext[idx] <= ' '))
    {
    idx++;
    }
    new offset = idx;
    new result[64];
    while ((idx < length) && ((idx - offset) < (sizeof(result) - 1)))
    {
    result[idx - offset] = cmdtext[idx];
    idx++;
    }
    result[idx - offset] = EOS;
    if(!strlen(result))
    {
    SendClientMessage(playerid, GREY, "Benutzung: /f [Nachricht] oder /g [Nachricht]");
    return 1;
    }
    for(new i=0;i<MAX_PLAYERS;i++)
    {
    if(gTeam[playerid] == gTeam[i])
    {
    new name[MAX_PLAYER_NAME],string[128];
    GetPlayerName(playerid,name,sizeof(name));
    format(string,128,"%s: %s",name,(result));
    SendClientMessage(i,HIER DEINE FARBE,string);
    }
    }
    }


    Oder so:

    forward SendPlayerTeamMessage(playerid,color,const string[]); // dorthin, wo alle anderen forwards sind


    // das unten folgende ganz unten im Script
    public SendPlayerTeamMessage(playerid,color,const string[])
    {
    for(new i=0;i<MAX_PLAYERS;i++)
    {
    if(gTeam[i] == gTeam[playerid])
    {
    SendClientMessage(i,color,string);
    }
    }
    return 1;
    }


    // jetzt kannste beim Befehl /f /g dieses machen:
    if(!strcmp("/f",cmd,true) || !strcmp("/g",cmd,true))
    {
    new sendername[MAX_PLAYER_NAME];
    GetPlayerName(playerid, sendername, sizeof(sendername));
    new length = strlen(cmdtext);
    while ((idx < length) && (cmdtext[idx] <= ' '))
    {
    idx++;
    }
    new offset = idx;
    new result[64];
    while ((idx < length) && ((idx - offset) < (sizeof(result) - 1)))
    {
    result[idx - offset] = cmdtext[idx];
    idx++;
    }
    result[idx - offset] = EOS;
    if(!strlen(result))
    {
    SendClientMessage(playerid, GREY, "Benutzung: /f [Nachricht] oder /g [Nachricht]");
    return 1;
    }
    new name[MAX_PLAYER_NAME],string[128];
    GetPlayerName(playerid,name,sizeof(name));
    format(string,128,"%s: %s",name,(result));
    SendPlayerTeamMessage(playerid,HIER DEINE FARBE,string);
    }


    Ist ungetestet, aber bin mir 99,9% sicher, dass die erste Variante funktioniert. ;)


    MFG luckyguy

  • Dann mach es so:


    OnPlayerCommandText sieht gewöhnlich wie folgt aus:


    public OnPlayerCommandText(playerid, cmdtext[])
    {
    if(!strcmp("/bla",cmdtext,true)) //.... und solche weiteren codes
    {


    } // und natürlich solche codes und dann am schluss
    return 0;
    }


    Jetzt musst du das 'return 0;' zu 'return 1;' wechseln:
    public OnPlayerCommandText(playerid, cmdtext[])
    {
    if(!strcmp("/bla",cmdtext,true)) //.... und solche weiteren codes
    {


    } // und natürlich solche codes und dann am schluss
    return 1; // <== Hier die änderung
    }


    MFG luckyguy