Objekt bzw. Hostspot Details

Fragen zu "Adventure Game Studio"? Hier rein!
Antworten
Benutzeravatar
Mr. Woodroffe
Süßwasserpirat
Süßwasserpirat
Beiträge: 432
Registriert: 28.06.2006, 10:34
Wohnort: Gersthofen
Kontaktdaten:

Objekt bzw. Hostspot Details

Beitrag von Mr. Woodroffe »

Hi.
kann mir vielleicht jemand helfen. Ich möchte bei meinem
Spiel das wenn der Cursor über einen Hotspot oder ein Objekt bewegt wird ein kleiner text angezeigt wird wie z.B. wenn der cursor über einem schlüssel ist das dann der text schlüssel über dem objekt erscheint.

Danke schon mal im voraus :D
Benutzeravatar
KhrisMUC
Adventure-Gott
Adventure-Gott
Beiträge: 4674
Registriert: 14.03.2005, 00:55
Wohnort: München

Beitrag von KhrisMUC »

Use gopher repellent on funny little man
Okami Joe
Komplettlösungsnutzer
Komplettlösungsnutzer
Beiträge: 13
Registriert: 28.01.2007, 13:53
Kontaktdaten:

Beitrag von Okami Joe »

Sorry dass ich mich hier so einklinke aber ich hatte genau dasselbe Problem. Der Link von eben ist recht hilfreich, allerdings hab ich da noch ein Problem, und egal wo ich suche, ich finde die Lösung nicht:

Ich möchte die Hotspotbezeichnung, also den Text direkt unter dem Cursor anzeigen lassen, also nehme ich an, dass hier der Befehl Visible = Mouse YPos ins Spiel kommt.
Jedoch passiert überhaupt nichts bei Hotspotkontakt, kein Text und kein GUI erscheint, was mach ich da falsch?
Benutzeravatar
KhrisMUC
Adventure-Gott
Adventure-Gott
Beiträge: 4674
Registriert: 14.03.2005, 00:55
Wohnort: München

Beitrag von KhrisMUC »

Okami Joe hat geschrieben:Visible = Mouse YPos
Nein, YPos dient dazu, ein GUI ab einer bestimmten Mauskoordinate anzuzeigen. (Wie bei der Symbolleiste im Default Game.)

Mach ein GUI, stell alle Farben auf 0 und Visible auf Normal.
Ohne Hotspot unterm Zeiger ist "@OVERHOTSPOT@" gleich "", deswegen kann man dann auch keinen Text sehen, das GUI ist sowieso transparent.

In die repeatedly_execute muss dann:

Code: Alles auswählen

gGui.x=mouse.x+3;
gGui.y=mouse.y+10;
Probier verschiedene Werte aus.
Wenn Du Screens mit Hotspots ganz am rechten Rand hast, musst Du wahrscheinlich noch sowas verwenden:

Code: Alles auswählen

if (gGui.x>300) gGui.x=300;
Use gopher repellent on funny little man
Okami Joe
Komplettlösungsnutzer
Komplettlösungsnutzer
Beiträge: 13
Registriert: 28.01.2007, 13:53
Kontaktdaten:

Beitrag von Okami Joe »

Danke, hab ich jetzt probiert aber er mag den Code nicht...
Krieg die Meldung:

".x is not a public member of 'GUI'"

Will der da Werte haben statt x oder y?
Benutzeravatar
KhrisMUC
Adventure-Gott
Adventure-Gott
Beiträge: 4674
Registriert: 14.03.2005, 00:55
Wohnort: München

Beitrag von KhrisMUC »

Achso, sorry, großes X. (auto-complete...?)
Use gopher repellent on funny little man
Okami Joe
Komplettlösungsnutzer
Komplettlösungsnutzer
Beiträge: 13
Registriert: 28.01.2007, 13:53
Kontaktdaten:

Beitrag von Okami Joe »

Ich sollte mir abgewöhnen das per copy & paste zu coden :oops:
Ich hab mich ein bisschen rumgespielt, ist es nicht möglich den Text automatisch unter dem Cursor zu zentrieren? Bei verschiedener Wortlänge sieht das per x & y Koordination ziemlich mies aus.

Es ist jetzt ein neues Problem aufgetaucht: Da der GUI jetzt unter dem Cursor platziert ist taucht bei Berührung des unteren Bildschirmrands folgende Meldung auf:

"GUI.Y co-ordinates specified are out of range. Remember to use 320-res co-ordinates."

Mir ist klar dass dieser Fehler entsteht, weil der Gui unter dem Cursor den Bildschirmbereich verlässt, wie kann man das verhindern?
Ich nutze die Auflösung 800x600, was will er mir mit 320-res sagen?
Benutzeravatar
KhrisMUC
Adventure-Gott
Adventure-Gott
Beiträge: 4674
Registriert: 14.03.2005, 00:55
Wohnort: München

Beitrag von KhrisMUC »

Zentrierung ist möglich, zentrier das Label auf dem GUI, setz die Formatierung auf "center" und plaziere das GUI dann mittig.
Also wenn es z.B. 100 Pixel breit ist, einfach auf mouse.x-50.

320-res heißt es, weil auch bei 640x480 nur die Koordinaten 0-319 bzw. 0-239 verwendet werden.
Bei 800x600 wären das 0-399 und 0-299.

Da die Maus sowieso genau wie das GUI mit den 400x300er-Koordinaten arbeitet, muss man nichts umrechnen, aber Du musst eben auch bei der y-Koordinate eine Abfrage einbauen, die verhindert, dass der Wert zu groß wird.

Code: Alles auswählen

  Gui*g=gScript-o-name_des_GUIs;    // NAME eintragen
  int x=mouse.x-g.Width/2;
  int y=mouse.y+ABSTAND;     // ABSTAND eintragen
  if (x<0) x=0;
  if (x>(400-g.Width)) x=400-g.Width;
  if (y>(300-g.Height)) y=300-g.Height;
  g.SetPosition(x, y);
Use gopher repellent on funny little man
Antworten