Motorrad und Boot /s Führerschein ... Wie frage ich die Flug und Boot ID's ab?

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 Leute!


    Ich wollte bei OnPlayerEnterVehicle abfragen ob der User für Boote und Flugzeuge bzw. Helis die jeweiligen Scheine (Auto hab ich bereits hinbekommen) - hat.


    Ich hab ein Beispiel gemacht,aber es klappt nicht: (Er bleibt bei 0 oder bei 1 sitzen.Also passiert nichts.


    #define alleflugcars 417 && 425 && 447 && 460 && 469 && 476 && 487 && 488 && 497 && 511 && 512 && 513 && 519 && 520 && 548 && 553 && 563 && 577 && 592 && 593



    public OnPlayerEnterVehicle(playerid, vehicleid, ispassenger)
    {
    if(vehicleid==alleflugcars) //"alleflugcars" wurde von mir oben defined.Damit ich oben falls ein Flugzeug fehlt es oben hinzufügen kann.
    {
    if(GetPVarInt(playerid,"Flugschein")==0)
    {
    TogglePlayerControllable(playerid,true);
    SendClientMessage(playerid,rot,"** Du hast keinen Flugschein.");
    }
    else
    {
    return 1;
    }
    }
    return 1;
    }


    In diesem Beispiel soll er also wenn GetPVarInt(playerid,"Flugschein")==0) ist,wieder aussteigen. und bei '==1)' drinne bleiben.Aber er bleibt auch wenn ich ihn nicht habe,sitzen.

  • if(GetPVarInt(playerid,"Flugschein")==0)
    {
    TogglePlayerControllable(playerid,true);
    TogglePlayerControllable(playerid,false);
    SendClientMessage(playerid,rot,"** Du hast keinen Flugschein.");
    }


    Und wenn du das machst if(vehicleid==alleflugcars) aber das oben so deklariert hast #define alleflugcars 417 && 425 && 447 && 460 && 469 && 476 && 487 && 488 && 497 && 511 && 512 && 513 && 519 && 520 && 548 && 553 && 563 && 577 && 592 && 593 dann musst du doch immer so machen:
    #define alleflugcars 417 && vehicleid == 425 && vehicleid == 447... machen oder nicht?
    Aber vorher new vehicleid == GetPlayerVehicleID(MAX_PLAYERS);machen?

  • #define alleflugcars 417 && 425 && 447 && 460 && 469 && 476 && 487 && 488 && 497 && 511 && 512 && 513 && 519 && 520 && 548 && 553 && 563 && 577 && 592 && 593


    Das ist 'nen grober (Denk)Fehler; a) brauchst du dazu nach wie vor "vehicleid ==" - wie es 5Gum bereits geschrieben hat und b) funktioniert das so allgemein doch überhaupt nicht?
    Du fragst doch quasi ab, ob du in allen Cars gleichzeitig sitzt, da du mit "&&" sozusagen ein "and" angibst und du ja nicht überprüfst, ob er in allen oben angegeben ID's sitzt, sondern OB(!) er überhaupt in einem der gelisteten Vehicle sitzt, daher wäre ein "or" (||) doch sinnvoller?


    Oder liege ich da jetzt falsch? Wenn ja, verbessert mich bitte.
    __


    Gruß

  • Schreib es einfach so:


    new const cars[20] = {417,425,447,460,469,476,487,488,497,511,512,513,519,520,548,553,563,577,592,593};


    public OnPlayerEnterVehicle(playerid, vehicleid, ispassenger)
    {
    if(GetPVarInt(playerid,"Flugschein")) return 1;
    for(new i; i<sizeof(cars); i++) {
    if(GetVehicleModel(vehicleid) != cars[i]) continue;
    return RemovePlayerFromVehicle(playerid),SendClientMessage(playerid,rot,"** Du hast keinen Flugschein.");
    }
    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