[EasyRB] Radiobuttons zeichnen und abfragen per Script v1

    • Skript

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

    • [EasyRB] Radiobuttons zeichnen und abfragen per Script v1

      EasyRB v1 by derkimba


      Dieses Script richtet sich an GML Anfänger und GML Fortgeschrittene
      Mit diesem Script ist es ganz einfach eigene Radiobuttons in sein Spiel einzubauen.
      Vorteil: Ihr könnt in einem Objekt so viele Radiobuttons machen wie ihr wollt und müsst euch nicht um das System, das dahintersteckt, kümmern.

      Erklärung zu draw_radiobutton_sprite:
      Spoiler anzeigen

      Mit diesem Script könnt ihr einen eigenen Radiobutton machen. Euer Sprite braucht dazu 2 SubImages, das eine wenn der Radiobutton nicht ausgewählt ist, das andere wenn er ausgewählt ist.
      Folgende Argumente sind für das Script notwendig:
      • Argument0 ist die x-Position des Radiobuttons
      • Argument1 ist die y-Position des Radiobuttons
      • Argument2 ist das Sprite das für den Radiobutton verwendet werden soll
      • Argument3 ist das SubImage wenn der Radiobutton deaktiviert ist
      • Argument4 ist das SubImage wenn der Radiobutton aktiviert ist
      • Argument5 ist der Index eures Radiobuttons (muss ein String sein). Jeder Radiobutton braucht einen eigenen Index. Der Index enthält anschließend den Status eures Radiobuttons (0 = deaktiviert und 1 = aktiviert). Ihr könnt den Wert auslesen oder aber auch manuell verändern. Beim verändern beachtet bitte, dass ihr die Indexe der anderen Radiobuttons derselben Gruppe mitändert!
      • Argument6 ist der Name der Gruppe (muss ein String sein), der der Radiobutton angehört. Eine Gruppe kann beliebig viele Radiobuttons beinhalten. Bei jeder Gruppe kann immer nur ein Radiobutton aktiviert sein.

        Die Funktion liefert zurück, ob der Radiobutton aktiviert ist (1) oder deaktiviert ist (0)


      :event_draw: draw_radiobutton_sprite
      Spoiler anzeigen

      GML-Quellcode

      1. // http://www.gm-d.de/wbb/index.php/Thread/21194/
      2. // By derkimba
      3. //draw_radiobutton_sprite(x1,y1,spr,i_0,i_1,index,group)
      4. var x1,x2,r,index;
      5. x1 = argument0 // x-Position des Radiobuttons
      6. y1 = argument1 // y-Position des Radiobuttons
      7. spr = argument2 // Sprite des Radiobuttons
      8. i_0 = argument3 // ImageIndex wenn Radiobutton deaktiviert ist
      9. i_1 = argument4 // ImageIndex wenn Radiobutton aktiviert ist
      10. index = argument5 // Eigener Index der abgefragt werden kann ob Radiobutton aktiviert ist
      11. group = argument6 // Die Gruppe, der der Radiobutton angehört
      12. // Gruppe wird erstellt, falls sie nicht existiert
      13. if(!variable_local_exists(group))
      14. {
      15. variable_local_set(group,ds_list_create())
      16. }
      17. // Radiobutton wird seiner Gruppe zugewiesen und Standard auf deaktiviert gesetzt
      18. if(!variable_local_exists(index))
      19. {
      20. ds_list_add(variable_local_get(group),index)
      21. variable_local_set(index,0)
      22. }
      23. // Wenn Radiobutton aktiviert ist, wird auch sein grüner Punkt gezeichnet
      24. if(variable_local_get(index) == 1)
      25. {
      26. draw_sprite(spr,i_1,x1,y1)
      27. }
      28. else
      29. {
      30. draw_sprite(spr,i_0,x1,y1)
      31. }
      32. // Wenn die Maus über dem Radiobutton ist
      33. if(mouse_x > x1 && mouse_x < x1+sprite_get_width(spr) && mouse_y > y1 && mouse_y < y1+sprite_get_height(spr))
      34. {
      35. // Wenn die Maus gedrückt wird
      36. if(mouse_check_button_pressed(mb_left))
      37. {
      38. // Alle Radiobuttons in der Gruppe werden deaktiviert
      39. var i;
      40. for(i = 0;i < ds_list_size(variable_local_get(group));i+=1)
      41. {
      42. variable_local_set(ds_list_find_value(variable_local_get(group),i),0)
      43. }
      44. // Der eigene Radiobutton wird aktiviert
      45. variable_local_set(index,1)
      46. }
      47. }
      48. // Liefert zurück ob der Radiobutton aktiviert oder deaktiviert ist (0 oder 1)
      49. return variable_local_get(index)
      Alles anzeigen


      Erklärung zu draw_radiobutton_radiobutton:
      Spoiler anzeigen

      Mit diesem Script könnt ihr einen Radiobutton zeichnen, ohne ein Sprite zu benötigen (praktisch für Debug).
      Folgende Argumente sind für das Script notwendig:
      • Argument0 ist die x-Position des Radiobuttons
      • Argument1 ist die y-Position des Radiobuttons
      • Argument2 ist der Radius des Radiobuttons
      • Argument3 ist der Radius des Punktes
      • Argument4 ist die Farbe des Punktes
      • Argument5 ist die Hintergrundfarbe der Radiobuttons
      • Argument5 ist der Index eures Radiobuttons (muss ein String sein). Jeder Radiobutton braucht einen eigenen Index. Der Index enthält anschließend den Status eures Radiobuttons (0 = deaktiviert und 1 = aktiviert). Ihr könnt den Wert auslesen oder aber auch manuell verändern. Beim verändern beachtet bitte, dass ihr die Indexe der anderen Radiobuttons derselben Gruppe mitändert!
      • Argument6 ist der Name der Gruppe (muss ein String sein), der der Radiobutton angehört. Eine Gruppe kann beliebig viele Radiobuttons beinhalten. Bei jeder Gruppe kann immer nur ein Radiobutton aktiviert sein.

        Die Funktion liefert zurück, ob der Radiobutton aktiviert ist (1) oder deaktiviert ist (0)


      :event_draw: draw_radiobutton_radiobutton
      Spoiler anzeigen

      GML-Quellcode

      1. // http://www.gm-d.de/wbb/index.php/Thread/21194/
      2. // By derkimba
      3. //draw_radiobutton_radiobutton(x1,y1,r,r_punkt,c_punkt,c_back,index,group)
      4. var x1,y1,r,r_punkt,c_punkt,c_back,index,group;
      5. x1 = argument0 // x-Position des Radiobuttons
      6. y1 = argument1 // y-Position des Radiobuttons
      7. r = argument2 // Radius des Radiobuttons
      8. r_punkt = argument3 // Radius des Punktes
      9. c_punkt = argument4 // Farbe des Punktes
      10. c_back = argument5 // Hintergrundfarbe der Radiobuttons
      11. index = argument6 // Eigener Index der abgefragt werden kann ob Radiobutton aktiviert ist
      12. group = argument7 // Die Gruppe, der der Radiobutton angehört
      13. // Gruppe wird erstellt, falls sie nicht existiert
      14. if(!variable_local_exists(group))
      15. {
      16. variable_local_set(group,ds_list_create())
      17. }
      18. // Radiobutton wird seiner Gruppe zugewiesen und Standard auf deaktiviert gesetzt
      19. if(!variable_local_exists(index))
      20. {
      21. ds_list_add(variable_local_get(group),index)
      22. variable_local_set(index,0)
      23. }
      24. // Radiobutton wird gezeichnet
      25. draw_circle_color(x1,y1,r,c_back,c_back,0)
      26. draw_circle(x1,y1,r,1)
      27. // Wenn Radiobutton aktiviert ist, wird auch sein grüner Punkt gezeichnet
      28. if(variable_local_get(index) == 1)
      29. {
      30. draw_circle_color(x1,y1,r_punkt,c_punkt,c_punkt,0)
      31. }
      32. // Wenn die Maus über dem Radiobutton ist
      33. if(point_distance(x1,y1,mouse_x,mouse_y) < r)
      34. {
      35. // Wenn die Maus gedrückt wird
      36. if(mouse_check_button_pressed(mb_left))
      37. {
      38. // Alle Radiobuttons in der Gruppe werden deaktiviert
      39. var i;
      40. for(i = 0;i < ds_list_size(variable_local_get(group));i+=1)
      41. {
      42. variable_local_set(ds_list_find_value(variable_local_get(group),i),0)
      43. }
      44. // Der eigene Radiobutton wird aktiviert
      45. variable_local_set(index,1)
      46. }
      47. }
      48. // Liefert zurück ob der Radiobutton aktiviert oder deaktiviert ist (0 oder 1)
      49. return variable_local_get(index)
      Alles anzeigen

      Ich hoffe, dass ich mit diesem Script einigen von euch helfen konnte.
      Da mich das Script einige Nerven gekostet hat, wäre es schön wenn ihr mich in den Credits erwähnt, falls ihr das Script in eurem Spiel benutzt.

      Im Anhang findet ihr ein Beispiel und die Scriptdatei

      Gruß derkimba
      Dateien
      • EasyRB v1.zip

        (13,52 kB, 108 mal heruntergeladen, zuletzt: )

      Dieser Beitrag wurde bereits 10 mal editiert, zuletzt von derkimba ()