Einige Scripting Fragen (Dialog)

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
  • Hey, ich versuche zurzeit Führerscheine zu scripten.
    Jedoch komme ich hier nicht mehr weiter:


    if(strcmp(cmdtext,"/scheine",true)==0)
    {
    new text1[20];
    if(PlayerInfo[playerid][pAutoSchein])
    {
    text1 = "Bestanden";
    }
    else
    {
    text1 = "Nicht Bestanden";
    }
    ShowPlayerDialog(playerid,DIALOG_SCHEINE,DIALOG_STYLE_MSGBOX,"Scheine","AutoSchein: [%s]\nMotorradSchein: [%s]\nRollerSchein: [%s]\nLKWSchein: [%s]\nFlugSchein: [%s]\nWaffenSchein: [%s]","Schließen","",GetPVarInt(playerid,"AutoSchein"),text1,GetPVarInt(playerid,"MotoSchein"),text1,GetPVarInt(playerid,"RollerSchein"),text1,GetPVarInt(playerid,"LKWSchein"),text1,GetPVarInt(playerid,"FlugSchein"),text1,GetPVarInt(playerid,"WaffenSchein"),text1);
    return 1;
    }


    Da kommt immer:
    Die Anzahl der Parameter ist falsch


    Und noch ein Problem:


    if(strcmp(cmdtext,"/status",true)==0)
    {
    new frakname[64];
    switch(GetPVarInt(playerid,"Fraktion"))
    {
    case 0:(frakname="Zivilist");
    case 1:(frakname="Cop");
    case 2:(frakname="F.B.I");
    case 3:(frakname="Army");
    }
    ShowPlayerDialog(playerid,DIALOG_STATUS,DIALOG_STYLE_MSGBOX,"Statistik","Name: %s\nLevel: %d\nFraktion: %s","Schließen","",SpielerName(playerid),GetPlayerScore(playerid),frakname);
    return 1;
    }


    Dort kommt genau der gleiche Fehler.


    Hoffe ihr könnt mir helfen...

  • @Arendium: er kommt damit klar.


    ShowPlayerDialog(playerid,DIALOG_STATUS,DIALOG_STYLE_MSGBOX,"Statistik","Name: %s\nLevel: %d\nFraktion: %s","Schließen","",SpielerName(playerid),GetPlayerScore(playerid),frakname);
    ist das Problem, die letzten 3 Parameter (SpielerName(playerid),GetPlayerScore(playerid),frakname) sind an dieser Stelle falsch. Versuch den Text zuerst mit format zu formatieren.

  • @Arendium: er kommt damit klar.


    ShowPlayerDialog(playerid,DIALOG_STATUS,DIALOG_STYLE_MSGBOX,"Statistik","Name: %s\nLevel: %d\nFraktion: %s","Schließen","",SpielerName(playerid),GetPlayerScore(playerid),frakname);
    ist das Problem, die letzten 3 Parameter (SpielerName(playerid),GetPlayerScore(playerid),frakname) sind an dieser Stelle falsch. Versuch den Text zuerst mit format zu formatieren.


    Nunja der Compiler kommt zwar damitklar aber es trifft eben immer ein
    Wenn(PlayerInfo[playerid][pAutoschein]) dann....
    Wie gesagt das würde immer eintreffen


    @Keybinder
    So als Denkanstoß
    Du musst die Abfrage noch etwas ergänzen mit if(PlayerInfo[playerid][pAutoschein] == 1) oder was auch immer du da haben willst
    und
    Die ShowPlayerDialog Funktion besitzt keine Parameter du musst zuerst ein string umformatieren und dann ausgeben lassen


  • Meiner Meinung nach, du fragt bei den Scheinen so wie beim Status NUR ab, ob er den Autoschein hat, und in welcher Fraktion er ist..


    Du hast if(PlayerInfo[playerid][pAutoSchein]) abgefragt. wenn du nur Diese abfrage stellst, kann er nicht sehen, ob er noch n Motorradschein hat, da du NUR den Autoschein abfragen tuhst.

  • if(PlayerInfo[playerid][pAutoschein])
    trifft zu, wenn PlayerInfo[playerid][pAutoschein] nicht 0 ist.
    Um dir das ganze mit dem "bestanden/nicht bestanden" zu erleichtern, könntest du auch
    #define YN(%0) ((%0 == 1)?("Ja"):("Nein"))
    //..
    printf("Autoschein: %s",YN(PlayerInfo[playerid][pAutoSchein]));

    verwenden. Mein Beispiel würde "Autoschein: Ja" bzw "Autoschein: Nein" ausgeben, abhängig von PlayerInfo[playerid][pAutoschein].

  • Danke, aber noch eine Frage:


    Wie bekomme ich das:


    if(strcmp(cmdtext,"/scheine",true)==0)
    {
    new string[128];
    printf("Autoschein: %s",YN(PlayerInfo[playerid][pAutoSchein]));
    printf("Motorradschein: %s",YN(PlayerInfo[playerid][pMotoSchein]));
    printf("Rollerschein: %s",YN(PlayerInfo[playerid][pRollerSchein]));
    printf("LKW-Schein: %s",YN(PlayerInfo[playerid][pLKWSchein]));
    printf("Flugschein: %s",YN(PlayerInfo[playerid][pFlugSchein]));
    printf("Waffenschein: %s",YN(PlayerInfo[playerid][pWaffenSchein]));
    format(string,sizeof(string),"AutoSchein: [%s]\nMotorradSchein: [%s]\nRollerSchein: [%s]\nLKWSchein: [%s]\nFlugSchein: [%s]\nWaffenSchein: [%s]",GetPVarInt(playerid,"AutoSchein"),PlayerInfo[playerid][pAutoSchein],GetPVarInt(playerid,"MotoSchein"),PlayerInfo[playerid][pMotoSchein],GetPVarInt(playerid,"RollerSchein"),PlayerInfo[playerid][pRollerSchein],GetPVarInt(playerid,"LKWSchein"),PlayerInfo[playerid][pLKWSchein],GetPVarInt(playerid,"FlugSchein"),PlayerInfo[playerid][pFlugSchein],GetPVarInt(playerid,"WaffenSchein"),PlayerInfo[playerid][pWaffenSchein]);
    ShowPlayerDialog(playerid,DIALOG_SCHEINE,DIALOG_STYLE_MSGBOX,"Scheine",string,"Schließen","");
    return 1;
    }


    jez richtig hin?


    Die Reihe is zu lang ...

  • format(string,sizeof(string),"AutoSchein: [%s]\nMotorradSchein: [%s]\nRollerSchein: [%s]\nLKWSchein: [%s]\nFlugSchein: [%s]\nWaffenSchein: [%s]",GetPVarInt(playerid,"AutoSchein"),
    PlayerInfo[playerid][pAutoSchein],
    GetPVarInt(playerid,"MotoSchein"),
    PlayerInfo[playerid][pMotoSchein],GetPVarInt(playerid,"RollerSchein"),
    PlayerInfo[playerid][pRollerSchein],GetPVarInt(playerid,"LKWSchein"),
    PlayerInfo[playerid][pLKWSchein],GetPVarInt(playerid,"FlugSchein"),
    PlayerInfo[playerid][pFlugSchein],
    GetPVarInt(playerid,"WaffenSchein"),
    PlayerInfo[playerid][pWaffenSchein]);


    Darf ich fragen wieso du GetPVar benutzt und ein array?


  • Danke :))