Gamestudio Links
Zorro Links
Newest Posts
Data from CSV not parsed correctly
by EternallyCurious. 04/18/24 10:45
StartWeek not working as it should
by Zheka. 04/18/24 10:11
folder management functions
by VoroneTZ. 04/17/24 06:52
lookback setting performance issue
by 7th_zorro. 04/16/24 03:08
zorro 64bit command line support
by 7th_zorro. 04/15/24 09:36
Zorro FIX plugin - Experimental
by flink. 04/14/24 07:48
Zorro FIX plugin - Experimental
by flink. 04/14/24 07:46
AUM Magazine
Latest Screens
The Bible Game
A psychological thriller game
SHADOW (2014)
DEAD TASTE
Who's Online Now
4 registered members (ozgur, EternallyCurious, howardR, 1 invisible), 623 guests, and 0 spiders.
Key: Admin, Global Mod, Mod
Newest Members
EternallyCurious, 11honza11, ccorrea, sakolin, rajesh7827
19046 Registered Users
Previous Thread
Next Thread
Print Thread
Rate Thread
Page 1 of 2 1 2
Panel + Window = Lebensbalken?! [GER] #322825
05/10/10 01:03
05/10/10 01:03
Joined: May 2010
Posts: 9
S
strudi1986 Offline OP
Newbie
strudi1986  Offline OP
Newbie
S

Joined: May 2010
Posts: 9
Hallo, bin neu hier und probiere seit einigen Tagen etwas mit der Gratis Version von Gamestudio herum.

Ich habe es schon geschafft, eigenständig ein halbwegs vernünftiges Playerscript zu schreiben, was auch einigermaßen nach meinen Vorstellungen funktioniert. Es ist zwar nicht das allerbeste, aber es tut das was es machen soll. wink

Derzeit beschäftige ich mich mit den Panels und Windows und was nicht alles dazu gehört. Aber ich schaffe es nicht, einen einfachen bzw normalen Lebensbalken, wie sie in den meisten Spielen auch anzutreffen sind, einzufügen.

Ich habe eine Panel definiert, mit einer 200px breiten Bitmap als Hintergrund. Darin werden 2 Balken dargestellt. Der obere Balken soll die Lebensanzeige werden.

Mein Gedankengang war folgender: Ich erstelle im Panel ein Window, dass ebenfalls 200px darstellen soll. Dieses Window bzw die Grafik soll auf der X-Achse verschoben werden. Dazu habe ich vor dem Panel noch eine Variable "player_health" mit dem Wert 100 definiert.

Da der Balken 200px breit ist, dachte ich mir, dass die Lebensanzeige die doppelte Breite, also 400px haben muss. 200px rot, 200px schwarz - schwarz soll nicht gesehen werden also habe ich das OVERLAY Flag auch gesetzt.

Wenn ich aber die Grafik dann in der Windows Definition einfüge, und das Level starte, dann stimmt die Position der Grafik mit dem festgesetzten Wert von 100 nicht überein.

Ich möchte nämlich, dass sich die Grafik bei Lebensverlust nach links verschiebt, sprich, dass die rechte Seite des Balkens dann durchsichtig (schwarz = OVERLAY) wird.

Hat vielleicht jemand einen Rat für mich? Auf was muss ich bei den Pixelangaben im Window und beim erstellen der Grafik dann achten? Irgendwie komme ich mit den Pixelangaben bzw mit den Größenverhltnissen nicht klar. Ich probiere nun schon ein paar Stunden, aber ich komme nicht zu dem Ergebnis, das ich gerne hätte. Durch das lite-c Tutorial wurde ich leider auch nicht schlauer.

Würde ich freuen, wenn mir jemand helfen kann!

Danke,

lg
strudi

Re: Panel + Window = Lebensbalken?! [GER] [Re: strudi1986] #322826
05/10/10 01:23
05/10/10 01:23
Joined: Jan 2002
Posts: 4,225
Germany / Essen
Uhrwerk Offline
Expert
Uhrwerk  Offline
Expert

Joined: Jan 2002
Posts: 4,225
Germany / Essen
Hallo Strudi,

