W sumie nigdy się nie nauczyłem, jak w GM operować plikami INI, gdyż wszystko (i jeszcze więcej) da się załatwić funkcjami file_*. W związku z tym nie mam na ich temat zdania.
Co do display_: Wybacz, stosowałem skróty myślowe, by naprowadzić Cię na dobry kierunek, bo za dużo umiesz, by podawać Ci gotowce ;) Jeżeli już ustawisz rozmiar GUI, w evencie Global mouse obiektu GUI, na który chcesz kliknąć, musisz sprawdzić, czy pozycja myszy znajduje się w zakresie tego obiektu.
Zakładając, że każdy z rysowanych elementów jest ograniczony czterema koordynatami (minx, miny, maxx, maxy) prostokątu
GML
//funkcja checkForGUIClickRectangle(minx,miny,maxx,maxy)
return (mouse_x>=argument[0] && mouse_y>=argument[1] && mouse_x<=argument[2] && mouse_y<=argument[3])
A dla okrągłych elementów, będących kołami o środku w punkcie (mx, my) i ograniczonych promieniem mradius
GML
//funkcja checkForGUIClickCircle(mx,my,mradius)
return (point_distance(mouse_x,mouse_y,argument[0],argument[1])<=argument[2])
Tradycyjnie - nie sprawdzałem, czy działa. I teraz jak masz na przykład kwadratowy element GUI w prawym górnym rogu ekranu, i element ten ma 64x64 px - oraz nie ważne są jego "prawdziwe" x i y, gdyż rysowany jest z poziomu Draw GUI w ten lub podobny sposób
GML
var minx=room_width-64;
var miny=0;
var maxx=room_width;
var maxy=64;
//ok, powyzsze nie musi byc wcale zmienna tymczasowa, moga to byc niezmieniajace sie zmienne zadeklarowane np. w Create
draw_rectangle(minx,miny,maxx,maxy,0)
Wtedy w jego Global mouse (zwykły, pressed lub released, w zależności od tego, co chcesz osiągnąć) daj
GML
if (checkForGUIClickRectangle(minx,miny,maxx,maxy))
{
show_message("Udalo sie kliknac w kwadrot. Dyplom wyslemy poczta");
}
Byc moze jest to niezbyt wydajne obejscie, bo nie mam doswiadczenia z wiekszoscia funkcji display_*, ale podejrzewam, ze zasada dzialania jest podobna. Jak czegos nie rozumiesz to wal.