Anfängerfragen

Fragen zu "Adventure Game Studio"? Hier rein!
Antworten
quizmaster
Frischling
Frischling
Beiträge: 6
Registriert: 17.04.2012, 20:25

Anfängerfragen

Beitrag von quizmaster »

Als Anfänger hat man natürlich viele Fragen und da Ich nicht das Forum mit unnötig vielen Threads zuspammen möchte, erstelle Ich einfach mal diesen.
Nachdem Ich Stundenlang nach einem Script-Befehl gesucht und weder Chat noch passenden Thread gefunden habe, leg Ich auch mal direkt mit meiner ersten Frage los:

Ok, also ich möchte dass die Textbox, wenn man über einen Hotspot fährt, automatisch wieder ausgeblendet wird, sobald man mit der Maus wieder davon wegfährt.
Bis jetzt musste Ich die Textbox immer wegklicken was irgendwie nicht so schön ist.
Ich geb mal eine konkrete Vorlage:

function hHotspot3_MouseMove()
{
DisplayAt (200, 146,50, "Key");
}

Vermute mal da muss man so eine Art "Mouse.SaveCursorUntilItLeaves"-Sache eingeben, nur halt mit Textbefehl den Ich offensichtlich nicht kenne ^^
Benutzeravatar
KhrisMUC
Adventure-Gott
Adventure-Gott
Beiträge: 4674
Registriert: 14.03.2005, 00:55
Wohnort: München

Re: Anfängerfragen

Beitrag von KhrisMUC »

Glücklicherweise muss man nicht für jeden einzelnen Hotspot derartigen Code schreiben, das wäre bei einem längeren Spiel mit vielen Räumen der Tod.
Grundsätzlich gilt die Faustregel: wenn man denkt, dass man immer wieder den gleichen oder zumindest sehr ähnlichen Code schreiben muss, ist man unter Garantie auf dem Holzweg.

Mach Dir ein neues GUI und nenn' es z.B. gHotspotname. Mach es um die 100 Pixel breit und etwa 15 hoch. Gib als Hintergrund und Randfarbe jeweils 0 ein, dann ist es unsichtbar. Setz Clickable auf false und Visibility auf "Normal, initially on".
Setz' ein Label drauf und stell bei diesem Left und Top auf 0, und Width und Height auf 100/15.
Jetzt trägst Du als Text "@OVERHOTSPOT@" ein, ohne Anführungszeichen.

Das Resultat ist, dass jetzt im Spiel der Name des Hotspots/Objekts/Charakters/InventarItems unter der Maus dort zu lesen ist, wo Du das GUI plaziert hast (wieder mittels Top/Left).

Du kannst jetzt z.B. das GUI unten mittig positionieren und beim Label TextAlignment auf Centred setzen.
Den Text immer neben der Maus zu haben ginge natürlich auch.

PS: Wenn Du des Englischen mächtig bist: im AGS-Forum werden diese und ähnliche Anfängerfragen mindestens zehn mal pro Jahr beantwortet. Gerade Sachen wie der Hotspot-text, die viele in ihre Spiele einbauen wollen, kommen immer wieder aufs Tableau.
Hier einer von vor 'ner Woche: http://www.bigbluecup.com/yabb/index.php?topic=45730.0 :)
Use gopher repellent on funny little man
quizmaster
Frischling
Frischling
Beiträge: 6
Registriert: 17.04.2012, 20:25

Re: Anfängerfragen

Beitrag von quizmaster »

Ja, Danke! Weiß dann Bescheid wo Ich nächstes mal noch suchen kann. :)

Obwohl man bei dieser Lösung natürlich auch immer die GUI's für jeden Hotspot erstellen muss,oder?
Hab deshalb noch Probleme die Beschreibung für ein zweites Objekt zu erstellen, wie würde Ich da am besten vorgehen, weil Ich dafür quasi ein weiteres GUI erstellt hab, wo der Text aber die ganze Zeit über angezeigt wird.
Benutzeravatar
KhrisMUC
Adventure-Gott
Adventure-Gott
Beiträge: 4674
Registriert: 14.03.2005, 00:55
Wohnort: München

