Nitro 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
  • Hey,


    ich wollte einen Pickup erstellen; Wenn man mit einem Auto über das Pickup fährt,
    soll man Nitro bekommen und dieser Ton soll kommen, wie wenn man im Transfender
    etwas einbaut. Aber wenn ich rüberfahre bekomm ich kein Nitro, und ich weiß nicht
    die AudioID von dem Geräusch.
    Was ist falsch?


    Codeschnipsel:

    Spoiler anzeigen


    new Nos[1];
    Nos[0]=CreatePickup(1239,1,1549.0024,-2258.1736,13.5469,0);

    Spoiler anzeigen
    for(new i=0; i<sizeof(Nos); i++)
    {
    if(pickupid==Nos[i])
    {
    if(IsPlayerInAnyVehicle(playerid))
    {
    new vid = GetPlayerVehicleID(playerid);
    AddVehicleComponent(vid,1010);
    return 1;
    }
    else return 1;
    }
    return 1;
    }

  • Der Callback OnPlayerPickUpPickup wird nicht aufgerufen, wenn man in einem Auto sitzt (gab es schon viele Themen).


    Aus diesem Grund hatte ich eine Include geschrieben (Diese Hier) dort gibt es eine Funktion die sich GetPickupPos nennt, schaus dir mal an und die solltest du nutzen mit einem Timer einfach ;)


    mfg. :thumbup:

    ast2ufdyxkb1.png


    Leute, lernt scripten und versucht mal lieber etwas selber zu schreiben, als es aus einem GF zu kopieren. :S

  • Na, so hier mal ein Beispiel:


    new Nos[1];
    Nos[0]=CreatePickupEx(1239,1,1549.0024,-2258.1736,13.5469,0);


    //Zum Bsp bei OnPlayerConnect
    SetTimerEx("Los", 500, 1, "i", playerid);


    forward Los(playerid);
    public Los(playerid)
    {
    new Float: X, Float: Y, Float: Z;
    for(new i=0; i<sizeof(Nos); i++)
    {
    GetPickupPos(Nos[i], X, Y, Z);
    if(IsPlayerInRangeOfPoint(playerid, 3.0, X, Y, Z))
    {
    DestroyPickup(Nos[i]);
    //Hier ist er dann in dem Pickup !!!
    }
    }
    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

  • Ist ein 500er Timer nicht sehr Resourcenfressend? :S


    Mhm, naja klar ist er Ressourcenfressend, aber anders kann man das nicht machen...er kann ja die Timerid in einer Variable speichern und sobald er aus dem Vehicle aussteigt, den Timer löschen ^^


    Aber wenn man einen halbwegs guten Server hat, sollte eigentlich nichts passieren ^^


    mfg. :thumbup:

    ast2ufdyxkb1.png


    Leute, lernt scripten und versucht mal lieber etwas selber zu schreiben, als es aus einem GF zu kopieren. :S

  • stock GetPickupPos(pickupid, &Float: X, &Float: Y, &Float: Z)
    {
    return X = Pickup_Pos[pickupid][0], Y = Pickup_Pos[pickupid][1], Z = Pickup_Pos[pickupid][2]; //ZEILE 29
    }


    Code
    C:\Users\Narushi\Desktop\samp\New-Evolution-Reallife\pawno\include\ncom.inc(29) : warning 213: tag mismatch
    Pawn compiler 3.2.3664	 	 	Copyright (c) 1997-2006, ITB CompuPhase
    
    
    
    
    1 Warning.


    Ist das normal, dass der Warning kommt?

  • Ehm, ja ich weiß wieso der Warning kommt ups schreibe die Funktion mal so:


    stock Float:GetPickupPos(pickupid, &Float: X, &Float: Y, &Float: Z)
    {
    return X = Pickup_Pos[pickupid][0], Y = Pickup_Pos[pickupid][1], Z = Pickup_Pos[pickupid][2];
    }


    und das mit dem Pickup...ehm doch er sollte angezeigt werden :D Aber mit der Funktion oben, wird der Pickup direkt zerstört, wenn du reinfährst...


    mfg. :thumbup:

    ast2ufdyxkb1.png


    Leute, lernt scripten und versucht mal lieber etwas selber zu schreiben, als es aus einem GF zu kopieren. :S

  • public Nitro(playerid)
    {
    new Float: X, Float: Y, Float: Z;
    for(new i=0; i<sizeof(Nos); i++)
    {
    GetPickupPos(Nos[i], X, Y, Z);
    if(IsPlayerInRangeOfPoint(playerid, 3.0, X, Y, Z) || IsPlayerInAnyVehicle(playerid))
    {
    DestroyPickup(Nos[i]);
    new vid = GetPlayerVehicleID(playerid);
    AddVehicleComponent(vid,1010);
    }
    }
    return 1;
    }

  • Da ist der Fehler:


    if(IsPlayerInRangeOfPoint(playerid, 3.0, X, Y, Z) || IsPlayerInAnyVehicle(playerid))


    schreibe das so:


    public Nitro(playerid)
    {
    if(!IsPlayerInAnyVehicle(playerid)) return 1;
    new Float: X, Float: Y, Float: Z;
    for(new i=0; i<sizeof(Nos); i++)
    {
    GetPickupPos(Nos[i], X, Y, Z);
    if(IsPlayerInRangeOfPoint(playerid, 3.0, X, Y, Z))
    {
    DestroyPickup(Nos[i]);
    new vid = GetPlayerVehicleID(playerid);
    AddVehicleComponent(vid,1010);
    }
    }
    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