Ein Problem mit /punkt und eine Frage zu OnVehicleSpawn!

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,
    Der befehl /punkt geht bis zur letzten stelle!
    der befehl würde so aussehen /punkt id nehmen/geben Schein Anzahl!
    Bis zur Anzahl geht alles!
    kann mir wer helfen?

    if(strcmp(cmd,"/punkt",true)==0)
    {
    if(PlayerInfo[playerid][pLeader] == 1 ||PlayerInfo[playerid][pMember] == 1 || PlayerInfo[playerid][pAdmin] >= 4)
    {
    tmp = strtok(cmdtext, idx);
    if(!strlen(tmp))
    {
    SendClientMessage(playerid, COLOR_GRAD2, "Benutze: /punkt [playerid/PartOfName] geben/nehmen ");
    return 1;
    }
    giveplayerid = ReturnUser(tmp);
    tmp = strtok(cmdtext, idx);
    if(!strlen(tmp))
    {
    SendClientMessage(playerid, COLOR_GRAD2, "Benutze: /punkt [playerid/PartOfName] geben/nehmen ");
    return 1;
    }
    new x_names[256];
    GetPlayerName(giveplayerid, giveplayer, sizeof(giveplayer));
    GetPlayerName(playerid, sendername, sizeof(sendername));
    x_names = strtok(cmdtext, idx);
    if(!strlen(x_names))
    {
    SendClientMessage(playerid, COLOR_GREEN, "|__________________ Akzeptieren __________________|");
    SendClientMessage(playerid, COLOR_GREEN, "Benutze: /punkt [playerid] geben/nehmen ");
    SendClientMessage(playerid, COLOR_GREEN, "Führerschein/Flugschein");
    SendClientMessage(playerid, COLOR_GREEN, "|____________________________________________|");
    return 1;
    }
    if(strcmp(x_names,"geben",true) == 0)
    {
    new x_put[256];
    x_put = strtok(cmdtext, idx);
    if(!strlen(x_put))
    {
    SendClientMessage(playerid, COLOR_GREEN, "|__________________ Akzeptieren __________________|");
    SendClientMessage(playerid, COLOR_GREEN, "Benutze: /punkt [playerid] geben ");
    SendClientMessage(playerid, COLOR_GREEN, "Führerschein [menge] / Flugschein [menge]");
    SendClientMessage(playerid, COLOR_GREEN, "|____________________________________________|");
    return 1;
    }
    if(strcmp(x_put,"Führerschein",true) == 0)
    {
    new punkt[256];
    punkt = strtok(cmdtext, idx);//16775
    if(!strval(punkt)) return SendClientMessage(playerid,COLOR_GREEN,"Benutze /punkt [playerid] geben Führerschein [menge]");//es komt immer diese message egal was ich bei "Menge" eingebe
    PlayerInfo[playerid][pCarPoint]+=strval(punkt);
    format(string, sizeof(string), "Du hast %s %d Punkte auf dem Führerschein geschrieben!",strval(punkt),giveplayer);
    SendClientMessage(playerid,COLOR_GREEN,string);
    format(string, sizeof(string), "Polizist %s hat dir %d Punkte auf dein Führerschein geschrieben!",sendername,strval(punkt));
    SendClientMessage(giveplayerid,COLOR_GREEN,string);
    return 1;
    }
    if(strcmp(x_put,"Flugschein",true) == 0)
    {
    new punkt[256];
    punkt = strtok(cmdtext, idx);//16775
    if(!strval(punkt)) return SendClientMessage(playerid,COLOR_GREEN,"Benutze /punkt [playerid] geben Flugschein [menge]");//es komt immer diese message egal was ich bei "Menge" eingebe
    PlayerInfo[playerid][pFlyPoint]+=strval(punkt);
    format(string, sizeof(string), "Du hast %s %d Punkte auf dem Flugschein geschrieben!",strval(punkt),giveplayer);
    SendClientMessage(playerid,COLOR_GREEN,string);
    format(string, sizeof(string), "Polizist %s hat dir %d Punkte auf dein Flugschein geschrieben!",sendername,strval(punkt));
    SendClientMessage(giveplayerid,COLOR_GREEN,string);
    return 1;
    }
    }
    if(strcmp(x_names,"take",true) == 0)
    {
    new x_take[256];
    x_take = strtok(cmdtext, idx);
    if(!strlen(x_take))
    {
    SendClientMessage(playerid, COLOR_GREEN, "|__________________ Akzeptieren __________________|");
    SendClientMessage(playerid, COLOR_GREEN, "Benutze: /punkt [playerid] nehmen ");
    SendClientMessage(playerid, COLOR_GREEN, "Führerschein [menge] / Flugschein [menge]");
    SendClientMessage(playerid, COLOR_GREEN, "|____________________________________________|");
    return 1;
    }
    if(strcmp(x_take,"Führerschein",true) == 0)
    {
    new punkt[256];
    punkt = strtok(cmdtext, idx);//16775
    if(!strval(punkt)) return SendClientMessage(playerid,COLOR_GREEN,"Benutze /punkt [playerid] nehmen Führerschein [menge]");//es komt immer diese message egal was ich bei "Menge" eingebe
    PlayerInfo[playerid][pCarPoint]-=strval(punkt);
    format(string, sizeof(string), "Du hast %s %d Punkte auf dem Führerschein entwertet!",strval(punkt),giveplayer);
    SendClientMessage(playerid,COLOR_GREEN,string);
    format(string, sizeof(string), "Polizist %s hat dir %d Punkte auf dein Führerschein entwertet!",sendername,strval(punkt));
    SendClientMessage(giveplayerid,COLOR_GREEN,string);
    return 1;
    }
    if(strcmp(x_take,"Flugschein",true) == 0)
    {
    new punkt[256];
    punkt = strtok(cmdtext, idx);//16775
    if(!strval(punkt)) return SendClientMessage(playerid,COLOR_GREEN,"Benutze /punkt [playerid] nehmen Flugschein [menge]");//es komt immer diese message egal was ich bei "Menge" eingebe
    PlayerInfo[playerid][pFlyPoint]-=strval(punkt);
    format(string, sizeof(string), "Du hast %s %d Punkte auf dem Flugschein entwertet!",strval(punkt),giveplayer);
    SendClientMessage(playerid,COLOR_GREEN,string);
    format(string, sizeof(string), "Polizist %s hat dir %d Punkte auf dein Flugschein entwertet!",sendername,strval(punkt));
    SendClientMessage(giveplayerid,COLOR_GREEN,string);
    return 1;
    }
    }
    }
    else
    {
    SendClientMessage(playerid,COLOR_GRAD3,"Du arbeitest nicht beim LSPD");
    }
    return 1;
    }

    So nun zur Frage!
    Wenn man ein Auto createt oder es spawned normal
    Also wenn ich CreateVehcile mache wird dannn OnVehicleSpawn aufgerufen?



    //edit überschrift ausgebessert

    Einmal editiert, zuletzt von [FoL]ChillOut ()

  • Du kannst ein Auto über OnGameModeInit() spawnen lassen.
    Entweder AddStaticVehicle, CreateVehicle :)


    Lg

  • Du kannst ein Auto über OnGameModeInit() spawnen lassen.
    Entweder AddStaticVehicle, CreateVehicle :)


    Lg


    nein es geht darum ob dann direkt OnVehicleSpawn aufgerufen wird!


    //edit also ob OnVehicleSpawn bei CreateVehicle oder AddStaticVehicle aufgerufen wird!


    //Rechtschreibfehler verbessert


    //edit weiß das nobody?

    3 Mal editiert, zuletzt von [FoL]ChillOut ()

  • Wozu denkst du gibt es OnVehicleSpawn...
    OnPlayerSpawn wird auch bei dem Spawn des Spielers ausgeführt warum sollte OnVehicleSpawn nicht aufgerufen werden?


    public OnVehicleSpawn(vehicleid)
    {
    printf("Die Fahrzeug-ID %d wurde gerade gespawnt.",vehicleid);
    return 1;
    }

  • ok das wäre geklärt kann wer bei /punkt helfen=


    //push
    //will oder kann keiner helfen?

    2 Mal editiert, zuletzt von [FoL]ChillOut ()


  • ehm warum? punkt ist eine zahl und kein wort oder ähnlichem!

  • Lol du verstehst den Sinn nicht strval gibt eine Zahl zurück und strlen die Anzahl der Zeichen


    !strlen bedeuted also der String sei leer und bei deiner Parameter Abfrage steht strval dies kann nicht funktionieren.


    MFG RFT


    PS: was hast du eigentlich für nen genaues problem mit deinem Code.

    RFT

  • also das problem ist, das alles bis zur abfrage der anzahl der punkte geht
    also das fragt dann wirklich alles ab das gibt esn icht usw
    geb ich aber als letztes eine zahl ein wie es soll passiert nichts mehr


  • if(!strval(punkt)) return SendClientMessage(playerid,COLOR_GREEN,"Benutze /punkt [playerid] nehmen Flugschein [menge]");//es komt immer diese message egal was ich bei "Menge" eingebe

    //du willst ja das dieser text kommt wenn der Spieler nix eingibt daher



    if(!strlen(punkt)) return SendClientMessage(playerid,COLOR_GREEN,"Benutze /punkt [playerid] nehmen Flugschein [menge]");//es komt immer diese message egal was ich bei "Menge" eingebe



    nach diesem Vorgang kann mans mit strval zu einem integer umwandeln.


    MFG RFT
    PS: Ich hoffe ichhabe dein problem richtig verstanden.

    RFT

  • also brauche ich beide abfragen damit er nicht immer 0 ausspcukt wenn man nichts eingibt?

  • ne nur die eine die ich gepostet hab und danach einfach bsp



    PlayerInfo[playerid][pMoney] = strval(Punkt); // wandelt Punkt in einen Integer um


    es wird aber Errors geben mit strlen musst du einen String abfragen bsp tmp[128];


    if(!strlen(tmp)............


    dann
    new Punkt = strval(tmp);
    PlayerInfo[playerid][.........] = Punkt;


    MFG RFT

    RFT

  • ja aber wenn er was anderes außer einen integer schreibt sprich buchstaben soll auch kommen als wenn man nichts eingibt als obraucht man if(!strval(punkt))
    mfg

  • ja aber wenn es zu keinen integer um gewandelt werden kann muss man es doch auch irgendwie mitteilen können!

  • Das hatte ich doch oben beschrieben das man ihn nach der Parameter Abfrage zu einem Integer umwandeln muss sprich.




    if(!tmp[0])return SendClientMessage(playerid, COLOR_WHITE, "Verwendung..........................
    new Punkt = strval(tmp);

    RFT

  • hab ich ja immer an der entsprechenden stelle aber wie frage ich ab ob punkt kein integer istz?

  • Wenn der Parameter keine Zahl wäre würde strval eine 0 zurück geben daher könntest du es so abfragen.



    if(Punkt == 0)return SendClientMessage(playerid, COLOR_RED, "Verwendung................................................

    RFT

  • ich habe es jetzt mal getesten und er kommt jetzt bei führershcein nicht weiter O.o


    //Das problem mit /punkt besteht immer noch

    Einmal editiert, zuletzt von [FoL]ChillOut ()

  • do.de - Domain-Offensive - Domains für alle und zu super Preisen