PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Flüssigkeitsverlust...



Multi-Master1988
15.08.2010, 17:46
Ich habe die idee in einer wüste eine zusätzliche Schwierigkeit einzubauen und zwar möchte ich das der held an Flüssigkeitsmangel sterben kann änlich wie in Desert Island....;)

Habe allerding kein Passends Tut bzw. Idee dazu gefunden...:eek:

Wer kann witerhelfen..???:confused:

Lg
Multi-Master1988

R.F.
15.08.2010, 18:07
Brauchst einfach nur einen Timer laufen zu lassen und jedes Mal, wenn der auf 0 sinkt erhöht sich eine Variable. Der Timer beginnt dann wieder von vorne und sobald die Variable einen bestimmten Wert erreicht ist er dann halt verdurstet. An Oasen kann man die Variable dann wieder auf 0 setzen. Kannst natürlich auf versuchen, das wie in Golden Sun zu machen, dass also die Hitze den Charakteren beim Laufen zu schaffen macht. Letzteres ist aber ein wenig aufwändiger.

Supermike
15.08.2010, 19:38
Wenn du dir nicht mal ansatzweise vorstellen kannst wie du es umsetzen willst (und auch keine tuts existieren, was ich anneheme, da ich keins gefunden hab), dann ist es ratsamer erstmal die Finger von zu lassen. Oder du beginnst zu experimentieren.

Ideen, die man nicht umsetzen kann, weil sie die eigenen Fähigkeiten übersteigen, ist der häufigste Grund für gecancelte Spiele. Darum predige ich auch gern das man mehr nachdenken soll.
Also hopp hopp! Denken und experimentieren oder lieber noch warten! :A

Spark Amandil
16.08.2010, 00:49
Den wohl einfachsten Lösungsansatz nennt R.F. bereits als Grundbedingung für einen Ansatz, der das Ganze im Grunde nur unnötig kompliziert gestaltet.

Setze einen Timer mit einem Countdown der die Zeit bis zum Verdursten darstellt. Dann starte den Timer per Common Event. Wird Wasser getrunken, wird der Timer wieder zurück gesetzt und erneut gestartet.
Läuft der Timer vorher ab, verdurstet die Gruppe.

Das wäre die mit Abstand einfachste Umsetzung. Zu beachten ist dass der Timer per Event pausiert werden sollte, wenn ein längeres Gespräch oder eine Zwischensequenz an steht. Ansonsten zählt die Zeit weiter herab.

Dhan
16.08.2010, 11:17
Warum wollt ihr dafür überhaupt den Timer einsetzen? Simple Waits und dazwischen Vari runterzählen in einem CE tuts doch auch.

~Jack~
16.08.2010, 17:31
Bei einem Timer muss er sich aber nicht extra noch mit Grafiken rumplagen um dem Spieler zu verdeutlichen wie lange er noch aushält, auch wenn es natürlich nicht ganz so schön aussieht.

Multi-Master1988
16.08.2010, 18:22
@ Dhan

Stimmt genau ich möchte keinen Timer einnbauen
sonder die so änlich gestalten wie ein Geldzähler allerdings
dass die Anzeige dann mit Bildern stattfindet.;)

Ausserdem finde ich das ein
Timer nicht wirklich toll aussieht..:rolleyes:

Akanas
17.08.2010, 15:18
Ay hier mal mein Vorschlag zur Lösung:

Du brauchst eine Variable für den Wasserhaushalt.

1. Setz sie beim Beginn auf 100.
2. Event nr. 1: Paralell Process
- Fork Conditions if $0001Wasserhaushalt is above 100;
set Variable $0001Wasserhaushalt 100
/// Ist wichtig für die späteren Events zur Auffrischung des Haushaltes
durch trinken, damit sich niemand auf den Wert 50000 oder so
hochtrinkt durch massives ausnutzen der Events
- Variable $0001Wasserhaushalt - 1
- Fork Conditions if $0001Wasserhaushalt is below 0;
/// Sterbe Event
- wait 0,5 sek
/// Es würde jetzt 200 Sekunden dauern bis der Held stirbt. Setz einfach
Die Variable höher oder tiefer oder den wait länger
3. Events zur Auffrischung: Einfach an alle Wasserflächen push to key events setzen die die Variable "$0001Wasserhaushalt + 20" setzen

So, nun hast du im Grunde alles was du brauchst zum Überleben, damit es fairer für den Spieler ist, kannst du ein paar Forkkonditions setzen wo z. B. ab $0001Wasserhaushalt 80 / 60 / 40 / 20 etc. eine Nachricht kommt wie "Langsam muss ich was zu trinken finden etc. pp. oder du bastelst dir noch eine Anzeige. Die wie folgt aussehen könnte

