Lite C -> healthbar

Posted By: ratz

Lite C -> healthbar - 01/24/12 18:23

Hallo
ich suche eine Möglichk ein Healthbar zu schreiben.
Im LiteC Workshop bzw. Aum 104 wird nur gezeigt, wie sich die Farbe verändert nicht aber wie die Healthbar kleiner wird

ich habs mal so versucht aber ich bekomme immer die Meldung Crash in main ...
Code:
///////////////////////////////
#include <acknex.h>
#include <default.c>

///////////////////////////////

#define health skill1		

#define MAXHEALTH 50		   //maximum health

////////////////////////////////////

function healthbar();

////////////////////////////////////

PANEL* health_pan = 
{
  bmap = "health.bmp";
  pos_x = 100;
  pos_y = 2;
  layer = 100;
  flags = VISIBLE;
}

////////////////////////////////////
function main()
{
 level_load(NULL);

 healthbar(); 
}

///////////////////////////////////

action healthbar()
{	
 my.health = MAXHEALTH;

 while(1)
 {
  
   health_pan.scale_x = my.health / MAXHEALTH;

		
  if(key_a)
  {
   my.health -= MAXHEALTH;
   
  }

  wait(1);
 } 
}




ich möchte gerne, dass die Anzeige langsam verschwindet und zugleich die Farbe ins rote wechselt ...

aber erstmal nur, das sie überhaubt kleiner wird wenn man z.b. taste A drück;)

was mache ich falsch ?
Posted By: Uhrwerk

Re: Lite C -> healthbar - 01/24/12 19:05

Du rufst die Action healthbar aus deiner main function aus. In healthbar greifst Du auf den my pointer zu. Das kann nicht gutgehen. Wenn Du den my pointer verwenden willst, dann musst Du auch dafür sorgen, dass der Pointer gesetzt ist.
Posted By: ratz

Re: Lite C -> healthbar - 01/24/12 19:38

so gehts aber ich finde es nicht schön geschrieben

Code:
///////////////////////////////
#include <acknex.h>
#include <default.c>



function healthbar();

PANEL* health_pan = 
{
  bmap = "health.bmp";
  pos_x = 100;
  pos_y = 2;
  layer = 100;
  flags = VISIBLE;
}

function main()
{
 level_load(NULL);
 healthbar(); 
}

action healthbar()
{	
 while(1)
 {	
  if(key_a)
  {
  health_pan.scale_x -= 1*time_step;
  }
  wait(1);
 } 
}


Posted By: Uhrwerk

Re: Lite C -> healthbar - 01/24/12 19:49

Was meinst Du mit "nicht schön geschrieben" ?
Posted By: ratz

Re: Lite C -> healthbar - 01/24/12 21:00

ich hab jetzt nochmal den Code aus Aum 104 genommen und eine healthbar gemacht
(von rot nach grün)

-> healthbar:



Code:
#include <acknex.h>
#include <default.c>

var players_health = 100;


BMAP* health_pcx = "grnbar.bmp";

PANEL* health_pan =
{
 pos_x = 10;
 pos_y = 20;
 layer = 10;

 window(50, 0, 128, 32, health_pcx, players_health, 0);
 flags = VISIBLE;
}


function health_startup()
{
  while (1)
  {
   if (key_1) players_health += 2 * time_step;
   if (key_2) players_health -= 2 * time_step;

   wait (1);
   }        
}

function main()
{
 level_load(NULL);
 health_startup(); 
}



achtung:
wenn die healthbar kleiner wird gehen die farben ins grüne statt ins rote ich hab die healthbar.bmp schon gespiegelt,gedreht,bearbeitet ect...

und:

wenn ich den wert auf 100 setzte wird meine healthbar immer kleiner
wie kann ich das beheben ?
Posted By: M4sterm1nd

Re: Lite C -> healthbar - 01/25/12 13:58

Originally Posted By: ratz

achtung:
wenn die healthbar kleiner wird gehen die farben ins grüne statt ins rote ich hab die healthbar.bmp schon gespiegelt,gedreht,bearbeitet ect...


Du hast den Verlauf falschrum.
Du schiebst ja das bmap nach links aus dem fenster raus.
also siehst du dann den grünen Teil.

Originally Posted By: ratz

wenn ich den wert auf 100 setzte wird meine healthbar immer kleiner
wie kann ich das beheben ?


Wie meinst du das?

Ausserdem benötigst du noch ein min bzw. max health damit du die bar nicht ganz aus dem Fenster herausschieben kannst.
Posted By: Realspawn

Re: Lite C -> healthbar - 05/19/12 10:54

did you get it to work at all ? i am stumbeling over the same problem
© 2024 lite-C Forums