OnPlayerText Problem

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
  • Sehr geehrte Community,
    ich habe eben einfach mal ein kleines System gemacht für einen UC (Umgebungs Chat) & Globalen Chat, allerdings sendet er aus kuriösen Gründen immer nur den normalen Text ab. (Ohne Formatierung usw.)



    public OnPlayerText(playerid, text[])
    {
    new string[256], string2[256], teamRang[50];
    switch(playerInfo[playerid][teamLevel])
    {
    case 0: return teamRang = " ";
    case 1: return teamRang = "Supporter ";
    case 2: return teamRang = "Moderator ";
    case 3: return teamRang = "Administrator ";
    }
    format(string, sizeof(string), "{FFBB00}[Global]{ffffff} %s%s{ffffff} sagt: %s", teamRang, getName(playerid), text[1]);
    format(string2, sizeof(string2), "{377FB3}[UC]{ffffff} %s%s{ffffff} sagt: %s", teamRang, getName(playerid), text);
    if(text[0] == '#') return SendClientMessageToAll(COLOR_WHITE, string);
    else return SendRadiusMessage(playerid, COLOR_WHITE, string2);
    }


    Normalerweiße sollte das ganze doch eigentlich so funktionieren oder ?

  • In PAWN kannst du keine Strings mit == vergleichen, dafür musst du strcmp benutzen.


    Mein CS:GO Server: 62.75.168.39:27016


    Ich bin so hungrig, dass ich vor lauter Durst nicht weiß, was ich rauchen soll - so müde bin ich!
    Freedom is just another word for 'Nothing left to lose'

  • stock SendRadiusMessage(playerid, color, string[])
    {
    new Float:X, Float:Y, Float:Z;
    GetPlayerPos(playerid, X, Y, Z);
    for(new i = 0; i < MAX_PLAYERS; i++) { if(IsPlayerInRangeOfPoint(i, 15.0, X, Y, Z)) return SendClientMessage(i, color, string); }
    return 1;
    }

  • Falsch, denn er vergleicht nicht den String, sondern das erste Zeichen in der Zeichenkette.

    Und ein String mit einer Länge von einem Zeichen ist deiner Ansicht nach kein String mehr?


    Mein CS:GO Server: 62.75.168.39:27016


    Ich bin so hungrig, dass ich vor lauter Durst nicht weiß, was ich rauchen soll - so müde bin ich!
    Freedom is just another word for 'Nothing left to lose'

  • Und ein String mit einer Länge von einem Zeichen ist deiner Ansicht nach kein String mehr?


    Nein, ein Integer.
    Ein string ist ja nichts anderes als ein Integer mit mehreren Arrays.
    In jeden davon speicherst du die Zahl des Buchstabens rein.
    PAWNO bzw. SAMP konvertiert das dann zu einer Zeichenkette.


    //edit: Fehler gefunden:
    Nur der erste User, der in der Nähe ist erhält die Nachricht,
    weil dannach durch das 'return' der stock beendet wird.

  • public OnPlayerText(playerid, text[])
    {
    new string[256], string2[256], teamRang[50];
    switch(playerInfo[playerid][teamLevel])
    {
    case 0: return teamRang = " ";
    case 1: return teamRang = "Supporter ";
    case 2: return teamRang = "Moderator ";
    case 3: return teamRang = "Administrator ";
    }
    format(string, sizeof(string), "{FFBB00}[Global]{ffffff} %s%s{ffffff} sagt: %s", teamRang, getName(playerid), text[1]);
    format(string2, sizeof(string2), "{377FB3}[UC]{ffffff} %s%s{ffffff} sagt: %s", teamRang, getName(playerid), text);
    if(text[0] == '#') SendClientMessageToAll(COLOR_WHITE, string);
    else SendRadiusMessage(playerid, COLOR_WHITE, string2);
    return 0;
    }


    Probiers mal so...

  • An dem auch, aber das return in SendRadiusMessage wird Probleme machen ^^
    Wenn du alleine bist nicht, aber sobald mehr als Ein User auf dem Server ist.


    Hinweis:
    case 0: return teamRang = " ";


    // ändern zu:


    case 0: teamRang = " ";


  • Hab ich auch gemerkt eben. :P