Reperatur Pickup

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,
    ich bin gerade dabei mein erstes eigenständiges Script umzusetzen und stosse auf ein kleines Problem beim setzen eines Reperatur Pickups für Autos.


    Das Pickup soll beim Fahren aufgenommen werden und das Car reparieren. Setze ich die PickUp Art auf 14, wird es mit Auto aufgenommen aber die Nachricht wird nicht ausgegeben. Setze ich diese auf 2, wird es nur zu Fuß aufgenommen, und die Nachricht kommt. Aber dann wird es eben nicht repariert?!


    Mein Code sieht so aus:


    //Oben unter den Includes
    new repairpickup;


    // Bei OnGameModeInit
    repairpickup = CreatePickup(3096, 14, 1137.3762,1815.1880,11.0458);


    Hier bin ich mir der Pickup-Art unsicher, denn es soll ja aus dem Auto raus genutzt werden.

    Zitat

    1 Not pickupable, exist everytime.
    2 Pickupable, respawns after some time.
    ..
    14 Pickupable, but only when in a vehicle. Falls through objects made with CreateObject, etc.

    Geht das auch mit einem "normalem" Pickup?


    //bei OnPlayerPickUpPickup


    public OnPlayerPickUpPickup(playerid, pickupid)
    {
    if (pickupid == repairpickup)
    {
    SendClientMessage(playerid, 0xFFFFFFFF, "Repariert.");
    SetVehicleHealth(1,1000.0);
    }
    return 1;
    }


    So, bin dankbar für Hilfe. Wenn mir am Rande noch jemand erklären würde wie ich das Car das das PU aufnimmt, für 1-2 Sekunden freezen kann?!


    Grüße, Oahuproject

  • Also bei einem Fahrzeug kannst du den Pickuptyp 14 nehmen , müsste schon passen


    So du kannst das Auto Freezen indem du nen Timer erstellst und den halt auf die Warte Zeit stellst



    new bool:PlayerInRepair[MAX_PLAYERS];


    public OnPlayerPickUpPickup(playerid, pickupid)
    {
    if (pickupid == repairpickup)
    {
    SendClientMessage(playerid, 0xFFFFFFFF, "Repariert.");
    SetVehicleHealth(1,1000.0);
    TogglePlayerControllable(playerid,0);
    PlayerInRepair[playerid] = true;
    SetTimer("FreezeTimer",2000,0);
    }
    return 1;
    }




    public FreezeTimer()
    {
    for(new i = 0; i <= MAX_PLAYERS; i++)
    {
    if(PlayerInRepair[i] == true)
    {
    TogglePlayerControllable(i,1);
    PlayerInRepair[playerid] = false;
    // Nachricht
    }
    }
    }


    So ungefähr

    Mfg. BlackFoX_UD_ alias [BFX]Explosion


    Einmal editiert, zuletzt von BlackFoX ()

  • Wow, vielen Dank für die Mühe.
    Habe das alles direkt mal übernommen, allerdings produziert er einen Fehler in dieser Zeile:


    PlayerInRepair[playerid] = false;


    Fehler: error 017: undefined symbol "playerid"


    Versteh das leider nicht?


    Grüße, OahuProject

  • SetVehicleHealth(GetPlayerVehicleID(playerid),1000);

    Ja das habe ich übersehen, hatte das im SAMP Wiki nicht ganz verstanden und dann über
    new vehicleid = GetPlayerVehicleID(playerid);
    probiert, was natürlich nicht klappen wollte.


    Das Pickup geht halt immer noch nicht wenn ich im Auto bin (Es wird aber eingesammelt und verschwindet)?!


    new repairpickup;
    new bool:PlayerInRepair[MAX_PLAYERS];
    repairpickup = CreatePickup(3096, 14, 1137.3762,1815.1880,11.5258);
    public FreezeTimer()
    {
    for(new i = 0; i <= MAX_PLAYERS; i++)
    {
    if(PlayerInRepair[i] == true)
    {
    TogglePlayerControllable(i,1);
    PlayerInRepair[i] = false;
    }
    }
    }


    public OnPlayerPickUpPickup(playerid, pickupid)
    {
    if (pickupid == repairpickup)
    {
    SendClientMessage(playerid, 0xFFFFFFFF, "Car in Repair. Wait 2 Seconds.");
    SetVehicleHealth(GetPlayerVehicleID(playerid),1000);
    //SetPlayerHealth(playerid,1);
    TogglePlayerControllable(playerid,0);
    PlayerInRepair[playerid] = true;
    SetTimer("FreezeTimer",2000,0);
    }
    return 1;
    }



    Für die Zeile mit
    public FreezeTimer()
    kommt ein Warning: : warning 235: public function lacks forward declaration (symbol "FreezeTimer")


    Nochmal Hilfe bitte.

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