Re: Anfängerfragen

Beitrag von KhrisMUC »

Nein, wie kommst Du darauf? (Siehe Faustregel im ersten Post.) Ohne Witz, ein GUI für jeden Hotspot...??? Das muss doch irgendwo klar sein, dass das unnötig ist. Man kann GUIs jederzeit bewegen, oder den Labels auf ihnen andere Texte geben, wozu also mehrere GUIs, die alle das selbe machen?
Ganz davon abgesehen, dass ich das vermutlich in meiner ersten Antwort erwähnt hätte, falls man tatsächlich mehrere GUIs brauchen würde, oder...?

Du brauchst nur EIN GUI. Das Token @OVERHOTSPOT@ wird vom Spiel dynamisch ersetzt durch den Namen des Objekts unter der Maus, oder durch "", wenn nichts unter der Maus ist.
Use gopher repellent on funny little man
quizmaster
Frischling
Frischling
Beiträge: 6
Registriert: 17.04.2012, 20:25

Re: Anfängerfragen

Beitrag von quizmaster »

Hab mir schon gedacht dass man da nur ein GUI braucht. Nur wenn Ich jetzt 2 Objekte hab, wird beim Ersten die Beschreibung richtig neben dem Mauscursor angezeigt.
Wenn Ich dann das zweite Objekt hab, erscheint die Beschreibung nicht neben dem Cursor, sondern an der Stelle des ersten Objekts. Das ist halt das Problem wo Ich ein wenig verwirrt bin.
Benutzeravatar
KhrisMUC
Adventure-Gott
Adventure-Gott
Beiträge: 4674
Registriert: 14.03.2005, 00:55
Wohnort: München

Re: Anfängerfragen

Beitrag von KhrisMUC »

Wie in dem verlinkten Thread beschrieben: um das GUI dynamisch neben dem Mauszeiger zu positionieren, muss man in der repeatedly_execute-Funktion im GlobalScript.asc die Position des GUIs in die Nähe der Mauskoordinaten setzen.

Einfachster Weg:

Code: Alles auswählen

  int x = mouse.x + 5;
  int y = mouse.y + 5;
  if (x >= System.ViewportWidth - 50) x -= 51;
  if (y >= System.ViewportHeight - 15) y -= 16;
  gHotspotname.SetPosition(x, y);
Use gopher repellent on funny little man
quizmaster
Frischling
Frischling
Beiträge: 6
Registriert: 17.04.2012, 20:25

Re: Anfängerfragen

Beitrag von quizmaster »

jo super, funktioniert jetzt echt gut, danke =D>

Hatte das im verlinkten englischen Thread erst nicht so ganz gecheckt, aber den geposteten Code hier kann Ich besser nachvollziehen.

Code: Alles auswählen

if (x >= System.ViewportWidth - 50) x -= 51;
if (y >= System.ViewportHeight - 15) y -= 16;
Hier noch eine Frage: Mit den x,y Werten stellt man ein dass das GUI richtig angezeigt wird, wenn du mit dem Cursor an den Bildschirmrand fährst, richtig?
Hab Ich zumindest so rausgelesen, also wenn x größer 270 pixel (meine Auflösung 320x200) werden die Koordinaten dann von links gezählt und deswegen "x -".
Hoffe mal Ich habs verstanden ^^
Benutzeravatar
KhrisMUC
Adventure-Gott
Adventure-Gott
Beiträge: 4674
Registriert: 14.03.2005, 00:55
Wohnort: München

Re: Anfängerfragen

Beitrag von KhrisMUC »

x -= 51 heißt: ziehe 51 von x ab.
Es ist eine Kurzform für x = x - 51;
Der Check ist notwendig, da sonst versucht wird, das GUI mit der linken, oberen Ecke außerhalb des Bildschirms darzustellen, und dabei kann AGS crashen.
Use gopher repellent on funny little man
Antworten