Ergebnis 1 bis 20 von 20

Thema: Taschenlampe mit Batterie Lebenszyklus

  1. #1

    Taschenlampe mit Batterie Lebenszyklus

    Hallo ihr lieben,

    ich will ein Skript bauen indem jemand eine Taschenlampe erhält mit einer Lebensdauer von 3 Balken.
    Diese kann er über Batterien auffüllen.

    Ich habe es soweit schon geschafft das man übers Inventar die Taschenlampe an und aus machen kann.
    (Falls hier eine Hotkey Abfage geht wäre es natürlich noch geiler)

    Aber ich weiß nicht wie ich es mache, dass ich nach einer gewissen Zeit die Lebensdauer runterzähle.
    Will eigentlich nichts mit waits oder so machen, evlt. geht das ja auch anders.

    Danke schon mal.

  2. #2
    Leg eine Variable an und reduziere diese kontinuierlich.
    Ein Beispiel:

    Deine Taschenlampe hat drei Balken. Setzen wir die Variable mal auf 300.
    Bau ein Event mit einem Parallel Process, welcher die Variable um 1 reduziert, wenn der Wert größer als 0 ist. Und, ja, jetzt musst du einen Wait setzen. Als Beispiel 0.1.
    Naja, und bei Null geht natürlich das Licht aus. Weitere Spielereien baust du nach dem selben Prinzip ein.

    Ich denke, den Rest kriegst du selber raus. Wenn nicht, solltest du es auf kurz oder lang dringend lernen.ut mir Leid, wenn ich nicht genauer sein kann bzw. die Begriffe nicht passen. Mein letztes Makern ist schon etwas länger her.
    Gibt natürlich auch andere Möglichkeiten.

  3. #3
    das mit der variable hatte ich vor, danke für die bestätigung.

  4. #4
    Was spricht denn gegen Waits? Das ist ja DIE Methode, um Zeit zu messen. Auf den neuen Makern kann man alternativ die seit Spielbeginn verstrichene Zeit heranziehen.

  5. #5
    Ich hätte jetzt aktuell zwei Common Events.
    Eins für die Taschenlampe ansich und eins für die Lebensdauer der Batterie.

    Heißt ich baue eine Abfrage ein in die Lebensdauer.
    Ist die Lebensdauer Variable 0 wenn ja = mache Taschenlampe aus.
    Wenn nein, reduziere nach x wait sekunden die variable um 1.


    Oder bin ich aufm falschen dampfer.

  6. #6
    Genau, ist schon richtig so. Den Wait würde ich allerdings möglichst auf 0,1 stellen, da dies die kleinstmögliche (sinnvolle) Zeitspanne ist. So lässt sich der Batterieverbrauch genauer messen.

  7. #7
    Ich liste mal die gesamte Story inkl. Code auf.
    Also ich gehe zu einem Mann der mir eine Taschenlampe gibt.

    Hier der Code:
    Klicke auf die Grafik für eine größere Ansicht 

Name:	Screenshot at Juni 08 11-12-48.png 
Hits:	12 
Größe:	71,0 KB 
ID:	23404

    Item Code:
    Klicke auf die Grafik für eine größere Ansicht 

Name:	Screenshot at Juni 08 11-13-33.png 
Hits:	8 
Größe:	205,9 KB 
ID:	23405

    Danach passiert ein Common Event:
    Klicke auf die Grafik für eine größere Ansicht 

