Server: Unknown command - obwohl der existiert!

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 3 Commands (/login, /reg und /help).
    Als ich nur /login und /reg hatte, lief alles ohne probleme, jetzt habe ich noch /help hinzugefügt und jetzt kommt bei jedem Befehl:

    Zitat

    SERVER: Unknown Command


    Hier mein OnPlayerCommandText Quellcode:
    public OnPlayerCommandText(playerid, cmdtext[])
    {
    new val[128],cmd[256],idx,plname[100],chkqry[100],plcnt,insqry[100],pwcnt,selqry[255],line[1024];
    cmd = strtok(cmdtext,idx);
    // Registration
    if(strcmp("/reg", cmd, true) == 0)
    {
    val = strvalue(cmdtext,idx);
    if(!val[0])
    {
    // Es wurde kein Parameter angegeben
    SendClientMessage(playerid,0xFFFFFFFF,"Benutzung: /reg [PASSWORT]");
    }
    else
    {
    // Parameter wurde angegeben
    // Spielername herausfinden
    GetPlayerName(playerid, plname, sizeof(plname));
    // Überprüfen ob Spieler schon existiert
    format(chkqry,sizeof(chkqry),"SELECT * FROM user WHERE name='%s'", plname);
    samp_mysql_query(chkqry);
    samp_mysql_store_result();
    plcnt=samp_mysql_num_rows();
    if(plcnt == 1)
    {
    // Spieler existiert bereits
    // Aufforderung zum einloggen anzeigen!
    SendClientMessage(playerid, FARBE_ROT, "Es existiert bereits ein Account mit diesem Namen!");
    SendClientMessage(playerid, FARBE_ROT, "Bitte /login [PASSWORT] benutzen!");
    }
    else
    {
    // Spieler existiert nicht
    // Spieler registrieren
    samp_mysql_real_escape_string(plname, plname);
    format(insqry,sizeof(insqry),"INSERT INTO user (name,pass,mail, money) VALUES ('%s',MD5('%s'), 'none', '500')", plname, val[0]);
    samp_mysql_query(insqry);
    // ID auslesen
    format(selqry,sizeof(selqry),"SELECT * FROM user WHERE name='%s'", plname);
    samp_mysql_query(selqry);
    samp_mysql_store_result();
    samp_mysql_fetch_row(line);
    new SpDv[30][50];
    split(line, SpDv, '|');
    // Konto eröffnen
    format(insqry,sizeof(insqry),"INSERT INTO konten (playerid,betrag) VALUES ('%s','100')", SpDv[0]);
    samp_mysql_query(insqry);
    // Registration fertig
    SendClientMessage(playerid, FARBE_ROT, "Registration erfolgreich!");
    // Aufforderung zum einloggen anzeigen
    SendClientMessage(playerid, FARBE_ROT, "Benutzen Sie /login [PASSWORT] um sich einzuloggen!");
    }
    }
    return 1;
    }
    // Login
    if(strcmp("/login", cmd, true) == 0)
    {
    val = strvalue(cmdtext,idx);
    if(!val[0])
    {
    // Es wurde kein Parameter angegeben
    SendClientMessage(playerid,0xFFFFFFFF,"Benutzung: /login [PASSWORT]");
    }
    else
    {
    //Parameter wurde angegeben
    // Spielername herausfinden
    GetPlayerName(playerid, plname, sizeof(plname));
    // Überprüfen ob Spieler schon registriert ist
    format(chkqry,sizeof(chkqry),"SELECT * FROM user WHERE name='%s'", plname);
    samp_mysql_query(chkqry);
    samp_mysql_store_result();
    plcnt=samp_mysql_num_rows();
    if(plcnt == 1)
    {
    // Spieler ist registriert
    // Prüfen ob das Passwort stimmt
    format(chkqry,sizeof(chkqry),"SELECT * FROM user WHERE (name='%s' AND pass=MD5('%s'))", plname, val[0]);
    samp_mysql_query(chkqry);
    samp_mysql_store_result();
    pwcnt=samp_mysql_num_rows();
    if(pwcnt == 1)
    {
    // Passwort stimmt
    SendClientMessage(playerid, FARBE_ROT, "Sie sind erfolgreich eingeloggt!");
    // Loginvariablen setzen
    SpielerInfo[playerid][login] = 1;
    // Geld setzten
    format(chkqry,sizeof(chkqry),"SELECT * FROM user WHERE name='%s'", plname);
    samp_mysql_query(chkqry);
    samp_mysql_store_result();
    new line[1024];
    samp_mysql_fetch_row(line);
    new SpDv[30][50];
    split(line, SpDv, '|');
    SpielerInfo[playerid][startmoney] = strval(SpDv[5]);
    SpielerInfo[playerid][dbid] = strval(SpDv[0]);
    //SetPlayerMoney(playerid, SpielerInfo[playerid][startmoney]);
    new testmoney[255];
    testmoney = "500";
    SetPlayerMoney(playerid,SpielerInfo[playerid][startmoney]);
    new ausg[255];
    format(ausg,sizeof(ausg),"Spielergeld: %d",SpielerInfo[playerid][startmoney]);
    print(ausg);
    }
    else
    {
    // Passwort stimmt nicht
    SendClientMessage(playerid, FARBE_ROT, "Das Passwort war falsch!");
    }
    }
    else
    {
    // Spieler ist noch nicht registriert
    SendClientMessage(playerid, FARBE_ROT, "Es existiert noch lein Account mit diesem Namen!");
    // Aufforderung zum registrieren anzeigen
    SendClientMessage(playerid, FARBE_ROT, "Bitte /reg [PASSWORT] benutzen!");
    }
    }
    return 1;
    }
    // Hilfe
    if(strcmp("/help", cmd, true) == 0)
    {
    SendClientMessage(playerid, FARBE_AQUA, "*****[HILFE]*****");
    SendClientMessage(playerid, FARBE_WEISS, "BENUTZER: /reg, /login");
    return 1;
    }
    return 1;
    }

  • if(strcmp("/help", cmd, true) == 0)
    {
    SendClientMessage(playerid, FARBE_AQUA, "*****[HILFE]*****");
    SendClientMessage(playerid, FARBE_WEISS, "BENUTZER: /reg, /login");
    return 1;
    }



    vor


    if(strcmp("/reg", cmd, true) == 0)

  • do.de - Domain-Offensive - Domains für alle und zu super Preisen
  • Seit ihr alle blind^^?



    public OnPlayerCommandText(playerid, cmdtext[])
    {
    new val[128],cmd[256],idx,plname[100],chkqry[100],plcnt,insqry[100],pwcnt,selqry[255],line[1024];
    cmd = strtok(cmdtext,idx);
    // Registration
    if(strcmp("/reg", cmd, true) == 0)
    {
    val = strvalue(cmdtext,idx);
    if(!val[0])
    {
    // Es wurde kein Parameter angegeben
    SendClientMessage(playerid,0xFFFFFFFF,"Benutzung: /reg [PASSWORT]");
    }
    else
    {
    // Parameter wurde angegeben
    // Spielername herausfinden
    GetPlayerName(playerid, plname, sizeof(plname));
    // Überprüfen ob Spieler schon existiert
    format(chkqry,sizeof(chkqry),"SELECT * FROM user WHERE name='%s'", plname);
    samp_mysql_query(chkqry);
    samp_mysql_store_result();
    plcnt=samp_mysql_num_rows();
    if(plcnt == 1)
    {
    // Spieler existiert bereits
    // Aufforderung zum einloggen anzeigen!
    SendClientMessage(playerid, FARBE_ROT, "Es existiert bereits ein Account mit diesem Namen!");
    SendClientMessage(playerid, FARBE_ROT, "Bitte /login [PASSWORT] benutzen!");
    }
    else
    {
    // Spieler existiert nicht
    // Spieler registrieren
    samp_mysql_real_escape_string(plname, plname);
    format(insqry,sizeof(insqry),"INSERT INTO user (name,pass,mail, money) VALUES ('%s',MD5('%s'), 'none', '500')", plname, val[0]);
    samp_mysql_query(insqry);
    // ID auslesen
    format(selqry,sizeof(selqry),"SELECT * FROM user WHERE name='%s'", plname);
    samp_mysql_query(selqry);
    samp_mysql_store_result();
    samp_mysql_fetch_row(line);
    new SpDv[30][50];
    split(line, SpDv, '|');
    // Konto eröffnen
    format(insqry,sizeof(insqry),"INSERT INTO konten (playerid,betrag) VALUES ('%s','100')", SpDv[0]);
    samp_mysql_query(insqry);
    // Registration fertig
    SendClientMessage(playerid, FARBE_ROT, "Registration erfolgreich!");
    // Aufforderung zum einloggen anzeigen
    SendClientMessage(playerid, FARBE_ROT, "Benutzen Sie /login [PASSWORT] um sich einzuloggen!");
    }
    }
    return 1;
    }
    // Login
    if(strcmp("/login", cmd, true) == 0)
    {
    val = strvalue(cmdtext,idx);
    if(!val[0])
    {
    // Es wurde kein Parameter angegeben
    SendClientMessage(playerid,0xFFFFFFFF,"Benutzung: /login [PASSWORT]");
    }
    else
    {
    //Parameter wurde angegeben
    // Spielername herausfinden
    GetPlayerName(playerid, plname, sizeof(plname));
    // Überprüfen ob Spieler schon registriert ist
    format(chkqry,sizeof(chkqry),"SELECT * FROM user WHERE name='%s'", plname);
    samp_mysql_query(chkqry);
    samp_mysql_store_result();
    plcnt=samp_mysql_num_rows();
    if(plcnt == 1)
    {
    // Spieler ist registriert
    // Prüfen ob das Passwort stimmt
    format(chkqry,sizeof(chkqry),"SELECT * FROM user WHERE (name='%s' AND pass=MD5('%s'))", plname, val[0]);
    samp_mysql_query(chkqry);
    samp_mysql_store_result();
    pwcnt=samp_mysql_num_rows();
    if(pwcnt == 1)
    {
    // Passwort stimmt
    SendClientMessage(playerid, FARBE_ROT, "Sie sind erfolgreich eingeloggt!");
    // Loginvariablen setzen
    SpielerInfo[playerid][login] = 1;
    // Geld setzten
    format(chkqry,sizeof(chkqry),"SELECT * FROM user WHERE name='%s'", plname);
    samp_mysql_query(chkqry);
    samp_mysql_store_result();
    new line[1024];
    samp_mysql_fetch_row(line);
    new SpDv[30][50];
    split(line, SpDv, '|');
    SpielerInfo[playerid][startmoney] = strval(SpDv[5]);
    SpielerInfo[playerid][dbid] = strval(SpDv[0]);
    //SetPlayerMoney(playerid, SpielerInfo[playerid][startmoney]);
    new testmoney[255];
    testmoney = "500";
    SetPlayerMoney(playerid,SpielerInfo[playerid][startmoney]);
    new ausg[255];
    format(ausg,sizeof(ausg),"Spielergeld: %d",SpielerInfo[playerid][startmoney]);
    print(ausg);
    }
    else
    {
    // Passwort stimmt nicht
    SendClientMessage(playerid, FARBE_ROT, "Das Passwort war falsch!");
    }
    }
    else
    {
    // Spieler ist noch nicht registriert
    SendClientMessage(playerid, FARBE_ROT, "Es existiert noch lein Account mit diesem Namen!");
    // Aufforderung zum registrieren anzeigen
    SendClientMessage(playerid, FARBE_ROT, "Bitte /reg [PASSWORT] benutzen!");
    }
    }
    return 1;
    }
    // Hilfe
    if(strcmp("/help", cmd, true) == 0)
    {
    SendClientMessage(playerid, FARBE_AQUA, "*****[HILFE]*****");
    SendClientMessage(playerid, FARBE_WEISS, "BENUTZER: /reg, /login");
    return 1;
    }
    return 0;
    }


    Da bitte.
    Er hat ganz unten return 1; gehabt, also wird OnPlayerCommandText immer wieder zurück gegeben

  • Jo Wunderbar ! Super Echt! Du bist mir ein Stratege xD


    Kleiner Ausschnitt aus meinem Script


    if(strcmp(cmd, "/refuse",true) == 0)
    {
    if(IsPlayerConnected(playerid))
    {
    new refusion[256];
    refusion = strtok(cmdtext,idx);
    if(strcmp(refusion, "vehsell",true) == 0)
    {
    if(wirdGefragtCar[playerid] != 0)
    {
    wirdGefragtCar[playerid] = 0;
    new name[32];
    new name2[32];
    GetPlayerName(playerid,name,sizeof(name));
    GetPlayerName(tutFragenCar[playerid],name2,sizeof(name2));
    format(string,sizeof(string),"Sie haben das Angebot von %s abgelehnt!",name2);
    SendClientMessage(playerid,COLOR_GRAD2,string);
    format(string,sizeof(string),"%s hat Ihr Angebot abgelehnt!",name);
    SendClientMessage(tutFragenCar[playerid],COLOR_GRAD2,string);
    }


    else
    {
    SendClientMessage(playerid,COLOR_LIGHTRED,"Niemand hat Ihnen ein Fahrzeug angeboten!");
    }
    }
    }
    }
    return 1; // << Whats That OMG?
    }



    ... Bei mir ist auch return 1; und meine CMD's klappen auf 0.2 und 0.3 :pinch:

  • Vielleicht einfach mal die Basics lernen bzw. zum Augenarzt gehen?
    Guck dir die Zeile an, welche kommentiert ist. Das ist das return von OnPlayerCommandText.
    Die Klammer darunter ist die Klammer von dem Callback. Meine Güte, wenn du meinst mich verbessern zu müssen, lern scripten.

    Fail!

  • jetzt nicht hier über eure probleme diskutieren, es geht bei mir immer noch net :(
    Das hält meine ganze planung auf, denn solange das net geht, kann ich nicht weiter machen!


    Also ich kann es schonmal eingränzen:
    Es muss bei /login liegen, denn wenn ich /login nicht ausführe, kann ich /help so oft benutzen, wie ich will!

    Einmal editiert, zuletzt von virtualmarc ()