4. Event Nr. 2: Fork Conditions if $0001Wasserhaushalt is same 100;
Show picture Durstanzeige 100;
Fork Conditions if $0001Wasserhaushalt is same 99;
Show picture Durstanzeige 99;
etc. pp.

Multi-Master1988
17.08.2010, 15:40
Deine Idee hört sich auf jedenfall pletzsparend an was Vaiabel angeht...;)


So, nun hast du im Grunde alles was du brauchst zum Überleben, damit es fairer für den Spieler ist, kannst du ein paar Forkkonditions setzen wo z. B. ab $0001Wasserhaushalt 80 / 60 / 40 / 20 etc. eine Nachricht kommt wie "Langsam muss ich was zu trinken finden etc. pp. oder du bastelst dir noch eine Anzeige. Die wie folgt aussehen könnte

Die Idee mit den Massage wäre selbst mir beim Spielen zu Blöd! :o
(Verzeih wenn das jetzt Beledigend gewirkt hat..)


4. Event Nr. 2: Fork Conditions if $0001Wasserhaushalt is same 100;
Show picture Durstanzeige 100;
Fork Conditions if $0001Wasserhaushalt is same 99;
Show picture Durstanzeige 99;
etc. pp.

Ziemlich auwändig es so darzusetellen...
zumal dann müsste ich ja jede Zahl von 0-100 editieren
ich würde dann Lieber den Wasserhaushalt nehmen
und ihn dann in Einer,Zehner,Hunderter splitten...:)

~Jack~
17.08.2010, 15:44
Die Idee mit den Massage wäre selbst mir beim Spielen zu Blöd! :o
Das musst du ja nicht mit show message machen sondern kann einfach per picture als Warnung angezeigt werden. Oder es flasht der Screen und wird z.B. mit einem Herzschlag untermauert.


Ziemlich auwändig es so darzusetellen...
zumal dann müsste ich ja jede Zahl von 0-100 editieren
ich würde dann Lieber den Wasserhaushalt nehmen
und ihn dann in Einer,Zehner,Hunderter splitten...:)
So eine Wasseranzeige lässt sich viel einfacher machen.
Du nimmst einen Rahmen für die Wasseranzeige, da drunter ein Bild für den Wasserpegel und bewegst es abhängig von der Variable. Also wenn sie sinkt verschwindet auch das Bild des Wasserpegels nach unten aus dem Bild heraus.

Multi-Master1988
17.08.2010, 15:54
So eine Wasseranzeige lässt sich viel einfacher machen.
Du nimmst einen Rahmen für die Wasseranzeige, da drunter ein Bild für den Wasserpegel und bewegst es abhängig von der Variable. Also wenn sie sinkt verschwindet auch das Bild des Wasserpegels nach unten aus dem Bild heraus.
Das musst du ja nicht mit show message machen sondern kann einfach per picture als Warnung angezeigt werden. Oder es flasht der Screen und wird z.B. mit einem Herzschlag untermauert.Gut bei den "Versionen" müsste man gucken was am
besten zum Gesamtbild passt...;)

Edit:
Habe hier mal ein Versuch von dem was ich
bisher so alles gemacht hab

http://www.npshare.de/files/fac95b66/Wasser.rar

Der Wasserpegel läuft allerdings noch ein wenig zu schnell
und aktualiesiert sich nur alle 10er Schritte.
Wasser gibt es bei dem Wasserloch immer + 5

Dhan
18.08.2010, 01:20
4. Event Nr. 2: Fork Conditions if $0001Wasserhaushalt is same 100;
Show picture Durstanzeige 100;
Fork Conditions if $0001Wasserhaushalt is same 99;
Show picture Durstanzeige 99;
etc. pp.

Nix für ungut, aber wenn du Neuling im Skripten bist dann geb keine Ratschläge.
Informatik dreht sich in erster Linie darum, Redundanzen zu vermeiden.



@Multi-Master: Dein Skript funzt bis auf einen kleinen Punkt, du lässt das "Wasser"-Event jedesmal das Bild neu anzeigen und verschiebst es dann - lass es nur einmal anzeigen (indem du den Befehl z.B. in "Geldzähler" wie du es genannt hast einbaust) und es passt. Wobei es dann stört, dass es sich nur in 10er-Schritten ändert, aber das kann man ja noch ändern. Guter Zeitpunkt, um es statt an feste Koordinaten zu verschieben an variable Koordinaten zu verschieben - probier mal "Move Picture .- By Variable" aus, dann sparst du dir gehörig Forks ;)

Akanas
18.08.2010, 13:42
Nix für ungut, aber wenn du Neuling im Skripten bist dann geb keine Ratschläge.
Informatik dreht sich in erster Linie darum, Redundanzen zu vermeiden.


Dann erklär doch rasch wie man es anders lösen könnte, würde mich wirklich mal interessieren

Multi-Master1988
18.08.2010, 17:35
@ Dhan

