Carspawner Problem

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


    ich habe ein Problem mit meinem Carspawner. Ich habe den Teil mit "modelid = -1" aus diesem Tutorial. Leider funktioniert der ganze Befehl nicht. Wenn ich z.B. /v Infernus eingebe kommt immer "Falsche Eingabe: /v [Fahrzeug Name/ID]". Das passiert auch wenn man anstatt Infernus die FahrzeugId eingibt.
    Ich glaube die Zeile ist falsch:
    new model[50];
    if(!sscanf(params, "u", model))return SendClientMessage(playerid, 0xFF0023FF, "Falsche Eingabe: /v [Fahrzeug Name/ID]");


    ocmd:v(playerid, params[])
    {
    new model[50];
    if(!sscanf(params, "u", model))return SendClientMessage(playerid, 0xFF0023FF, "Falsche Eingabe: /v [Fahrzeug Name/ID]");
    if(GetPVarInt(playerid, "VehiclesSpawned") <= 4)
    {
    new modelid = -1;
    if(!IsNumeric(model))
    {
    for(new sauto=0; sauto < 212; sauto++)
    {
    if(!strcmp(Fahrzeugname[sauto], model, true))
    {
    modelid = sauto+400;
    break;
    }
    }
    }
    if(IsNumeric(model)) modelid = strval(model);
    if(modelid == -1) return SendClientMessage(playerid, ROT, "Unbekannter Fahrzeugname!");
    {
    new vehicleForPlayer;
    new Float:x, Float:y, Float:z, Float:angleplayer;
    GetPlayerPos(playerid, x, y, z);
    GetPlayerFacingAngle(playerid,angleplayer);
    vehicleForPlayer = CreateVehicle(modelid, x, y, z, angleplayer, random(0-252), random(0-252),60);
    PutPlayerInVehicle(playerid, vehicleForPlayer, 0);
    }
    }
    else
    return SendClientMessage(playerid, 0xFF0023FF, "Maximale Slotanzahl verbraucht! Tippe /desall oder /des 1-4 um alle Fahrzeuge zu löschen.");
    return 1;
    }


    Weiß einer wie ich das beheben kann?

  • Wenn ich dann z.B. /v Infernus eingebe kommt zwar kein "Falsche Eingabe: /v [Fahrzeug Name/ID]" mehr, aber ein Fahrzeug wird trotzdem nicht gespawnt.
    Wenn ich die Id eingebe (/v 424) kommt aber immer noch die "Falsche Eingabe: /v [Fahrzeug Name/ID]" Meldung.

  • Eine Zahl kann in einem String stehen, deswegen reicht es hier, wenn du einfach "s" verwendest.
    Bei "u" "i" usw. wandelt sscanf das sowieso nur in einen Integer, Float etc. um.
    Das machst du in dem Befehl ja auch und so kannst du in diesem Fall Zahlen und Strings als Parameter im Befehl verwenden.


    ocmd:v(playerid, params[])
    {
    new model[50];
    if(sscanf(params, "s", model))return SendClientMessage(playerid, 0xFF0023FF, "Falsche Eingabe: /v [Fahrzeug Name/ID]");
    if(GetPVarInt(playerid, "VehiclesSpawned") <= 4)
    {
    new modelid = -1;
    if(!IsNumeric(model))
    {
    for(new sauto=0; sauto < 212; sauto++)
    {
    if(!strcmp(Fahrzeugname[sauto], model, true))
    {
    modelid = sauto+400;
    break;
    }
    }
    }
    else modelid = strval(model);
    if(modelid == -1) return SendClientMessage(playerid, ROT, "Unbekannter Fahrzeugname!");
    {
    new vehicleForPlayer;
    new Float:x, Float:y, Float:z, Float:angleplayer;
    GetPlayerPos(playerid, x, y, z);
    GetPlayerFacingAngle(playerid,angleplayer);
    vehicleForPlayer = CreateVehicle(modelid, x, y, z, angleplayer, random(0-252), random(0-252),60);
    PutPlayerInVehicle(playerid, vehicleForPlayer, 0);
    }
    }
    else
    return SendClientMessage(playerid, 0xFF0023FF, "Maximale Slotanzahl verbraucht! Tippe /desall oder /des 1-4 um alle Fahrzeuge zu löschen.");
    return 1;
    }



    BlackLegend


    (e): sscanf Problem behoben

  • mach von !sscanf das ! weg


    sscanf returnt 0 bei keinem fehler


    MFG Piet


    Die einzig richtig Antwort.

    Wer ist der Mensch hinter der Uniform? Ist euch das bekannt?
    Es ist der selbe der noch eben in Zivil neben euch stand.
    Warum wird er gehasst und so selten respektiert?
    Warum ist er derjenige der seinen Hals für euch riskiert?
    Trägt der Bulle eine Weste, das hat er früher nie gemacht,
    die Zeiten haben sich geändert und jeder Dienst ist ein Kampf!
    Warum gibt’s das SEK und warum sind sie so brutal?
    Und wieso hat wieder einer mit seinem Leben bezahlt?

  • Die einzig richtig Antwort.


    Nicht ganz, zwar hatte ich das übersehen, jedoch hätte der Befehl dann auch nicht funktioniert,
    zumindest nicht wie er es sollte, denn er (Threadersteller) wollte ja, dass man sowohl Fahrzeugname
    als auch Fahrzeugid als Parameter übergeben kann.
    Bitte nicht alle über einen Kamm scheren.



    BlackLegend

  • Nicht ganz, zwar hatte ich das übersehen, jedoch hätte der Befehl dann auch nicht funktioniert,
    zumindest nicht wie er es sollte, denn er (Threadersteller) wollte ja, dass man sowohl Fahrzeugname
    als auch Fahrzeugid als Parameter übergeben kann.
    Bitte nicht alle über einen Kamm scheren.



    BlackLegend


    Sein hauptproblem wäre aber gelöst, und das mit dem Namen ist ja auch nicht wirklich schwer zumal man ID=>Name Array im Internet zuhauf findet.

    Wer ist der Mensch hinter der Uniform? Ist euch das bekannt?
    Es ist der selbe der noch eben in Zivil neben euch stand.
    Warum wird er gehasst und so selten respektiert?
    Warum ist er derjenige der seinen Hals für euch riskiert?
    Trägt der Bulle eine Weste, das hat er früher nie gemacht,
    die Zeiten haben sich geändert und jeder Dienst ist ein Kampf!
    Warum gibt’s das SEK und warum sind sie so brutal?
    Und wieso hat wieder einer mit seinem Leben bezahlt?

  • hier einfach der command überarbeitet



    ocmd:v(playerid, params[])
    {
    new model[50];
    if(!sscanf(params, "u", model))return SendClientMessage(playerid, 0xFF0023FF, "Falsche Eingabe: /v [Fahrzeug Name/ID]");
    if(GetPVarInt(playerid, "VehiclesSpawned") > 4)return SendClientMessage(playerid, 0xFF0023FF, "Maximale Slotanzahl verbraucht! Tippe /desall oder /des 1-4 um alle Fahrzeuge zu löschen.");
    new modelid = -1;
    if(!IsNumeric(model))
    {
    for(new sauto=0; sauto < 212; sauto++)
    {
    if(!strcmp(Fahrzeugname[sauto], model, true))
    {
    modelid = sauto+400;
    break;
    }
    }
    }
    else if(IsNumeric(model)) modelid = strval(model);
    if(modelid == -1) return SendClientMessage(playerid, ROT, "Unbekannter Fahrzeugname!");
    new vehicleForPlayer;
    new Float:x, Float:y, Float:z, Float:angleplayer;
    GetPlayerPos(playerid, x, y, z);
    GetPlayerFacingAngle(playerid,angleplayer);
    vehicleForPlayer = CreateVehicle(modelid, x, y, z, angleplayer, random(0-252), random(0-252),60);
    PutPlayerInVehicle(playerid, vehicleForPlayer, 0);
    return 1;
    }