Hallo Zusammen,
hab vorhin schon Stundenlang die Suchfunktion genutzt und auch über Google und die GM-Hilfe bin ich nicht schlauer geworden.
Zur Übersicht:
1. Es gibt 2 Hauptcharaktere (1 Spieler, 1 PC)
2. Hauptchar wird mit Rechtsklick auf den Boden bewegt und auf den Gegner zum Angriff befehligt (hat alles wunderbar funktioniert bis zum nächsten Stichpunkt)
3. Es gibt kleine Computergesteuerte Monster (eigenes Team und Gegnerteam) die mit Rechtsklick auch angegriffen werden sollen.
4. Die Hauptchars und Monster haben Lebensbalken über den köpfen die durch Angriffe sinken bis sie tot sind -> Hauptchar erscheint nach paar sekunden wieder, Monster bleiben tot.
5. Die Monster erscheinen ca. alle 30sek in Wellen neu.
(Ja, es wird ein DotA-Abklatsch ;D)
Mein Problem ist folgendes:
Ich habe ein Objekt für die Monster, aber sobald mehrere davon im Spiel sind, lassen sich diese zwar noch angreifen, aber die Lebensbalken sinken nicht mehr, und es wird auch nicht der richtige Gegner angegriffen, sondern irgendeiner davon. Außerdem rennt mein Hauptchar verwirrt umher wenn ein Monster tot ist, und ich zum Angriff auf die nächsten befehlige...
Ich pack den derzeitigen wichtigsten GML mal in die Spoiler...
Spoiler anzeigen
Spoiler anzeigen
contr_verwaltung - Glob Right Pressed (hab ich noch mit Drag&Drop gemacht)
Mouse Event for Glob Right Pressed:
if cursor_sprite is equal to spr_maus_angriff
if number of objects obj_angriff is Equal to 0
create instance of object obj_angriff at position (mouse_x,mouse_y)
set variable global.player_info[0,5] to 1
else
for all obj_angriff: destroy the instance
create instance of object obj_angriff at position (mouse_x,mouse_y)
set variable global.player_info[0,5] to 1
else
if cursor_sprite is equal to spr_maus_lauf
set variable global.gegner_typ to 0
set variable global.player_info[0,5] to 0
if number of objects obj_klick is Equal to 0
create instance of object obj_klick at position (mouse_x,mouse_y)
else
for all obj_klick: destroy the instance
create instance of object obj_klick at position (mouse_x,mouse_y)
Und dann noch das Script für die Lebensbalken der Monster:
Spoiler anzeigen
Alles anzeigen
Ich bin echt am Verzweifeln... ich hab schon versucht mit Instanzen-IDs das Problem zu lösen, aber ich glaub da muss ich erst intensiver lesen und vllt nen Tutorial machen
Hoffe ich habe euch nicht erschlagen mit dem ganzen Zeug und es findet sich jemand damit zurecht der mir helfen kann.
Verbesserungsvorschläge im derzeitigen GML gern gesehen. Bin ja noch neu darin ;D
Mfg Seri
hab vorhin schon Stundenlang die Suchfunktion genutzt und auch über Google und die GM-Hilfe bin ich nicht schlauer geworden.
Zur Übersicht:
1. Es gibt 2 Hauptcharaktere (1 Spieler, 1 PC)
2. Hauptchar wird mit Rechtsklick auf den Boden bewegt und auf den Gegner zum Angriff befehligt (hat alles wunderbar funktioniert bis zum nächsten Stichpunkt)
3. Es gibt kleine Computergesteuerte Monster (eigenes Team und Gegnerteam) die mit Rechtsklick auch angegriffen werden sollen.
4. Die Hauptchars und Monster haben Lebensbalken über den köpfen die durch Angriffe sinken bis sie tot sind -> Hauptchar erscheint nach paar sekunden wieder, Monster bleiben tot.
5. Die Monster erscheinen ca. alle 30sek in Wellen neu.
(Ja, es wird ein DotA-Abklatsch ;D)
Mein Problem ist folgendes:
Ich habe ein Objekt für die Monster, aber sobald mehrere davon im Spiel sind, lassen sich diese zwar noch angreifen, aber die Lebensbalken sinken nicht mehr, und es wird auch nicht der richtige Gegner angegriffen, sondern irgendeiner davon. Außerdem rennt mein Hauptchar verwirrt umher wenn ein Monster tot ist, und ich zum Angriff auf die nächsten befehlige...
Ich pack den derzeitigen wichtigsten GML mal in die Spoiler...
obj_spieler - Step event
Alles anzeigen
obj_gegner - Right Pressed
obj_gegner_minion - Draw
obj_gegner_minion - Right Pressed
GML-Quellcode
- if global.player_info[0,5]==1 && obj_gegner.visible==1 // Angriff [0,5] und Anwesenheit vom Gegner checken{
- if distance_to_object(obj_gegner) > global.player_info[0,4] //testen ob außer Reichweite
- {
- if global.gegner_typ == 1
- {
- if instance_exists(obj_gegner) //falls Gegner vorhanden ist
- {
- mp_potential_step(obj_gegner.x,obj_gegner.y,6,0) //bewegt sich der Spieler zum Angriffspunkt
- }
- }
- else
- if global.gegner_typ == 2
- {
- if instance_exists(obj_gegner_minion) //falls Gegner vorhanden ist
- {
- mp_potential_step(obj_gegner_minion.x, obj_gegner_minion.y,6,0)
- }
- }
- }
- else // falls der Spieler in Reichweite ist :
- {
- obj_spieler.speed=0 // wird seine Bewegung gestoppt,
- if global.player_info[0,6]==1 // und falls er Schießen kann,
- {
- instance_create(x,y,obj_schuss) // erstellt er einen Schuss (Bewegung im obj_schuss hinterlegt)
- global.player_info[0,6]=0 // [0,6] = 0 heißt er kann nicht mehr schießen bis wieder auf 1
- alarm[0]=50 // Timer der [0,6] auf 1 setzt.
- }
- }
- }
obj_gegner - Right Pressed
obj_gegner_minion - Draw
obj_gegner_minion - Right Pressed
contr_verwaltung - Glob Right Pressed (hab ich noch mit Drag&Drop gemacht)
Mouse Event for Glob Right Pressed:
if cursor_sprite is equal to spr_maus_angriff
if number of objects obj_angriff is Equal to 0
create instance of object obj_angriff at position (mouse_x,mouse_y)
set variable global.player_info[0,5] to 1
else
for all obj_angriff: destroy the instance
create instance of object obj_angriff at position (mouse_x,mouse_y)
set variable global.player_info[0,5] to 1
else
if cursor_sprite is equal to spr_maus_lauf
set variable global.gegner_typ to 0
set variable global.player_info[0,5] to 0
if number of objects obj_klick is Equal to 0
create instance of object obj_klick at position (mouse_x,mouse_y)
else
for all obj_klick: destroy the instance
create instance of object obj_klick at position (mouse_x,mouse_y)
Und dann noch das Script für die Lebensbalken der Monster:
GML-Quellcode
- var x1, y1, x2, y2;
- var width, height;
- var value, value_max;
- var color, backing;
- //get arugments
- x1 = argument0;
- y1 = argument1;
- width = argument2;
- height = argument3;
- value = argument4;
- value_max = argument5;
- backing = argument6; //boolean
- //get set draw color, should be set before calling function
- color = draw_get_color();
- //draw the backingif (backing)
- {
- draw_set_color(c_black);
- draw_rectangle(x1-1,y1-1,x1+width+1,y1+height+1,false);
- }
- //set values
- x2 = x1 + (value/value_max * width);
- y2 = y1 + height;
- //main fill color
- draw_set_color(color);
- draw_rectangle(x1,y1,x2,y2,false);
Ich bin echt am Verzweifeln... ich hab schon versucht mit Instanzen-IDs das Problem zu lösen, aber ich glaub da muss ich erst intensiver lesen und vllt nen Tutorial machen

Hoffe ich habe euch nicht erschlagen mit dem ganzen Zeug und es findet sich jemand damit zurecht der mir helfen kann.
Verbesserungsvorschläge im derzeitigen GML gern gesehen. Bin ja noch neu darin ;D
Mfg Seri