Frakchat Servermessage

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 Moonraker136,


    Ich habe dir mal einen Fraktionschat gescriptet, du solltest dazu das Include "ocmd" haben und das Plugin "sscanf".
    Bitte passe den Code noch an dein Script an.



    ocmd:f(playerid,params[])
    {
    if(isPlayerInFrakt(playerid, 0))return SendClientMessage(playerid, COLOR_RED, "Du bist in keiner Fraktion.");
    new string[300];
    if(sscanf(params, "s[300]", string))return SendClientMessage(playerid, COLOR_RED, "Nutzung: /f [TEXT]");
    new frakID = sInfo[playerid][fraktion];
    format(string,sizeof(string), "** %s: %s", getPlayerName(playerid), string);
    for(new i=0; i<MAX_PLAYERS; i++)
    {
    if(!IsPlayerConnected(i))continue;
    if(!isPlayerInFrakt(i, frakID))continue;
    SendClientMessage(i, COLOR_BLUE, string);
    }
    return 1;
    }


    Ich hoffe ich konnte helfen :)


    MFG German_ScripterHD


    Mit freundlichen Grüßen
    German_ScripterHD


  • ocmd:f(playerid,params[])
    {
    if(!isPlayerInFrakt(playerid, 0))return SendClientMessage(playerid, COLOR_RED, "Du bist in keiner Fraktion.");
    new string[300];
    if(sscanf(params, "s[300]", string))return SendClientMessage(playerid, COLOR_RED, "Nutzung: /f [TEXT]");
    new frakID = sInfo[playerid][fraktion];
    format(string,sizeof(string), "** %s: %s", getPlayerName(playerid), string);
    for(new i=0; i<MAX_PLAYERS; i++)
    {
    if(!IsPlayerConnected(i))continue;
    if(!isPlayerInFrakt(i, frakID))continue;
    SendClientMessage(i, COLOR_BLUE, string);
    }
    return 1;
    }


    Wenn dann musst du bei deinem ersten IF abfragen, ob die playerid nicht in der Fraktion ist. Je nachdem, was die Funktion "isPlayerInFrakt" zurückgibt. Ich hoffe mal, sie gibt 1 (true) zurück wenn er in der Fraktion ist und 0 (false) wenn nicht.

  • Nein, er hat es schon richtig gemacht. Sonst würde es ja nur für Fraktion 0 gehen, so wie du das machst.
    Allerdings ist es schlecht, eine Texteingabe mit 300 Zeichen zu machen, wenn SendClientMessage nur maximal 145 Zeichen anzeigen kann.


    Daher so:

    ocmd:f(playerid,params[])
    {
    if(isPlayerInFrakt(playerid, 0)) return SendClientMessage(playerid, COLOR_RED, "Du bist in keiner Fraktion.");
    new string[145];
    if(sscanf(params, "s[145]", string)) return SendClientMessage(playerid, COLOR_RED, "Nutzung: /f [TEXT]");
    format(string,sizeof(string), "** %s: %s", getPlayerName(playerid), string);
    for(new i = 0; i<MAX_PLAYERS; i++)
    {
    if(!IsPlayerConnected(i)) continue;
    if(!isPlayerInFrakt(i, sInfo[playerid][fraktion])) continue;
    SendClientMessage(i, COLOR_BLUE, string);
    }
    return 1;
    }