Hallo,
ich bin neu hier und habe gleich eine Frage. Ich programmieren gerade an einer StarWars-Simulation und sitze schon viele Stunden daran, auch wenn der Output nich recht armselig ist. Im Moment stehe ich vor einem Problem mit ds_list. Es können mit der Maus Einheiten markiert werden, welche dann in einer Liste namens global.stack landen. Bei der Darstellung der Grafik wird dann geprüft, ob die aktuelle Einheit in der Liste aufgeführt ist. Nun möchte ich aber mehrere Einheiten gleichzeitig bewegen. Bis jetzt wird nur die letzte, in global.selection gespeicherte Einheit bewegt.
Die Auswahl erfolgt mittels Global Left Pressed.
Alles anzeigen
Wenn ich z.B. eine der Einheiten zeichne, geschieht das so:
Alles anzeigen
Nun möchte ich aber mehrere Einheiten an ein Ziel schicken. Die EInheiten brauche dazu Abgaben in der Variablen tox und toy.
In der bisherigen Version geht das so:
Alles anzeigen
Jetzt soll das aber mit der Mehrfachauswahl kompatibel sein.
Plan:
Alles anzeigen
Das aber funktioniert nicht, die Meldung lautet und hier ist mein Latein am Ende. Die Meldung bedeutet wohl, dass der ZugrAls Anhang Quellcode des Spiels. Kleine Hilfe mit F1 im Spiel.
Danke schonmal für Hilfe,
leoschabel
EDIT:
Das Problem hat sich mit einem Blick in die englische Hilfe erledigt. In der englischen Version war zu lesen:
In dem übersetzen Pendant:
sowie , was mich dazu gebracht hat, die Liste wie einen Array anzusteuern. Mit ds_list_find_value(id,pos) klappt es aber.
Allerdings habe ich eine andere Frage: Ist es möglich, innerhalb von GM zu erkennen, wenn das Spielfenster deaktiviert ist? (Vermeidung von Scrollen). Und ist es irgendwie möglich, zu verhindern, dass sich Instanzen "verklemmen" und nicht mehr bewegen wollen? Thx.
ich bin neu hier und habe gleich eine Frage. Ich programmieren gerade an einer StarWars-Simulation und sitze schon viele Stunden daran, auch wenn der Output nich recht armselig ist. Im Moment stehe ich vor einem Problem mit ds_list. Es können mit der Maus Einheiten markiert werden, welche dann in einer Liste namens global.stack landen. Bei der Darstellung der Grafik wird dann geprüft, ob die aktuelle Einheit in der Liste aufgeführt ist. Nun möchte ich aber mehrere Einheiten gleichzeitig bewegen. Bis jetzt wird nur die letzte, in global.selection gespeicherte Einheit bewegt.
Die Auswahl erfolgt mittels Global Left Pressed.
GML-Quellcode
- if (instance_position(mouse_x,mouse_y,obj_unit) != noone) //obj_unit ist Grundobjekt aller Einheiten
- {
- if (not keyboard_check(vk_shift)) // Shift zur Mehrfachauswahl
- {
- ds_list_clear(global.stack);
- }
- ds_list_add(global.stack,instance_position(mouse_x,mouse_y,obj_unit));
- global.selected = instance_position(mouse_x,mouse_y,obj_unit);
- sound_play(snd_select);
- } else {
- if (not ds_list_empty(global.stack))
- {
- ds_list_clear(global.stack);
- global.selected = noone;
- //sound_play(snd_unselect);
- }
- }
Wenn ich z.B. eine der Einheiten zeichne, geschieht das so:
GML-Quellcode
- // Aktionen wenn ausgewählt
- if (ds_list_find_index(global.stack,id)<>-1) // Test, ob in Liste
- {
- draw_set_blend_mode(bm_normal)
- draw_sprite_ext(sprite_index,-1,x,y,1,1,angle,c_red,1);
- draw_set_blend_mode(bm_normal)
- draw_set_color(c_blue);
- draw_set_alpha(0.1);
- if (ds_list_size(global.stack) > 1)&& (global.selected == id)
- {
- draw_set_color(c_green);
- }
- draw_circle(x,y,range,false);
- draw_set_alpha(0.5);
- if (mouse_check_button(mb_right) == true)
- {
- draw_set_alpha(1);
- }
- draw_arrow(x,y,tox,toy,20);
- } else {
- draw_sprite_ext(sprite_index,-1,x,y,1,1,angle,c_white,1);
- draw_set_color(c_red);
- draw_set_alpha(0.3);
- draw_arrow(x,y,tox,toy,10);
- }
- // Lebensleiste anzeigen
- draw_set_alpha(0.8);
- //show_debug_message(sprite_yoffset);
- draw_healthbar(x-sprite_width,y-sprite_height,x+sprite_width,y-sprite_height+5,points,c_black,c_red,c_lime,0,true,true);
- draw_set_alpha(1);
- // Aufräumen
- draw_set_color(c_black);
Nun möchte ich aber mehrere Einheiten an ein Ziel schicken. Die EInheiten brauche dazu Abgaben in der Variablen tox und toy.
In der bisherigen Version geht das so:
GML-Quellcode
Jetzt soll das aber mit der Mehrfachauswahl kompatibel sein.
Plan:
GML-Quellcode
Das aber funktioniert nicht, die Meldung lautet und hier ist mein Latein am Ende. Die Meldung bedeutet wohl, dass der ZugrAls Anhang Quellcode des Spiels. Kleine Hilfe mit F1 im Spiel.
Danke schonmal für Hilfe,
leoschabel
EDIT:
Das Problem hat sich mit einem Blick in die englische Hilfe erledigt. In der englischen Version war zu lesen:
In dem übersetzen Pendant:
Allerdings habe ich eine andere Frage: Ist es möglich, innerhalb von GM zu erkennen, wenn das Spielfenster deaktiviert ist? (Vermeidung von Scrollen). Und ist es irgendwie möglich, zu verhindern, dass sich Instanzen "verklemmen" und nicht mehr bewegen wollen? Thx.
.signature{
display: none !important;
}
display: none !important;
}
Dieser Beitrag wurde bereits 2 mal editiert, zuletzt von leoschabel ()