Errors bei Itemsystem

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
  • Also noch mal für ganz blöde wie mich.
    Du möchtest Random Pickups spawnen lassen und dann herausfinden was er genommen hat?


    OnPlayerPickupPickup abfrage starten welche id er eingesammelt hat und das das ausgeben was du möchtest.
    Ich stehe gerade etwas auf dem Schlauch


    Also ich möchte keine Pickups sonder Objecte dort hinsetzten. Aber wie mache ich es jetzt das wenn dort schon eins gesetzt
    wurde das er dort nicht noch ein Object hinsetzt, weil er setzt dann immer wenn der Timer aufgerufen wird dort wieder ein item hin.
    & das führt zu Crashes...


    new Items[][] =
    {
    //modelid
    {1212,"Geld"}
    }; 
    So klappt das denke ich ^^ Keine Warnings o.r Errors

  • Lass den Timer erst starten wenn er das gewisse Item aufgehoben hat sowie ichs auch im EDIT stehen habe lässt du dort abfragen welches item er aufgehoben hat sprich ID Abfrage.
    Ich würde es nun so machen das man dort wo er den CMD eingibt und ein item aufgehoben hat den timer starten lässt und abfragen lässt wo er steht und dort dann eins der random items spawnt.
    Geht vill auch ander's aber ich habs noch nie versucht.
    Vielleicht ist das ja ein kleiner Denkanstupser aber das mit der ID Abfrage geht bestimmt auch noch leichter.
    mfg

    KleineHilfe 2.0

  • Die Items spawnen ja, nur ich habe das Problem wie will ich abfragen ob dort schon ein Item gespawnt ist.
    Weil jedes mal wo der Timer aufgerufen wird spawnt er da ja auch wieder Items... & das führt nach einer Zeit zu
    crashes..


    //EDIT ALso ich habe deinen Sinn nicht verstanden. Mein jetztiges Problem ist das hier:



    Der Code:
    new item = random(sizeof(Itemsp));
    new id = random(sizeof(Items));
    CreateObject(Items[id][0],Itemsp[item][0],Itemsp[item][1],Itemsp[item][2],0.0,0.0,0.0,0.0);
    return 1;


    //EDIT


    Ich möchte einfach das wenn an der Stelle schon Items gespawnt sind, das dort keine mehr spawnen ...

    2 Mal editiert, zuletzt von K3V1N ()

  • Bin eben erst aufgestanden, bin ein wenig durcheinander und das was ich gelöscht habe hatte gar nichts mit dem Topic zu tun^^
    Den Timer würde ich auf jeden Fall für jeden Spieler einzeln beim aufheben eines Items nutzen damit sich schon mal keine 2+ ansammeln.
    Mit dem Aufbau der Abfrage bin ich jetzt etwas überfragt tut mir leid. Ich denk trotzdem mal ein wenig drüber nach.
    Gibt ja eine Menge Faktoren die man beachten muss.


    mfg


    //Edit2


    Könnte man es nicht theoretisch so machen, das wenn du den Spielerbezogenen Timer aktivierst wenn er eins aufgehoben hat, fragst du ab wo der Spieler steht und setzt dann da ein neues random item. So sollten eig. nie 2 übereinander stehen

    KleineHilfe 2.0

  • Könnte man es nicht theoretisch so machen, das wenn du den Spielerbezogenen Timer aktivierst wenn er eins aufgehoben hat, fragst du ab wo der Spieler steht und setzt dann da ein neues random pickup. So sollten eig. nie 2 übereinander stehen



    Ich verstehe leider nicht genau wie du das meinst, kannst du das evtl in einem Code wiederspiegeln ? :S
    Weil ich muss die Items ja auch irgendwie Global setzten ...

  • Ich verstehe leider nicht genau wie du das meinst, kannst du das evtl in einem Code wiederspiegeln ? :S
    Weil ich muss die Items ja auch irgendwie Global setzten ...

    Werden sie ja.
    Nur das Problem daran sollte sein, überdecken sich Timer?
    Sprich wenn Spieler A: Ein Pickup aufhebt startet ein Timer, wenn spieler a dann ein 2. timer während der timer noch net ausgelaufen ist einsammelt, startet der timer von vorne oder sind es dann 2 seperate timer? :0


    //Edit 2
    Oder du machst einfach alle gesetzten items einfach kapput bevor du sie neu spawnst.
    Achso, schau mal hier :)
    http://wiki.sa-mp.com/wiki/GetObjectPos könnte zum neuspawnen hilfreicher sein als die eigene Posi auszulesen.
    Und hier das was du gesucht hast
    http://wiki.sa-mp.com/wiki/IsValidObject

    KleineHilfe 2.0

    Einmal editiert, zuletzt von YaBroo ()



  • WIe genau arbeite ich damit jetzt genau ? So ?


    if(item != GetObjectPos(Items[id][0],Itemsp[item][0],Itemsp[item][1],Itemsp[item][2]))
    {
    CreateObject(Items[id][0],Itemsp[item][0],Itemsp[item][1],Itemsp[item][2],0.0,0.0,0.0,0.0);
    }