Ergebnis 1 bis 10 von 10

Thema: Schräglaufen-Skript mit Tastenpatch. Wie geht's?

  1. #1

    Schräglaufen-Skript mit Tastenpatch. Wie geht's?

    Hi ,o/

    Ich bräuchte mal liebend gerne Hilfe mit dem Tastaturpatch.
    Ich hab ihn, ehrlich gesagt, von Anfang an nicht kapiert, aber darum geht's ja eh nicht.
    Ich hätte halt gern in mein derzeitiges Projekt ein Schräglauf-Skript eingebaut. Da das aber ohne Tasta-Patch ja wohl nicht korrekt funktionieren will, wollte ich fragen, ob sich da jemand auskennt, der mir evtl. mit dem Tastatur-Patch ein Schräglauf-Skript machen könnte?
    Oder zumindest erklären, wie ichs selbst machen könnte

    Ich könnte demjenigen leider nicht viel anbieten...hoffe, dass sich trotzdem jemand meiner einer erbarmt ^^"

    bis dahin

    V-King

  2. #2
    Ich könnte dir ein kleines Tutorial dazu machen. Zu wann brauchst du es?

  3. #3
    Zitat Zitat von Ascare
    Ich könnte dir ein kleines Tutorial dazu machen. Zu wann brauchst du es?
    Meinst du jetzt "wann" oder "zu was"? xD
    Falls wann: ASAP (As soon as possible; so bald wie möglich)
    Falls zu was: Zu nem...Spiel...natürlich ^^ (auch wenns irgendwie n00bisch klingt, aber ich wills nich so groß rausposaunen ^^" per PN sag ichs dir, wenn du willst)

  4. #4
    Ich hatte wohl doch mehr Zeit als eingeplant, also habe ich es schnell mal erstellt. Das ist nicht ein komplettes Tutorial, aber es soll die Methodik zeigen, so das du verstehst und den Rest selber hinbekommst (hoffentlich).
    Ich gehe davon aus, das du den Tastenpatch nicht richtig verstanden hast, daher fange ich bei 0 an.

    1. Also zunächst einmal Tastenpatch installieren. Ob es geklappt hat merkst du daran, dass der Splashscreen von Ineluki kommt.

    2. Importier am Besten alle script.wav Dateien aus dem Demospiel in dein Projekt.

    3. Öffne die KeyList.script.wav mit einem Editor (z.B. Notepad). Entweder löscht du alle Inhalte (weil du vielleicht deine eigenen Tastenwerte erstellen willst) oder du lässt es so wie es ist und gehst zu dem Eintrag '; ###Cheats###' und fügst darüber folgende Einträge ein:

    Code:
    [up]
    Action=registerKeyDownEvent
    key=(Hoch)
    value=44
    next=-up
    
    [-up]
    Action=registerKeyUpEvent
    key=(Hoch)
    value=-44
    next=left
    
    [left]
    Action=registerKeyDownEvent
    key=(Links)
    value=42
    next=-left
    
    [-left]
    Action=registerKeyUpEvent
    key=(Links)
    value=-42
    next=
    Erlärung zu dem Script am Beispiel von [up]:
    Code:
    [up]  // Hier kommt einfach der Name für eine Taste rein, kann beliebig sein
    Action=registerKeyDownEvent // Aktion; wenn Taste gedrückt wird
    key=(Hoch) // welche Taste? ; Pfeiltaste Hoch
    value=44 // Der Wert den die Taste als Variable erhält
    next=-up // Übergang zur nächsten Taste
    
    [-up] // s.o.
    Action=registerKeyUpEvent // Aktion; wenn Taste losgelassen wird
    key=(Hoch) // s.o.
    value=-44 // einfach ein Minus als Gegenwert quasi
    next=left // s.o.
    So, jetzt hast du die Variablenwerte 44 und -44 für Pfeiltaste Hoch und 42 und -42 für Pfeiltaste Links in der Keylist eingetragen.

    4. Erstelle im Maker ein Event mit folgendem Inhalt:

    Code:
    <>Play SE: KeySupportOn.script
    <>Play SE: MidiTickClear.script
    <>Play SE: KeyList.script
    <>Play SE: MidiTickOutput.script
    <>Change Switch: [0001: Tastenabfrage] - ON
    Das bewirkt das die Tasten angeschaltet sind. Auf Seite 2 natürlich das Event mit dem Switch festsetzen.

    5. Erstelle einen parallelen Prozess, als Common Event mit Switch Abfrage [0001: Tastenabfrage] - ON

    Inhalt:
    Code:
    ChangeVariable: [0001: Tasten ID] Set Midi Play Tick Pos
    .
    ForkOpt: Variable[0001:Tasten ID] same 44
    <>ChangeVariable: [0002: Diagonal] + 4
    End Case
    .
    ForkOpt: Variable[0001:Tasten ID] same 42
    <>ChangeVariable: [0002: Diagonal] + 2
    End Case
    .
    ForkOpt: Variable[0001:Tasten ID] same -44
    <>ChangeVariable: [0002: Diagonal] - 4
    Move Event: Hero // nichts weiter aktivieren oder eingeben
    End Case
    .
    ForkOpt: Variable[0001:Tasten ID] same -42
    <>ChangeVariable: [0002: Diagonal] - 2
    Move Event: Hero // nichts weiter aktivieren oder eingeben
    End Case
    
    ForkOpt: Variable [0002: Diagonal] same 6
    <>Move Event: Hero,Left-up  // Haken bei: Repeat Action, Ignored.moved
    EndCase
    Wait 0.0
    Der . ist als Platzhalter für die Übersicht gedacht. Wenn du die Schritte bis hierher erfolgreich geschafft hast wirst du die restlichen 3 diagonalen Richtungen auch alleine hinbekommen. Nur noch eine Sache:
    Die Erhöhung der Diagonal Werte (Hier +4 für hoch und +2 für links) solltest du ändern, so dass ob einzeln oder zusammen gedrückt immer einen individuellen Wert ergeben. Naja, spätestens wenn du alle 4 diagonalen Laufrichtungen machen wirst, solltest du vertsehen was ich meine.
    Fragen kann ich dir gerne beantworten.

    P.S.:Kannst mir ja gerne per PN mitteilen worum es geht.

  5. #5
    Hey, es funktioniert \o/
    Danke ^^

    Nur ein Problem (besser gesagt, nen Bug) hab ich festgestellt. Und zwar, wenn ich jetzt schräg gegen ne Wand laufe, dann behält die Diagonal-Variable immernoch den Wert 4 (wenn man gegen ne nördliche Wand läuft) bzw. 2 (wenn man gegen ne westliche Wand läuft), selbst wenn die Taste losgelassen wird.
    Zusätzlich isses dann so, dass, je nachdem, gegen was für ne Wand man gelaufen ist, man mit nur einer Taste (hoch bzw. links) schon nach links-oben läuft.
    Du hast nicht zufällig ne Ahnung, wie man das fixen kann?
    Mit nem auf Null setzen der Diagonal-Variable scheints nicht wirklich zu klappen (da setzt dann das ganze Schräglaufskript aus).

  6. #6
    Code:
    ForkOpt: Variable [0002: Diagonal] same 6
    <>Move Event: Hero,Left-up  // Haken bei: Repeat Action, Ignored.moved
    EndCase
    Nimm mal den Haken bei Repeat Action raus.
    Also bei mir klappt es problemlos. Vielleicht ist die ein Fehler bei der Umsetzung passiert? Oder erklär mal genauer was genau der Bug macht. Ich hatte eben nämlich nur das Problem das der Hero feststeckt.

    EDIT:
    OK, jetzt passierte es bei mir auch. Ich verstehe. Ich schau mal nach was ich tun kann.

    EDIT2:
    Versuch mal ein Fork Event noch mit in den parallelen Prozess einzubauen:
    Code:
    ForkOpt: Variable [0002: Diagonal] above 7
    <>ChangeVariable: [0002: Diagonal] set 0
    EndCase
    Das dient sozusagen als Limit. So das der Maker weiß, das es ab einer bestimmten Variable nicht weitergehen kann.

    EDIT3:
    Code:
    Move Event: Hero // nichts weiter aktivieren oder eingeben
    Diese Befehle kannst du auch scheinbar rausnehmen. Sie machen irgendwie nur bei Sinn, wenn du Events (NPCs oder so) steuern willst.

    Ich hoffe das es nach so vielen Edits jetzt funktioniert.

    Geändert von Ascare (07.02.2005 um 21:22 Uhr)

  7. #7
    Ich habs jetzt einfach mal ganz anders gemacht:

    Ich hab einfach folgende Forks in den PP reingemacht:

    Code:
    ForkOpt: Variable [0002: Diagonal] same 4
    <>ChangeVariable: [0002: Diagonal] set 0
    EndCase
    .
    ForkOpt: Variable [0002: Diagonal] same -4
    <>ChangeVariable: [0002: Diagonal] set 0
    EndCase
    Das gleiche nochmal für die 2 und -2.
    Immerhin läuft der Chara ja erst schräg, wenn die Variable 6 ergibt
    somit wäre also nun auch das Problem gelöst

    Danke auf jeden Fall für das Tutorial, hat mir wirklich viel gebracht ^^
    *endlich kapier, wie der Tastenpatch funzt* \o/

  8. #8
    Das ist zwar auch ne Möglichkeit, jedoch wird das "Problem" sein, dass der Hero nur schräg läuft wenn exakt beide Tasten auf einmal gedrückt werden (hoch + links gleichzeitig). Es wird also nicht mehr gehen, wenn man erst hoch läuft und dann eine Sekunde später links drückt, das er dann auch schräg läuft. Was die Steuerung doch angenehmer machen würde, wie ich finde.

    Nochmal zurück zu einem anderen Problem:
    Wenn wir davon ausgehen das
    Code:
      4
      ↑
    2←.→3
      ↓
      1
    das die Variablenwerte der Steuerung sind, dann würde für schräg-rechts-unten den Diagonalwert 4 ergeben, aber das wäre der selbe wie Pfeil hoch. Das könnte bedeuten, dass wenn du rechts, unten und links gedrückt hälst der Hero nach schräg oben links laufen wird, weil ja der Wert 6 insgesamt rauskommt. Ich hoffe, du weißt was ich meine. Daher solltest du dich jetzt schonmal um dieses Problem kümmern. So das eben bei egal welcher Kombination der Tasten immer ein einzigartiger Wert bei rauskommt.

  9. #9
    Um das Problem hab ich mich schon von anfang an gekümmert

    Und jetzt hab ichs sogar komplett beseitigt

    Und zwar mithilfe von Switches.
    Man fragt einfach ab, ob die Tasten-ID-Variable den Wert für die jeweilige Taste hat (also z.B. 44 für Hoch, 42 für Links, 40 für Rechts und 38 für Runter). Und so sieht dann das Common Event dafür aus: (Achtung! Deutschpatch ahead!)
    Code:
    <>Var. ändern:[0001:Tasten ID]Wert, MIDI-Position(Tick) ;Wert setzen
    <>Bedingung:Varbl[0001:Tasten ID]-44 ;same 44, für die nicht Deutschpatchuser
     <>Schalter ändern:[0001:Hoch gedrückt]-[An]
     <>
    :End Case
    .
    <>Bedingung:Varbl[0001:Tasten ID]-42
     <>Schalter ändern:[0002:Links gedrückt]-[An]
     <>
    :End Case
    .....usw, mit allen Tasten durchmachen
    .
    <>Bedingung:Varbl[0001:Tasten ID]--44 ;same -44, nur so als Anmerkung
     <>Schalter ändern:[0001:Hochgedrückt]-[Aus]
     <>
    :End Case
    .....usw, ebenfalls mit allen Tasten durchmachen
    .
    <>Bedingung:Schalter[0001:Hoch gedrückt]- An
     <>Bedingung:Schalter[0002:Links gedrückt]- An
      <>Bewegungsereignis:  Held  , Lnks-Ob
      <>
     :End Case
     <>Bedingung:Schalter[0003:Rechts gedrückt]- An
      <>Bewegungsereignis:  Held  , Rechts-Ob
      <>
     :End Case
    <>
    :End Case
    ....das selbe noch mal mit Runter. Für links und Rechts brauchts nicht unbedingt nen Case.
    Damit wäre das Problem des ungewollten Schräglaufens, bzw. des nicht Schräglaufen wollens gelöst. Denn komischerweise funzts mit den Switches prima, aber mit den Variablen gibts komischerweise nur Stress =,

  10. #10
    Ich habe es jetzt mal ausprobiert. Die Switches machen anscheinend keine Probleme. Ich denke wir haben es geschafft.
    Dann mal alles Gute mit dem Projekt.

Berechtigungen

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