wie kann ich einen hp balken machen?
wie kann ich einen hp balken machen?
also ich will für vier charaktere in einem raum jeweils einen hp balken machen. nur wie mache ich das dass ich energie abziehe oder sage wann der charakter tot ist also halt alles was damit zu tun hat?
- Sinitrena
- Tastatursteuerer
- Beiträge: 678
- Registriert: 08.05.2004, 01:01
- Wohnort: Frankfurt
- Kontaktdaten:
Am besten ist es, für jeden Cha einen int zu erstellen (im Global Script), z.B int chaa; int chab, int chac, int chad. Diese ints exportiesrt du dann aus dem Global Script, weil es vielleicht je nachdem was du alles machen willst auch in den Room Scripts benötigt wird. (Natürlich könntest du auch GlobalInts verwenden, aber mit denen zu rechnen ist ein bischen blöder, außerdem hast du angemessene Namen, wenn du normale ints verwendest.
Die Grafiken für die Balken musst du für jeden einzelnen Wert zeichnen (das könntst du dir sparen, wenn du keinen Balken verwenden willst sondern eine Anzeige wie 20/30, aber mit Balken siehts halt schöner aus) Die Grafiken für die vier Balken kommen dann auf einen GUI.
In repeatedly_execute schreibst du dann sowas in der Art:
if (chaa==30) {
SetButtonPic (...);
}
das halt dann für alle Werte die chaa, chab, chac und chad annehmen können mit den jeweiligen Grafiken dazu. Das ist ein bischen blöd, besonders wenn du sehr hohe Werte hast, aber sonst funktioniert es nicht. Das könntest du dir auch sparen, wenn du mit Zahlen statt mit Balken arbeiten würdest, da gibt es dann ein paar einfachere Methoden, aber du hast Balken gesagt, also bleib ich mal dabei. Der Wert 0 braucht ein etwas anderes script:
if (chaa==0) { //also wenn chaa tod ist
Display (Cha A ist gerade gestorben);
}
Damit ist das Problem geklärt festzustellen wann ein cha tot ist. Wichtig ist hierbei noch, dass du aufpassen musst, das der Wert nicht unter 0 fällt, weil sonst nichts passiert. Es gibt zwei Möglichkeiten das zu umgehen: Entweder du schreibst if (chaa<=0) oder du korrigierst den Wert mit if (chaa<0) {chaa=0;) Die zweite Methode sieht umständlicher aus, ist aber besser, wenn z.B die Möglichkeit bestehen soll den cha wieder zum leben zu erwecken oder sowas.
In game_start musst du natürlich noch den Anfangswert von den vier ints festlegen, also zum Beispiel chaa=30;
Wo auch immer der cha Energie verlieren soll, schreibst du dann etwas wie chaa+=1 oder so.
Ich hoffe ich habe mich halbwegs klar ausgedrückt, weil es doch zimlich viel war.
Die Grafiken für die Balken musst du für jeden einzelnen Wert zeichnen (das könntst du dir sparen, wenn du keinen Balken verwenden willst sondern eine Anzeige wie 20/30, aber mit Balken siehts halt schöner aus) Die Grafiken für die vier Balken kommen dann auf einen GUI.
In repeatedly_execute schreibst du dann sowas in der Art:
if (chaa==30) {
SetButtonPic (...);
}
das halt dann für alle Werte die chaa, chab, chac und chad annehmen können mit den jeweiligen Grafiken dazu. Das ist ein bischen blöd, besonders wenn du sehr hohe Werte hast, aber sonst funktioniert es nicht. Das könntest du dir auch sparen, wenn du mit Zahlen statt mit Balken arbeiten würdest, da gibt es dann ein paar einfachere Methoden, aber du hast Balken gesagt, also bleib ich mal dabei. Der Wert 0 braucht ein etwas anderes script:
if (chaa==0) { //also wenn chaa tod ist
Display (Cha A ist gerade gestorben);
}
Damit ist das Problem geklärt festzustellen wann ein cha tot ist. Wichtig ist hierbei noch, dass du aufpassen musst, das der Wert nicht unter 0 fällt, weil sonst nichts passiert. Es gibt zwei Möglichkeiten das zu umgehen: Entweder du schreibst if (chaa<=0) oder du korrigierst den Wert mit if (chaa<0) {chaa=0;) Die zweite Methode sieht umständlicher aus, ist aber besser, wenn z.B die Möglichkeit bestehen soll den cha wieder zum leben zu erwecken oder sowas.
In game_start musst du natürlich noch den Anfangswert von den vier ints festlegen, also zum Beispiel chaa=30;
Wo auch immer der cha Energie verlieren soll, schreibst du dann etwas wie chaa+=1 oder so.
Ich hoffe ich habe mich halbwegs klar ausgedrückt, weil es doch zimlich viel war.
http://www.sinitrena.de.vu Meine Spiele: "A very special dog", "A magic stone", "James Bond - Who wants to live again?", "Lonely Night", "Death of an Angel", "The Witch, the Wizard and the Blue Cup", "Emerald Eyes"
also mir leuchtet alles ein! alles super einfach erklärt danke! aber das letzte ist mir nicht klar. ich verstehe das nicht mit dem energie verlieren! angenommen ein charakter macht 1 schaden pro treffer (für den einfachasten fall) wie mache ich das dann das der energie verliert (also wenn du das mit dem cha+=1 oder so nochmal genauer erklären könntest)? und dann natürlich noch wenn der charakter z.b. 4-6 schaden macht. wie lasse ich den anderen dann 4 5 oder 6 schaden nehmen? aber nochmal RIESEN DANK!
- Sinitrena
- Tastatursteuerer
- Beiträge: 678
- Registriert: 08.05.2004, 01:01
- Wohnort: Frankfurt
- Kontaktdaten:
Erst mal muss ich mich entschuldigen, ich hab mich vertippt: Es muss natürlich chaa-=1 heißen, weil der cha ja energie verliert. (chaa+=1 würde dem cha Energie inzufügen und das gibt keinen Sinn)
Wenn ich dich jetzt richtig verstehe, willst du einen Zufallsgenerator für die Anzahl des Schadens? Dafür gibt es den Befehl random (...). In die Klammer schreibst du den Maximalwert den der Zufallsgenerator erschaffen soll, der Minimalwert ist 0. Die einfachste Möglichkeit wäre von der Energie eines cha immer den random-Wert abzuziehen, aber dann würde er manchmal eben 0 Punkte verlieren, und das willst du ja nicht, also wird es wieder etwas komplizierter.
Zunächst ist es wichtig zu wissen, bei welcher Aktion der cha seine Energie verlieren soll, also wenn der Spieler was macht?
Nehmen wir mal an, der Spieler klikt mit der Maus (mit irgendeinem Cursor) auf einen Cha ( dämliches Beispiel, ich weiß, aber dann kann ich's besser erklären), dann schreibst du in das entsprechende cha script:
int verlust=random (2); // 2, weil du drei verschiedene Werte brauchst
if (verlust==0) {
chaa=chaa-4;
}
else if (verlust==1) {
chaa=chaa-5;
}
else if (verlust==2) {
chaa=chaa-6;
}
Ich hoffe der Teil war jetzt verständlicher.
P.S.: Hast du im offiziellen AGS Forum einen ähnlichen Thread erstellt? Da ist nämlich zur Zeit einer mit genau der gleichen Frage.
Wenn ich dich jetzt richtig verstehe, willst du einen Zufallsgenerator für die Anzahl des Schadens? Dafür gibt es den Befehl random (...). In die Klammer schreibst du den Maximalwert den der Zufallsgenerator erschaffen soll, der Minimalwert ist 0. Die einfachste Möglichkeit wäre von der Energie eines cha immer den random-Wert abzuziehen, aber dann würde er manchmal eben 0 Punkte verlieren, und das willst du ja nicht, also wird es wieder etwas komplizierter.
Zunächst ist es wichtig zu wissen, bei welcher Aktion der cha seine Energie verlieren soll, also wenn der Spieler was macht?
Nehmen wir mal an, der Spieler klikt mit der Maus (mit irgendeinem Cursor) auf einen Cha ( dämliches Beispiel, ich weiß, aber dann kann ich's besser erklären), dann schreibst du in das entsprechende cha script:
int verlust=random (2); // 2, weil du drei verschiedene Werte brauchst
if (verlust==0) {
chaa=chaa-4;
}
else if (verlust==1) {
chaa=chaa-5;
}
else if (verlust==2) {
chaa=chaa-6;
}
Ich hoffe der Teil war jetzt verständlicher.
P.S.: Hast du im offiziellen AGS Forum einen ähnlichen Thread erstellt? Da ist nämlich zur Zeit einer mit genau der gleichen Frage.
http://www.sinitrena.de.vu Meine Spiele: "A very special dog", "A magic stone", "James Bond - Who wants to live again?", "Lonely Night", "Death of an Angel", "The Witch, the Wizard and the Blue Cup", "Emerald Eyes"
- Sinitrena
- Tastatursteuerer
- Beiträge: 678
- Registriert: 08.05.2004, 01:01
- Wohnort: Frankfurt
- Kontaktdaten:
Gern geschehen, helfe immer gern.
Das steht im offiziellen Forum:
Der direkte link ist übrigens http://www.bigbluecup.com/yabb/index.php?topic=17944.0
Das steht im offiziellen Forum:
Kling doch echt zimlich ähnlich, oder?who can i make a hp display?
i don't know how to make one. i mean i want to make a hp display for four players in one room (for each one one). and i don't know how to make the display smaler or larger and how to say when a charakter is dead. so i don't know anything. but please just tell me how to do it and don't say: ags_freak is a noob thats to difficult for him. just post it. perhaps i know what it means one day
Der direkte link ist übrigens http://www.bigbluecup.com/yabb/index.php?topic=17944.0
http://www.sinitrena.de.vu Meine Spiele: "A very special dog", "A magic stone", "James Bond - Who wants to live again?", "Lonely Night", "Death of an Angel", "The Witch, the Wizard and the Blue Cup", "Emerald Eyes"
mist jetzt hab ichs ganz vergessen... also hab da noch ne frage. ich will das so machen dass z.b. irgendein charakter an meinem vorbei läuft (also ein cpu charakter) und mich nur dann bemerkt wenn ich ihm zu nahe komme. aslo ich stelle mir das so vor: der cpu charakter kann mich in einem bestimmten umkreis bemerken (also z.b. der cpu kann mich im umkreis von 50 pixel bemerken) befinde ich mich in diesem sagt er z.b. hey hau ab! wenn ich aber nicht in diesem unkreis bin dann macht er nichts. nun wie kann ich so einen umkreis erstellen? und dann wie wende ich ihn an (also wenn der ego im umkreis ist dann{hau ab} ansonsten{nichts} wie sieht das dann genau aus?)?
- Sinitrena
- Tastatursteuerer
- Beiträge: 678
- Registriert: 08.05.2004, 01:01
- Wohnort: Frankfurt
- Kontaktdaten:
Das kommt es darauf an: Kann sich der cpu im Raum bewegen, ja oder nein? Wenn ja, dann wird es ein bisschen komplizierter, weil du es dann wirklich mit dem cha prüfen müsstest. Ansonsten (also wenn er nur an einer Stelle steht) dann machst du im Hintergrund eine Region mit der entsprechenden Größe unter seinen Füßen. Dann machst du einfach bei Player walks onto region:
DisplaySpeech ("Hey, hau ab!");
Das passiert dann nur, wenn der player cha auf die region tritt.
Sollte sich der cpu cha aber im Raum bewegen, frag nochmal nach, darüber muss ich nämlich noch ein bischen nachdenken. Es gibt zwar sowas wie AreCharactersColliding (oder so ähnlich) aber das müsste man für deinen Zweck noch etwas modifizieren, und das braucht ein bischen mehr scripting.
DisplaySpeech ("Hey, hau ab!");
Das passiert dann nur, wenn der player cha auf die region tritt.
Sollte sich der cpu cha aber im Raum bewegen, frag nochmal nach, darüber muss ich nämlich noch ein bischen nachdenken. Es gibt zwar sowas wie AreCharactersColliding (oder so ähnlich) aber das müsste man für deinen Zweck noch etwas modifizieren, und das braucht ein bischen mehr scripting.
http://www.sinitrena.de.vu Meine Spiele: "A very special dog", "A magic stone", "James Bond - Who wants to live again?", "Lonely Night", "Death of an Angel", "The Witch, the Wizard and the Blue Cup", "Emerald Eyes"
also ich habe da leider an den komplizierteren fall gedacht...also die idee mit den regionen ist mir bei stillstehenden charakteren auch gekommen aber bei sich bewegenden habe ich absolut keinen schimmer wies gehen könnte. und arecharacterscolliding ist das nicht nur für die grundlinie der charaktere gedacht also wenn die sich treffen dann...also ich werde meinerseits noch ein bisschen darüber nachgrübeln. wenn dir etwas einfällt bzw wenn es dir nichts ausmacht kannste ja ne mögliche lösung schreiben. vielen dank für deine mühe.