Denkfehler bei Kampfskript ?!

Das Board für Schwierigkeiten beim Adventure-Machen und zum Melden von Bugs
Post Reply
Icebaer3
An Adventure Creator
Posts: 408
Joined: 19 Dec 2012, 20:15
Location: Koblenz

Denkfehler bei Kampfskript ?!

Post: # 81384Post Icebaer3
01 Aug 2014, 10:59

Moin Community,

ich beschreib mal mein Problem:

In einem Kampfskript sind die HP (Hitpoints) vergeben, sagen wir 10.
Nun kämpfe ich und verliere 4 Punkte, bleiben 6 übrig.
Ein Tageswechsel bringt dann den refresh auf 10 Punkte.
Soweit klar.

Nun erhöhe ich die HP mit einer Schutzweste auf 15.
Der gleiche Kampf führt nun minus 4 zu 11. Auch klar.

Nun das Problem:
Wenn ich jetzt mit 11 einen neuen Kampf starte, wäre das so ok.
Gehe ich aber in die Einstellung und klicke wieder auf die Schutzweste, würde meine HP wieder auf 15 gehen, obwohl ja erst der Tageswechsel einen Refresh bringen würde. Also ein selbstgebauter Cheat. Wie könnte ich das umgehen - denken fällt mir grad schwer!? Wenn noch Angaben gebraucht werden, sagt was.

japanhonk
PaC-DK God
Posts: 1716
Joined: 05 Feb 2009, 20:36
Location: NRW
Contact:

Re: Denkfehler bei Kampfskript ?!

Post: # 81386Post japanhonk
01 Aug 2014, 18:43

Hi,

so, wie ich das sehe, setzt also ein Klick auf die Weste sofort die HP auf den maximal möglichen Wert
zurück, unabhängig von der Tageszeit...

Folglich hast Du keine Abfrage der Tageszeit, die das verhindert.

Wie wäre es mit einer externen Funktion, die in Abhängigkeit des Timers den Wert zurücksetzt ?

Da es dann extern wäre, würde die entsprechende HP Variable beim Anklicken nicht zurückgesetzt werden können.

Wenn Du die Weste das erste Mal nutzt, müsste nur noch eine Abfrage rein die prüft, ob der Wert
HP <11 ist , also den Wert unter der Schwelle 15 hat.
Ein Bool wäre auch eine Möglichkeit.

Gruss

Manni
Es gibt 10 Arten von Usern :
die, die Binärcode verstehen und die, die es nicht tun....
----------------------------------------------------------
STAR TREK FYNE :
http://www.fynegames.homepage.t-online.de

Icebaer3
An Adventure Creator
Posts: 408
Joined: 19 Dec 2012, 20:15
Location: Koblenz

Re: Denkfehler bei Kampfskript ?!

Post: # 81387Post Icebaer3
02 Aug 2014, 14:56

:mmh: Timer? Extern? - bin ich noch nicht so fit mit, aber ich werd mal schauen was ich mit nem Bool hinbekomme.

japanhonk
PaC-DK God
Posts: 1716
Joined: 05 Feb 2009, 20:36
Location: NRW
Contact:

Re: Denkfehler bei Kampfskript ?!

Post: # 81388Post japanhonk
02 Aug 2014, 18:06

Ist gar nicht schwer.

Definiere am Anfang Variablen für Sekunde, Minute und Stunde
Definiere einen Bool , der das Vorhandensein der Weste angibt

Im Mainskript setzt Du jetzt immer die Sekunden soweit hoch, wie Du es willst ( die Spielzeit muss nicht die Echtzeit sein, eine Minute kann also auch weniger sein )

Wenn x Sekunden erreicht sind, setzt Du die Sekunden auf 0, die Minuten +1
Wenn x Minuten rum sind, das Selbe mit der Stunde

Wenn x Stunden rum sind, alles auf 0
Wenn Bool Weste = false, HP auf 10, sonst auf 15

Wenn Das eben nicht immer abgefragt werden soll, dann schreibst Du das in eine Funktion und rufst Diese dann auf mit "startfunction;<FUNKTIONSNAME>;infinity" - dann läuft das solange, bis Du es wieder stoppst. Damit ist das ne externe Funktion, weil sie unabhängig von Räumen oder dem Mainscript laufen kann.

Wenn Du mitten am Tag auf die Weste klickst, fragst Du den Wert der HP ab
Sind die Tagesstunden größer 0, kannst Du nicht weiter aufladen. ( Weil , wurde ja schon mit Tageswechsel gemacht )

Das kannst Du auch kombinieren mit der Abfrage der vorhandenen Weste :

Tagesstunden <1 UND Bool Weste=false = set HP 10 -> um Mitternacht, HP auffüllen
Tagesstunden <1 UND Bool Weste=true = set HP 15

Das kannst Du z.B. auch ins Itemscript schreiben oder vom Item heraus eine Funktion aufrufen, die die Abfrage startet. Wie Du es brauchst.

Soll aus irgendeinem Grund dann doch zwischendurch aufgeladen werden können, fragst Du nach dem Bool der Weste und setzt dann auf den entsprechenden MAximalwert.