Okay es sollte sich eigentlich auch Bewegen und nicht jedesmal
neu anzeige xD >:( (Dummer Gedangenfehler meinerseits)

Habe auch nicht vor dies in 10er schritten weiterhin einzuseten.
Denn der Spieler soll ja möglichst genaue Angaben Bekommen...;)

Lg
Multi-Master1988

makenshi
18.08.2010, 19:07
Dann erklär doch rasch wie man es anders lösen könnte, würde mich wirklich mal interessieren

Ich bin nicht Dhan, erklären kann ich es dir aber trotzdem.
Eine häufig verwendete Lösung wäre das du den Modulo Operator nutzt um die Zahl auf ihre Stellen zu zerlegen.
Bei der Zahl 1234 z.B.:

1000er Stelle:
1234 / 1000 = 1

100er Stelle:
1234 / 100 = 12
12 MOD 10 = 2

10er Stelle:
1234 MOD 100 = 34
34 / 10 = 3

1er Stelle:
1234 MOD 10 = 4

Schon hast du eine wesentlich simplere Abfragemenge. Bei deiner Lösung bräuchte man 9999 Forks um alle Möglichkeiten abzudecken. Hier lediglich 40, heisst 10 pro Stelle.

Mit dem Pointer Picture Patch, könnte man die benötigt Zahl sogar auf quasi 0 reduzieren, da man hier sogar direkt die Dateinamen konstruieren kann, was es nochmal einfacher macht. Aber das wäre nochmal eine andere Sache.

Ein weiterer Fehler deines Skriptes wäre das es die Anzeige per parallelen Prozess ständig aktualisiert. Das kostet unnötig Rechenzeit, da du ja genau weisst wann die Werte sich verändert. Wenn man das Update für die Anzeige per "Call" aufruft, spart man sich einiges an Rechenleistung.

Dhan
18.08.2010, 20:26
Um es der Vollständigkeit halber noch zu erwähnen: der Modulo-Operator gibt den Rest einer ganzzahligen Division zurück: 34 MOD 3 = 1 da 34 durch 3 = 11 Rest 1 (sehr sehr nützliche Sache, um Zahlen in ein anderes Zahlensystem umzurechnen)

Multi-Master1988
19.08.2010, 19:27
@ makenshi

Also simbles Teilen durch die gegebene Zahl...;)

@ Dhan

Habe es mir notiert...:D
Danke hab mich schonmal gefragt für
was der Modulo-Operator genau ist aber
ich habs begriffen er teilt eine Zahl und gibt
den Rest wieder.

Und diesen rest kann ich weiterhin in die Abfrage
stellen...;)

makenshi
19.08.2010, 21:04
@ makenshi

Also simbles Teilen durch die gegebene Zahl...;)

Nein.
Ohne den Modularoperator den Dhan nochmal genauer erklärt, bringt dir das teilen auch nichts.

Multi-Master1988
19.08.2010, 21:18
Nein.
Ohne den Modularoperator den Dhan nochmal genauer erklärt, bringt dir das teilen auch nichts.

Dann kann ich den Modularoperator apparat also nur nutzen
um Zahlen von einer Variabel genau festzulegen.

makenshi
19.08.2010, 23:27
Dann kann ich den Modularoperator apparat also nur nutzen
um Zahlen von einer Variabel genau festzulegen.

Nein.
Du kannst ihn dafür nutzen um den ganzzahligen Rest einer Divison zu ermitteln. So wie du halt den Plus Operator nutzt um zwei Zahlen zu summieren.

Dhan
20.08.2010, 09:55
@Multi-Master: Ich weiß auch grad nicht, was du mit deinem Post meinst - das is ein Operator, der hat erstmal mathematisch gesehen nix mit Variablen zu tun... wiederhol noch mal, was du sagen wolltest, ich glaub, da kam irgendwas nicht rüber (das is die Krux von Kommunikation in Foren ^^)

Multi-Master1988
20.08.2010, 10:09
@ Dhan

Nun ich habe es so verstanden das einzelnen
Ziffern in einer einzelnen Variabel genau abgefragt werden
können....;)

Bsp:

1234

Ich möchte nun die 3. Ziffer haben also teile ich das ganze mit der Mod funktion und nun habe ich die Ziffer für den zehnerblock.

Cherry
20.08.2010, 15:59
Ja, aber nicht nur: Mod gibt einfach nur den Rest einer Division zurück. Das Ergebnis, was du meinst, erzielst du, wenn du Mod mit 10, 100, 1000, etc. verwendest.

Ich kann aber genauso rechnen:

31 Mod 4 = 3
Weil 31 / 4 = 7,75 - also 7 und 3 Rest (weil 3/4 = 0,75)

...und das hat nichts mit Stellen einer Zahl zu tun (außer wir würden in einem Quartalsystem [heißt das so?] arbeiten).