Nachricht wird nicht gecancelt

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 Abend Liebe Breadfish-Community,
    und zwar benötige ich eure Hilfe:


    Ich möchte keinen globalen Chat haben, sonder nur einen Chat, den die
    Spieler in einem gewissen Umkreis sehen können. Wenn man in diesem Chat eine Beleidigung schreibt,
    soll diese nicht bei den anderen Spielern ankommen. Jedoch passiert dies trotzdem und die globale Cha-Nachricht
    wird auch abgesendet.


    Bild:


    Code:
    [list=1]
    public OnPlayerText(playerid,text[])
    {
    new string[256];
    if(SpielerInfo[playerid][Istreport]!=0)
    {
    format(string,256,""Desing"[Report]:{FFFFFF} (%d)%s sagt: %s",playerid,GetName(playerid),text),SendClientMessage(SpielerInfo[playerid][Istreport],WHITE,string);
    SendClientMessage(playerid,WHITE,string);
    return 0;
    }

    if(Eingeloggt[playerid]==0)return 1;
    if(SpielerInfo[playerid][Mute]!=-1)return SendClientMessage(playerid,RED,"Du bist gemutet!");
    if(CheckBadWords(playerid,text))return 0;
    SetPVarInt(playerid,"TextSpamCount",GetPVarInt(playerid,"TextSpamCount")+1);
    if(GetPVarInt(playerid,"TextSpamCount")==5 && SpielerInfo[playerid][Mute]==-1 && !IsPlayerNPC(playerid))
    {
    format(string,256,"System: (%d)%s wurde 2 Minuten vom System gemutet. Grund: Spam",playerid,GetName(playerid));
    SendClientMessageToAll(RED,string);
    SpielerInfo[playerid][Mute]=2;
    SetPVarInt(playerid,"TextSpamCount",0);
    return 0;
    }

    format(string,256,"(%d)%s sagt: %s",playerid,GetName(playerid),text);
    SMessage(playerid,WHITE,string,20);
    SetPlayerChatBubble(playerid,text,0xFF0000FF,25,10000);


    if(anty(text))
    {
    format(string,256,"( Verdacht auf Abwerben (Normaler Chat):(%d)%s sagt: %s )",playerid,GetName(playerid),text);
    SendAdminMessage(RED,string);
    }
    return 0;
    }


    stock CheckBadWords(playerid, text[])
    {
    new BadWords[][] = {"schlampe"};
    for(new i = 0; i < sizeof(BadWords); i++)
    {
    if(strfind(text, BadWords[i], true) != -1)
    {
    new KMessage[128];
    format(KMessage, sizeof(KMessage), "System: (%d)%s wurde 5 Minuten vom System gemutet. Grund: Beleidigung", playerid,GetName(playerid));
    SendClientMessage(playerid, RED, KMessage);
    SpielerInfo[playerid][Mute] = 5;
    SendClientMessage(playerid,RED,"System: Bitte unterlasse das Benutzen von Schimpfwörtern.");
    return 0;
    }
    }
    return 0;
    }
    [/list]



    Ich hoffe mir kann jemand helfen.


    MfG

  • stock CheckBadWords(playerid, text[])
    {
    new BadWords[][] = {
    "schlampe"
    };
    for(new i = 0; i < sizeof(BadWords); i++)
    {
    if(strfind(text, BadWords[i], true) != -1)
    {
    new KMessage[128];
    format(KMessage, sizeof(KMessage), "System: (%d)%s wurde 5 Minuten vom System gemutet. Grund: Beleidigung", playerid,GetName(playerid));
    SendClientMessage(playerid, RED, KMessage);
    SpielerInfo[playerid][Mute] = 5;
    SendClientMessage(playerid,RED,"System: Bitte unterlasse das Benutzen von Schimpfwörtern.");
    return 1;
    }
    }
    return 0;
    }


    Mit
    if(CheckBadWords(playerid,text))return 0;

  • public OnPlayerText(playerid,text[])
    {
    new string[256];
    if(SpielerInfo[playerid][Istreport]!=0)
    {
    format(string,256,""Desing"[Report]:{FFFFFF} (%d)%s sagt: %s",playerid,GetName(playerid),text),SendClientMessage(SpielerInfo[playerid][Istreport],WHITE,string);
    SendClientMessage(playerid,WHITE,string);
    return 0;
    }
    if(Eingeloggt[playerid]==0)return 1;
    if(SpielerInfo[playerid][Mute]!=-1)
    {
    SendClientMessage(playerid,RED,"Du bist gemutet!");
    return 0;
    }
    if(CheckBadWords(playerid,text) == 1)
    {
    return 0;
    }
    SetPVarInt(playerid,"TextSpamCount",GetPVarInt(playerid,"TextSpamCount")+1);
    if(GetPVarInt(playerid,"TextSpamCount")==5 && SpielerInfo[playerid][Mute]==-1 && !IsPlayerNPC(playerid))
    {
    format(string,256,"System: (%d)%s wurde 2 Minuten vom System gemutet. Grund: Spam",playerid,GetName(playerid));
    SendClientMessageToAll(RED,string);
    SpielerInfo[playerid][Mute]=2;
    SetPVarInt(playerid,"TextSpamCount",0);
    return 0;
    }

    format(string,256,"(%d)%s sagt: %s",playerid,GetName(playerid),text);
    SMessage(playerid,WHITE,string,20);
    SetPlayerChatBubble(playerid,text,0xFF0000FF,25,10000);


    if(anty(text))
    {
    format(string,256,"( Verdacht auf Abwerben (Normaler Chat):(%d)%s sagt: %s )",playerid,GetName(playerid),text);
    SendAdminMessage(RED,string);
    }
    return 0;
    }


    Wie sieht es so aus?

  • public OnPlayerText(playerid,text[])
    {
    print("OnPlayerText gestartet");
    new string[256];
    print("1");
    if(SpielerInfo[playerid][Istreport]!=0)
    {
    print("2");
    format(string,256,""Desing"[Report]:{FFFFFF} (%d)%s sagt: %s",playerid,GetName(playerid),text),SendClientMessage(SpielerInfo[playerid][Istreport],WHITE,string);
    SendClientMessage(playerid,WHITE,string);
    return 0;
    }
    print("3");
    if(Eingeloggt[playerid]==0)return 1;
    print("4");
    if(SpielerInfo[playerid][Mute]!=-1)
    {
    print("5");
    SendClientMessage(playerid,RED,"Du bist gemutet!");
    return 0;
    }
    print("6");
    if(CheckBadWords(playerid,text) == 1)
    {
    print("7");
    return 0;
    }
    print("8");
    SetPVarInt(playerid,"TextSpamCount",GetPVarInt(playerid,"TextSpamCount")+1);
    print("9");
    if(GetPVarInt(playerid,"TextSpamCount")==5 && SpielerInfo[playerid][Mute]==-1 && !IsPlayerNPC(playerid))
    {
    print("10");
    format(string,256,"System: (%d)%s wurde 2 Minuten vom System gemutet. Grund: Spam",playerid,GetName(playerid));
    SendClientMessageToAll(RED,string);
    SpielerInfo[playerid][Mute]=2;
    SetPVarInt(playerid,"TextSpamCount",0);
    return 0;
    }

    print("11");
    format(string,256,"(%d)%s sagt: %s",playerid,GetName(playerid),text);
    print("12");
    SMessage(playerid,WHITE,string,20);
    print("13");
    SetPlayerChatBubble(playerid,text,0xFF0000FF,25,10000);


    print("14");
    if(anty(text))
    {
    print("15");
    format(string,256,"( Verdacht auf Abwerben (Normaler Chat):(%d)%s sagt: %s )",playerid,GetName(playerid),text);
    SendAdminMessage(RED,string);
    }
    print("OnPlayerText ausgefürhrt.");
    return 0;
    }


    Das nennt sich Debugging.
    Lass es mal so laufen. Dann poste was im Server Log steht, und poste, was du eingegeben hast.
    Beschreibe dann, was eigentlich passieren sollte.

  • Wenn ich ganz normal schreibe, erscheint folgendes in den Logs:


    Sprich, der Teil fehlt:


    • print("13");
      SetPlayerChatBubble(playerid,text,0xFF0000FF,25,10000);


      print("14");
      if(anty(text))
      {
      print("15");
      format(string,256,"( Verdacht auf Abwerben (Normaler Chat):(%d)%s sagt: %s )",playerid,GetName(playerid),text);
      SendAdminMessage(RED,string);
      }
      print("OnPlayerText ausgefürhrt.");


      /// SMessage:
      stock SMessage(playerid,farbe,text[],Float:umkreis)
      {
      new Float:xm, Float:ym, Float:zm,maxplayers=GetMaxPlayers();
      if(GetPlayerPos(playerid,xm,ym,zm))
      {
      for(new i=0;i<maxplayers;i++)
      {
      if(Eingeloggt[i] == 1 && !IsPlayerNPC(i) && (i==playerid || IsPlayerInRangeOfPoint(i,umkreis,xm,ym,zm)))
      {
      SendClientMessage(i,farbe,text);
      /// Hier fehlt das return 1;
      }
      }
      }
      return 0;
      }
      [/list]

  • Leon_Dachser:
    Das mit dem fehlenden return 1 stimmt nicht ganz.


    Mache es so:


    stock SMessage(playerid,farbe,text[],Float:umkreis)
    {
    new Float:xm, Float:ym, Float:zm;
    if(GetPlayerPos(playerid,xm,ym,zm))
    {
    for(new i=0;i<sizeof(Eingeloggt);i++) //Hier war das Problem, dass "Eingeloggt" als Array gesprengt worden ist.
    {
    if(Eingeloggt[i] == 1 && !IsPlayerNPC(i) && (i==playerid || IsPlayerInRangeOfPoint(i,umkreis,xm,ym,zm)))
    {
    SendClientMessage(i,farbe,text);
    }
    }
    }
    return 0;
    }