Hilfe kein Befehl geht mehr

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
  • Hast du irgendwas ins Script eingebaut, was die Befehle stören könnte?

    Die deutsche Rechtschreibung ist Freeware, sprich du darfst sie kostenlos nutzen...
    Sie ist aber nicht Open Source, somit darfst du sie nicht verändern oder in veränderter Form veröffentlichen!


  • Schau ob bei OnPlayerCommand, das hier richtig ist:
    // Deine Commands
    return 1;
    }
    return 0;
    }
    War bei mir auch mal der Fehler,wo ich erst Scripten gelernt habe. Hatte nur return 1; oder return 0;
    Und war voll buggy :S

  • verscheinlich haste nach jeden befehl return 0; oder so.. das heißt, OnCommandText wird irgentwie abgestellt.


    du musst das haben:


    OnPlayerCommandText(...)
    {
    //hier command
    {
    //was passieren soll
    }
    //hier andere commands
    {
    }
    //und so weiter
    {
    }
    return 1;
    }

  • Der von dir gepostete Code ist ebenso falsch. Er bewirkt nur, dass jedes eingegebene Command als gültig erkannt wird.
    So ist es richtig :


    OnPlayerCommandText(...)
    {
    // Abfrage nach einem Command
    {
    // Aktion


    return 1;
    }
    return 0;
    }


    Nicht jeder, der sich für super hält, ist ein Superheld. :love:
    ------------------------------------------------------------------------------------------------

  • also das ist mein letzter Befehl und der klammer die OnPlayerCommand zu macht


    if(strcmp(cmd, "/contract", true) == 0)
    {
    if(IsPlayerConnected(playerid))
    {
    tmp = strtok(cmdtext, idx);
    if(!strlen(tmp))
    {
    SendClientMessage(playerid, COLOR_GRAD1, "Verwendung: /contract [spielerid/teildesnamens] [betrag]");
    return 1;
    }
    giveplayerid = ReturnUser(tmp);
    tmp = strtok(cmdtext, idx);
    if(!strlen(tmp))
    {
    SendClientMessage(playerid, COLOR_GRAD1, "Verwendung: /contract [spielerid/teildesnamens] [betrag]");
    return 1;
    }
    moneys = strval(tmp);
    if(moneys < 1500 || moneys > 1000000) { SendClientMessage(playerid, COLOR_GREY, "Der Betrag kann nicht unter 10000$ und über 100000$ sein"); return 1; }
    if (IsPlayerConnected(giveplayerid))
    {
    if(giveplayerid != INVALID_PLAYER_ID)
    {
    if(gTeam[giveplayerid] == 2 && moneys != 100000)
    {
    SendClientMessage(playerid, COLOR_GREY, "Ein Auftragskill an einem Polizisten kostet 100000$!");
    return 1;
    }
    if(giveplayerid == playerid) { SendClientMessage(playerid, COLOR_GREY, "Du kannst dich nicht selbst wählen!"); return 1; }
    GetPlayerName(giveplayerid, giveplayer, sizeof(giveplayer));
    GetPlayerName(playerid, sendername, sizeof(sendername));
    playermoney = GetPlayerMoney(playerid);
    if (moneys > 0 && playermoney >= moneys)
    {
    GivePlayerMoney(playerid, (0 - moneys));
    PlayerInfo[giveplayerid][pHeadValue]+=moneys;
    format(string, sizeof(string), "%s hat einen Auftragskill für %s für %d$ in die Wege geleitet.",sendername, giveplayer, moneys);
    SendFamilyMessage(8, COLOR_YELLOW, string);
    format(string, sizeof(string), "* Du hast einen Auftragskill für %s für %d$ eingeleitet.",giveplayer, moneys);
    SendClientMessage(playerid, COLOR_LIGHTBLUE, string);
    PlayerPlaySound(playerid, 1052, 0.0, 0.0, 0.0);
    }
    else
    {
    SendClientMessage(playerid, COLOR_GRAD1, "Ungültiger Betrag.");
    }
    }
    }
    else
    {
    format(string, sizeof(string), "%d ist kein aktiver Spieler.", giveplayerid);
    SendClientMessage(playerid, COLOR_GRAD1, string);
    }
    }
    return 1;
    }


    dcmd(tban,4,cmdtext);

    return 0;
    }


    muss ich bei dem letzten return eine 1 hinschreiben ?

  • Ich hatte auch schon oft Probleme mit Befehlen. Der Grund war das ich DCMD und normale Befehle gleichzeitig verwendet habe... Versuch mal alle normalen in DCMD oder andersrum umzuschreiben oder kommentier alle die mit DCMD gemacht wurden aus...

  • ich habe mein dcmd Befehl mal rausgenommen es ist imemr noch das selbe.
    Wnn ich ganz unten bei OnPlayerCommand ein return 1; schreibe was muss ich dann ans ende der Befehle schreiben


    ich habe mal alle Warnings in eine txt kopiert (siehe anhang)



    /edit2


    jetzt habe ich es geschaft das sich nur noch eine Person einloggen kann und wenn sich der 2. einloggen will geht garkein Befehl mehr
    das selbe auch bei /register einmal benutzt geht beim zweiten mal geht garnix mehr
    if (strcmp(cmd, "/login", true) ==0 )
    {
    if(IsPlayerConnected(playerid))
    {
    new tmppass[64];
    if(gPlayerLogged[playerid] == 1)
    {
    SendClientMessage(playerid, COLOR_WHITE, "SERVER: Du bist bereits eingeloggt.");
    return 1;
    }
    tmp = strtok(cmdtext, idx);
    if(!strlen(tmp))
    {
    SendClientMessage(playerid, COLOR_GRAD1, "Verwendung: /login [passwort]");
    return 1;
    }
    strmid(tmppass, tmp, 0, strlen(cmdtext), 255);
    Encrypt(tmppass);
    OnPlayerLogin(playerid,tmppass);
    }
    return 0;
    }
    if (strcmp(cmd, "/register", true) ==0 )
    {
    if(IsPlayerConnected(playerid))
    {
    if(gPlayerLogged[playerid] == 1)
    {
    SendClientMessage(playerid, COLOR_WHITE, "SERVER: Du bist bereits eingeloggt.");
    return 1;
    }
    GetPlayerName(playerid, sendername, sizeof(sendername));
    format(string, sizeof(string), "%s.ini", sendername);
    new File: hFile = fopen(string, io_read);
    if (hFile)
    {
    SendClientMessage(playerid, COLOR_YELLOW, "Dieser Name ist schon vergeben! Bitte benutze einen anderen.");
    fclose(hFile);
    return 1;
    }
    new tmppass[64];
    tmp = strtok(cmdtext, idx);
    if(!strlen(tmp))
    {
    SendClientMessage(playerid, COLOR_GRAD1, "Verwendung: /register [passwort]");
    return 1;
    }
    strmid(tmppass, tmp, 0, strlen(cmdtext), 255);
    Encrypt(tmppass);
    OnPlayerRegister(playerid,tmppass);
    }
    return 1;
    }
    egal ob so oder so
    if (strcmp(cmd, "/login", true) ==0 )
    {
    if(IsPlayerConnected(playerid))
    {
    new tmppass[64];
    if(gPlayerLogged[playerid] == 1)
    {
    SendClientMessage(playerid, COLOR_WHITE, "SERVER: Du bist bereits eingeloggt.");
    return 1;
    }
    tmp = strtok(cmdtext, idx);
    if(!strlen(tmp))
    {
    SendClientMessage(playerid, COLOR_GRAD1, "Verwendung: /login [passwort]");
    return 1;
    }
    strmid(tmppass, tmp, 0, strlen(cmdtext), 255);
    Encrypt(tmppass);
    OnPlayerLogin(playerid,tmppass);
    }
    return 1;
    }
    if (strcmp(cmd, "/register", true) ==0 )
    {
    if(IsPlayerConnected(playerid))
    {
    if(gPlayerLogged[playerid] == 1)
    {
    SendClientMessage(playerid, COLOR_WHITE, "SERVER: Du bist bereits eingeloggt.");
    return 1;
    }
    GetPlayerName(playerid, sendername, sizeof(sendername));
    format(string, sizeof(string), "%s.ini", sendername);
    new File: hFile = fopen(string, io_read);
    if (hFile)
    {
    SendClientMessage(playerid, COLOR_YELLOW, "Dieser Name ist schon vergeben! Bitte benutze einen anderen.");
    fclose(hFile);
    return 1;
    }
    new tmppass[64];
    tmp = strtok(cmdtext, idx);
    if(!strlen(tmp))
    {
    SendClientMessage(playerid, COLOR_GRAD1, "Verwendung: /register [passwort]");
    return 1;
    }
    strmid(tmppass, tmp, 0, strlen(cmdtext), 255);
    Encrypt(tmppass);
    OnPlayerRegister(playerid,tmppass);
    }
    return 0;
    }