Gamestudio Links
Zorro Links
Newest Posts
Help with plotting multiple ZigZag
by degenerate_762. 04/30/24 23:23
M1 Oversampling
by 11honza11. 04/30/24 08:16
Trading Journey
by howardR. 04/28/24 09:55
Zorro Trader GPT
by TipmyPip. 04/27/24 13:50
Data from CSV not parsed correctly
by jcl. 04/26/24 11:18
Why Zorro supports up to 72 cores?
by jcl. 04/26/24 11:09
AUM Magazine
Latest Screens
The Bible Game
A psychological thriller game
SHADOW (2014)
DEAD TASTE
Who's Online Now
4 registered members (AndrewAMD, 7th_zorro, ozgur, Quad), 844 guests, and 0 spiders.
Key: Admin, Global Mod, Mod
Newest Members
firatv, wandaluciaia, Mega_Rod, EternallyCurious, howardR
19050 Registered Users
Previous Thread
Next Thread
Print Thread
Rate Thread
Page 2 of 2 1 2
Re: Panel + Window = Lebensbalken?! [GER] [Re: strudi1986] #322960
05/10/10 17:46
05/10/10 17:46
Joined: Jan 2002
Posts: 4,225
Germany / Essen
Uhrwerk Offline
Expert
Uhrwerk  Offline
Expert

Joined: Jan 2002
Posts: 4,225
Germany / Essen
Fast. Ich würde einfach eine Variable max_healt anlegen, in der Du die maximal mögliche Lebensenergie speicherst. Dann ändert sich die Berechnung wie folgt:

health_pos = 200 - (player_health / max_health * 200);

EDIT:
@rei: Was soll das bringen? Die Anzahl an Funktionen, die der Scheduler handlen muss ist genau die gleiche?


Always learn from history, to be sure you make the same mistakes again...
Re: Panel + Window = Lebensbalken?! [GER] [Re: Uhrwerk] #322966
05/10/10 18:06
05/10/10 18:06
Joined: Aug 2007
Posts: 1,922
Schweiz
Widi Offline
Serious User
Widi  Offline
Serious User

Joined: Aug 2007
Posts: 1,922
Schweiz
Jawohl, ob eine Funktion mit _startup oder von der main aufgerufen wird, spielt keine Rolle.

Re: Panel + Window = Lebensbalken?! [GER] [Re: Widi] #322970
05/10/10 18:23
05/10/10 18:23
Joined: May 2010
Posts: 9
S
strudi1986 Offline OP
Newbie
strudi1986  Offline OP
Newbie
S

Joined: May 2010
Posts: 9
Vielen Dank, jedoch erziele ich nicht das gewünschte Ergebnis.

Der Balken sollte beim erreichen eines neuen Maximalwertes ebenfalls komplett rot sein. Und bei Lebensverlust, sollte er in den gleichen Schritten nach links rutschen.

Also bei Spielstart = Leben 100 --> Balken ist Rot
Bei Verlust von 10 Leben = Leben 90 --> Balken ist zu 90% Rot
LevelUp = 200 Leben (neue MaxWert) --> Balken ist wieder komplett Rot (100%)
Bei Verlust von 20 Leben = 180 Leben --> Balen ist zu 90% Rot

Aber ich bedanke mich recht herzlich für den Lösungsvorschlag, ich werde wieder mal eine Weile selbst versuchen, eine Lösung zu finden. Sonst lernt man ja nix! wink

Danke

lg
strudi

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

Joined: Jan 2002
Posts: 4,225
Germany / Essen
Wenn Du nicht das gewünschte Ergebnis bekommst, dann poste doch bitte nochmal deinen Code. Ich meine die Grundidee sollte richtig sein...


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

Joined: May 2010
Posts: 9
Ach Sorry, ich habe mich vertan. Es stimmt schon so wie du es oben gepostet hast. Sry mein Fehler.

Ich muss nur jetzt schauen, wie ich das am besten mache, damit ich den aktuellen max Wert von "player_health" an "max_health" übergebe.

Ich glaube ich habe irgendwo gerade einen Denkfehler drinnen.

Kann es sein das ich eine weitere Variable brauche? Denn mit folgenden Code bekomme ich nur die Prozentuale Lebensanzeige angezeigt:

Codeauszug aus Playerscript:

Code:
action my_player()
{
	camera_follow(me);
	
	my_player_move();
	
	player_one = me;
	
	my.PLAYER_HEALTH = 100;
	my.PLAYER_MANA = 100;
	player_health = my.PLAYER_HEALTH;
	player_mana = my.PLAYER_MANA;
	
	wait(1);
}





