Anti Car Jack

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 suche ein funzendes car jack system. wenn jemand versucht das auto zu klauen wo schon jemand drinn sitzt das der dann vereckt. hatte auch mal eins aber das war sowas von buggy... das hatte nichtmsher ebracht. mfg

  • new
    bool:vDriver[MAX_VEHICLES];

    public OnPlayerStateChange(playerid, newstate, oldstate)
    {
    if(newstate == PLAYER_STATE_DRIVER)
    {
    vDriver[GetPlayerVehicleID(playerid)] = true;
    }
    else if(newstate == PLAYER_STATE_ONFOOT && oldstate == PLAYER_STATE_DRIVER)
    {
    vDriver[GetPlayerVehicleID(playerid)] = false;
    }
    return 1;
    }


    public OnPlayerEnterVehicle(playerid, vehicleid, ispassenger)
    {
    if(!ispassenger)
    {
    if(vDriver[vehicleid])
    {
    TogglePlayerControllable(playerid, 1); // Vorgang abbrechen
    }
    }
    return 1;
    }
    ungetestet

  • 1error
    C:\Dokumente und Einstellungen\Alex\Eigene Dateien\samp02Xserver.win32\gamemodes\Atlanta_island.pwn(1674) : error 021: symbol already defined: "OnPlayerEnterVehicle"
    Pawn compiler 3.2.3664 Copyright (c) 1997-2006, ITB CompuPhase



    1 Error.

  • Nicht einfach kopieren und einfügen, du solltest schon meinen Code in deinen einfügen.
    Beispiel:
    public OnPlayerEnterVehicle(playerid, vehicleid, ispassenger)
    {
    // hier dein bisheriger Code in OnPlayerenterVehicle (ohne return 1 !)
    if(!ispassenger)
    {
    if(vDriver[vehicleid])
    {
    TogglePlayerControllable(playerid, 1); // Vorgang abbrechen
    }
    }
    return 1;
    }

  • ich habe aber keinen code mehr. ich brauch einfach nur den anti car jack code wo wenn man versucht ein auto zu klauen wo jemand drinn ist das dieser stirbt. und das aber auch der passagier einsteigen kann (nicht wie bei meinen alten das mal er gestorben is und dann ich wenn er einstieg)

  • ok, is aber wiegesagt immer noch der error:
    C:\Dokumente und Einstellungen\Alex\Eigene Dateien\samp02Xserver.win32\gamemodes\Atlanta_island.pwn(1674) : error 021: symbol already defined: "OnPlayerEnterVehicle"
    Pawn compiler 3.2.3664 Copyright (c) 1997-2006, ITB CompuPhase



    1 Error.

  • Dann setz doch vDriver beim aussteigen auf False, himmeldonnerwetternochmal !
    /edit: BTW. nichtmals nötig, einfach das sinnlose && oldstate == PLAYER_STATE_DRIVER weg
    Eigeninitiative !
    Googel oder wiki !
    Ist das so schwer ?
    Und ein wenig logisches denken wäre auch mal angebracht.
    Immer muss man alles vorkauen, weil Anfänger keine Lust haben selbst ihren Kopf zu benutzen ....

  • Versuchs mal so, ungetestet.



    new bool:vDriver[MAX_VEHICLES];
    new eingestiegen = 0;

    public OnPlayerStateChange(playerid, newstate, oldstate)
    {
    if(newstate == PLAYER_STATE_DRIVER)
    {
    vDriver[GetPlayerVehicleID(playerid)] = true;
    eingestiegen = 1;
    }
    else if(newstate == PLAYER_STATE_ONFOOT && oldstate == PLAYER_STATE_DRIVER)
    {
    vDriver[GetPlayerVehicleID(playerid)] = false;
    eingestiegen = 0;
    }
    return 1;
    }


    public OnPlayerEnterVehicle(playerid, vehicleid, ispassenger)
    {
    if(!ispassenger)
    {
    if(vDriver[vehicleid] && eingestiegen == 1 )
    {
    TogglePlayerControllable(playerid, 1); // Vorgang abbrechen
    }
    }
    return 1;
    }

  • Zitat

    Dann setz doch vDriver beim aussteigen auf False, himmeldonnerwetternochmal !
    /edit: BTW. nichtmals nötig, einfach das sinnlose


    Erst denken, dann schreiben, keinesfalls sinnlos, da PLAYER_STATE_ONFOOT auch aufgerufen wird, wenn ein Passagier aussteigt und das braucht man bei vDriver nicht. Der Fehler war ein Denkfehler von mir. Hier die überarbeitete Version:


    new
    bool:vDriver[MAX_VEHICLES],
    pOldCar[MAX_PLAYERS];


    public OnPlayerStateChange(playerid, newstate, oldstate)
    {
    if(newstate == PLAYER_STATE_DRIVER)
    {
    new
    carid = GetPlayerVehicleID(playerid);
    vDriver[carid] = true;
    pOldCar[playerid] = carid;
    }
    else if(oldstate == PLAYER_STATE_DRIVER)
    {
    vDriver[pOldCar[playerid]] = false;
    }
    return 1;
    }


    public OnPlayerEnterVehicle(playerid, vehicleid, ispassenger)
    {
    if(!ispassenger)
    {
    if(vDriver[vehicleid])
    {
    SetPlayerHealth(playerid, 0); // Vorgang abbrechen
    }
    }
    return 1;
    }


    Fehler lag darin, dass bei ONFOOT kein Auto ausgebeben wird, sondern nur 0, logisch

  • Surrender seines funktioniert nicht, da es eine eine variable für alle Spieler gleichzeit
    Oh da fällt mir ein, es gibt einen Samp Bug der es verhindert:
    Du kannst zwar den Spieler, der gerade vesucht einzusteuigen, davon abhalten, der andere Spieler steigt aber trotzdem aus, egal ob es abgebrochen wird oder nicht...

  • Meines funktioniert auch für mehr als einen carjack zur selben Zeit, von diesem Punkt aus gesehen also ja, ABER es handelt sich hierbei um einen Samp Bug. Wenn du "Enter" drückst zum Einsteigen und in dem Auto befindet sich jeder, fliegt dieser auf JEDEN Fall aus dem Auto, auch wenn du die Animation des herausiehens unterbrichst. Du könntest es alsonicht dazu verwenden, das Carjacken zu unterbrechen, du könntest den Spieler aber bei mehrmaligem Verstoss verwarnen oder kicken