Pickup Probleme

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
  • Die Überschrift passt nicht ganz aber ich
    wusste nicht was ich da schreiben soll.
    Undzwar möchte ich das wenn ein Spieler in dem
    Pickup steht und dann enter drückt das dann etwas passiert.
    Hab auch mit allem keine Probleme außer mit der abfrage ob er im Pickup ist.
    Hier kann ich keine feste Position nehmen weil der Pickup immer wieder woanders
    per Befehl erstellt wird.


    Pickup:

    medicheil = CreatePickup(1240,23,X+1,Y+3,Z);


    Abfrage wie ich sie habe:


    if(IsPlayerInRangeOfPoint(playerid,2.0,medicheil))


    Dann bekomm ich aber diese Warnings:


    C:\Users\PC\Desktop\Server_Wichtig\1.NLC_RL\gamemodes\nlcreallife.pwn(7732) : warning 202: number of arguments does not match definition
    C:\Users\PC\Desktop\Server_Wichtig\1.NLC_RL\gamemodes\nlcreallife.pwn(7732) : warning 202: number of arguments does not match definition


    Hoffe mir kann wer helfen :D
    Gruss Ceeek

  • Naja dann speicherst du halt die X,Y,Z Variable in einem globalen Array und veränderst diese wenn das Pickup an eine andere Stelle muss. Dann löscht du das alte Pickup erstellst es neu, aber halt dann automatisch mit den neuen Koordinaten und bei IsPlayerInRangeOfPoint, nimmst du dann halt die Werte im Array :> Fertig.

  • Hier bitte, die Variante von 8D ist bissl aufwändiger ^^


    #define HOLDING(%0) \
    ((newkeys & (%0)) == (%0))


    new gLastPickup[MAX_PLAYERS];


    forward ResetPlayerPickup(playerid);


    public OnPlayerConnect(playerid)
    {
    gLastPickup[playerid] = -1; //INVALID_PICKUP_ID
    return 1;
    }


    public OnPlayerPickUpPickup(playerid, pickupid)
    {
    gLastPickup[playerid] = pickupid;
    SetTimerEx("ResetPlayerPickup", 2500, 0, "d", playerid); //Resettet die Pickupid in 2,5 Sekunden!
    return 1;
    }


    public ResetPlayerPickup(playerid)
    {
    gLastPickup[playerid] = -1; //INVALID_PICKUP_ID
    return true;
    }


    public OnPlayerKeyStateChange(playerid, newkeys, oldkeys)
    {
    //Wenn Spieler beim aufheben des Pickups die Taste Ducken drückt und nicht im Fahrzeug ist.
    if(medicheil == gLastPickup[playerid] && HOLDING(KEY_CROUCH) && !IsPlayerInAnyVehicle(playerid))
    {
    SetPlayerHealth(playerid, 100.0);
    SendClientMessage(playerid, 0xFFFFFF00, "Du hast dich geheilt!");
    }
    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!

  • Ich will ja nichts sagen, aber er sagte nicht das er ne bestimme Taste haben will, deshalb nahm ich KEY_CROUCH und meine Variante ist auch nur auf ein Pickup bezogen, da ich bei OnPlayerKeyStateChange ja doch abfrage ob das Letzte Pickup medicheil war ^^

    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!

  • Ich könnte schwören da stand, "wenn er im Pickup steht und auf eine Taste drückt" ....

    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!

  • Ne stand aber nicht ;D


    Und Editieren ohne Hinweis kann man nur als Admin (richtiger Admin).


    Naja B2T.


    Kannst halt den Code von Templer übernehmen, oder dich an meinem Schriftstück auslassen.

  • Ok dann korrigiere ich 8D Aussage:


    Die X, Y, Z Koordinate muss nicht immer beim Erstellen neu gemacht werden sondern du fragst die Position ab ^^ Sonst müsstest du für jedes Pickup, wenn du mal wieder so eins machen willst, eine neue Variable erstellen lassen.

    #define HOLDING(%0) \
    ((newkeys & (%0)) == (%0))


    new gLastPickupPos[MAX_PLAYERS][3];
    new bool:gLastPickupStatus[MAX_PLAYERS];


    public OnPlayerConnect(playerid)
    {
    gLastPickupStatus[playerid] = false;
    return 1;
    }


    public OnPlayerPickUpPickup(playerid, pickupid)
    {
    GetPlayerPos(playerid, gLastPickupPos[playerid][0], gLastPickupPos[playerid][1], gLastPickupPos[playerid][2]);
    gLastPickupStatus[playerid] = true;
    return 1;
    }


    public OnPlayerKeyStateChange(playerid, newkeys, oldkeys)
    {
    //Wenn Spieler beim aufheben des Pickups die Taste Ducken drückt und nicht im Fahrzeug ist.
    if(gLastPickupStatus[playerid] == true && IsPlayerInRangeOfPoint(playerid, gLastPickupPos[playerid][0], gLastPickupPos[playerid][1], gLastPickupPos[playerid][2]) && HOLDING(KEY_CROUCH) && !IsPlayerInAnyVehicle(playerid))
    {
    SetPlayerHealth(playerid, 100.0);
    SendClientMessage(playerid, 0xFFFFFF00, "Du hast dich geheilt!");
    gLastPickupStatus[playerid] = false;
    }
    return 1;
    }


    So mein letztes Wort ^^ 2:1 für Templer :P

    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!

  • Jetzt wo es interressant wird, was du für ne Methode noch hättest, gibste auf.. Aber ja auch wenn meine leichter ist, wäre deine auch gut nur hast halt ein boolean vergessen, ansonsten könnte er ja es 1000mal wenn nicht öfter aufheben. Nagut belassen wirs bei 1:1 weil ich den Fehler mit der Taste wieder eingebaut hab ^^

    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!