[50€] Steinblock soll nur dann gesteuert werden können, wenn er nicht mehr in Bewegung ist. Wer kann helfen? [50€]

  • Hey allerseits.

    Ich habe schon in diesem Thread Hilfe für mein Problem gesucht, aber wirklich perfekt ist es noch nicht:


    Steinblock soll sich von A nach B navigieren lassen & auf B dann als Weg/Brücke fungieren


    Ich suche nun hier jemanden, der sich (wahrscheinlich mit Scripts) auskennt und sich ein bisschen was verdienen will.



    Folgendes Szenario:

    Der graue Steinblock am unteren Rand dieses schwarzen Labyrinths soll über die Pfeilblöcke gesteuert werden. Man drückt eine Taste und der Stein bewegt sich so lang in die gedrückte Richtung, bis er auf eine Barrikade stößt und sich nicht mehr weiterbewegen kann. Danach betätigt man die nächste Richtung usw.

    Es gibt nur eine richtige Möglichkeit, ihn nach oben in den Gang zu navigieren. Sobald man dies geschafft hat, liegt er nun fix am Aufstieg der Treppe und man hat somit Zugang zur oberen Etage.


    Das Problem, das ich momentan noch habe, ist, dass man gar nicht erst warten muss, bis der Stein irgendwo anstößt, um den nächsten Input geben zu können. Man kann direkt die nächste Richtung betätigen, auch, wenn er noch in Bewegung ist. Das ist natürlich nicht Sinn und Zweck der Sache.

    Wenn man die letzten Beiträge des verlinkten Threads anschaut, sieht man, dass vorgeschlagen wurde, das Ganze über einen wait-Befehl zu machen. Also dass man immer bspw. 60 Frames warten muss, bis man den nächsten Input geben kann. Aber da der Stein manchmal innerhalb weniger Augenblicke schon an der nächsten Barrikade anstößt, macht das keinen Sinn, da dann noch ewig warten zu müssen.


    Also, im Idealfall findet sich hier jemand, der weiß, wie man Inputs an den Pfeilblöcken sperrt, solang der Stein in Bewegung ist.


    Kann jemand helfen?

  • Idee: Wenn man einen Pfeilblock aktiviert, wird ein Switch eingeschaltet, z.B. Switch 1 "Hoch". Dann brauchst du für den Stein-Event eine zweite Seite mit diesem Switch als Bedingung und zwar auf Autostart (während Autostart-Events aktiv sind, bewegt sich nix anderes). Auf der Autostart-Seite des Steinblocks wird eine Bewegung (hoch) einmal ausgeführt und der Switch wird am Ende wieder ausgeschaltet. Dadurch ist der Steinblock-Event wieder auf seiner ersten Seite (leer, Action Button Trigger), aber um eins nach oben verschoben. Der Spieler kann sich nun wieder bewegen. Für die anderen Richtungen machst du dasselbe. Für runter also einen Switch 2 "Runter" aktivieren, wenn der Pfeilblock nach unten getriggert wird. Dann brauchst du für den Stein-Event eine dritte Seite mit diesem Switch als Bedingung und zwar auch wieder auf Autostart. Bewegung einbauen (1 Feld runter) und den Switch am Ende wieder ausschalten.


    Zusammenfassung: Jeder Pfeilblock aktiviert einen Switch. Entweder "Hoch", "Runter", "Links" oder "Rechts". Der Steinblock hat insgesamt 5 Seiten. Seite 1 (Action Button, leer), Seite 2 (Bewegungsroute für "Hoch" mit dem Switch für "Hoch" als Bedingung auf Autostart), Seite 3 (Bewegungsroute für "Runter" mit dem Switch für "Runter" als Bedingung auf Autostart) und dann noch Seite 4 und 5, wo du dasselbe nochmal für "Links" und "Rechts" machst. Am Ende von jeder Bewegungsroute wird der aktivierte Switch wieder auf OFF gesetzt, wodurch das Stein-Event wieder auf Seite 1 (Action Button, leer) landet.


    Ungetestet, aber nach meiner Logik sollte das funktionieren.

  • Hatte grade etwas Zeit und hab deine Map mal nachgebaut, weil ich mich frage, ob man das nicht per Positionsabfrage lösen kann.

    Hab jetzt nicht alles erstellt, sondern testweise mal nur 2 Stück und weiß auch nicht, wie du die Pfeiltasten auslöst, aber bei mir funktioniert es soweit.


    Die 4 Pfeiltasten:






    Der Block, der bewegt werden soll:



    Auf Seite 1 passiert nix.



    Auf Seite 2 bewegt er sich nach oben, WENN er an einer Position ist, wo das geht. Andernfalls passiert nichts weiter, außer dass sich der Schalter wieder ausschaltet.



    Seite 3 genauso, nur mit der Bewegung nach links.

    Sinngemäß schaust du also, an welcher Position der Block liegt und zählst ab, wie viel er sich bewegen soll und schaltest danach den Schalter wieder aus.

    Du müsstest es halt noch um alle anderen Positionen und Richtungen ergänzen.


    Jetzt noch ein paralleles Event im Hintergrund, welches schaut, ob der Block vor der Treppe liegt und dann einen Schalter aktiviert:



    Dieser Schalter macht das Tile vor der Treppe begehbar:





    Wie gesagt, nur testweise hingeschmiert, aber bei mir funktionierts.

  • Danke schon einmal für eure Antworten!


    @Zion: Ich habe versucht, alles genau so zu machen, wie du es beschrieben hast, aber nun kann man einmal einen Pfeil aktivieren, nichts passiert und mein Charakter ist festgefroren und kann sich nicht mehr bewegen.

    Es ist mit Sicherheit ein Fehler meinerseits und ich nehme an, es hat mit den Variablen der Pfeilblöcke zu tun. Ist dieses "X Pos Block" eine normale Variable, die du so genannt hast? Oder gibt es eine Positionsabfrage, die dann als "X Pos" angezeigt wird? Falls dem so ist, könnte das mein großer Fehler sein. Ich habe jetzt zwei Variablen erstellt, die einmal "X Pos Block" und einmal "Y Pos Block" heißen...

  • Ok sorry, ich wusste nicht, wie viel Kenntnisse du vom Maker schon hast.

    Also du gehst auf "Variablen steuern" und gibst der Variable unter "Einzeln" einen Namen (bei mir heißt sie X Pos Block).

    Dann klickst du auf "Spieldaten":



    Und wählst hier unter "Charakter" das Ereignis, welches dein Block ist (ich habe das Event umbenannt in "Block", so finde ich es am schnellsten") und kannst ihm dann seine X-Koordinate zuordnen:



    Das gleiche nochmal für Y mit einer neuen Variable und das war's. Ab sofort wird die Koordinate des Blocks in den beiden Variablen gespeichert.


    Welche Position es ist, siehst du hier:



    Ich hab den Block angeklickt und sehe unten, dass er sich an Position X=10 und Y=10 befindet.

    Wenn er sich nach links bewegt, wird X kleiner, nach rechts wird X größer.

    Nach oben wird Y kleiner, nach unten wird Y größer.


    Wenn noch etwas unklar ist, einfach nochmal fragen :)

  • Servus,


    bevor ich dir sage, wie ich es gemacht hätte, eine Info für dich:


    Hinweis 1: Unter "Priorität" kannst du einstellen, ob ein Event unter dem Charakter, gleich wie dem Charakter oder über dem Charakter sich befinden sollte. Also "Ebene 1", "Ebene 2" oder "Ebene 3". Der Spieler befindet sich auf "Ebene 2", setzt du das Event gleich wie Spieler (also "Ebene 2"), so kann der Charakter nicht über das Event laufen, sowie das Event nicht über den Charakter. Wenn jedoch der Spieler und das Event direkt übereinander liegen und beide auf "Ebene 2" sind, so kann sich keines der beiden (im Normalfall bewegen).


    Ist das Event unter oder über dem Charakter, so können beide übereinander laufen ohne Probleme.


    Hinweis 2: Wenn das Event unter oder über dem Charakter liegt und du als Auslöser "Aktionstaste" eingestellt hast, so muss der Spieler direkt über oder unter dem Event sich befinden, um das Event auszulösen.

    Ist das Event auf gleicher höhe, so muss der Spieler direkt neben dem Charakter stehen und ihn anschauen (nicht diagonal).


    Hinweis 3: Bei den Event-Optionen kannst du auch "Durchgang" einstellen. So kann das Event durch alles gehen, auch wenn das Event auf der gleichen Höhe wie der Spieler ist, können beide dank dieser Option hindurch gehen.


    Hinweis 4: Wenn du auf der neuen Event-Seite etwas anderes eingestellt hast, so kann es zu Problemen kommen.


    Beispiel: Eventseite 1 - Event ist unter Charakter. Auslöser = Aktionstaste. Evenseite 2 - Event ist gleich wie Charakter. Wenn der Spieler jetzt das Event betätigen möchte, so muss er auf das Event gehen. Betätigt er das Event und du wechselst auf Eventseite 2, so stecken beide fest. Hier müsstest du nur bei Eventseite 2 die Priorität auch "unter Charakter" setzen und das Problem ist gelöst. :)



    EDIT: Falls das unverständlich war, empfehle ich dir da einfach rumzuspielen und zu testen wie sich das Event jeweils verhält. ;)



    So und hier wie ich es machen würde:


    Du benötigst nur zwei Variablen, zwei Schalter und 7 Events.

    ACHTUNG: Ich gehe davon aus, das man auf dem "Schwarzen-Tile" laufen kann (also da wo sich der Steinblock hin und her bewegt), jedoch die Wände nicht begehbar sind!


    Falls etwas unverständlich sein sollte, gib bescheid. Ich denke meine "Vorgänger" haben das wichtigste schon genauer erklärt, weshalb ich nicht so ins Detail ging. ^^

  • Ach sehe gerade das beide "Autorun" benutzt haben, daran könnte es natürlich auch liegen, das du dadruch "festgefrohren" bist. ^^


    Edit: mir ist auch ein Fehler unterlaufen, ich habe den Beitrag editiert! Sorry deswegen, habs auch "schnell, schnell" gemacht und naja... :S

    Jetzt funktionierts definitiv und man benötigt kein Script, weder Plugin, etc. ;)

  • Ich bin zu unfähig... danke euch schon einmal vielmals für eure ausführlichen Erklärungen. Ich versuche gerade, alle einmal durchzugehen und alles auszuprobieren. Das dauert noch ein bisschen, aber ich melde mich hier sofort wieder, sobald ich einen Erfolg erzielen konnte. Und wenn ich weiterhin Probleme hab, muss ich hier halt noch ein bisschen nach Hilfe schreien ;(

  • Zion : ich habs hinbekommen! :) Hätte ich es jetzt nicht geschafft, hätte ich hier auch nochmal genau mein Problem beschrieben, aber nun geht es!


    Wow wow wow, ich hing so verdammt lang an diesem Problem und dank euch sieht es nun endlich so aus, als wenn ich das ganze Projekt in naher Zukunft abschließen kann! ^^


    Jetzt müsst ihr mir nur noch erklären, wie sowas hier normalerweise mit der Bezahlung abläuft :D Ich hatte anfangs damit gerechnet, dass ich hier öffentlich mein Problem schildere und ich danach PNs erhalte, die mir persönlich erklären, was ich zu tun hab, um "Mitwettbewerber" auszuschließen haha. Aber da hier jetzt öffentlich mehrere Lösungsansätze gepostet wurden, weiß ich nicht genau, wie ich das jetzt mit den 50 Euronen machen soll.


    Ich würde folgendes vorschlagen:

    Tw0Face , auch dir vielen Dank für deine Hilfe. Ich habe anfangs versucht alles so zu machen, wie du gesagt hast, aber bin leider nicht richtig zurecht gekommen. Deshalb haben mir die Antworten von Zion und Klavirmusik etwas mehr geholfen, da mir die beiden wirklich explizit erklärt haben, was ich zu tun hab.


    Zion   KlavirMusik : Wenn es also für euch beide in Ordnung ist, würde ich die 50€ also aufsplitten und euch beiden jeweils 25 Euro zukommen lassen :) Irgendwie wäre es schade, wenn ich nur einen von euch beiden ausbezahle und der andere leer ausgeht. Ihr habt euch wirklich so eine Mühe gegeben und sogar ein Volln00b wie ich hat's nun geschafft.


    Falls ihr also damit einverstanden seid, dann lasst mir einfach euer Paypal/eure Bankdaten zukommen.

    Dieser Beitrag wurde bereits 1 Mal editiert, zuletzt von Dekunuss ()

  • Ich dachte ich schreibs öffentlich, damit Andere die sowas ähnliches machen & Probleme haben, da eine kleine Hilfe bzw. Tutorial bekommen (sowie bei den Anderen Helfern). ^^


    Zur Bezahlung: das macht man im Normalfall privat aus bzw. du könntest aber auch gleich den Bezahlweg festlegen z.B. "Bezahlung erfolgt dann per PayPal", falls dir eine bestimmte Bezahlmethode lieb wäre.


    In diesem Fall lehne ich wie Zion sehr dankend ab, ich finde 50€ für das kleine Rätsel inklusive Lösung mit kleinen Hinweisen bissl arg viel. Vielleicht 5 bis maximal 10€, da es jetzt kein mega Aufwand war (glaub ca. ne gute Stunden habe ich dafür gebraucht).


    PS: Falls du wieder Hilfe benötigst und es irgendwo hängt, kannst du gerne nochmal nachfragen bzw. dein Thread "pushen". Ich dachte es wäre mehr oder weniger "erledigt" gewesen (gibt einige Lösumöglichkeiten), im schlimmsten Fall kannst mich gern @-ten bzw. anschreiben. ;)

    Immerhin hab ich wieder was neues über den Maker gelernt (auch wenns nur eine Kleinigkeit war).

  • Tw0Face , auch dir vielen Dank für deine Hilfe. Ich habe anfangs versucht alles so zu machen, wie du gesagt hast, aber bin leider nicht richtig zurecht gekommen. Deshalb haben mir die Antworten von Zion und Klavirmusik etwas mehr geholfen, da mir die beiden wirklich explizit erklärt haben, was ich zu tun hab.

    Alles gut. Hauptsache, du hast es hinbekommen. 8):thumbup:

  • Ja supercool, danke euch allen! :)

    Dieses Angebot nehme ich gern an und würde nun tatsächlich ein neues Problem hier unten drunter posten ^^



    Wie ihr seht, habe ich hier links auch ein Event.

    Dieses Event dient als Teleport. Da diese schwarzen Tiles, in denen sich der Steinblock bewegt, passierbar sind, kann der Spieler theoretisch auch darauf laufen (was ja Quatsch wäre). Meistens wird er durch die Wände rings herum daran gehindert, diesen Bereich zu betreten. Da er aber bei dem Stein vor der Treppe auch nach links gehen kann und ich nicht wusste, ob bzw. wie ich Tiles so ändern kann, dass sie erst begehbar sind und ab einem bestimmten Zeitpunkt plötzlich nicht mehr, habe ich einfach so getan, als würde er bei diesem Tile in die Tiefe stürzen. Der Bildschirm wird dann kurz ausgeblendet und man wird wieder auf den regulären Weg teleportiert. Sobald man wieder etwas sieht, sagt der Charakter dann sowas wie "Was ist passiert? Wo bin ich? Ich sollte wirklich aufpassen, wo ich hintrete."


    Das Problem ist nun, dass der Steinblock aus irgendeinem Grund vor diesem Event stehenbleibt. Er kommt erst gar nicht mehr an der Treppe an. Habe dann gedacht, dass ich einen Schalter umlegen kann, sobald der Steinblock die Treppe berührt und dass das Event erst ab diesem Zeitpunkt gilt. Also habe ich einen if-Befehl erstellt, der das Event erst auslöst, sobald der Stein vor der Treppe ankommt. Aber irgendwie klappts trotzdem nicht...



    Zu Hülfe! Zu Hüüülfe! ?(

  • Wenn niemand Anspruch erhebt kannst du das Geld natürlich jederzeit auch dem Forum Spenden um den Server hier zu erhalten:

    https://rpgmaker-mv.de/donations/

  • Das Problem ist nun, dass der Steinblock aus irgendeinem Grund vor diesem Event stehenbleibt.

    Jopp. Ein Event kann nicht durch ein anderes Event durchgehen, es sei denn du machst unten den Haken bei "Durchgang" rein. In meinem Beispiel ist der auch drin, damit der Block sich auch über die schwarzen, unpassierbaren Tiles bewegen kann. Damit der Spieler dann aber auch auf den Block laufen kann, hab ich das Tile vor der Treppe mit einem Schalter versehen.

    vielleicht schaust du dir die Beispiele von mir nochmal an, ansonsten gern nochmal fragen :)

  • Das Problem ist nun, dass der Steinblock aus irgendeinem Grund vor diesem Event stehenbleibt.

    Jopp. Ein Event kann nicht durch ein anderes Event durchgehen, es sei denn du machst unten den Haken bei "Durchgang" rein. In meinem Beispiel ist der auch drin, damit der Block sich auch über die schwarzen, unpassierbaren Tiles bewegen kann. Damit der Spieler dann aber auch auf den Block laufen kann, hab ich das Tile vor der Treppe mit einem Schalter versehen.

    vielleicht schaust du dir die Beispiele von mir nochmal an, ansonsten gern nochmal fragen :)

    Oh, da hab ich wohl nicht richtig aufgepasst. Danke! Ich gehe das Ganze nochmal durch.