willkommen im Gamestudio Forum. Deine Überlegungen sind doch alle gut und richtig. Wenn Du die Variable auf 100 setzt, dann sollte die Position deines Schwarz/Rot Balkens genau in der Mitte sein. Bei 200 sollte er komplett schwarz sein und bei 0 sollte alles rot sein. Die Variable, die Du in der Window-Definition angibst, definiert quasi die Pixelposition, bei der zu zeichnen angefangen wird. Sprich: wenn Deine Variable 100 ist, dann werden ab dem 100. Pixel alle folgenden 200 Pixel (also bis 300) auch auf den Bildschirm gemalt.

Wenn Du von Gesundheit (0-100) auf die Pixelposition schliessen willst, dann kannst Du das wie folgt umrechnen:

Position = 200 - (Gesundheit * 2);

Wenns noch nicht klappt, dann nicht verzweifeln. Poste doch einfach mal den Code, den Du geschrieben hast.


Always learn from history, to be sure you make the same mistakes again...
Re: Panel + Window = Lebensbalken?! [GER] [Re: Uhrwerk] #322827
05/10/10 01:48
05/10/10 01:48
Joined: May 2010
Posts: 9
S
strudi1986 Offline OP
Newbie
strudi1986  Offline OP
Newbie
S

Joined: May 2010
Posts: 9
Hi,

ich bedanke mich recht herzlich. Jetzt versteh ich wie es funktioniert und es funktioniert auch! wink

Es war anscheinend die ganze Zeit richtig, nur die Werte haben mich irritiert. Ich bin nämlich die ganze Zeit davon ausgegangen, dass die Variable die ich fälschlicherweise als "player_health" definiert habe, auch das Leben der Spielfigur wiederspiegeln. Deshalb bin ich nicht auf einen Nenner mit der Balkenanzeige gekommen. Vielen Dank nochmals dafür.

Die Umrechnung für die Leben, gehört dann aber ins Playerscript oder?

Schreibe nämlich das Playerscript und die Paneldefinitionen in seperate Dateien.

Danke nochmals,

lg
strudi

Re: Panel + Window = Lebensbalken?! [GER] [Re: strudi1986] #322882
05/10/10 13:14
05/10/10 13:14
Joined: Jan 2002
Posts: 4,225
Germany / Essen
Uhrwerk Offline
Expert
Uhrwerk  Offline
Expert

Joined: Jan 2002
Posts: 4,225
Germany / Essen
Hallo Strudi,

das ist Geschmacksache. Ich würde eher argumentieren, dass die Umrechnung in die Datei mit der Panel Definition gehört, denn es geht hier ja um die Visualisierung eines Wertes. Spielt ja aber unterm Strich keine Rolle.

Gruß,
Uhrwerk


Always learn from history, to be sure you make the same mistakes again...
Re: Panel + Window = Lebensbalken?! [GER] [Re: Uhrwerk] #322890
05/10/10 13:26
05/10/10 13:26
Joined: Feb 2005
Posts: 3,687
Hessen, Germany
T
Tempelbauer Offline
Expert
Tempelbauer  Offline
Expert
T

Joined: Feb 2005
Posts: 3,687
Hessen, Germany
wo wir grad beim thema code-dateien sind:
gibts das limit von max. 40 dateien noch? oder wurde das mit A7 abgeschafft?

Re: Panel + Window = Lebensbalken?! [GER] [Re: Uhrwerk] #322891
05/10/10 13:26
05/10/10 13:26
Joined: May 2010
Posts: 9
S
strudi1986 Offline OP
Newbie
strudi1986  Offline OP
Newbie
S

Joined: May 2010
Posts: 9
Hi!

Habe versucht die Umrechnung einzubauen, aber es funktioniert nicht. Der Balken verschiebt sich nicht, wenn die Variable mit den Lebenspunkten geändert wird.

Hier mal der Code wie ich es gemacht habe:

Code:
var player_health; //erhält den Wert im Playerscript, definierter Skill
var player_mana; //erhält den Wert im Playerscript, definierter Skill
var health_pos = 200 - (player_health*2);
var mana_pos = 200 - (player_mana*2);

PANEL* char_balken_pan =
{
	bmap = "charbalken.pcx";
	pos_x = 0;
	pos_y = 0;
	window = 111, 31, 200, 20, "playerhealth.pcx", health_pos, 0);
	window = 111, 54, 200, 20, "playermana.pcx", mana_pos, 0);
	digits(200, 37, 3, *, 1, player_health);
	digits(200, 60, 3, *, 1, player_mana);
	flags = SHOW | OVERLAY;
}



