Problem mit Abfrage: Wenn Maximum erreicht wurde, erscheint Unknown Command

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
  • Moin Moin,


    Ich habe eine Maximale Anzahl von Fahrzeugen definiert, die gespawnt werden können. Wenn diese erreicht ist und ich ein Fahrzeug spawnen möchte, sollte eigentlich die Meldung "Maximale Anzahl erreicht" erscheinen. Das Problem ist nun, dass sobald alle möglichen Fahrzeuge gespawnt sind und ich ein weiteres spawnen möchte, die Meldung "SERVER: Unknown Command" erscheint. Gebe ich danach erneut den Befehl zu spawnen eines Fahrzeuges ein, erscheint die von mir gewünschte meldung.
    Mit einem anderen Befehl, kann ich die gespawnten Fahrzeuge wieder löschen. Dies geht allerdings nur solange, bis die Meldung Unknown Command erscheint. Danach ist der Befehl zum löschen der Fahrzeuge wirkunsglos und ich bekomme hier ebenfalls die Meldung Unknown Command.
    Ich finde leider das Problem in meinem Script nicht. Ich hoffe ihr könnt mir helfen.


    Definitionen:
    #define MAX_SPAWNED_CARS 5
    new SpawnedCars = -1;
    new scar[MAX_SPAWNED_CARS];


    Befehl Fahrzeug spawnen:
    dcmd_veh(playerid, params[])
    {
    if(pInfo[playerid][pAdmin] < 4) return 1;
    new car,c1,c2;
    if(sscanf(params,"iii",car,c1,c2)) return SendClientMessage(playerid,C_LIME,"Verwendung: "E_WHITE"/veh [ModelID] [FarbID 1] [FarbID 2]");
    if(car < 400 || car > 611) return SendClientMessage(playerid,C_RED,"Fehler: "E_WHITE"Die ModelID darf nicht kleiner als 400 oder größer als 611 sein!");
    if(c1 < 0 || c1 > 255 || c2 < 0 || c2 > 255) return SendClientMessage(playerid,C_RED,"Fehler: "E_WHITE"Die FarbID darf nicht kleiner als 0 oder größer als 255 sein!");
    if(SpawnedCars == MAX_SPAWNED_CARS) return SendClientMessage(playerid,C_RED,"Fehler: "E_WHITE"Maximale Anzahl an gespawnten Fahrzeugen erreicht!");
    if(IsPlayerInAnyVehicle(playerid)) return SendClientMessage(playerid,C_RED," Fehler: "E_WHITE"Du sitzt bereits in einem Fahrzeug!");
    else {
    new Float:posx, Float:posy, Float:posz, Float: posa;
    GetPlayerPos(playerid,posx,posy,posz);
    GetPlayerFacingAngle(playerid,posa);
    SpawnedCars++;
    scar[SpawnedCars] = CreateVehicle(car,posx,posy,posz,posa,c1,c2,-1);
    PutPlayerInVehicle(playerid,scar[SpawnedCars],0);
    }
    return 1;
    }


    Befehl Fahrzeug löschen:
    dcmd_delcars(playerid, params[])
    {
    #pragma unused params
    if(pInfo[playerid][pAdmin] < 4) return 1;
    if(SpawnedCars == 0) return SendClientMessage(playerid,C_RED,"Fehler: "E_WHITE"Keine Fahrzeuge gespawned!");
    else {
    new currentcars = SpawnedCars;
    for(new c = currentcars; c <= currentcars && c >= 0; c--) {
    DestroyVehicle(scar[code=c]);
    SpawnedCars--;
    }
    new cmsg[65],pname[24];
    GetPlayerName(playerid,pname,24);
    format(cmsg,65,"[AdmCmd] "E_WHITE"%s hat alle gespawnten Fahrzeuge gelöscht.",pname);
    AdminMessage(3,cmsg);
    }
    return 1;
    }

  • Ja, das ist auch gut so. Und genau deshalb musst du das auch bei der Abfrage machen. Weil, wenn du 1 Fahrzeug gespawnt hast, steht der Counter auf 0. => 5 gespawnt: Counter = 4.


    Counter = 4 = 5 - 1.



    Versuch es einfach so wie ich es geschrieben habe, wirst schon sehen, es klappt.