Code von gui.c
Code:
var max_health = 1000;
var player_health;
var health_pos = 200 - (player_health / max_health * 200);


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

void char_balken_startup()
{
	while(1)
	{
		health_pos = 200 - (player_health / max_health * 200);
	}
}



Wenn ich das Spiel starte, werden die 100 Leben angezeigt, also nur 10% des Balkens sind rot gefüllt.

Ich glaube dass ich eine weitere Variable brauche, wo "player_health" der aktuelle MaxWert ist und dieser Wert wird dann an "max_health" übergeben, oder? wink

Vielen Dank

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

Joined: Jan 2002
Posts: 4,225
Germany / Essen
Nein, dein Denkfehler ist woanders. Er steckt in der action my_player, und zwar in der vorletzten und vorvorletzten Zeile. Da muss noch was zusätzlich hin. Schau Dir im Vergleich mal char_balken_startup an. ;-)

P.S. Die zehn Prozent sind doch genau richtig. 100 von 1000 sind 10%...


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

Joined: May 2010
Posts: 9
Hm ja, die 10% sind korrekt, aber wir reden einander vorbei. wink
Ich schaffe es gerade nicht mein Problem richtig zu schildern hehe.

Ich möchte, dass die Variable "max_health" keinen fixen Wert hat. "max_health" sollte jeweils den aktuellen MaxWert von "player_health" haben.

zB:

player_health = 100 Leben (100%, Balken ist komplett rot)

Dann habe ich zB ein Level Up oder ich erhalte ein Item dass die Lebenspunkte sagen wir um 100 Punkte erhöht.

Demzufolge wäre dann "player_health" = 200 (=100%, Balken ist wieder komplett rot). Dann müsste der neue MaxWert an "max_health" übergeben werden.

Ich möchte damit erreichen, dass die Anzeige des Lebensbalken mit einem LevelUp etc. noch immer funktioniert, obwohl sich meine Lebenspunkte erhöht haben.

Ich hoffe jetzt ist es ein bisschen deutlicher, is irgendwie schwierig zu erklären wink

lg

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

Joined: Jan 2002
Posts: 4,225
Germany / Essen
Genau davon rede ich auch. Wir sind uns glaube ich nur uneinig über die Benutzung der max_health Variablen.

Ich meinte das so: Der Anfangswert von max_health ist z.B. 100. Jetzt läuft Dein Spieler durch die Gegend, tötet ein paar Prinzessinen, findet das Benzin für die Kettensäge, rettet das Monster, oder was immer er auch tun muss um ein Level aufzusteigen. In diesem Moment setzt Du einfach max_health auf z.B. 110. Fertig. Wenn der Spieler durch den Level-Aufstieg auch noch gleich volle Gesundheit bekommen soll, dann setzt Du anschließend noch my.player_health (oder wie das bei Dir heisst) auf max_health. Dann zeigt der Balken immer die prozentuale Gesundheit des Spielers an. Richtig gedacht?


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

Joined: May 2010
Posts: 9
Hm, ja genau!

Stimmt, mir war nicht ganz klar, wie ich die max_health Variable verwenden soll. Aber stimmt, ich habe das jetzt getestet und es funktioniert! wink Vielen Dank nochmals!

Tut mir leid, wegen den vielen Fragen und ungereimtheiten. ^^

lg strudi

Re: Panel + Window = Lebensbalken?! [GER] [Re: Rei_Ayanami] #323019
05/10/10 21:19
05/10/10 21:19
Joined: Aug 2007
Posts: 1,922
Schweiz
Widi Offline
Serious User
Widi  Offline
Serious User

Joined: Aug 2007
Posts: 1,922
Schweiz
Die Formel von Uhrwerk stimmt schon:

health_pos = 200 - (player_health / max_health * 200);

player_healt ist das momentane Leben deines Players.
max_healt ist das maximale Leben deines Players.

zum Beispiel:
player_healt = 90;
max_health = 100;
health_pos = 200 - (90 / 100 * 200); // = 20

player_healt = 40;
max_health = 100;
health_pos = 200 - (40 / 100 * 200); // = 120

player_healt = 90;
max_health = 200;
health_pos = 200 - (90 / 200 * 200); // = 110

player_healt = 180;
max_health = 200;
health_pos = 200 - (180 / 200 * 200); // = 20

Das ist einfache Mathematik. Solltest du schon beherrschen. Wird auch nicht einfacher bei Vectorberechnungen die du bei 3d brauchst

EDIT: Uups, ihr wart schneller...




Last edited by Widi; 05/10/10 21:20.
Page 2 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