Name:	Screenshot at Juni 08 11-13-46.png 
Hits:	8 
Größe:	168,6 KB 
ID:	23406

    Das funktioniert auch, sprich ich kann übers ITEM Menü die Taschenlampe an und aus machen.
    Im Common Event sieht man das ich den Schalter für die Lebenszeit an schalte.
    Dieses ist per Schalter gesteuert und auf PP gestellt.

    Der Inhalt ist mir klar aber die Umsetzung funktioniert nicht.

    Geändert von Underserial (08.06.2016 um 11:20 Uhr)

  8. #8
    Die Zeit ist noch nicht implementiert, oder?
    Deinem Post entnehme ich zudem, dass es dir gerade darum geht, dass du lieber eine Tastenabfrage einbauen willst, statt es über das Item-Menü zu regeln.
    Es gibt einen Eventbefehl, der die gedrückte Taste in einer Variable speichern kann. Jeder verfügbaren Taste ist hierbei eine bestimmte Zahl zugeordnet, damit du diese auseinander halten kannst. Diese Fragst du dann einfach ab, ebenfalls in einem Common Event. Die Tastenabfrage kann unter Umständen etwas knifflig sein, wenn ich das richtig im Gedächtnis habe. Zudem bedaure ich, dir nicht sagen zu können, wie der Befehl bei dir heisst bzw. wo sich dieser befindet.
    In jedem Fall bitte ich dich aber zum Wohle aller Spieler, bei den Haupttasten zu bleiben (die standardmäßig auf einem Jopad zur Verfügung stehen). Das sind die Richtungstasten sowie Enter, Escape und Shift (oder etwaige equivalente Alternativen). Im Zweifelsfall sind die Zahlentasten noch okay. Aber bleib bloß weg vom Numpad.

  9. #9
    das mit der tastenabfrage werde ich via plugin lösen, denke ich.
    Mit den Tastenabfragen über den standard maker kenn ich ist etwas knifflig wie du sagst.

    Wie binde ich nun die Zeitschiene ein? Das wäre mir eine Hilfe denn den Code den ich bisher habe der geht leider nicht.

  10. #10
    Hattest du es unter dem Eventpunkt "lebenszeit" eingebunden? Ich nenne es dann einfach mal so für dieses Beispiel.
    Das Common Event stellst du als Parallen Prozess ein (also so, dass das Event immer läuft; kann bei dir anders heissen). Dort baust du die Zeitschleife ein. Den Dreh hast du denke ich raus. Um die Tachenlampe abzuschalten. musst du das Common Event "Taschenlampe" auslösen. Genauso wie du es mit dem Item bisher gemacht hast. Da gibt es auch einen Befehl für. Hiess bei mir immer "Call Event" oder sowas in der Richtung.

  11. #11
    ich habe es denk geschafft. Selbst mit den batterien läuft es super.
    Einzig und allein nervt mich das der RPG Maker MV Frames waits hat.

    Ich habe 120 Frames eingestellt was laut deren umrechnung (60/1 sek) dann ja 2 sekunden sein müssten.
    Warten tut er aber 6 sekunden. Ich will ja nicht das bereits nach 6 sekunden das licht aus geht.

    Hier kann ich aber nicht mehr als 999 einstellen.
    Meine Umrechnung ist ja 120 Frames sind 6 sekunden also sind 1200 frames 60 sek.

  12. #12
    Dann nimm doch einfach 2 Waits hintereinander mit jeweils 600 frames, dann hast du die 1.200 zusammen

    Wobei ich die Nutzung der Spielzeit besser fände. (gibt es nicht auch eine Timer-Funktion, wo Zeit abläuft?)
    Taschenlampe wird aktiviert. Spielzeit wird gespeichert (oder der Timer wird gestartet). Die Differenz der gespericherten und der aktuellen Spielzeit wird permanent (einmal pro Sekunde) verglichen und die Taschenlampe geht aus, wenn die entsprechende Zeit erreicht wird. Und wenn die Taschenlampe wieder ausgeschaltet wird, dann wird die Differenz gespeichert und als momentaner Akkustand genommen.

    Bei Waits finde ich es immer etwas problematisch, weil die bei älteren Systemen durchaus andere Werte haben können als auf schnellen Rechnern. Also kann man in einem Fall länger mit der Taschenlampe hantieren als auf einem anderen PC.

    Geändert von Eddy131 (08.06.2016 um 13:41 Uhr)

  13. #13
    Du solltest die Batterielebensdauer nicht durch die Waits bestimmen, sondern die höhe der Variable. Die Höhe der Variable wird wiederum durch die wiederholte(!) Anzahl(!) an Waits bestimmt. Warte daher nicht einmal(!) bestimmt lange(!). Warte immer wieder(!) in der kürzest möglichen Zeit (>0). Du setzt also einen einzigen Wait in der Schleife mit der Dauer eines Frames. Dann wiederholt sich das Event und verringert deine Variable erneut.

    Ist zudem gut zu wissen, dass du den MV verwendest. Bin de ganze Zeit von den älteren Versionen ausgegangen... xD

    Geändert von Nagasaki (08.06.2016 um 13:47 Uhr)

  14. #14
    Man muss dann nur aufpassen, ob Wait wirklich so viele Frames wartet, wie man ausgewählt hat. Auf dem XP wird das Wait z. B. intern verdoppelt, warum auch immer. Falls der MV das nicht macht, sollte ein Frame - also ein Wait 1 - eine 1/60 Sekunde dauern (afaik hat der MV 60 FPS).

  15. #15
    Beim MV gibt es einen Timer, warum nicht den nehmen? Hat sogar den Vorteil, dass man in der Ecke die verbleibende Zeit angezeigt bekommt und die langsam herunterläuft. Es gibt einen Befehl um den Timer zu stoppen und weiterlaufen zu lassen, den Wert des Timers kann man auch auslesen und in eine Variable speichern. Ich finde nur keinen Befehl, der dem Timer den Wert aus der Variablen übernehmen lässt. Aber dafür gibt es bestimmt auch ein Workaround.
    Ich hab den Timer gerade nochmal getestet, und der läuft etwas langsamer als reale Sekunden ab. Ich hab zwar nicht den schnellsten Rechner, aber er sollte mehr als ausreichend sein um den Timer richtig laufen zu lassen (3 Jahre altes Ultrabook mit i7 und HD4000). Oder ist das mit Absicht (warum auch immer) so gemacht?

  16. #16
    Zitat Zitat von Nagasaki Beitrag anzeigen
    Du solltest die Batterielebensdauer nicht durch die Waits bestimmen, sondern die höhe der Variable. Die Höhe der Variable wird wiederum durch die wiederholte(!) Anzahl(!) an Waits bestimmt. Warte daher nicht einmal(!) bestimmt lange(!). Warte immer wieder(!) in der kürzest möglichen Zeit (>0). Du setzt also einen einzigen Wait in der Schleife mit der Dauer eines Frames. Dann wiederholt sich das Event und verringert deine Variable erneut.

    Ist zudem gut zu wissen, dass du den MV verwendest. Bin de ganze Zeit von den älteren Versionen ausgegangen... xD
    das hab ich leider nicht ganz verstanden. Kannst du das mit code erklären?

    Wenn du magst kann ich dir gerne das Beispielprojekt hochladen.


    @Eddy131:
    problem ist ich möchte gerne einen batteriestatus anzeigen keinen timer.
    Das mit dem Timer ist ne Lösung die ich als erstes hatte, aber diese war eben nur funktional.

  17. #17
    Zitat Zitat von Underserial Beitrag anzeigen
    @Eddy131:
    problem ist ich möchte gerne einen batteriestatus anzeigen keinen timer.
    Das mit dem Timer ist ne Lösung die ich als erstes hatte, aber diese war eben nur funktional.
    Gibt es keine Möglichkeit den Timer zu nutzen ohne dass er auch direkt angezeigt wird? Dann könntest du die Zeit einfach davon nutzen und dennoch die Balken anzeigen lassen.
    Aber ich denke, wenn man die Spielzeit quasi als Timer nutzt ist es einfacher. Sie wird nicht angezeigt und kann einfach in Variablen genutzt werden.

  18. #18
    Zitat Zitat von Eddy131 Beitrag anzeigen
    Gibt es keine Möglichkeit den Timer zu nutzen ohne dass er auch direkt angezeigt wird? Dann könntest du die Zeit einfach davon nutzen und dennoch die Balken anzeigen lassen.
    Aber ich denke, wenn man die Spielzeit quasi als Timer nutzt ist es einfacher. Sie wird nicht angezeigt und kann einfach in Variablen genutzt werden.
    nein leider nicht - lediglich timer start oder timer stop.
    Man könnte es per skript (extern) lösen. Ich würde eben gerne einen interne lösung nutzen.

    Geändert von Underserial (08.06.2016 um 15:02 Uhr)

  19. #19
    Ich habe den MV nicht. Könnte dir das höchstens anhand eines 2000er Beispiel zeigen. Wäre anderweitig auch nicht in der Lage mit irgendwelchen Begriffen um mich zu werfen.

    Ich weiss jetzt auch garnicht, wie genau sich so ein Timer überhaupt stoppen und starten lässt, klingt in der Theorie aber erstmal äußerst elegant.

  20. #20
    Für die die es interessiert hier alles was ich gemacht habe.
    Es funktioniert einwandfrei.

    Klicke auf die Grafik für eine größere Ansicht 

Name:	1-Taschenlampe.png 
Hits:	1 
Größe:	23,4 KB 
ID:	23408
    Klicke auf die Grafik für eine größere Ansicht 

Name:	2-Taschenlampe.png 
Hits:	5 
Größe:	189,1 KB 
ID:	23409
    Klicke auf die Grafik für eine größere Ansicht 

Name:	3-Taschenlampe.png 
Hits:	4 
Größe:	308,4 KB 
ID:	23410
    Klicke auf die Grafik für eine größere Ansicht 

Name:	4-Taschenlampe.png 
Hits:	3 
Größe:	230,4 KB 
ID:	23411
    Klicke auf die Grafik für eine größere Ansicht 

Name:	5-Taschenlampe.png 
Hits:	3 
Größe:	280,7 KB 
ID:	23412


    Geändert von Underserial (09.06.2016 um 11:56 Uhr)

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • Anhänge hochladen: Nein
  • Beiträge bearbeiten: Nein
  •