Die Wertübergabe vom Skill aus dem Playerscript an die Variable "player_health" bzw "player_mana" funktioniert einwandfrei. Jedoch verschiebt sich der Balken "health_pos" nicht wenn sich der Wert verändert.

Vielen Dank für die Hilfe!

lg
strudi

Re: Panel + Window = Lebensbalken?! [GER] [Re: strudi1986] #322895
05/10/10 13:29
05/10/10 13:29
Joined: Jan 2002
Posts: 4,225
Germany / Essen
Uhrwerk Offline
Expert
Uhrwerk  Offline
Expert

Joined: Jan 2002
Posts: 4,225
Germany / Essen
Du musst den Wert für healthpos natürlich jedes Frame neu berechnen. Zum Beispiel:
Code:
var player_health; //erhält den Wert im Playerscript, definierter Skill
var player_mana; //erhält den Wert im Playerscript, definierter Skill
var health_pos = 200 - (player_health*2);
var mana_pos = 200 - (player_mana*2);

PANEL* char_balken_pan =
{
	bmap = "charbalken.pcx";
	pos_x = 0;
	pos_y = 0;
	window = 111, 31, 200, 20, "playerhealth.pcx", health_pos, 0);
	window = 111, 54, 200, 20, "playermana.pcx", mana_pos, 0);
	digits(200, 37, 3, *, 1, player_health);
	digits(200, 60, 3, *, 1, player_mana);
	flags = SHOW | OVERLAY;
}

void char_balken_startup()
{
	while(1)
	{
		health_pos = 200 - (player_health*2);
		wait(1);
	}
}




Always learn from history, to be sure you make the same mistakes again...
Re: Panel + Window = Lebensbalken?! [GER] [Re: Uhrwerk] #322896
05/10/10 13:37
05/10/10 13:37
Joined: May 2010
Posts: 9
S
strudi1986 Offline OP
Newbie
strudi1986  Offline OP
Newbie
S

Joined: May 2010
Posts: 9
Super, funktioniert. Teilweise komm ich einfach nicht auf die Lösung des Problems, obwohl es doch so einfach wär. wink

Vielen Dank für die Hilfe.

lg strudi

Re: Panel + Window = Lebensbalken?! [GER] [Re: strudi1986] #322946
05/10/10 17:12
05/10/10 17:12
Joined: May 2010
Posts: 9
S
strudi1986 Offline OP
Newbie
strudi1986  Offline OP
Newbie
S

Joined: May 2010
Posts: 9
Eine letzte Frage habe ich noch.

Wenn meine Lebenspunkte steigen, sei es in Form von einem LevelUp oder per neuer Ausrüstung, dann funktioniert diese Umrechnung für den Lebensbalken nicht mehr. Gibt es dafür eine einheitliche Lösung? Oder ist das etwas komplizierter?

Ich dachte mir, dass die Variable "player_health" die den Wert 100 bekommt, zustätzlich irgendwie in einer anderen Variable gespeichert werden muss und dort irgendwie in 100% umgewandelt werden muss. Und Wenn die Variable "player_health" zB den Wert 200 erhält, diese wiederum auch 100% ergeben. Liege ich mit dieser Annahme richtig, oder bin ich total auf dem Holzweg? wink

lg strudi

Re: Panel + Window = Lebensbalken?! [GER] [Re: strudi1986] #322959
05/10/10 17:44
05/10/10 17:44
Joined: Feb 2009
Posts: 3,207
Germany, Magdeburg
Rei_Ayanami Offline
Expert
Rei_Ayanami  Offline
Expert

Joined: Feb 2009
Posts: 3,207
Germany, Magdeburg
Nutze für die Berechnung der Panel Position keine Startup function.

Diese erhöhen die Startup-Zeit und sind nur für Funktionen gedacht die im ersten Frame laufen müssen.

Streiche das _startup und starte die function vom player script aus wink

Page 1 of 2 1 2

Gamestudio download | chip programmers | Zorro platform | shop | Data Protection Policy

oP group Germany GmbH | Birkenstr. 25-27 | 63549 Ronneburg / Germany | info (at) opgroup.de

Powered by UBB.threads™ PHP Forum Software 7.7.1