GUI wie in Monkey Island 3

Fragen zu "Adventure Game Studio"? Hier rein!
Antworten
Benutzeravatar
Campusanis
Hobby-Archäologe
Hobby-Archäologe
Beiträge: 108
Registriert: 06.01.2003, 13:22
Kontaktdaten:

Beitrag von Campusanis »

Hab's mit nem Label gelöst, funktioniert einwandfrei. Da ich es in der Sprachfarbe des Hauptcharakters habe und währenddessen das passende Speechfile abgespielt wird, dürfte man keinen Unterschied merken. :)
Danke noch mal für die Hilfe!
(Bis hierhin ;) )
Benutzeravatar
Campusanis
Hobby-Archäologe
Hobby-Archäologe
Beiträge: 108
Registriert: 06.01.2003, 13:22
Kontaktdaten:

Beitrag von Campusanis »

Hm, eine Frage noch: Gibt es eine Möglichkeit, herauszufinden, ob man der Spieler den Cursor bewegt hat?
Also ich möchte, dass die sich die GUI öffnet, wenn man (neben verschiedenen anderen Bedingungen...) den Mauszeiger bewegt hat.
Benutzeravatar
KhrisMUC
Adventure-Gott
Adventure-Gott
Beiträge: 4674
Registriert: 14.03.2005, 00:55
Wohnort: München

Beitrag von KhrisMUC »

Ins global script:

Code: Alles auswählen

int mouse_moved=0;
int mx=mouse.x;
int my=mouse.y;

function repeatedly_execute() {
  if (mouse_moved==0 && (mx!=mouse.x || my!=mouse.y)) {
    mx=mouse.x;
    my=mouse.y;
    mouse_moved=1;
  }
}
Um die Abfrage erneut zu aktivieren, einfach mouse_moved wieder auf 0 setzen.
Use gopher repellent on funny little man
Benutzeravatar
Campusanis
Hobby-Archäologe
Hobby-Archäologe
Beiträge: 108
Registriert: 06.01.2003, 13:22
Kontaktdaten:

Beitrag von Campusanis »

Danke erstmal, sieht gut aus. ;)
Hab's jetzt aber so eingebunden, wie du geschrieben hast, aber es will nicht. Hier mal der Code, um den es geht:

Code: Alles auswählen

if (IsButtonDown(LEFT) == 1) { timer++; mouse_moved=0;//While it's held, timer is increasing
  if (timer >= 20 || mouse_moved == 1){
		if (GetLocationType(mouse.x,mouse.y) != eLocationNothing) { //when you've held it for 20 (half a sec.), the GUI pops
    SetGUIPosition(2,guix,guiy);  //selfexplanatory? Oh, our GUI is numero 2.
    InterfaceOn(2); //turn the GUI on
    Mouse.UseModeGraphic(eModeLookat);
    clicked=0; //guess what..
    timer=0; //and this?
    mouse_moved=1;
		}
  }
 }
Wie gesagt, entweder wenn man die linke Maustaste 20 Einheiten gehalten hat oder wenn man während dem Links halten die Maus bewegt, soll sich das Interface öffnen.
Smiley
Hobby-Archäologe
Hobby-Archäologe
Beiträge: 163
Registriert: 28.04.2005, 16:26
Wohnort: Mönchengladbach

Beitrag von Smiley »

außerhalb von repeatedly_execute

Code: Alles auswählen

int
mouse_moved,timer, mx,my;

innerhalb von repeatedly_execute

Code: Alles auswählen

if (mouse.IsButtonDown(eMouseLeft) == 1) { 
   timer++; 
   
   if (mouse_moved==0 && ( mx != mouse.x || my != mouse.y) )  {
      mx=mouse.x;
      my=mouse.y;
      mouse_moved=1;
      } 
   if (timer >= 20 || mouse_moved == 1){
      if (GetLocationType(mouse.x,mouse.y) != eLocationNothing) { 
         SetGUIPosition(2,guix,guiy);  
         InterfaceOn(2); 
         Mouse.UseModeGraphic(eModeLookat);
         clicked=0;
         timer=0; 
         mouse_moved=0;
        }
      }
    }
    else{
        mx = mouse.x;
        my = mouse.y;
        mouse_moved = 0;
        timer = 0;
        }
obwohl es eigentlich keinen Unterschied macht, ob man nun ne halbe Sekunde wartet oder die Maus um einen Pixel bewegt...
Antworten