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:
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)
draw_radiobutton_sprite
GML-Quellcode
- // http://www.gm-d.de/wbb/index.php/Thread/21194/
- // By derkimba
- //draw_radiobutton_sprite(x1,y1,spr,i_0,i_1,index,group)
- var x1,x2,r,index;
- x1 = argument0 // x-Position des Radiobuttons
- y1 = argument1 // y-Position des Radiobuttons
- spr = argument2 // Sprite des Radiobuttons
- i_0 = argument3 // ImageIndex wenn Radiobutton deaktiviert ist
- i_1 = argument4 // ImageIndex wenn Radiobutton aktiviert ist
- index = argument5 // Eigener Index der abgefragt werden kann ob Radiobutton aktiviert ist
- group = argument6 // Die Gruppe, der der Radiobutton angehört
- // Gruppe wird erstellt, falls sie nicht existiert
- if(!variable_local_exists(group))
- {
- variable_local_set(group,ds_list_create())
- }
- // Radiobutton wird seiner Gruppe zugewiesen und Standard auf deaktiviert gesetzt
- if(!variable_local_exists(index))
- {
- ds_list_add(variable_local_get(group),index)
- variable_local_set(index,0)
- }
- // Wenn Radiobutton aktiviert ist, wird auch sein grüner Punkt gezeichnet
- if(variable_local_get(index) == 1)
- {
- draw_sprite(spr,i_1,x1,y1)
- }
- else
- {
- draw_sprite(spr,i_0,x1,y1)
- }
- // Wenn die Maus über dem Radiobutton ist
- if(mouse_x > x1 && mouse_x < x1+sprite_get_width(spr) && mouse_y > y1 && mouse_y < y1+sprite_get_height(spr))
- {
- // Wenn die Maus gedrückt wird
- if(mouse_check_button_pressed(mb_left))
- {
- // Alle Radiobuttons in der Gruppe werden deaktiviert
- var i;
- for(i = 0;i < ds_list_size(variable_local_get(group));i+=1)
- {
- variable_local_set(ds_list_find_value(variable_local_get(group),i),0)
- }
- // Der eigene Radiobutton wird aktiviert
- variable_local_set(index,1)
- }
- }
- // Liefert zurück ob der Radiobutton aktiviert oder deaktiviert ist (0 oder 1)
- return variable_local_get(index)
Erklärung zu draw_radiobutton_radiobutton:
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)
draw_radiobutton_radiobutton
GML-Quellcode
- // http://www.gm-d.de/wbb/index.php/Thread/21194/
- // By derkimba
- //draw_radiobutton_radiobutton(x1,y1,r,r_punkt,c_punkt,c_back,index,group)
- var x1,y1,r,r_punkt,c_punkt,c_back,index,group;
- x1 = argument0 // x-Position des Radiobuttons
- y1 = argument1 // y-Position des Radiobuttons
- r = argument2 // Radius des Radiobuttons
- r_punkt = argument3 // Radius des Punktes
- c_punkt = argument4 // Farbe des Punktes
- c_back = argument5 // Hintergrundfarbe der Radiobuttons
- index = argument6 // Eigener Index der abgefragt werden kann ob Radiobutton aktiviert ist
- group = argument7 // Die Gruppe, der der Radiobutton angehört
- // Gruppe wird erstellt, falls sie nicht existiert
- if(!variable_local_exists(group))
- {
- variable_local_set(group,ds_list_create())
- }
- // Radiobutton wird seiner Gruppe zugewiesen und Standard auf deaktiviert gesetzt
- if(!variable_local_exists(index))
- {
- ds_list_add(variable_local_get(group),index)
- variable_local_set(index,0)
- }
- // Radiobutton wird gezeichnet
- draw_circle_color(x1,y1,r,c_back,c_back,0)
- draw_circle(x1,y1,r,1)
- // Wenn Radiobutton aktiviert ist, wird auch sein grüner Punkt gezeichnet
- if(variable_local_get(index) == 1)
- {
- draw_circle_color(x1,y1,r_punkt,c_punkt,c_punkt,0)
- }
- // Wenn die Maus über dem Radiobutton ist
- if(point_distance(x1,y1,mouse_x,mouse_y) < r)
- {
- // Wenn die Maus gedrückt wird
- if(mouse_check_button_pressed(mb_left))
- {
- // Alle Radiobuttons in der Gruppe werden deaktiviert
- var i;
- for(i = 0;i < ds_list_size(variable_local_get(group));i+=1)
- {
- variable_local_set(ds_list_find_value(variable_local_get(group),i),0)
- }
- // Der eigene Radiobutton wird aktiviert
- variable_local_set(index,1)
- }
- }
- // Liefert zurück ob der Radiobutton aktiviert oder deaktiviert ist (0 oder 1)
- return variable_local_get(index)
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
Dieser Beitrag wurde bereits 10 mal editiert, zuletzt von derkimba ()