Problem mit sscanf

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 Morgen Leute,


    ich benötige dringend Hilfe bei dem Probem, wenn ich in dem RangeOfPoint bin, dann kommt, immer "Next yo", egal was ich schreibe z.B. wenn ich lol oder samp schreibe...
    sonst funktioniert alles..


    Wäre echt nett, wenn mir jemand bei diesem Problem, das mir den Schlaf stiehlt, helfen kann!


    public OnPlayerText(playerid, text[])
    {
    if(IsPlayerInRangeOfPoint(playerid,2,216.9488,-98.6432,1005.2578))
    {
    if(sscanf(text,"next",true))
    {
    SendClientMessage(playerid,Weiss,"Next yo");
    }
    else if(sscanf(text,"back",true))
    {
    SendClientMessage(playerid,Weiss,"Back yo");
    }
    else if(sscanf(text,"done",true))
    {
    SendClientMessage(playerid,Weiss,"Done yo");
    }
    else
    {
    SendClientMessage(playerid, Weiss,"FEHLER: Tippe 'next', 'back' oder 'done'");
    }
    }
    else
    {
    new Float:x, Float:y, Float:z;
    GetPlayerPos(playerid,x,y,z);
    {
    new sendstr[128];
    format(sendstr,sizeof(sendstr),"%s sagt: %s",SpielerName(playerid),text);
    for(new i=0; i<MAX_PLAYERS; i++)
    {
    if(IsPlayerConnected(i))
    {
    if(IsPlayerInRangeOfPoint(i,15,x,y,z))
    {
    SendClientMessage(i,Weiss,sendstr);
    }
    }
    }
    }
    }


    return 0;
    }


    Gruß Hobbit

  • public OnPlayerText(playerid, text[])
    {
    if(IsPlayerInRangeOfPoint(playerid,2.0,216.9488,-98.6432,1005.2578))
    {
    if(sscanf(text,"next",true))
    {
    SendClientMessage(playerid,Weiss,"Next yo");
    }
    else if(sscanf(text,"back",true))
    {
    SendClientMessage(playerid,Weiss,"Back yo");
    }
    else if(sscanf(text,"done",true))
    {
    SendClientMessage(playerid,Weiss,"Done yo");
    }
    else
    {
    SendClientMessage(playerid, Weiss,"FEHLER: Tippe 'next', 'back' oder 'done'");
    }
    }
    else
    {
    new Float:x, Float:y, Float:z;
    GetPlayerPos(playerid,x,y,z);
    {
    new sendstr[128];
    format(sendstr,sizeof(sendstr),"%s sagt: %s",SpielerName(playerid),text);
    for(new i=0; i<MAX_PLAYERS; i++)
    {
    if(IsPlayerConnected(i))
    {
    if(IsPlayerInRangeOfPoint(i,15,x,y,z))
    {
    SendClientMessage(i,Weiss,sendstr);
    }
    }
    }
    }
    }


    return 0;
    }


    Versuchs mal so ;)

  • kevin, hast du einfach .0 bei der Range rangehängt also 2.0??
    hast du sonst was verändert? mir fällt da nichts weiter auf :D


    Edit: So ich hab da jetzt was geändert, habs so ähnlich von samp wiki.. joa jetzt ist das Problem, der erkennt die wörter nicht der sendet jetzt immer
    SendClientMessage(playerid, Weiss,"FEHLER: Tippe 'next', 'back' oder 'done'");


    Aktueller Stand der Zeilen:


    new next[20], back[20], done[20];
    if(IsPlayerInRangeOfPoint(playerid,2.0,216.9488,-98.6432,1005.2578))
    {
    if(sscanf("next","s",next)) SendClientMessage(playerid,Weiss,"Next yo");
    /*{
    SendClientMessage(playerid,Weiss,"Next yo");
    }*/
    else if(sscanf("back","s",back)) SendClientMessage(playerid,Weiss,"Back yo");
    /*{
    SendClientMessage(playerid,Weiss,"Back yo");
    }*/
    else if(sscanf("done","s",done)) SendClientMessage(playerid,Weiss,"Done yo");
    /*{
    SendClientMessage(playerid,Weiss,"Done yo");
    }*/
    else
    {
    SendClientMessage(playerid, Weiss,"FEHLER: Tippe 'next', 'back' oder 'done'");
    }


    Edit: hat jemand einen Tipp für mich?

    2 Mal editiert, zuletzt von Hobbit ()

  • sscanf ist zum splitten von params oder anderes da


    aber du brauchst strcmp(abfrage ob der string der andere ist



    public OnPlayerText(playerid, text[])
    {
    if(IsPlayerInRangeOfPoint(playerid,2,216.9488,-98.6432,1005.2578))
    {
    if(!strcmp(text,"next",true))SendClientMessage(playerid,Weiss,"Next yo");
    else if(!strcmp(text,"back",true))SendClientMessage(playerid,Weiss,"Back yo");
    else if(!strcmp(text,"done",true))SendClientMessage(playerid,Weiss,"Done yo");
    else SendClientMessage(playerid, Weiss,"FEHLER: Tippe 'next', 'back' oder 'done'");
    }
    else
    {
    new Float:x, Float:y, Float:z;
    GetPlayerPos(playerid,x,y,z);
    new sendstr[128];
    format(sendstr,sizeof(sendstr),"%s sagt: %s",SpielerName(playerid),text);
    for(new i=0; i<MAX_PLAYERS; i++)
    {
    if(IsPlayerConnected(i))
    {
    if(IsPlayerInRangeOfPoint(i,15,x,y,z))
    {
    SendClientMessage(i,Weiss,sendstr);//sry kein return
    }
    }
    }
    }
    return 0;
    }

    MFG Piet

  • Achjaaa strcmp, stimmt ja :D danke!


    Es funktioniert trotzdem nicht so wie es soll ... Wenn ich not also !strcmp mache dann kommt das fehler bitte tippe ...
    Und bei normal strcmp kommt wieder nur das erste mit next yo egal was ich schreibe.


    Edit: alles klar, habs hinbekommen danke nochmal an alle, die sich beteiligt haben :)

    2 Mal editiert, zuletzt von Hobbit ()