Funktion wird nicht ausgeführt

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.
    Ich habe mir ein Statistiksystem erstellt, welches eigentlich - sollte man /stats eingeben - die vorgegebenen Werte wiedergibt. Solange ich nicht eingeloggt bin kommt wie erwünscht die Meldung "Du bist noch nicht eingeloggt", andernfalls kommt aber nicht die Statistik sondern ein Unknown command.
    Hoffentlich findet jemand den Fehler oder das Problem.


    if(strcmp(cmdtext, "/stats", true) == 0)
    {
    if(loggedin[playerid] == false) SendClientMessage(playerid,0xff0000ff,"Du bist noch nicht eingeloggt.");
    else
    {
    new s1[128],s2[128],s3[128],s4[128];
    GetPlayerName(playerid,name,sizeof name);
    format(s1,sizeof s1,"- - - Statistiken von %s - - -", name);
    format(s2,sizeof s2,"- Kills: %d, Tode: %d, K/D: %f -",player[playerid][kill],player[playerid][death],player[playerid][kill]/player[playerid][death]);
    format(s3,sizeof s3,"- Wachenrunden: %d, Gefangenenrunden: %d -",player[playerid][rundew],player[playerid][rundep]);
    format(s4,sizeof s4,"- Runden insgesamt: %d, Spielzeit: %d Minuten -",player[playerid][runden],player[playerid][zeit]);
    SendClientMessage(playerid,CREME,s1);
    SendClientMessage(playerid,CREME,s2);
    SendClientMessage(playerid,CREME,s3);
    SendClientMessage(playerid,CREME,s4);
    SendClientMessage(playerid,CREME,"- - - - - - - - - - - - - - - - -");
    }
    return 1;
    }


    Mit freundlichen Grüßen
    Padarom

    Ich bin
    .. seit etwa 2007 in der Webentwicklung tätig, seit 2013 professionell
    .. Erfahrener Entwickler in PHP, Swift, Javascript, Typescript und Ruby. Zusätzlich habe ich Erfahrung in Python, Java, C#, C++, Prolog und einigen esoterischen Programmiersprachen
    .. Luftfahrtenthusiast und Segelflieger

  • if(strcmp(cmdtext, "/stats", true) == 0)
    {
    if(loggedin[playerid] == false) SendClientMessage(playerid,0xff0000ff,"Du bist noch nicht eingeloggt.");
    {
    else
    {
    new s1[128],s2[128],s3[128],s4[128];
    GetPlayerName(playerid,name,sizeof name);
    format(s1,sizeof s1,"- - - Statistiken von %s - - -", name);
    format(s2,sizeof s2,"- Kills: %d, Tode: %d, K/D: %f -",player[playerid][kill],player[playerid][death],player[playerid][kill]/player[playerid][death]);
    format(s3,sizeof s3,"- Wachenrunden: %d, Gefangenenrunden: %d -",player[playerid][rundew],player[playerid][rundep]);
    format(s4,sizeof s4,"- Runden insgesamt: %d, Spielzeit: %d Minuten -",player[playerid][runden],player[playerid][zeit]);
    SendClientMessage(playerid,CREME,s1);
    SendClientMessage(playerid,CREME,s2);
    SendClientMessage(playerid,CREME,s3);
    SendClientMessage(playerid,CREME,s4);
    SendClientMessage(playerid,CREME,"- - - - - - - - - - - - - - - - -");
    return 1;
    }
    }
    }



    Fersuchs mall so :)

  • So ist auch gut
    if(strcmp(cmdtext, "/stats", true) == 0)
    {
    if(loggedin[playerid] == false) return SendClientMessage(playerid,0xff0000ff,"Du bist noch nicht eingeloggt.");
    new s1[128],s2[128],s3[128],s4[128];
    GetPlayerName(playerid,name,sizeof name);
    format(s1,sizeof s1,"- - - Statistiken von %s - - -", name);
    format(s2,sizeof s2,"- Kills: %d, Tode: %d, K/D: %f -",player[playerid][kill],player[playerid][death],player[playerid][kill]/player[playerid][death]);
    format(s3,sizeof s3,"- Wachenrunden: %d, Gefangenenrunden: %d -",player[playerid][rundew],player[playerid][rundep]);
    format(s4,sizeof s4,"- Runden insgesamt: %d, Spielzeit: %d Minuten -",player[playerid][runden],player[playerid][zeit]);
    SendClientMessage(playerid,CREME,s1);
    SendClientMessage(playerid,CREME,s2);
    SendClientMessage(playerid,CREME,s3);
    SendClientMessage(playerid,CREME,s4);
    SendClientMessage(playerid,CREME,"- - - - - - - - - - - - - - - - -");
    return 1;
    }

    Ist besser kein Stress wegen Klammern Übersicht wird besser behalten

  • Gibt zwar beim compilen keinen Error, aber es gibt immernoch einen Unknown command.


    Mit freundlichen Grüßen
    Padarom

    Ich bin
    .. seit etwa 2007 in der Webentwicklung tätig, seit 2013 professionell
    .. Erfahrener Entwickler in PHP, Swift, Javascript, Typescript und Ruby. Zusätzlich habe ich Erfahrung in Python, Java, C#, C++, Prolog und einigen esoterischen Programmiersprachen
    .. Luftfahrtenthusiast und Segelflieger

  • Ist die Variable "loggedin" eigentlich boolean?

  • Ist die Variable "loggedin" eigentlich boolean?

    Jup - Die ist mit bool:loggedin[MAX_PLAYERS]; definiert worden.
    Den gleichen Fehler habe ich schon seit knapp einem Monat in all meinen Scripts. Ich erstelle Commands, die funktionieren an und für sich ohne Fehler aber wenn ich sie ausführen will kommt weder ihre Funktion noch irgendein Fehler. Das kommt immer bei den "etwas komplexeren" Funktionen vor... Wie zum Beispiel Koordinaten speichern und sie gleichzeitig in MySQL, mit Name und ID versehen, schieben.

    Ich bin
    .. seit etwa 2007 in der Webentwicklung tätig, seit 2013 professionell
    .. Erfahrener Entwickler in PHP, Swift, Javascript, Typescript und Ruby. Zusätzlich habe ich Erfahrung in Python, Java, C#, C++, Prolog und einigen esoterischen Programmiersprachen
    .. Luftfahrtenthusiast und Segelflieger

  • Schick mal bitte das was bei OnPlayerCommandText steht, also das obere die new's und so.
    Und ganz unten bitte.

  • public OnPlayerCommandText(playerid, cmdtext[])
    {
    // FUNKTIONEN
    return 1;
    }
    Alle Variablen die ich in den Commands nutze sind entweder lokal oder global definiert. name (speicher für name des spielers) ist global, der Rest - bis auf die Spielerrelevanten Variablen wie Kills/Deaths, ... - ist lokal.


    **edit**
    Ich habe das return 1; schon mit einem return 0; ersetzt und versucht, doch trotzdem gleicher Fehler.

    Ich bin
    .. seit etwa 2007 in der Webentwicklung tätig, seit 2013 professionell
    .. Erfahrener Entwickler in PHP, Swift, Javascript, Typescript und Ruby. Zusätzlich habe ich Erfahrung in Python, Java, C#, C++, Prolog und einigen esoterischen Programmiersprachen
    .. Luftfahrtenthusiast und Segelflieger

  • Kann es sein, dass du irgendwo ausserhalb eines Befehl's ein return hast? Ausser ganz unten.

  • Nein, die returns sind nur in den Funktionen (da neues Script sind es erst 3 CMD's).

    Ich bin
    .. seit etwa 2007 in der Webentwicklung tätig, seit 2013 professionell
    .. Erfahrener Entwickler in PHP, Swift, Javascript, Typescript und Ruby. Zusätzlich habe ich Erfahrung in Python, Java, C#, C++, Prolog und einigen esoterischen Programmiersprachen
    .. Luftfahrtenthusiast und Segelflieger

  • Dann fällt mir nurnoch ein, dass du irgendeine andere CMD-"Sprache" verwendest als strcmp, vielleicht hast Du "dcmd" und hast irgendetwas nicht definiert.

  • Nein, in diesem neuen Script nutze ich ganz normales Strcmp ohne dcmd oder sonstiges...
    DCMD habe ich in meinem anderen Script genutzt, in dem ich zuerst das Problem hatte, allerdings nicht in allen Commands, sondern nur in wenigen.


    Mit freundlichen Grüßen
    Padarom

    Ich bin
    .. seit etwa 2007 in der Webentwicklung tätig, seit 2013 professionell
    .. Erfahrener Entwickler in PHP, Swift, Javascript, Typescript und Ruby. Zusätzlich habe ich Erfahrung in Python, Java, C#, C++, Prolog und einigen esoterischen Programmiersprachen
    .. Luftfahrtenthusiast und Segelflieger

    Einmal editiert, zuletzt von Padarom ()

  • false = 0
    true = 1



    Und du hast loggedid false? Dh wenn er nicht eongeloggt ist soll der CMD funktionieren?

    GreetZ

    Zitat

    Joda21:47
    Joda = mein spritzname
    xD


    Ice21:47
    zeig mir dein lichtschwert !


    Joda21:47 spitzname* xDD

    Ich bin ein Vogel (Joda)


  • versuchs doch mal so:


    if(strcmp(cmdtext, "/stats", true) == 0)
    {
    if(loggedin[playerid] == false) return SendClientMessage(playerid,0xff0000ff,"Du bist noch nicht eingeloggt.");
    new s1[128],s2[128],s3[128],s4[128];
    new killanddeath = player[playerid][kill]/player[playerid][death];
    GetPlayerName(playerid,name,sizeof name);
    format(s1,sizeof s1,"- - - Statistiken von %s - - -", name);
    format(s2,sizeof s2,"- Kills: %d, Tode: %d, K/D: %f -",player[playerid][kill],player[playerid][death],killanddeath);
    format(s3,sizeof s3,"- Wachenrunden: %d, Gefangenenrunden: %d -",player[playerid][rundew],player[playerid][rundep]);
    format(s4,sizeof s4,"- Runden insgesamt: %d, Spielzeit: %d Minuten -",player[playerid][runden],player[playerid][zeit]);
    SendClientMessage(playerid,CREME,s1);
    SendClientMessage(playerid,CREME,s2);
    SendClientMessage(playerid,CREME,s3);
    SendClientMessage(playerid,CREME,s4);
    SendClientMessage(playerid,CREME,"- - - - - - - - - - - - - - - - -");
    return 1;
    }


  • Wird eine exeption sein, weil "death" auf 0 ist, und eine division durch 0 halt unmöglich ist.

  • ...eine division durch 0 halt unmöglich ist.

    Ich habe den Wert der geteilt wird +1 genommen und es funktioniert, danke!


    Mit freundlichen Grüßen
    Padarom


    CloseThread(TopicID,"Padarom");

    Ich bin
    .. seit etwa 2007 in der Webentwicklung tätig, seit 2013 professionell
    .. Erfahrener Entwickler in PHP, Swift, Javascript, Typescript und Ruby. Zusätzlich habe ich Erfahrung in Python, Java, C#, C++, Prolog und einigen esoterischen Programmiersprachen
    .. Luftfahrtenthusiast und Segelflieger