Problem mit Pickups

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
  • So hier die ausführlichere Erklärung:


    new NitroPickups[2]; //Wieviele NitroPickups du hast.
    new RepairPickups[2]; //Wieviele RepairPickups du hast.


    new Float:RepairPickupsPos[][3] = {
    {X, Y, Z}, //Die X, Y, Z Koordinaten mit deinen ersetzen.
    {X, Y, Z},
    {X, Y, Z} //Am Ende kein Beistrich mehr, wie du es erkennen kannst.
    }


    new Float:NitroPickupsPos[][3] = {
    {X, Y, Z}, //Die X, Y, Z Koordinaten mit deinen ersetzen.
    {X, Y, Z},
    {X, Y, Z} //Am Ende kein Beistrich mehr, wie du es erkennen kannst.
    }


    stock IsARepairPickup(pickupid) //Die Pickupid mit der die Funktion aufgerufen wurde.
    {
    for(new repair = 0; repair < sizeof(RepairPickups); repair++) //Erstellt die Definition repair, zählt bis zur Nummer 1 (nicht zur 2), da 0 auch eine Zahl ist und zählt die Variable einfach rauf.
    {
    if(pickupid == RepairPickups[repair]) //Überprüft die PickupID von den erstellten PickupID´s und dem aufgehobenemen Pickup.
    {
    return repair; //Wiedergibt den Wert von repair.
    }
    }
    return false; //Wiedergibt den Wert false wenn es kein RepairPickup ist.
    }
    //Das gleiche bei Nitro Pickups nur halt heißt es 'NitroPickups' ^^
    stock IsANitroPickup(pickupid) //Nebenbei gemerkt, es ist ja egal welcher Funktionsname die Funktion hat ^^
    {
    for(new nitro = 0; nitro < sizeof(NitroPickups); nitro++) //Das gleiche auch bei der Definition nitro, die oben repair heißt. Man könnte auch 'count' oder sowas verwenden, oder auch 'i'.
    {
    if(pickupid == NitroPickups[nitro])
    {
    return nitro;
    }
    }
    return false;
    }


    public OnGameModeInit()
    {
    //Die Zahl 0 Stimmt da du, bämisch gesagt, oben die Anzahl der Pickups eingibst und unten ab 0 zum zählen anfängst...
    //Bei dem NitroPickp gab es nix besseres deswegen nahm ich so ne Rote Weinflasche her ^^
    //Wenn du ein anderes Pickup willst dann schau unter http://wiki.sa-mp.com/wiki/Game_Object_ID_List
    //Die PickupArt 14 ist für Spieler in Fahrzeugen gedacht.
    //Der Wert -1 steht halt auch dafür das es in allen virtuellen Welten angezeigt werden soll.
    for(new nitro = 0; nitro < sizeof(NitroPickups); nitro++) //Geht alle vorhandenen Nitro Pickups durch.
    {
    NitroPickups[nitro] = CreatePickup(1484, 14, NitroPickupsPos[nitro][0], NitroPickupsPos[nitro][1], NitroPickupsPos[nitro][2], -1);
    }
    //Das Pickup beim Repair Pickup ist korrekt. ^^ Also schaut auch danach aus.
    for(new repair = 0; repair < sizeof(RepairPickups); repair++) //Geht alle vorhandenen Repair Pickups durch.
    {
    RepairPickups[repair] = CreatePickup(3096, 14, RepairPickupsPos[repair][0], RepairPickupsPos[repair][1], RepairPickupsPos[repair][2], -1);
    }
    //Eine INFO am Rande. Bei RepairPickupsPos und NitroPickupsPos fragt er bei
    // 0 ... die X-Koordinate ab
    // 1 ... die Y-Koordinate ab
    // 2 ... die Z-Koordinate ab
    return 1;
    }


    public OnPlayerPickUpPickup(playerid, pickupid) //Wird aufgerufen wenn einer ein Pickup aufhebt.
    {
    if(IsARepairPickup(pickupid)) //Überprüft ob es ein RepairPickup ist.
    {
    GameTextForPlayer(playerid, "Fahrzeug ~y~repariert!", 2500, 3); //Kleiner GameText ^^
    RepairVehicle(GetPlayerVehicleID(playerid)); //Repariert alle physikalischen Schäden wie Motorhaube...
    SetVehicleHealth(GetPlayerVehicleID(playerid), 1000.0); //Setzt das Fahrzeug Leben auf das volle zurück. Also 1000.
    //Im folgendem wird das Pickup deshalb wieder zerstört und neu erstellt, da das Pickup bei der
    //Pickupart 14, welche man nur in Fahrzeugen aufsammeln kann, erst sehr spät wieder erscheinen.
    //Solltest du jedoch nicht wollen, dass das Pickup nach dem aufheben wieder benützbar wird einfach das
    //folgende Löschen oder auskommentieren. (Das gleiche bei den Nitro-Pickups unten)
    new repair = IsARepairPickup(pickupid); //Holt die statische PickupID neu heraus.
    DestroyPickup(pickupid); //Zerstört das Pickup.
    //Im folgenden wird das Pickup neu erstellt.
    RepairPickups[repair] = CreatePickup(3096, 14, RepairPickupsPos[repair][0], RepairPickupsPos[repair][1], RepairPickupsPos[repair][2], -1);
    }
    if(IsANitroPickup(pickupid)) //Überprüft ob es ein NitroPickup ist.
    {
    GameTextForPlayer(playerid, "Nitro ~y~eingebaut!", 2500, 3);
    AddVehicleComponentID(GetPlayerVehicleID(playerid), 1010);
    //INFO: Die ID 1010 steht für Nitro 10x, also Nitro kann 10mal benützt werden.
    // die anderen ID´s lauten:
    // 1008 .. Nitro 5x
    // 1009 .. Nitro 2x
    //Pickup wird neu erstellt...
    new nitro = IsANitroPickup(pickupid);
    DestroyPickup(pickupid);
    NitroPickups[nitro] = CreatePickup(1484, 14, NitroPickupsPos[nitro][0], NitroPickupsPos[nitro][1], NitroPickupsPos[nitro][2], -1);
    }
    return 1;
    }

    Mfg Templer


    >>Dein Breadfish-Thema im Unterforum ScriptingBase / Scriptingwünsche wurde nicht richtig beantworter?<<
    >>Es handelt sich um ein Programmier Problem und du nicht einfach weiter kommst wo der Fehler sein könnte?<<
    Dann melde dich bei mir über die PN-Funktion indem du den Link zu deinem Breadfish-Themen Problem schickst.
    Voraussetzung:
    Thema älter als 1 Tag und im Breadfish Forum gespostet!