Leaderchat 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
  • Hallo liebe Breafish leute,


    Unszwar habe ich einen problem, unszwar habe ich einen leaderchat gemacht und ich habe mich seit 30 min dadrangessesen, und komme immer noch nicht weiter
    wenn ich ingame jetzt /lc Text eingebe macht sich ncihts...
    Ich hoffe ihr könnt mir weiter helfen..


  • if(sscanf(params, "s[228]", textchat)) return SendClientMessage(playerid, COLOR_WHITE, "Befehl: /lc [Text]");
    die [228] kannst du weg lassen.

    if(leaderchat == 0) return GetPlayerName(playerid, sendername, sizeof(sendername));
    Was soll das bringen?

  • ocmd:lc(playerid,params[])
    {
    new textchat[228],sendername[MAX_PLAYERS],string[128];
    if(sscanf(params, "s", textchat)) return SendClientMessage(playerid, COLOR_WHITE, "Befehl: /lc [Text]");
    if(PlayerInfo[playerid][pLeader] == 0) return SendClientMessage(playerid, COLOR_WHITE, "Du bist kein Leader !");
    format(string, sizeof(string), "[%s] %s: %s", GetFactionNameOfFaction(PlayerInfo[playerid][pLeader]), sendername, textchat);
    SendMessageToAllLeaders(string,0x59D365FF);
    return 1;
    }






    stock SendMessageToAllLeaders(message[], color)
    {
    foreach(Player, i)
    {
    if(PlayerInfo[i][pLeader] = 1)
    {
    SendClientMessage(i, color, message);
    }
    }
    return 1;
    }


    Da, hab das mal aus dem Kopf gemacht, bei weiteren Fragen einfach via Skype melden..

  • Ich habe immer nur beim definieren des strings die länge angegeben, aber nicht mehr wenn ich es mit sscanf genutzt habe.
    Bisher hatte ich damit keine probleme.


    Aber jetzt hab ich auch noch etwas dazu gelernt ^^


    Die Warnings String Buffer Overflow, welche in der Serverlog angezeigt werden resultieren darraus , wenn man die Stringlänge vergisst anzugeben. Dies jedoch nur sollte man das Sscanf-Plugin verwenden. Bei der Funktion , welche noch viele nutzen ist das nicht der Fall, jedoch ist es dabei möglich den String zu überladen was letztendlich den Server offline setzt siehe SoL Skript (/sirene , /kofferraum).

  • Probier das mal alles so:



    ocmd:lc(playerid,params[])
    {
    new textchat[228],string[128];
    if(PlayerInfo[playerid][pLeader] == 0) return SendClientMessage(playerid, COLOR_WHITE, "Du bist kein Leader !");
    {
    for(new i=0; i<GetMaxPlayers(); i++)
    {
    if(sscanf(params,"s",text))return SendClientMessage(playerid,DUNKELGRAU,"Benutze: /f [Dein Text]");
    format(text,sizeof(text),"%s: %s",SpielerName(playerid),text);
    if(IsPlayerConnected(i))
    {
    if(PlayerInfo[i][pLeader] > 0 || PlayerInfo[i][pAdmin] > 0 || PlayerInfo[i][pSupporter] > 0)
    {
    SendClientMessage(i,HELLBLAU,text);
    }
    }
    }
    }
    return 1;
    }

  • marvin die stringlänge bei sscanf kann man ruhig weglassen ;)


    Kann man sollte man aber nicht ->


    Zitat

    Die Warnings String Buffer Overflow, welche in der Serverlog angezeigt werden resultieren darraus , wenn man die Stringlänge vergisst anzugeben. Dies jedoch nur sollte man das Sscanf-Plugin verwenden. Bei der Funktion , welche noch viele nutzen ist das nicht der Fall, jedoch ist es dabei möglich den String zu überladen was letztendlich den Server offline setzt siehe SoL Skript (/sirene , /kofferraum).