Archiv verlassen und diese Seite im Standarddesign anzeigen : Spiel laggt übelst
djeurissen
14.11.2010, 18:31
Soo,
ich habe mir nen schönen Zähler erstellt welcher immer anzeigt wie oft man gestorben ist (man stibrt und muss ein bestimmtes Level von vorne anfangen)
Das ganze besteht aus ner Basis also nem Viereck wo ein Skelett an der Seite ist und 4 Kästchen eins ist mit dem Skellet besetzt.
Die nächsten Kästchen werden eben jenachdem wie oft man gestorben ist mit der bestimmten Zahl bestückt hier der Grobe Code:
Common Event:
Branch if var Todeszähler Einser is 0
show Picture 1 Todeszähler Nummer 0
Das ganze geht immer soweiter mit Zehnern und Hundertern im Parralel Process.
Das ganze geht auch gut so bis ich noch als Picture die 100 dazu nehme das sind das insgesamt 3 Pictures die über Parralel Process laufen....
Jetzt meine Frage liegt es daran das das Spiel so laggt oder habe ich was beim Code falsch gemacht?
Achja Zehner Hunderter usw. werden jeweils von nem anderen Common Event abgefragt.
Ich hoffe man kann mir hier helfen^^.
Multi-Master1988
14.11.2010, 18:43
Vielleicht hilft ein einfacher Wait Befehl da du dein Counter anscheind per Bild anzeigst.
Ansonsten kann ich dir raten mal den Code mitzuliefern.
Edit:
Falls dies trotzdem nichts gebracht hat verwende dieses Tool
http://www.multimediaxis.de/threads/112743-EasyEventExporter
Um uns einblick in deinen Code zu verschaffen!
Lg
Multi-Master1988
Verwende möglichst lange zusätzliche Wartezeiten und meide so oft es geht zu viele Parallel Processes. Packe, wenn möglich, alles in einen ganzen Code. Unter Umständen wäre es auch möglich, die parallelen Prozesse in einem Auto-Start ablaufen zu lassen.
Könntest du eigentlich die Bilderzahlen als Events/Charsets anzeigen lassen? Das schont zusätzlich die Nerven und ist komfortabler.
djeurissen
14.11.2010, 19:04
Ja mit den Wait Befehlen geht es ganz gut mit Events habe ich keine Ahnung wie ich das anstellen soll naja...
Es laggt immernoch aber nicht mehr so stark, ich habe mich jetzt dazu entschieden den Zähler ins Menü zu packen da es dann keine laggs geben dürfte aber danke für die Hilfe und auf die Sache mit den Waits hätte ich selbst kommen müssen-.-...
Für mich scheint der problem da zu liegen dass du diesem "show picture" in parallel process hast, was gar nicht nötig ist.
Du brauchst nur den event den die pictures anzeigt rufen wann immer du stirbst.
"show picture" soll am liebsten nur benutzt werden wenn das bild geändert wird, sonst nie.
djeurissen
15.11.2010, 15:56
Danke erstmal für die Hilfe ich habe auch den Zähler nun komplett fertig bis auf eine Sache die ich nicht verstehe...
Der Zähler geht von 1 bis 999 wobei es probleme mit den Zehnern gibt es kommt vor das wenn ich bei 39 bin nichts passiert sobald ich nach 40 gehe erst wenn ich zur 41 komme wird es angezeigt also Variable 39 Zahl 29 Variable 40 Zahl 39 Variable 41 Zahl 41
das ist aber anscheinend zufällig es kann auch vorkommen das es bei ner anderen Zahl kommt oder garnicht aber ich verstehe nicht wo der fehler ist:
Der ganze Code geht eben so wie ich oben beschrieben habe und ich habe nachgekukt bei jeder Zahl sind die Einstellungen gleich.
natürlich muss ich noch ein anderes Event erstellen welches dafür sorgt das es nach 9 wieder auf 0 kommt:
Branch if var Todeszähler Einer is 10
Switch Operations Todeszähler Zahlen On (Dieser Switch sorgt eben dafür das das Common Event zum anzeigen der Zahlen an geht)
Variable Oper Todeszahl Einer set 0
Variable Oper Todeszähler Zehner +1
Branch if var Todeszähler Zehner is 10
Switch Operations Todeszähler Zahlen On
Variable Oper Todeszahl Zehner set 0
Variable Oper Todeszähler Hunderter +1
Wait 0.0
So das wars und ich kann versichern das Common Event um die Zahlen anzuzeigen hat keinen Fehler....
Multi-Master1988
15.11.2010, 16:00
@ djeurissen
Hier wäre der Code recht hilfreich! Besonders weil man dann genau sieht was du mit den Varis machst.
Lg
Multi-Master1988
djeurissen
15.11.2010, 16:05
Ähäm ich war nicht fertig habe ausversehn k gedrückt da oben stehtsXD
Multi-Master1988
15.11.2010, 16:14
Scheint von der Lokig her richtig zu sein Könntest du trotzdem den besagten Codeteil mit dem EasyEventExporter (Suchfunktion oder obigen Link benutzen!) von Cherry
Posten?
Lg
Multi-Master1988
Ist es in einem Loop? ich habs so gemacht:
Loop
-Wait 0.0
-Branch if Var Zähler einer greater 9
--Var Zähler einer -10
--Var Zähler zehner +1
usw
..
Loop end
und das als common event das mit dem Befehl "Call Event" aufgerufen wird, wenn es benötigt wird
Der Zähler selbst wird bei mir über ein Event angezeigt weil es mit Show Picture trotz Wait gelaggt hat... (was aber dran liegen könnte das ich 2 gleichzeitig habe laufen lassen xD)
@djeurissen:
Verwende für so etwas bitte den EasyEventExporter (http://www.multimediaxis.de/showthread.php?t=112743). Spart Arbeit und zeigt außerdem Eventeinstellungen an, die normal nicht sichtbar sind (z.B. Picturetransparenzen, etc.)
1. das ganze Event kopieren (Rechtsklick->kopieren)
2. EasyEventExporter öffnen
3. Bei der Frage auf "Ja" klicken und die Datei "vbcode_lightbg.eft" im Ordner "ftemplates" auswählen (dadurch wird der Code im Forum gehighlighted
4. Das Ergebnis dann hier reinkopieren
mfG Cherry
djeurissen
15.11.2010, 18:23
Achso so funktioniert das Teil XD ich überleg die ganze Zeit was die Zwischenablage ist naja einmal das ganze um die Pictures anzuzeigen wobei ich anmerken soll ich keine Ahnung habe wie man das ''hier'' in Spoiler packt:
--- EVENT ---
Type: Common event
Name: Todesz. E-Z-H Anzeig
Number of Pages: 1
-- PAGE 1 --
Start conditions:
Switch [5] == ON
Trigger condition: Parallel process
- SCRIPT -
<> Wait: 0,0 sec.
<> Fork Condition: If Variable [1] == 0 then ...
. <> Show Picture: #2, Todeszähler Nummer 0, (300, 25), Mgn 100%, Tsp 0%/0%
. <>
: Else ...
. <>
: End of fork
<> Fork Condition: If Variable [1] == 1 then ...
. <> Show Picture: #2, Todeszähler Nummer 1, (300, 25), Mgn 100%, Tsp 0%/0%
. <>
: Else ...
. <>
: End of fork
<> Fork Condition: If Variable [1] == 2 then ...
. <> Show Picture: #2, todeszhlernummer2, (300, 25), Mgn 100%, Tsp 0%/0%
. <>
: Else ...
. <>
: End of fork
<> Fork Condition: If Variable [1] == 3 then ...
. <> Show Picture: #2, Todeszähler Nummer 3, (300, 25), Mgn 100%, Tsp 0%/0%
. <>
: Else ...
. <>
: End of fork
<> Fork Condition: If Variable [1] == 4 then ...
. <> Show Picture: #2, Todeszähler Nummer 4, (300, 25), Mgn 100%, Tsp 0%/0%
. <>
: Else ...
. <>
: End of fork
<> Fork Condition: If Variable [1] == 5 then ...
. <> Show Picture: #2, Todeszähler Nummer 5, (300, 25), Mgn 100%, Tsp 0%/0%
. <>
: Else ...
. <>
: End of fork
<> Fork Condition: If Variable [1] == 6 then ...
. <> Show Picture: #2, todeszhlernummer6, (300, 25), Mgn 100%, Tsp 0%/0%
. <>
: Else ...
. <>
: End of fork
<> Fork Condition: If Variable [1] == 7 then ...
. <> Show Picture: #2, Todeszähler Nummer 7, (300, 25), Mgn 100%, Tsp 0%/0%
. <>
: Else ...
. <>
: End of fork
<> Fork Condition: If Variable [1] == 8 then ...
. <> Show Picture: #2, Todeszähler Nummer 8, (300, 25), Mgn 100%, Tsp 0%/0%
. <>
: Else ...
. <>
: End of fork
<> Fork Condition: If Variable [1] == 9 then ...
. <> Show Picture: #2, Todeszähler Nummer 9, (300, 25), Mgn 100%, Tsp 0%/0%
. <>
: Else ...
. <>
: End of fork
<> Fork Condition: If Variable [2] == 0 then ...
. <> Show Picture: #3, Todeszähler Nummer 0, (272, 25), Mgn 100%, Tsp 0%/0%
. <>
: Else ...
. <>
: End of fork
<> Fork Condition: If Variable [2] == 1 then ...
. <> Show Picture: #3, Todeszähler Nummer 1, (272, 25), Mgn 100%, Tsp 0%/0%
. <>
: Else ...
. <>
: End of fork
<> Fork Condition: If Variable [2] == 2 then ...
. <> Show Picture: #3, todeszhlernummer2, (272, 25), Mgn 100%, Tsp 0%/0%
. <>
: Else ...
. <>
: End of fork
<> Fork Condition: If Variable [2] == 3 then ...
. <> Show Picture: #3, Todeszähler Nummer 3, (272, 25), Mgn 100%, Tsp 0%/0%
. <>
: Else ...
. <>
: End of fork
<> Fork Condition: If Variable [2] == 4 then ...
. <> Show Picture: #3, Todeszähler Nummer 4, (272, 25), Mgn 100%, Tsp 0%/0%
. <>
: Else ...
. <>
: End of fork
<> Fork Condition: If Variable [2] == 5 then ...
. <> Show Picture: #3, Todeszähler Nummer 5, (272, 25), Mgn 100%, Tsp 0%/0%
. <>
: Else ...
. <>
: End of fork
<> Fork Condition: If Variable [2] == 6 then ...
. <> Show Picture: #3, todeszhlernummer6, (272, 25), Mgn 100%, Tsp 0%/0%
. <>
: Else ...
. <>
: End of fork
<> Fork Condition: If Variable [2] == 7 then ...
. <> Show Picture: #3, Todeszähler Nummer 7, (272, 25), Mgn 100%, Tsp 0%/0%
. <>
: Else ...
. <>
: End of fork
<> Fork Condition: If Variable [2] == 8 then ...
. <> Show Picture: #3, Todeszähler Nummer 8, (272, 25), Mgn 100%, Tsp 0%/0%
. <>
: Else ...
. <>
: End of fork
<> Fork Condition: If Variable [2] == 9 then ...
. <> Show Picture: #3, Todeszähler Nummer 9, (272, 25), Mgn 100%, Tsp 0%/0%
. <>
: Else ...
. <>
: End of fork
<> Fork Condition: If Variable [3] == 0 then ...
. <> Show Picture: #4, Todeszähler Nummer 0, (244, 25), Mgn 100%, Tsp 0%/0%
. <>
: Else ...
. <>
: End of fork
<> Fork Condition: If Variable [3] == 1 then ...
. <> Show Picture: #4, Todeszähler Nummer 1, (244, 25), Mgn 100%, Tsp 0%/0%
. <>
: Else ...
. <>
: End of fork
<> Fork Condition: If Variable [3] == 2 then ...
. <> Show Picture: #4, todeszhlernummer2, (244, 25), Mgn 100%, Tsp 0%/0%
. <>
: Else ...
. <>
: End of fork
<> Fork Condition: If Variable [3] == 3 then ...
. <> Show Picture: #4, Todeszähler Nummer 3, (244, 25), Mgn 100%, Tsp 0%/0%
. <>
: Else ...
. <>
: End of fork
<> Fork Condition: If Variable [3] == 4 then ...
. <> Show Picture: #4, Todeszähler Nummer 4, (244, 25), Mgn 100%, Tsp 0%/0%
. <>
: Else ...
. <>
: End of fork
<> Fork Condition: If Variable [3] == 5 then ...
. <> Show Picture: #4, Todeszähler Nummer 5, (244, 25), Mgn 100%, Tsp 0%/0%
. <>
: Else ...
. <>
: End of fork
<> Fork Condition: If Variable [3] == 6 then ...
. <> Show Picture: #4, todeszhlernummer6, (244, 25), Mgn 100%, Tsp 0%/0%
. <>
: Else ...
. <>
: End of fork
<> Fork Condition: If Variable [3] == 7 then ...
. <> Show Picture: #4, Todeszähler Nummer 7, (244, 25), Mgn 100%, Tsp 0%/0%
. <>
: Else ...
. <>
: End of fork
<> Fork Condition: If Variable [3] == 8 then ...
. <> Show Picture: #4, Todeszähler Nummer 8, (244, 25), Mgn 100%, Tsp 0%/0%
. <>
: Else ...
. <>
: End of fork
<> Fork Condition: If Variable [3] == 9 then ...
. <> Show Picture: #4, Todeszähler Nummer 9, (244, 25), Mgn 100%, Tsp 0%/0%
. <>
: Else ...
. <>
: End of fork
<> Wait: 0,0 sec.
<> Wait Until Moved
<> Change Switch: [5] = OFF
<>
Dann eben das Event welches dafür sorgt damit es wieder von 10 auf 0 kommt:
--- EVENT ---
Type: Common event
Name: Todeszähler E-Z-H
Number of Pages: 1
-- PAGE 1 --
Start conditions:
<None>
Trigger condition: Parallel process
- SCRIPT -
<> Fork Condition: If Variable [1] == 10 then ...
. <> Change Switch: [5] = ON
. <> Change Variable: [1] = 0
. <> Change Variable: [2] += 1
. <>
: Else ...
. <>
: End of fork
<> Fork Condition: If Variable [2] == 10 then ...
. <> Change Switch: [5] = ON
. <> Change Variable: [2] = 0
. <> Change Variable: [3] += 1
. <>
: Else ...
. <>
: End of fork
<> Wait: 0,0 sec.
<>
Ja das wars warscheinlich habe ich es mir zu Umständlich gemacht aber hey solange es funktioniert^^
djeurissen
16.11.2010, 18:32
*push* ich habe das problem immer noch nicht gefunden...
Mittels ["SPOILER]["/SPOILER] kriegst du das in besagten Spoiler (einfach nur dazwischen packen und die " weglassen). Das CommonEvent kannst du auch als CallEvent setzen, sieht mMn besser aus und spart einen Switch. Außerdem wird es so nicht ständig erneut ausgeführt, sondern nur, wenn es wirklich nötig ist.
sondern nur, wenn es wirklich nötig ist.
Das und nur das ist das Problem. Es ist unglaublich performancelastig, Bilder immer und immer wieder neu anzeigen zu lassen. Solche Sachen macht man nur, wenn es sich um einzelne Bilder handelt, die mal angezeigt werden. Ansonsten bist du relativ gut daran beraten, so was über Move Picture anzuzeigen. Ich glaube, ich habe es schon öfter mal erwähnt, dass es am einfachsten ist, sich ein Bild zu erstellen, das, im Fall von Zahlen, eine Höhe von 2400 Pixeln hat. Und in jeden 240er Bereich setzt man eine Zahl, natürlich immer auf dieselbe Höhe. Anschließend musst du nur den Bildausschnitt des Pictures über ne Rechnung verschieben lassen, hält den Code extrem kurz und ist lange nicht so lästig beim Anzeigen. Den ganzen Forkkram kannst du dir damit übrigens auch sparen.
Machst du den Switch 5 noch irgendwoanders aus? Ich seh da auch erstmal keine Fehler - vom Grundgedanken her funzt des da (auch, wenn ich's anders machen würde :P).
Wenn du allerdings noch woanders, als im Common Event "Todeszähler E-Z-H" Einfluss auf den Switch 5 nimmst, hätte ich zumindest eine Idee:
Ein paralleler Prozess mit einem Switch als Bedingung bleibt beim Ausführen dort stehen, wo der Switch deaktiviert wird und wird bei Reaktievierung des Switches genau dort weitergeführt. Ich kann mir vorstellen, dass dein Anzeigeevent dann von der Mitte aus ausgeführt wird, er also beim Ausführen nicht mehr bei if == 0 vorbeikommt und dann eben nichts macht.
Interessant wäre auch das Variablenergebnis. Drück doch während eines Testspiels mal F9 und schau mal, ob wenigstens die Variablenwerte stimmen. Wenn die Variable 39 ist, aber es nicht richtig angezeigt wird, dann denke ich, liege ich mit meiner Vermutung nicht ganz falsch.
Sollte ich gerade nicht totalen Bockmist von mir gegeben haben, dann sollte das Problem verschwinden, sobald du R.F.s Vorschlag mit dem Call Event umgesetzt hast ^^
@cilence: Ja, cilence, das wäre dann die "Wir machens, wie ECHTE Programmierer Lösung" ^^ Musste unwillkürlich an meinen Scripting-Unterricht denken^^
djeurissen
16.11.2010, 20:03
Ähäm *hust* wärst du so nett mir das für dumme zu erklären ich blick nicht gnaz durch was du jetzt von mir willstXD
Das war jetzt nicht an Taji gerichtet^^.
Und nein ich benutze den Switch 5 nur für diese Sache sonst nichts...
@cilence: Soll ich oder willst du? ^^
Multi-Master1988
16.11.2010, 20:13
@ djeurissen
Laggt dein Spiel eigentlich immer noch? Wenn ja mir ist noch in den Sinn gekommen
das es an deinen Rechner liegen könnte wenn dieser etwas älter ist??
Vergleich es mal mit anderen Rechnern.
Trotzdem solltest du auch die anderen Post versuchen in dein Scripting umzusetzen!
Lg
Multi-Master1988
djeurissen
16.11.2010, 20:18
Nein es laggt nicht mehr da die nPictures nun über nen Switch laufen laggt es nicht mehr sie laufen ja nur wenn der Switch an ist^^.
ich versuche ja die anderen Post umzusetzen aber ich verstehe nicht was cilence von mir will^^
Was cilence von dir wollte war folgendes (Pass uff, dett wird etwas kompliziert, da ig dir hier och nur Vorschläje mache):
Stell dir vor, du hättest ein Bild, was 2400 Pixel hoch ist und so breit, wie die breiteste Zahl deiner Zahlen. Auf diesem Bild sind im Abstand von 240 Pixeln die Zahlen 0-9 (also die 0 steht ganz oben und hat 240 Pixel Abstand von der 1. Von der 1 hat die 2 wieder 240 Pixel Abstand und so weiter bis zur 9)
Der Plan ist jetzt, dieses Bild immer so zu verschieben, dass die gewünschte Zahl auf dem Bildschirm erscheint. (Die nicht gebrauchten Zahlen werden dann immer automatisch irgendwo außerhalb des Bildschirmes angezeigt) Das ist erstmal die Idee hinter der Geschichte.
Wir wollen die Anzahl der Tode zählen und das anzeigen lassen.
Dazu brauchen wir 3 Variablen:
Todeszahl: Ist am Anfang 0 und wird bei jedem Tod des Spielers um 1 erhöht
Anzeige X: X Position des Zahlenbildes
Anzeige Y: Y Position des Zahlenbildes
Anzeige X und Y müsstest du so wählen, dass die 0 auf dem Bildschirm an der richtigen Stelle positioniert wird.
Wenn sich jetzt Todeszahl erhöht, dann rechnest du einfach die
Y-Position des Bildes - Todeszahl*240
und lässt das anzeigen.
Das Bild wurde vorher auf meinetwegen Y=0 angezeigt, die Null ist auf dem Bildschirm zu sehen. Jetzt wird die Y-Position um 1*240 verringert (Todeszahl =1) also das Bild um genau 240 Pixel nach oben verschoben. Wenn Todeszahl 2 ist, dann wird es um 2*240 Pixel verschoben, bis die 2 angezeigt wird. 1 und 0 sind quasi nach oben aus dem Bild rausgeschoben worden.
Das alles brauch nur ein Event, was du bei jedem Sterben des Spielers rufen brauchst und funktioniert in vielleicht 3-6 Zeilen. Haste das Prinzip verstanden? Eventuell kann der Maker gar kein Bild in der Größe importieren, aber dafür gibt's doch bestimmt schon 'nen Patch. (Cherry?ôo)
djeurissen
16.11.2010, 21:21
Ich denke ich habe es soweit verstanden was ich aber nicht richtig verstehe ist das mit dem Bild.
Es soll so aussehen oder?
0
1
2
...
aber wenn ich jetzt die 0 ganz oben rechts anzeigen würde dann würden doch die zahlen 123 bla bla in meinem Bildschirm rumschweben oder habe ich da was falsch verstanden?
Wähä? Rumschweben? Hab zwar keine Ahnung, wie du das meinst, aber da schwebt nix. Das Bild musst du dir vorstellen ist ein GAAAANZ langer dünner Streifen. Wie du schon richtig verstanden hast, sind da die Zahlen von 0 bis 9 von oben nach unten aufgelistet. Die einzelnen Zahlen haben einen Abstand zueinenader von (Y) 240 Pixeln.
Also, ganz oben steht die 0, dann kommt 'ne ganze Weile nichts, dann die 1, wieder nichts, 2 usw. Wenn du jetzt die Null oben rechst anzeigen lässt, wird die 1 240 Pixel weiter unten angezeigt, also genau einen ganzen Bildschirm weiter unten. Verstehst? Die Zahlnn währen zwar da, aber keine Sau würde sie sehen, weil sie außerhalb des Bildschirms sind.
Hier guggst du: (Blau das Zahlenbild, rosa der Bildschirm)
7414
djeurissen
17.11.2010, 13:13
Ahh Ok ich werds ausprobieren leider habe ich heute keine Zeit aber danke^^
Um ein 2400-Pixel-Bild importieren zu können, musst du allerdings das Bild einfach reinkopieren in den Ordner (oder den RPG Maker 2009 Ultimate verwenden).
djeurissen
17.11.2010, 16:35
Gabs da nicht irgendwelche probleme wenn man das einfach reinkopiert?
Multi-Master1988
17.11.2010, 17:00
@ djeurissen
So um dir das mal zu verdeutlichen was Taiji da gepostet hat habe ich mal das Picturesettingscript genommen es auf
den besagten Post umgeändert und hoffe damit dir eine Hilfestellung geben zu können.
Das Scrollen der Steuerung per Tastenabfrage kann auf jedenfall durch ein Bild bewegen Befehl ersetzt werden.
http://www.npshare.de/files/19528ecd/Erl%C3%A4uterungg%20Taiji.rar
Lg
Multi-Master1988
Gabs da nicht irgendwelche probleme wenn man das einfach reinkopiert?
Ich importiere nicht, sondern kopiere bloß alles in die jeweiligen Ordner. Bisher hatte ich auch noch keine Probleme, allerdings sollte man da wissen, welche Farbe transparenz gestellt wird, sonst wundert man sich, weshalb plötzlich der falsche Teil nicht sichtabr ist. :D
Es ist da auch egal, wie groß, oder klein das Bild ist, bzw. es gibt im Gegensatz zum normalen importieren kein Fehler gemeldet und man kann ganz normal damit arbeiten.
Powered by vBulletin® Version 4.2.3 Copyright ©2025 Adduco Digital e.K. und vBulletin Solutions, Inc. Alle Rechte vorbehalten.