Übersichtskarte im RTS

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

  • Übersichtskarte im RTS

    Hi,
    ich möchte in mein RTS eine Übersichtskarte an der Position 779/568 einfügen.

    Immer wenn ich die Richtungstasten auf der Tastatur drücke soll sich das weiße Quadrat (einzelnes Objekt) entsprechend bewegen.

    Ich habe schon ´nen code geschrieben. Aber das Quadrat bewegt sich dann immer nur einen Pixel in die jeweilige Richtung, nie mehr und sobald ich eine andere Richtungstaste drücke springt es erst zurück auf 779/568 und bewegt sich dann wieder einen Pixel in die Richtung.

    Hier mal der Code:

    GML-Quellcode

    1. if keyboard_check(vk_right)
    2. {
    3. x=view_xview+779+1;
    4. y=view_yview+568;
    5. }
    6. if keyboard_check(vk_up)
    7. {
    8. x=view_xview+779;
    9. y=view_yview+568-1;
    10. }
    11. if keyboard_check(vk_left)
    12. {
    13. x=view_xview+779-1;
    14. y=view_yview+568;
    15. }
    16. if keyboard_check(vk_down)
    17. {
    18. y=view_yview+568+1;
    19. x=view_xview+779;
    20. }
    Alles anzeigen


    Um mich zu bewegen hab ich den Code aus dem "zoomexample" verwendet.

    Es wäre schön wenn mir jemand helfen könnte.

    mfg gm-freak
    [SIZE="25"][COLOR="Red"]XP Hilfe - Schluss mit PC-Problemen[/COLOR][/SIZE]
    [SIZE="20"]http://xphilfe.de.tt[/SIZE]
  • GML-Quellcode

    1. x=view_xview+779+1;
    ist ja auch ein fester wert, und darum wird er nicht verändert. du müsstest += stadt = schreiben (zum addieren) allerdings bing das den nächsten fehler mitsich, nämlich das 780 zu x addiert wird, und es dan sofort aus dem bildschirm ist.
    eine bessere möglichkeit ist es die position abzufragen und sie dan auf der minimap skaliert darzustelln. schau dir dazu am bestenmal ein paar examples aus derdatenbank an, da gibt es mehrere.
    zb. hier:
    :) Nobody is perfect (-:

    "Dummköpfe sind Denkerköpfen weit überlegen. Zahlenmäßig." Ernst Ferstl
  • Ich hab´s jetzt hinbekommen. Vielen Dank an euch alle!

    GML-Quellcode

    1. draw_x = view_xview+780;
    2. draw_y = view_yview+569;
    3. draw_rectangle_color(draw_x-3,draw_y-3,draw_x+156.6,draw_y+156.6,c_gray,c_gray,c_gray,c_gray,0);
    4. draw_rectangle_color(draw_x,draw_y,draw_x+153.6,draw_y+153.6,c_black,c_black,c_black,c_black,0);
    5. draw_rectangle(-1,-1,3073,2305,1);
    6. draw_sprite(spr_ort,-1,view_xview/19.9+draw_x,view_yview/15+draw_y);
    [SIZE="25"][COLOR="Red"]XP Hilfe - Schluss mit PC-Problemen[/COLOR][/SIZE]
    [SIZE="20"]http://xphilfe.de.tt[/SIZE]
  • Ich habe wieder was neues und dachte mir ich schreibs mal hier zu.
    Die Position meiner Eiheiten soll überprüft und dann als kleine heller Punkte auf der Karte markiert werden. Wenn sich die Instanzen bewegen sollen sich natürlich auch die Punkte bewegen.

    Ich habe schon mal was gecoded, oder eher gesagt aus mehreren Examples zusammengebastelt, aber es wird immer nur ein Punkt gezeichnet und nicht für jede Instanz einer.

    GML-Quellcode

    1. draw_x = view_xview+780;
    2. draw_y = view_yview+569;
    3. draw_rectangle_color(draw_x-3,draw_y-3,draw_x+156.6,draw_y+156.6,c_gray,c_gray,c_gray,c_gray,0);
    4. draw_rectangle_color(draw_x,draw_y,draw_x+153.6,draw_y+153.6,c_black,c_black,c_black,c_black,0);
    5. draw_rectangle(-1,-1,3073,2305,1);
    6. draw_sprite(spr_ort,-1,view_xview/19.9+draw_x,view_yview/15+draw_y);
    7. for (n = 0; n < instance_number(object50); n += 1)
    8. {
    9. object = instance_find(object50,n);
    10. draw_circle_color(draw_x+(object50.x)/19.9,draw_y+(object50.x)/15,1,c_blue,c_blue,0);
    11. }
    Alles anzeigen



    Kann mir jemand sagen, was ich falsch gemacht hab und verbessern muss???

    mfg gm-freak


    Achja: Kann mir jemand sagen, wie ich Farben aus Hexadezimalzahlen in meinen Code einfügen kann???
    [SIZE="25"][COLOR="Red"]XP Hilfe - Schluss mit PC-Problemen[/COLOR][/SIZE]
    [SIZE="20"]http://xphilfe.de.tt[/SIZE]
  • ich würde das mit der for schleife lassen, und den draw event aus der instance selber machen lassen. falls du mehrere (unterschiedliche) einheiten hast kanst du das mit einem parent object lösen.

    das mit dem farben zusammenbasteln geht auch irgentwie, suche mal in der hilfe nach collor bzw c_* oder c_red. da steht der code. mit "get_color" kanst du sogar den benutzer eine farbe aussuchen lassen.
    :) Nobody is perfect (-:

    "Dummköpfe sind Denkerköpfen weit überlegen. Zahlenmäßig." Ernst Ferstl
  • Hi,
    das mit den Farben habe ich jetzt gefunden^^

    Zitat aus der deutschen Hilfedatei:
    make_color_rgb(red,green,blue) Gibt eine Farbe zurück, die die angegeben Rot, Grün und Blau Werte hat. red, green und blue müssen zwischen 0 und 255 liegen.



    Kannst mir mal den genauen Code geben, um alle Eiheiten auf der Minimap zu zeichnen???

    mfg gm-frek
    [SIZE="25"][COLOR="Red"]XP Hilfe - Schluss mit PC-Problemen[/COLOR][/SIZE]
    [SIZE="20"]http://xphilfe.de.tt[/SIZE]
  • ich würde es so machen:

    GML-Quellcode

    1. draw_x = view_xview+780;
    2. draw_y = view_yview+569;
    3. draw_rectangle_color(draw_x-3,draw_y-3,draw_x+156.6,draw_y+156.6,c_gray,c_gray,c_gray,c_gray,0);
    4. draw_rectangle_color(draw_x,draw_y,draw_x+153.6,draw_y+153.6,c_black,c_black,c_black,c_black,0);
    5. draw_rectangle(-1,-1,3073,2305,1);
    6. draw_sprite(spr_ort,-1,view_xview/19.9+draw_x,view_yview/15+draw_y);
    7. with object50 {
    8. draw_circle_color(view_xview+x/19.9,view_yview+y/15,1,c_blue,c_blue,0);
    9. }
    Alles anzeigen
    :) Nobody is perfect (-:

    "Dummköpfe sind Denkerköpfen weit überlegen. Zahlenmäßig." Ernst Ferstl
  • eine sache an der es liegen könnte ist, das das with statement nicht im draw-event vom object50 objekt stadtfindet. versuch es mal mit vollgendem:

    GML-Quellcode

    1. draw_x = view_xview+780;
    2. draw_y = view_yview+569;
    3. draw_rectangle_color(draw_x-3,draw_y-3,draw_x+156.6,draw_y+156.6,c_gray,c_gray,c_gray,c_gray,0);
    4. draw_rectangle_color(draw_x,draw_y,draw_x+153.6,draw_y+153.6,c_black,c_black,c_black,c_black,0);
    5. draw_rectangle(-1,-1,3073,2305,1);
    6. draw_sprite(spr_ort,-1,view_xview/19.9+draw_x,view_yview/15+draw_y);
    und im object50 draw event

    GML-Quellcode

    1. draw_circle_color((view_xview+780+x)/19.9,(view_yview+569+y)/15,1,c_blue,c_blue,0);

    ps: das example was du benutzt hattest war sowieso von mir, ich wüste nicht was ich da noch ergenzen sollte....

    pps: warum drwst du eigentlich einen kreis mit dem radius 1? draw doch einfach einen pixel, das ist zeitsparender.
    :) Nobody is perfect (-:

    "Dummköpfe sind Denkerköpfen weit überlegen. Zahlenmäßig." Ernst Ferstl
  • Ich habe mein ganzes Spiel noch einmal umdesigned, Größen geändert und verschiedenes umbenannt. Auf jeden Fall funktioniert jetzt alles perfekt.

    GML-Quellcode

    1. draw_x = view_xview+12;
    2. draw_y = view_yview+12;
    3. draw_rectangle(-1,-1,5120,3930,1);
    4. draw_sprite(spr_rechteck,-1,view_xview/20+draw_x,view_yview/20.68421052+draw_y);
    5. for (n = 0; n < instance_number(obj_man); n += 1)
    6. {
    7. object = instance_find(obj_man,n);
    8. draw_circle_color(draw_x+(object.x/20),draw_y+(object.y/20.68421052),1.5,c_blue,c_blue,0);
    9. }
    Alles anzeigen
    [SIZE="25"][COLOR="Red"]XP Hilfe - Schluss mit PC-Problemen[/COLOR][/SIZE]
    [SIZE="20"]http://xphilfe.de.tt[/SIZE]

    Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von gm-freak ()

  • deine langsame for schleife würd ich noch durch ein with ersetzen:

    GML-Quellcode

    1. with(obj_man)
    2. { draw_circle_color(view_xview+12+(x/20),view_yview+12+(y/20.68421052),1.5,c_blue,c_blue,0);
    3. }


    ciao
    iTeM

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

  • Benutzer online 1

    1 Besucher