objektmenge ermitteln und in eine irandom funktion einbinden

  • GM 8

Diese Seite verwendet Cookies. Durch die Nutzung unserer Seite erklären Sie sich damit einverstanden, dass wir Cookies setzen. Weitere Informationen

  • objektmenge ermitteln und in eine irandom funktion einbinden

    huhu,

    ich trete heut mal mit einem problem an euch ran welches mir schon ne ganze weile kopfzerbrechen macht.

    angenommen ich habe ein objekt, welches ich mehrfach im raum verteilen möchte(sozusagen mehrere instanzen des objektes). dieses objekt soll eine funktion haben, diese funktion soll aber immer nur eine instanz ausführen. das wollte ich per irandom machen. da aber die menge der objekte flexibel sein soll habe ich keine ahnung wie ich ermittel wieviele instanzen des objektes gerade vorhanden sind. desweiteren weiss ich nicht wie ich dann die ermittelte instanzmenge in die irandom funktion einbinden soll. wenn jemand kapiert hat was ich meine, und einen lösungsansatz hat wäre ich für hilfe sehr dankbar.


    mfg
  • Also spontan fällt mir so etwas ein:

    GML-Quellcode

    1. var obj,obj_anz;obj_anz = 0;with(obj_typ) {obj[obj_anz] = id;obj_anz += 1;}
    2. with(obj[irandom(obj_anz)]) {//deine aktion;}



    Habs aber nicht getestet. Es könnt ein Zählfehler oder so sein. Sollte aber so ca. klappen.

    MfG Rodrog
    Je mehr Käse, desto mehr Löcher.
    Je mehr Löcher, desto weniger Käse.
    Ergo: Je mehr Käse, desto weniger Käse.
  • hab grade versucht dein script iwie zu interpretieren und anzuwenden. naja beim interpretieren hört es schon auf, und ich tue mich sehr schwer damit zu wissen was ich wo reinschreiben muss, und wie ich es verwenden soll. vllt kannst du mir das systhem dahinter etwas näher erläutern, damit ich weiss was ich wo und warum machen muss. thx schonmal
  • GML-Quellcode

    1. instance_find(object, irandom(instance_number(object)-1));


    Gibt eine zufällige Instance von object zurück. instance_number gibt die Anzahl der Instancen zurück, instance_find gibt die n-te Instance zurück.

    #edit:
    Anwendung:

    GML-Quellcode

    1. with(instance_find(object, irandom(instance_number(object)-1))) {
    2. instance_destroy(); //Beispiel
    3. }
    wupto.net/ Nicht meine Seite!
    We love Koalas.

    GM-D-Spam-o-Meter: 32%

    Dieser Beitrag wurde bereits 3 mal editiert, zuletzt von henrik1235 ()

  • hab ihn eigentlich nur von dir kopiert und den namen von meinem objekt genommen.

    GML-Quellcode

    1. with(instance_find(obj_taxistande_parent, irandom(instance_number(obj_taxistande_parent)-1)))
    2. {instance_create(x,y,obj_tester);
    3. }


    hab gerade einfach mal ganz viele von meinen objekten im raum verteilt, und es wirkt als würde es immer eine zufällige menge sein.

    EDIT:

    fehler gefunden, hab vorher ein "press space" event in dem obj_taxistande_parent" gemacht. das funzt nicht. hab ein "controller-objekt" gemacht, und wenn ich in diesem den code ausführe funktioniert es...aller besten dank =)

    Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von blubberkopp ()

  • huhu, ich schon wieder xD

    ich habe nen weiteres problem. ich versuche mal das "ganze" problem zu erläutern, vllt kann da jemand helfen.


    ich habe diese "taxistände" alle besitzen ein parent (obj_taxistande_parent) jetzt hat der code von gestern ja die anweisung gehabt per zufall 1 von diesen objekten auszuwählen. am ausgewählten obj wird dann ein trigger erzeugt (bei dem beispielbild das grüne ding). wenn mein taxi nun den grünen trigger berührt soll wieder per zufall ein roter trigger erzeugt werden, und der grüne zerstört.dieser soll wieder per zufall spawnen. jetzt ist meine frage dahingehend. wie kann ich es erreichen dass der rote trigger per zufall an einem taxistand spawnt, ausgenommen an dem stand wo der grüne trigger in dem moment war?

    mfg
  • Du musst den Code in eine "Endlosschleife" packen, so lange probieren bis eins passt.

    GML-Quellcode

    1. while(true) {
    2. with(instance_find(obj_taxistande_parent, irandom(instance_number(obj_taxistande_parent)-1))) {
    3. if (keinGrünesTeil) {
    4. instance_create(x,y,obj_tester);
    5. break; //schleife abbrechen
    6. }
    7. }
    8. }
    wupto.net/ Nicht meine Seite!
    We love Koalas.

    GM-D-Spam-o-Meter: 32%
  • ich glaube ich stehe aufn schlauch. ich hab aus deiner while schleife das da zusammengesetzt

    GML-Quellcode

    1. var iii;
    2. iii=0
    3. while(true) {
    4. with(instance_find(obj_taxistande_parent, irandom(instance_number(obj_taxistande_parent)-1))) {
    5. if !place_meeting(x,y,obj_trigger_einsteigen) {
    6. instance_create(x,y,obj_trigger_aussteigen)
    7. iii=1;
    8. break; //schleife abbrechen
    9. }
    10. }
    11. }
    12. if iii=1 {with (self)instance_destroy()}
    Alles anzeigen


    aber so richtig funzen tut des auch nicht. ich denke mein prob is immo nicht zu kapieren auf was die schleife abzielen soll.
    also was ich als dein (keinGrünesTeil) nehmen soll. man fühl ich mich grade "beschränkt" aber mitn alter wird das lernen immer schwieriger ;)
  • Benutzer online 1

    1 Besucher