sscanf problem (falscher Ausgang)

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

  • if(sscanf(params,"s[128]df",produkt,qualitaet,menge))
    {
    if(strcmp(produkt, InventarName[playerid][Cannabis]))
    {
    if(Inventar[playerid][Cannabis][qualitaet] >= menge)
    {
    Inventar[playerid][Cannabis][qualitaet] -= menge;
    Info[playerid][RpPoints] += InventarRPPlus[Cannabis];
    return 1;
    }
    else return SCM(playerid,rot,"Nicht genügend vorhanden!");
    }
    else if(strcmp(produkt, InventarName[playerid][CrystalMeth]))
    {
    if(Inventar[playerid][CrystalMeth][qualitaet] >= menge)
    {
    Inventar[playerid][CrystalMeth][qualitaet] -= menge;
    Info[playerid][RpPoints] += InventarRPPlus[CrystalMeth];
    return 1;
    }
    else return SCM(playerid,rot,"Nicht genügend vorhanden!");
    }
    else if(strcmp(produkt, InventarName[playerid][Heroin]))
    {
    if(Inventar[playerid][Heroin][qualitaet] >= menge)
    {
    Inventar[playerid][Heroin][qualitaet] -= menge;
    Info[playerid][RpPoints] += InventarRPPlus[Heroin];
    return 1;
    }
    else return SCM(playerid,rot,"Nicht genügend vorhanden!");
    }
    else if(strcmp(produkt, InventarName[playerid][Kokain]))
    {
    if(Inventar[playerid][Kokain][qualitaet] >= menge)
    {
    Inventar[playerid][Kokain][qualitaet] -= menge;
    Info[playerid][RpPoints] += InventarRPPlus[Kokain];
    return 1;
    }
    else return SCM(playerid,rot,"Nicht genügend vorhanden!");
    }
    else
    {
    SCM(playerid,rot,"Produkt nicht bekannt!");
    return 1;
    }



    }
    else if(sscanf(params,"s[128]f",produkt,menge))
    {
    if(strcmp(produkt, InventarName[playerid][Cannabis])||(produkt, InventarName[playerid][CrystalMeth])||(produkt, InventarName[playerid][Heroin])||(produkt, InventarName[playerid][Kokain]))
    {
    SCM(playerid,rot,"Benutze: /use [Produkt] [Qualitätsstufe] [Menge: 0.0]");
    return 1;
    }
    else
    {
    for(new i = 0; i<MAX_INVENTAR; i++)
    {
    if(strcmp(produkt, InventarName[playerid][Inventar_Name:i]) /*&& !isnull(produkt) && !isnull(InventarName[playerid][Inventar_Name:i])*/)
    {
    if(Inventar[playerid][Inventar_Daten:i] >= menge)
    {
    Inventar[playerid][Inventar_Daten:i] -= menge;
    Info[playerid][RpPoints] += InventarRPPlus[RPPlus_Daten:i];
    return 1;
    }
    else return SCM(playerid,rot,"Nicht genügend dabei!");
    }
    if(i == MAX_INVENTAR)
    {
    SCM(playerid,rot,"Produkt nicht bekannt!");
    return 1;
    }
    }
    }
    }
    else return SCM(playerid,rot,"Benutze: /use [Produkt] [Menge: 0.0]");
    return 1;



    Irgendwie kommt immer "Produkt nicht bekannt" statt "Benutze use...."
    Also wenn ich "/use" eintippe sollte doch das else abgerufen werden oder nicht?

  • Weiterhin empfehle ich dir abzufragen ob die strings (NULL) sind, da das Resultat auch 0 wäre und so Fehler entstehen könnten

    Können Sie in diesem Fall nicht sein, da sscanf das ja gerade prüft, dass diese nicht NULL sind ;)

    ast2ufdyxkb1.png


    Leute, lernt scripten und versucht mal lieber etwas selber zu schreiben, als es aus einem GF zu kopieren. :S