ID Verschiebung Frak. Car

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 und wieder ich :)


    Wie der Titel sagt habe ich ein kleines Problem ich denke mal das sich meine Ids von den Fraktions Cars verschoben haben..
    Habe es gerade gemerkt als ich in ein CC einsteigen wollte, aber nur bei einem werde ich Rausgeschmissen.
    Ich bekomme auch kein "Du bist kein Polizist" ich werd einfach raus geschmissen hier mal mein Code..


    new PolizeiFahrzeuge[19];
    forward PolizeiFahrzeug(vehicleid);


    PolizeiFahrzeuge[9] = AddStaticVehicle(597,-1632.8119,693.8813,-5.4815,178.7158,198,1); // CC10


    das ist auch direkt das wo Bugt!


    public PolizeiFahrzeug(vehicleid)
    {
    for(new i = 0; i < sizeof(PolizeiFahrzeuge); i++)
    {
    if(vehicleid == PolizeiFahrzeuge[i])
    {
    return 1;
    }
    }
    return 0;
    }


    public OnPlayerEnterVehicle(playerid, vehicleid, ispassenger)
    {
    if(PolizeiFahrzeug(vehicleid) && !ispassenger)
    {
    if(SpielerInfo[playerid][pTeam] != 1) {
    SendClientMessage(playerid,hinweis1,"Du bist kein Beamter der Bundespolizei!");
    TogglePlayerControllable(playerid,false);
    TogglePlayerControllable(playerid,true); }
    }


    public OnPlayerStateChange(playerid, newstate, oldstate)
    {
    new vehicleid = GetPlayerVehicleID(playerid);
    if(newstate == PLAYER_STATE_DRIVER){
    if(GetPlayerVehicleID(playerid) == PolizeiFahrzeug(vehicleid)){
    if(SpielerInfo[playerid][pTeam] != 1){
    SendClientMessage(playerid,hinweis1,"Du bist kein Beamter der Bundespolizei!");}
    RemovePlayerFromVehicle(playerid);}
    }


    Ich wollte auf nr Sicher gehen deswegen 2 mal(einmal Freezet und einmal Remove)


    So eigentlich ist doch alles richtig ? wie kommt es dann dazu das ich einfach ohne nachricht rausgeworfen werde?
    Gibt es eine möglichkeit die Id verschiebung zu verhindern?
    Wenn ja wie? Ist nämlich echt lästig...


    danke im vorraus :)


    MfG



    Die heutigen Noobs, sind die Profis von morgen! :thumbup:


    Danke an Jeffry für seine ständige Hilfsbereitschaft und freundliche Art. 8)

  • if(GetPlayerVehicleID(playerid) == PolizeiFahrzeug(vehicleid)){


    Das ist falsch :)


    Schreibe das so:


    public OnPlayerStateChange(playerid, newstate, oldstate)
    {
    new vehicleid = GetPlayerVehicleID(playerid);
    if(newstate == PLAYER_STATE_DRIVER)
    {
    if(PolizeiFahrzeug(vehicleid) && SpielerInfo[playerid][pTeam] != 1)
    {
    SendClientMessage(playerid,hinweis1,"Du bist kein Beamter der Bundespolizei!");
    RemovePlayerFromVehicle(playerid);
    }
    }
    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 sagt der mir das vehicle id nicht definiert ist :D


    //Erledigt habs vergessen einzufügen :D


    //edit 2:


    Es Buggt nun noch viel mehr rum.
    Jetzt bekomme ich beim einsteigen ins copcar die nachrichten
    ich bin kein fahrlehrer
    kein taxifahrer
    ....


    public OnPlayerStateChange(playerid, newstate, oldstate)
    {
    new vehicleid = GetPlayerVehicleID(playerid);
    if(newstate == PLAYER_STATE_DRIVER)
    {
    if(PolizeiFahrzeug(vehicleid) && SpielerInfo[playerid][pTeam] != 1)
    {
    SendClientMessage(playerid,hinweis1,"Du bist kein Beamter der Bundespolizei!");
    RemovePlayerFromVehicle(playerid);
    }
    }
    if(newstate == PLAYER_STATE_DRIVER)
    {
    if(PolizeiFahrzeug(vehicleid) && SpielerInfo[playerid][pTeam] != 2)
    {
    SendClientMessage(playerid,hinweis1,"Du bist kein Sanitäter/Arzt!");
    RemovePlayerFromVehicle(playerid);
    }
    }
    if(newstate == PLAYER_STATE_DRIVER)
    {
    if(PolizeiFahrzeug(vehicleid) && SpielerInfo[playerid][pTeam] != 3)
    {
    SendClientMessage(playerid,hinweis1,"Du bist kein Fahrschüler/Fahrlehrer!");
    RemovePlayerFromVehicle(playerid);
    }
    }
    if(newstate == PLAYER_STATE_DRIVER)
    {
    if(PolizeiFahrzeug(vehicleid) && SpielerInfo[playerid][pTeam] != 4)
    {
    SendClientMessage(playerid,hinweis1,"Du bist kein Taxifahrer!");
    RemovePlayerFromVehicle(playerid);
    }
    }
    if(newstate == PLAYER_STATE_DRIVER)
    {
    if(PolizeiFahrzeug(vehicleid) && SpielerInfo[playerid][pTeam] != 6)
    {
    SendClientMessage(playerid,hinweis1,"Du bist kein Reporter!");
    RemovePlayerFromVehicle(playerid);
    }
    }



    Die heutigen Noobs, sind die Profis von morgen! :thumbup:


    Danke an Jeffry für seine ständige Hilfsbereitschaft und freundliche Art. 8)

    Einmal editiert, zuletzt von ENEF ()

  • Du hast das "return" vergessen.


    Er wird nun in ein "if" Statement reingehen ( wenn die Bedingung erfüllt ist ), den Code ausführen, aus dem If-Statement rausgehen, in das nächste if-Statement reingehen ..


    if( var != 1) // var = 4
    {
    print("Nein");
    }


    else if(var != 2)
    {
    print("Nein");
    }
    else if(var != 3)
    {
    print("Nein");
    }


    -> 3x "Nein" in der Konsole


    [pwn]if( var != 1) // var = 4
    {
    return print("Nein");
    }


    else if(var != 2)
    {
    return print("Nein");
    }
    else if(var != 3)
    {
    return print("Nein");
    }


    Nur einmal "Nein" in der Konsole.

  • Hey vielen Dank, hab es direkt verstanden was du meintest! gute Erklärung muss man sagen :)


    Hab es jetzt so, und es funktioniert endlich! Hoffentlich auch für immer :)


    public OnPlayerStateChange(playerid, newstate, oldstate)
    {
    new vehicleid = GetPlayerVehicleID(playerid);
    if(newstate == PLAYER_STATE_DRIVER)
    {
    if(PolizeiFahrzeug(vehicleid) && SpielerInfo[playerid][pTeam] != 1){
    SendClientMessage(playerid,hinweis1,"Du bist kein Beamter der Bundespolizei!");
    return RemovePlayerFromVehicle(playerid);
    }
    }
    else if(newstate == PLAYER_STATE_DRIVER)
    {
    if(PolizeiFahrzeug(vehicleid) && SpielerInfo[playerid][pTeam] != 2)
    {
    SendClientMessage(playerid,hinweis1,"Du bist kein Sanitäter/Arzt!");
    return RemovePlayerFromVehicle(playerid);
    }
    }
    else if(newstate == PLAYER_STATE_DRIVER)
    {
    if(PolizeiFahrzeug(vehicleid) && SpielerInfo[playerid][pTeam] != 3)
    {
    SendClientMessage(playerid,hinweis1,"Du bist kein Fahrschüler/Fahrlehrer!");
    return RemovePlayerFromVehicle(playerid);
    }
    }
    else if(newstate == PLAYER_STATE_DRIVER)
    {
    if(PolizeiFahrzeug(vehicleid) && SpielerInfo[playerid][pTeam] != 4)
    {
    SendClientMessage(playerid,hinweis1,"Du bist kein Taxifahrer!");
    return RemovePlayerFromVehicle(playerid);
    }
    }
    else if(newstate == PLAYER_STATE_DRIVER)
    {
    if(PolizeiFahrzeug(vehicleid) && SpielerInfo[playerid][pTeam] != 6)
    {
    SendClientMessage(playerid,hinweis1,"Du bist kein Reporter!");
    RemovePlayerFromVehicle(playerid);
    }
    }
    return 1;
    }


    MfG :)


    Ich habe ein kleines System entwickelt und wollte nachfragen wie ich es anstelle, dass die ADAC leute in der Gangzone alle Autos fahren könne?
    ADAC = GangZoneCreate(-1877.083, -21.35266, -1799.829, 203.5103);


    man muss ja jetzt mit IsPlayerInArea arbeiten, aber wie?



    Die heutigen Noobs, sind die Profis von morgen! :thumbup:


    Danke an Jeffry für seine ständige Hilfsbereitschaft und freundliche Art. 8)

    Einmal editiert, zuletzt von ENEF ()

  • Würde das ADAC aber nicht dann auch außerhalb die Autos fahren können ? Ich checks nicht


    if(newstate == PLAYER_STATE_DRIVER)
    {
    if(!IsPlayerInArea(playerid,-1877.083, -21.35266, -1799.829, 203.5103) && SpielerInfo[playerid][pTeam] != 5) {
    if(PolizeiFahrzeug(vehicleid) && SpielerInfo[playerid][pTeam] != 1){
    SendClientMessage(playerid,hinweis1,"Du bist kein Beamter der Bundespolizei!");
    return RemovePlayerFromVehicle(playerid); }
    }
    }


    So ? würde man dann aber garnicht mehr rein kommen? Die adac leute dürfen die autos nur in der Zone betreten aber kp hilfe wäre benötigt :D


    //Edit


    jetzt können ADAC und Polizisten überall damit fahren, aber ich will ja das ADAC nur in der Zone fahren darf -.-



    Die heutigen Noobs, sind die Profis von morgen! :thumbup:


    Danke an Jeffry für seine ständige Hilfsbereitschaft und freundliche Art. 8)

    2 Mal editiert, zuletzt von ENEF ()

  • Ein Tipp vn mir ich würde das streamer plugin dafür verwenden , diese bietet die Funktion
    native CreateDynamicRectangle(Float:minx, Float:miny, Float:maxx, Float:maxy, worldid = -1, interiorid = -1, playerid = -1);


    Damit werden Zonen erstellt, diese sind natürlich nicht sichtbar erfüllt den selben Zweck wie die Abfrage isPlayerinArea, jedoch benötigst du keinen Timer.


    forward OnPlayerEnterDynamicArea(playerid, areaid);
    forward OnPlayerLeaveDynamicArea(playerid, areaid);


    Die oben genannten Callbacks, werden aufgerufen , wenn der Spieler eine Zone verlässt, daher kannst du den Spieler zum Beispiel aus dem Aut entfernen oder den Motor des Fahrzeugs ausmachen.


    http://forum.sa-mp.com/showthread.php?t=102865


    Anwendungsbeispiel:


    falls du diese Zonen für etwas anderes auch nutzen möchtest



    new gZones[10];


    gZone[0] = CreateDynamicRectangle(0.0, 0.0, 10.0, 10.0);


    Wenn der Spieler im Auto sitzt
    if(newstate == PLAYER_STATE_DRIVER)
    {
    if(IsPlayerInAnyDynamicArea(playerid))return SendClientMessage(playerid,-1,"Dieses Fahrzeug dürftest du nicht fahren");
    }


    oder falls du diese Zonen für etwas anderes auch nutzen möchtest


    if(newstate == PLAYER_STATE_DRIVER) {
    for(new i; i != sizeof(gZone); ++i)if(IsPlayerInDynamicArea(playerid,gZone[i]))return SendClientMessage(playerid,-1,"Dieses Fahrzeug dürftest du nicht fahren");
    }


    public OnPlayerEnterDynamicArea(playerid, areaid) {
    return SendClientMessage(playerid,-1,"Zone betreten");
    }
    public OnPlayerLeaveDynamicArea(playerid, areaid) {
    return SendClientMessage(playerid,-1,"Zone verlassen");
    }

  • Ich verstehe das Prinzip aber weiss nicht wie ich es anwenden soll, beziehungsweise wie ich damit arbeiten kann.
    Kannst du mir vielleicht ein beispiel machen ?
    Das wenn man ja in der Zone ist, damit das ADAC auch die Polizei Autos benutzen darf und wenn die Zone verlassen wird die Removet werden ..


    Wäre nett :p



    //UP



    Die heutigen Noobs, sind die Profis von morgen! :thumbup:


    Danke an Jeffry für seine ständige Hilfsbereitschaft und freundliche Art. 8)

    Einmal editiert, zuletzt von ENEF ()