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
  • dcmd_sethp(playerid, params[])
    {
    new spieler;
    new health;
    if (sscanf(params, "ud", spieler, health))
    {
    return SendClientMessage(playerid, HELLROT, "Benutzung: /sethp [ID/Spielername] [Leben]");
    }
    SetPlayerHealth(spieler,health);
    return 1;
    }


    Was ist daran Falsch? Ich kann nicht /sethp ID LEBEN eingeben sondern nur /sethp ID und dann hat man halt 0 HP.

    Du suchst eine nette Community, ein hilfsbereites Team & einen Server, wo es Spaß macht, drauf zu spielen?
    Dann bist du bei Sunrise - Reallife genau richtig!

  • Hab mich mal im GF orientiert und dort wurde kein Float verwendet und es funzt.
    man schreibt ja auch nich /sethp ID 0.4561

    Du suchst eine nette Community, ein hilfsbereites Team & einen Server, wo es Spaß macht, drauf zu spielen?
    Dann bist du bei Sunrise - Reallife genau richtig!

  • dcmd_sethp(playerid, params[])
    {
    new spieler;
    new health;
    if (sscanf(params, "ud", spieler, health))
    {
    return SendClientMessage(playerid, HELLROT, "Benutzung: /sethp [ID/Spielername] [Leben]");
    }
    else
    {
    SetPlayerHealth(spieler,health);
    }
    return 1;
    }

  • Problem gelöst, ich habe das alte sscanf benutzt & daran lags wohl.

    Du suchst eine nette Community, ein hilfsbereites Team & einen Server, wo es Spaß macht, drauf zu spielen?
    Dann bist du bei Sunrise - Reallife genau richtig!

    Einmal editiert, zuletzt von Airy ()

  • else ist nicht sinnlos!
    if (sscanf(params, "ud", spieler, health))
    {
    return SendClientMessage(playerid, HELLROT, "Benutzung: /sethp [ID/Spielername] [Leben]");
    }

    Wenn der Text den man im CMD schreibt nicht korrekt ist,bekommt man folgende Nachricht:
    Benutzung: /sethp [ID/Spielername] [Leben]"
    Dann kommt "else",falls der Text im CMD richtig ist,wird SetPlayerHealth ausgeführt!

  • So,da du es ja wohl nicht für nötig hälst das mal zu testen habe ich es getan!
    Und wie ich vermutet habe,habe ich Recht gehabt!
    So wie ich dir den CMD geschrieben habe funktioniert er perfekt!
    Einfach mal ein bischen nachdenken!


    Hier die Screens


    HP von 10


    CMD-Eingabe


    Nach dem CMD



    Wenn dir jemand bei etwas hilft,nicht den Schlaukopf raushängen lassen sondern einfach mal probieren und dann schreiben!



    Und nochmal der CMD da ich bei mir schon einen Befehl mit /sethp habe,habe ich den Befehl einfach umbenannt in /testhp!


    dcmd(sethp,5,cmdtext);


    dcmd_sethp(playerid, params[])
    {
    new spieler;
    new health;
    if (sscanf(params, "ud", spieler, health))
    {
    return SendClientMessage(playerid, COLOR_GREY, "Benutzung: /sethp [ID/Spielername] [Leben]");
    }
    else
    {
    SetPlayerHealth(spieler,health);
    }
    return 1;
    }



    So,dass nächte Mal probierst du es selber und schreibst nicht irgendwas was nicht stimmt oder wovon du keine Ahnung hast!

  • So dann lass ich jetzt mal den "Schlaukopf" raushängen [FoR]Hardcore:



    dcmd(sethp,5,cmdtext);


    dcmd_sethp(playerid, params[])
    {
    new spieler;
    new Float:health;
    if (sscanf(params, "uf", spieler, health)) return SendClientMessage(playerid, COLOR_GREY, "Benutzung: /sethp [ID/Spielername] [Leben]");
    SetPlayerHealth(spieler,health);
    return 1;
    }

    Das ist die kürzeste Methode und auch komplett richtig, da Der 2. Parameter von SetPlayerhealth, wie bereits von BloodyEric erwähnt, ein Float sein sollte.
    (Auch wenn das ganze mit einem Integer funktioniert)


    Und ob an der Stelle ein else kommt oder nicht ist vollkommen irrelevant, da auf Grund des "return" der Befehl eh beendet wird wenn die Syntax nicht stimmt...


    Daher zitiere ich dich hier mal:
    "So,dass nächte Mal probierst du es selber und schreibst nicht irgendwas was nicht stimmt oder wovon du keine Ahnung hast! "

  • do.de - Domain-Offensive - Domains für alle und zu super Preisen
  • Hardcore... er hat doch gesagt das es an sscanf lag.
    Ob du den befehl jetzt
    So
    dcmd_sethp(playerid, params[])
    {
    new spieler;
    new health;
    if (sscanf(params, "ud", spieler, health))
    {
    return SendClientMessage(playerid, HELLROT, "Benutzung: /sethp [ID/Spielername] [Leben]");
    }
    else
    {
    SetPlayerHealth(spieler,health);
    }
    return 1;
    }
    oder so
    dcmd_sethp(playerid, params[])
    {
    new spieler;
    new health;
    if (sscanf(params, "ud", spieler, health))
    {
    return SendClientMessage(playerid, HELLROT, "Benutzung: /sethp [ID/Spielername] [Leben]");
    }
    SetPlayerHealth(spieler,health);
    return 1;
    }
    oder so
    dcmd_sethp(playerid, params[])
    {
    new spieler,health;
    if (sscanf(params, "ud", spieler, health)) return SendClientMessage(playerid, HELLROT, "Benutzung: /sethp [ID/Spielername] [Leben]");
    SetPlayerHealth(spieler,health);
    return 1;
    }
    schreibst macht im endeffekt absolut keinen unterschied. Also reg dich wegen sowas net auf.


    //Edit: Sry war schon am schreiben als der Post von The Boondock Saints noch net da war ^^

    The fact is, I am right. And if you think I'm wrong, you are wrong.

  • Zitierst du mich?
    Ich habe doch gesagt das da kein else hin muss.
    ausserdem ging der befehl nicht bei mir, erst als ich mir die neue inc & das plugin holte.

    Du suchst eine nette Community, ein hilfsbereites Team & einen Server, wo es Spaß macht, drauf zu spielen?
    Dann bist du bei Sunrise - Reallife genau richtig!

  • Ja klar,deine Variante funktioniert auch!
    Das das "else" irrelevant ist weis ich auch ist meiner Meinung nach übersichtlicher;)


    Hat mich halt ein wenig aufgeregt das er oder sie nur Vorurteile zieht und nichts ausprobiert!


    "Probieren geht nicht über studieren!" fällt mir dazu nurnoch ein...



    Zitat

    und schreibst nicht irgendwas was nicht stimmt

    Damit meine Ich da er sozusagen behauptet hat das meine Variante nicht funktioniert,dass er mal lieber was ausprobieren soll und nicht gleich drauf losmeckern braucht!



    Naja,es funktioniert mit beiden Varianten,ich denke mal wenn es keine weiteren Fragen gibt kannst du ( Airy ) das Thema schliesen,offen lassen oder deine weiteren Fragen posten!
    Hier wird gerne geholfen man sollte die Hilfe nur annehmen wollen!



    Lg
    [FoR]Hard/MultiCore


    //Edit:

    Zitat

    ausserdem ging der befehl nicht bei mir, erst als ich mir die neue inc & das plugin holte.

    Falls du deinen Server auf 0.3c updatet hast,sollte man gleich dran denken auch die neuen Includes zu laden;)