Einfaches Chatsystem funktioniert einfach nicht!!!

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,
    Ich bin auch mal wieder anwesend hier im Forum mit einen neuen Problem.
    Am heutigen Tage ist es ein einfaches Chatsystem, was total verbuggt ist und bei der sscanf abfrage beendet wird, ohne jeglichen
    Grund, obwohl alle Parameter richtig eingetragen wurden sind. Wo ist der Fehler zu finden? Ich bin mit meinen Lateien schon total am Ende, sicherlich ist es wirder nur ein klitze kleiner Fehler, also lalo.


    ocmd:a(playerid,params[])
    {
    new text[91],string[128];
    if(Spieler[playerid][pEingeloggt]!=1)return ErrorMsg(playerid,"Du bist noch nicht eingeloggt.");
    if(Spieler[playerid][pAdminrang]<1)return ErrorMsg(playerid,"Du hast nicht das nötige Adminlevel.");
    if(sscanf(params,"s[91]",text))return ErrorMsg(playerid,"/a(dmin Chat) [Text]");
    if(strlen(text)>90)return ErrorMsg(playerid,"/a(dmin Chat) [Text darf maximal 90 Zeichen beinhalten]");
    format(string,sizeof(string),"**(( %s %s: %s ))",Adminrang(playerid),Spieler[playerid][pName],text);
    SendAdminMessage(0x00A5FFFF,string);
    return 1;
    }
    ocmd:z(playerid,params[])
    {
    new string[128],text[91],i;
    if(Spieler[playerid][pEingeloggt]==0)return ErrorMsg(playerid,"Du bist noch nicht eingeloggt.");
    if(gTeam[playerid]!=TEAM_ZOMBIE)return ErrorMsg(playerid,"Du kannst diesen Befehl nicht benutzen.");
    if(sscanf(params,"s[91]",text))return ErrorMsg(playerid,"/z(chat) [Text]");
    if(strlen(text)>90)return ErrorMsg(playerid,"Der eingegebene Text ist zu lang.");
    format(string,sizeof(string),"**(( Zombie %s: %s ))",Spieler[playerid][pName],text);
    for(i=0;i<MAX_PLAYERS;i++)
    {
    if(Spieler[i][pEingeloggt]==0)continue;
    if(gTeam[i]!=TEAM_ZOMBIE)continue;
    SendClientMessage(i,0xB40000FF,string);
    }
    return 1;
    }
    ocmd:h(playerid,params[])
    {
    new string[128],text[91],i;
    if(Spieler[playerid][pEingeloggt]==0)return ErrorMsg(playerid,"Du bist noch nicht eingeloggt.");
    if(gTeam[playerid]!=TEAM_HUMAN)return ErrorMsg(playerid,"Du kannst diesen Befehl nicht benutzen.");
    if(sscanf(params,"s[91]",text))return ErrorMsg(playerid,"/h(chat) [Text]");
    if(strlen(text)>90)return ErrorMsg(playerid,"Der eingegebene Text ist zu lang.");
    format(string,sizeof(string),"**(( Human %s: %s ))",Spieler[playerid][pName],text);
    for(i=0;i<MAX_PLAYERS;i++)
    {
    if(Spieler[i][pEingeloggt]==0)continue;
    if(gTeam[i]!=TEAM_HUMAN)continue;
    SendClientMessage(i,0x33AA33AA,string);
    }
    return 1;
    }


    Bei allen 3 Chatsystemen ist der gleiche Fehler vorhanden, man bekommt nur die Info.
    Liebe Grüße

    Ich suche (Beta) Server-Tester für meinen Server.
    Bei Intresse bitte bei mir per PN melden.

  • sscanf brauchst du hier gar nicht. Schreibe es einfach so, das ist effizienter:


    ocmd:a(playerid,params[])
    {
    new string[145];
    if(Spieler[playerid][pEingeloggt]!=1)return ErrorMsg(playerid,"Du bist noch nicht eingeloggt.");
    if(Spieler[playerid][pAdminrang]<1)return ErrorMsg(playerid,"Du hast nicht das nötige Adminlevel.");
    if(!params[0])return ErrorMsg(playerid,"/a(dmin Chat) [Text]");
    if(strlen(params)>90)return ErrorMsg(playerid,"/a(dmin Chat) [Text darf maximal 90 Zeichen beinhalten]");
    format(string,sizeof(string),"**(( %s %s: %s ))",Adminrang(playerid),Spieler[playerid][pName],params);
    SendAdminMessage(0x00A5FFFF,string);
    return 1;
    }
    ocmd:z(playerid,params[])
    {
    new string[145];
    if(Spieler[playerid][pEingeloggt]==0)return ErrorMsg(playerid,"Du bist noch nicht eingeloggt.");
    if(gTeam[playerid]!=TEAM_ZOMBIE)return ErrorMsg(playerid,"Du kannst diesen Befehl nicht benutzen.");
    if(!params[0])return ErrorMsg(playerid,"/z(chat) [Text]");
    if(strlen(params)>90)return ErrorMsg(playerid,"Der eingegebene Text ist zu lang.");
    format(string,sizeof(string),"**(( Zombie %s: %s ))",Spieler[playerid][pName],params);
    for(new i=0;i<MAX_PLAYERS;i++)
    {
    if(Spieler_[pEingeloggt]==0)continue;
    if(gTeam[i]!=TEAM_ZOMBIE)continue;
    SendClientMessage(i,0xB40000FF,string);
    }
    return 1;
    }
    ocmd:h(playerid,params[])
    {
    new string[145];
    if(Spieler[playerid][pEingeloggt]==0)return ErrorMsg(playerid,"Du bist noch nicht eingeloggt.");
    if(gTeam[playerid]!=TEAM_HUMAN)return ErrorMsg(playerid,"Du kannst diesen Befehl nicht benutzen.");
    if(!params[0])return ErrorMsg(playerid,"/h(chat) [Text]");
    if(strlen(params)>90)return ErrorMsg(playerid,"Der eingegebene Text ist zu lang.");
    format(string,sizeof(string),"**(( Human %s: %s ))",Spieler[playerid][pName],params);
    for(new i=0;i<MAX_PLAYERS;i++)
    {
    if(Spieler[i][pEingeloggt]==0)continue;
    if(gTeam[i]!=TEAM_HUMAN)continue;
    SendClientMessage(i,0x33AA33AA,string);
    }
    return 1;
    }


    Und wenn du unbedingt sscanf verwenden willst, aber die Funktion nutzt, dann musst du nur "s" schreiben, anstatt "s[XX]".