VehicleID durch kennzeichen ermitteln

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
  • Guten zusammen


    Ich habe ein kleines Problem
    ich setze pro Auto das kennzeichen in einen Zwischenspeicher das auch klappt
    nun habe ich das Problem, das wenn ich die ID des kennzeichens haben möchte, das er mir immer -1 ausgibt.
    Ich habe die Funktion so aufgebaut:
    stock GetIDByKennzeichen(KZ[])
    {
    new i;
    for(new v = 0; v < MAX_VEHICLES; v++)
    {
    if(!strcmp(Kennzeichen[v], KZ, false)) return i;
    }
    return -1;
    }
    Setzten tu ich ein Kennzeichen so:
    format(Kennzeichen[carid],50,"%s","Admin");
    wenn ich jetzt in einen command das kennzeichen ausgebe, gibt er mir -1 aus
    der cmd ist der:
    bcmd:findcar(playerid,params[])
    {
    if(GetPVarInt(playerid,"loggedin")!=1)return SendClientMessage(playerid,cRed,"Du bist nicht eingeloggt!");
    new string[128];
    if(sscanf(params,"s",string))return SendClientMessage(playerid,cRed,"/findcar [Kennzeichen]");
    new id = GetIDByKennzeichen(string);
    if(id!=-1)
    {
    new Float:x,Float:y,Float:z;
    GetVehiclePos(id,x,y,z);
    SetPlayerCheckpoint(playerid,x,y,z,5.0);
    SendClientMessage(playerid,cYellow,"Auto gefunden!");
    }
    else SendClientMessage(playerid,cRed,"Auto unbekannt!");
    return 1;
    }


    Ich hoffe, das einer helfen kann

    All in all it's just another brick in the wall

  • Da ist dein Fehler, schreibe es so:


    stock GetIDByKennzeichen(KZ[])
    {
    for(new v; v <MAX_VEHICLES; v++)
    {
    if(!strcmp(Kennzeichen[v], KZ, false)) return v;
    }
    return -1;
    }


    mfg. :thumbup:

    ast2ufdyxkb1.png


    Leute, lernt scripten und versucht mal lieber etwas selber zu schreiben, als es aus einem GF zu kopieren. :S

  • jetzt setzt er den Checkpoint nur an den 0 Punkt egal ab das kennzeichen exestiert oder nicht


    //e
    der Code ist der
    stock GetIDByKennzeichen(KZ[])
    {
    for(new v = 0; v < MAX_VEHICLES; v++)
    {
    if(!strcmp(Kennzeichen[v], KZ, false)) return v;
    }
    return -1;
    }

    All in all it's just another brick in the wall

    Einmal editiert, zuletzt von Beavis ()

  • Die Frage ist einfach, existiert das Auto auf dem Server mit der Vehicleid die zurückgegeben wird, lass dir das doch alles mal ausprinten ;)


    mfg. :thumbup:

    ast2ufdyxkb1.png


    Leute, lernt scripten und versucht mal lieber etwas selber zu schreiben, als es aus einem GF zu kopieren. :S

  • RFT hat doch schon gesagt was du machen sollst.
    Prüfe ob der String leer ist, da sonst nicht das raus kommt, was du haben willst.


    stock GetIDByKennzeichen(KZ[])
    {
    for(new v = 0; v < MAX_VEHICLES; v++)
    {
    if(Kennzeichen[v] && !strcmp(Kennzeichen[v], KZ, false)) return v;
    }
    return -1;
    }
    Das wars auch schon

    "Bevor ich mir Informationen aus der "Bild" hole,
    werde ich anfangen, Wahlergebnisse danach vorauszusagen,
    neben welchen Busch unsere Katze gepinkelt hat."

    Margarete Stokowski

  • Beavis dann mache es so:


    stock GetIDByKennzeichen(KZ[])
    {
    for(new v = 0; v < MAX_VEHICLES; v++)
    {
    if(Kennzeichen[v] != '\0' && !strcmp(Kennzeichen[v], KZ, false)) return v;
    }
    return -1;
    }


    mfg. :thumbup:

    ast2ufdyxkb1.png


    Leute, lernt scripten und versucht mal lieber etwas selber zu schreiben, als es aus einem GF zu kopieren. :S

  • Soweit ich weis kannst du so keine strings abgleichen.
    stock GetIDByKennzeichen(KZ[])
    {
    for(new v = 0; v < MAX_VEHICLES; v++)
    {
    if(strlen(Kennzeichen[v]) > 1 && !strcmp(Kennzeichen[v], KZ, false)) return v;
    }
    return -1;
    }


    Sollten die vorgängerversionen nicht klappen ;)

  • Kaliber


    Mal abgesehen davon, das Leer \0 ist und nicht ein Leerzeichen :D


    aber


    if((Kennzeichen[v]) && (!strcmp(Kennzeichen[v], KZ, false))) return v;
    sollte eigentlich funktioniere

    "Bevor ich mir Informationen aus der "Bild" hole,
    werde ich anfangen, Wahlergebnisse danach vorauszusagen,
    neben welchen Busch unsere Katze gepinkelt hat."

    Margarete Stokowski

  • so


    Kennzeichen[MAX_VEHICLES][50],


    Sag das doch :wacko:


    Dann musst du das so machen:


    stock GetIDByKennzeichen(KZ[])
    {
    for(new v = 0; v < MAX_VEHICLES; v++)
    {
    if(Kennzeichen[v][0] != '\0' && !strcmp(Kennzeichen[v], KZ, false)) return v;
    }
    return -1;
    }


    mfg. :thumbup:

    ast2ufdyxkb1.png


    Leute, lernt scripten und versucht mal lieber etwas selber zu schreiben, als es aus einem GF zu kopieren. :S

  • Mal abgesehen davon, das Leer \0 ist und nicht ein Leerzeichen :D

    Ganz streng genommen ist Leer nicht \0 sondern \0 das Ende eines leeren Strings, der folglich nur aus \0 besteht :P
    Schließlich endet jeder String mit \0


    Kennzeichen[v][0] != '\0'
    // oder
    strlen(Kennzeichen[v]) >= 1