Klingt komisch, geht aber so.... :wink:
Es gibt 10 Arten von Usern :
die, die Binärcode verstehen und die, die es nicht tun....
----------------------------------------------------------
STAR TREK FYNE :
http://www.fynegames.homepage.t-online.de

Icebaer3
An Adventure Creator
Posts: 408
Joined: 19 Dec 2012, 20:15
Location: Koblenz

Re: Denkfehler bei Kampfskript ?!

Post: # 81389Post Icebaer3
02 Aug 2014, 21:21

Kapiert hab ichs, denke ich...
Mir fehlt nur die Praxiserfahrung in der Umsetzung und da hengt man halt Stunden dran bis es funzt.

Danke, ich werd es mal versuchen umzusetzen, nun aber erst mal den Inhalt ausbauen um da voran zu kommen.

Ach btw - geht eigentlich auch <= (kleiner gleich) ???
Ich hab das so gelöst das ich zwei Abfragen gemacht habe, eine mit "kleiner als" und direkt noch eine mit "gleich". Funktioniert, war nur sehr unpraktisch.

japanhonk
PaC-DK God
Posts: 1716
Joined: 05 Feb 2009, 20:36
Location: NRW
Contact:

Re: Denkfehler bei Kampfskript ?!

Post: # 81390Post japanhonk
02 Aug 2014, 22:35

Eine Abfrage auf kleiner/gleich erübrigt sich mit der Zahl , die abgefragt wird.

Eine Abfrage auf "gleich" ergibt sich aus der Tatsache, dass der Abzufragende Maximalwert +1
abgefragt wird.

Wenn Du einen Wert auf 20 oder kleiner prüfen willst ( kleiner/gleich 20 ),
dann fragst Du : If num (...;<21) ...

Wenn Du einen Wert auf 1 oder größer prüfen willst (größer/gleich 1),
dann fragst Du : If num (...;>0) ...

Willst Du einen Bereich zwischen 1 und 20 prpfen, kombinierst Du das :

If _num (...;>0)
if_num (...;<21)
...

Wenn der Wert zwischen 1 und 20 liegt...dann....

und schon hast Du, was Du brauchst.

Ach ja ...

Wenn der Tageswechsel noch nicht gewesen ist und Du trotzem beim Anklicken der Weste
die HPs wieder auffüllst - dann frag doch im on(mouse) Teil ab, ob der Tageswechsel schon war,
oder nicht. Wenn nicht, schreibst Du rein : on (mouse) und break()

Dann würde sich die Weste nicht anklicken lassen. ( Oder im on (click) Ereignis...)

Gruss

Manni
Es gibt 10 Arten von Usern :
die, die Binärcode verstehen und die, die es nicht tun....
----------------------------------------------------------
STAR TREK FYNE :
http://www.fynegames.homepage.t-online.de

Icebaer3
An Adventure Creator
Posts: 408
Joined: 19 Dec 2012, 20:15
Location: Koblenz

Re: Denkfehler bei Kampfskript ?!

Post: # 81391Post Icebaer3
03 Aug 2014, 14:07

Ok ich geh dann doch mal mehr in die Tiefe:

Zum ersten Punkt, hier ist die Ausgangslage, dass es um ein Shop System geht. Also ich klicke auf ein Plus bei Nahrung und es erhöht sich die Lebensmittel Variable. Gleichzeitig auch die Gesamtpreis Variable um den Kaufpreis. Ich kann dann über den Minusbutton wieder abziehen, aber das ist hier nicht wichtig. Da ich ja mehrere Artikel habe, die ich im Gesamtpreis drin habe, kommen hier verschiedene Werte zusammen. Soweit klappt das auch einwandfrei. Ich habe nur gemerkt, wenn ich auf den Button "Bezahlen" klicke, dann geht das auch mit deiner angegebenen Lösung, anders konnte ich das ja gar nicht.
Jetzt der Clou: angenommen alle Artikel kosten zusammen 500 €, dann passiert es aber, wenn ich genau 500 € Bargeld habe, dass er mir sagt, ich habe nicht genug. Daher musste ich zu der von dir angegebenen Formel noch hinzunehmen if_num (Geld; [Gesamtpreis]), dann klappt es auch. Davor frage ich ab if_num (Geld; >[Gesamtpreis]). Habe keine bessere Lösung hinbekommen, klappt aber. Verbesserungen sind aber gerne gesehen.

Zum zweiten Punkt:
Also die Weste ist in einem Auswahlmenu (Textscene) beinhaltet und ich kann dann wie bei so ner Puppe auswählen ob Nix, die Weste oder nen Pulli, oder sowas. Ich mach mal nen Screenshot...
Image

Eigentlich wollte ich das eh anders machen:
Ich wollte die Hitpoints haben, also die Lebensenergie, aber mit den Klamotten sollte dann die "Rüstung" in einem Wert dagestellt sein.
Ich hab es aber nicht hinbekommen das er erst die Rüstung abzieht und dann die HP.

Ach ich mach ein Beispiel:
HP 10; Rüstung 10
Angriff 15 Punkte
Also zieh erst mal 10 bei der Rüstung ab und dann noch 5 bei HP.
War mir zu kompliziert geworden, trotz der guten Ideen hier im Forum in älteren Beiträgen.

Post Reply