Ergebnis 1 bis 10 von 10

Thema: Zufallskämpfe

  1. #1

    Zufallskämpfe

    Ich habe ein eigenes KS gebaut und will Zusatzkämpfe einbauen(Sowie in TA oder Velsarbor). Wie geht das?

  2. #2
    Meinst du jetzt Zusatz- oder Zufallskämpfe? Wohl eher das zweite...
    Das hängt natürlich stark - oder besser gesagt komplett - von deinem KS ab. Grundlegend muss es über eine Zufallsvariable gesteuert werden. Die erstellt man unter "set variable" mit "random". Dort kann man einen Bereich einstellen, in dem sich danach die Variable befindet. über Forks oder ähnliches wird es abgerufen.
    Aber wenn du ein eigenes KS hingegriegt hast, düfte das dann kein Problem mehr sein...

  3. #3
    Ich hätte es lieber, wenn die Gegner nach einer bestimmten
    Anzahl Schritte auftauchen.

  4. #4
    Das sollte an sich kein Problem sein. Dazu machst du entweder in einem Map-Event oder einem CE folgende Abfrage:
    Code:
    <>Change Variable "Bewegungskontrolle", set [(Hero) X-Coord.]
    <>Change Varibale "Bewegungskontrolle", + [(Hero) Y-Coord.]
    <>Wait 0,1 sec
    <>Change Variable "Bewegungskontrolle", - [(Hero) X-Coord.]
    <>Change Variable "Bewegungskontrolle", - [(Hero) Y-Coord.]
    <>
    <>Fork Variable "Bewegungskontrolle" != 0 (ungleich 0)
    <><>Change Variable "Schritte bis Kampf", - 1
    <><>Fork Variable "Schritte bis Kampf", 0 below
    <><><>KAMPFBEGINN!
    <><>End:
    <>End:
    Zur Erläuterung:
    Die Variable "Bewegungskontrolle" kontrolliert (wie der Name schon sagt) ob sich der Held bewegt ^^. Dabei addiere ich zur X-Koordinate des Helden die Y-Koordinate (spart Variablen). Danach warte ich 0,1 Sekunde (die Zeit in der sich der Held bewege kann) und subtrahiere wieder beide Koordinaten. Hat der Held sich nicht bewegt waren beide male die Koordinaten gleich, also ist das Ergebnis der Rechnung folglich 0. Hat er sich bewegt hat sich eine der beiden Variablen (X oder Y) entweder um 1 erhöht oder um 1 gesenkt (da man sich nur in jeweils eine Richtung bewegen kann sind nur diese beiden Varianten möglich). Dadurch wird das Ergebnis der Rechnung folglich entweder -1 oder 1 , also nicht 0. Ist dies der Fall weiß ich also das sich der Held bewegt hat und ich verringere die Anzahl der Schritte bis zum Kampf um 1. Erreicht diese Varibale 0 beginnt der Kampf. Nach dem Kampf kann man dann je nach Map diese Variable beliebig einstellen, z.B. auf 20. Ein kleiner Randombetrag kann aber auch nicht schaden (also z.B. 18-24).

    Hier nochmal zwei Beispiele zur Abfrage der Bewegung:

    Vorher:
    X-Position des Helden: 12
    Y-Position des Helden: 6

    Nachher: (Der Held hat einen Schritt nach rechts gemacht)
    X-Position des Helden: 13
    Y-Position des Helden: 6

    Rechnung:
    (12 + 6) - (13 - 6) = 18 - 19 = -1
    -1 ist ungleich 0, also hat sich der Held bewegt!


    Vorher:
    X-Position des Helden: 12
    Y-Position des Helden: 6

    Nachher: (Der Held bewegt sich nicht)
    X-Position des Helden: 12
    Y-Position des Helden: 6

    Rechnung:
    (12 + 6) - (12 - 6) = 18 - 18 = 0
    Das Ergebnis ist 0 also hat sich der Held nicht bewegt!


    Hoffe das kann dir helfen

    mfg
    Phönix Tear

  5. #5
    Ah, das ist was anderes.
    Dazu musst du in zwei Variablen die Position des Helden speichern, dann kurz warten (wait 0,1s) und schließlich überprüfen ob er der Held sich immer noch auf der gleichen Position befindet. Das machst du indem du die beiden gespeicherten Variablen mit der momentanen Position vergleichst. Da man die Postion nicht in einer Fork abspeichern kann, Subtrahierst du sie einfach von den gespeicherten Variablen und fragst a, ob sie null sind. Wenn nein, hat sich der Held ein Feld bewegt. Das kannst du dann eine weitere Variable speichern, die damit die Schritte zählt. Das ganze steht natürlich in einer Schleife. Wie dann auch noch ein Zufallsgegner erscheint steht ja schon weiter oben...

    Nochmal zusamengefasst (V= Variable):
    - V1 := Hero x
    - V2 := Hero y
    - wait 0,1s
    - V1 minus Hero x
    - V2 minus Hero y
    - wenn "V1 ungleich 0" dann "V3 +1" (V3 ist Anzahl der Schitte)
    - ansonsten wenn "V2 ungleich 0" dann V3 +1"


    Vielleicht gibt es noch andere Ansätze, aber so würde ich es machen...


    EDIT: Müll, zu spät!

  6. #6
    @Phönix Tear: Schön gemacht der Code zumal das Addieren der X- und Y-
    Koordinate wirklich sehr praktisch ist. Aber warum zählst du die Variable
    "Schritte bis zum Kampf" rückwärts? Das zieht mMn das Problem mit sich
    das man die Variable vorher auf einem bestimmten Wert (z.B. 50) setzen
    muss. Das könnte man sich ja ersparen indem man, gemäß dem Fall einer
    Ungleichheit der X-, Y-Koordinaten-Addition, die Varialbe "Schritte bis zum
    Kampf) +1 setzt und nicht -1. Dann könnte man in der Fork die Anzahl der
    benötigten Schritte festlegen indem man halt abfragt ob die Variable "Schritte
    bis zum Kampf" above 50 ist.

    Gruß,
    Stoep

  7. #7
    Joa, das mit dem addieren des x- und y-Wertes ist nicht schlecht.
    Aber das Runterzählen hat tatsächlich zwei Vorteile:
    1. muss man die Fork nicht mit einer Variable bestückern sondern nur mit 0.
    2. muss man bei einem Zufallsbereich der notwendigen Schritte nicht die Fork-Variable verändern und die Schritte auf null setzen, sondern nur die Schritte auf den Zufallswert.

    EDIT: Mir ist noch ein Nachteil der Addition von x- und y-Wert bei Phönix Tear aufgefallen: Sollte der Held - warum auch immer - die Möglichkeit haben, diagonal laufen zu können, würde ein Schritt nach oben-rechts oder unten-links null ergeben also "nicht bewegt". Da diagonal laufen aber seltener benutzt wird spart es Variablen und eine Fork...

    Geändert von CapSeb (17.09.2006 um 15:18 Uhr)

  8. #8
    Zitat Zitat von CapSeb
    1. muss man die Fork nicht mit einer Variable bestückern sondern nur mit 0.
    Ist doch kein Unterschied ob er jetzt in der Fork abfragt ob die Variable
    "Schritte bis zum Kampf" 0 ist oder 50 O_o

    Zitat Zitat von CapSeb
    2. muss man bei einem Zufallsbereich der notwendigen Schritte nicht die Fork-Variable verändern und die Schritte auf null setzen, sondern nur die Schritte auf den Zufallswert.
    Bei meiner Lösung könnte man aber die Variable "Schritte bis zum Kampf"
    nach einem Kampf auf z.B. Random 0-10 setzen um einen Zufallsbereich
    zu erstellen.

    Gruß,
    Stoep

  9. #9
    Zitat Zitat
    Bei meiner Lösung könnte man aber die Variable "Schritte bis zum Kampf"
    nach einem Kampf auf z.B. Random 0-10 setzen um einen Zufallsbereich
    zu erstellen.
    Dann sehe ich nur keinen Unterschied mehr zu meiner Variante

    Die Vorteile des Subtrahierens wurden ja schon genannt:
    - Man muss die Fork nicht ändern da sie immer auf 0 steht
    - Man braucht lediglich die Schritte bis zum Kampf einzustellen

    Außerdem finde ich das es einfach schöner ist wenn es rückwärts zählt, schließlich nähert man sich ja auch dem Kampf (ist nur ne Ansichtssache ^^).

    @CapSep:
    Zitat Zitat
    da man sich nur in jeweils eine Richtung bewegen kann sind nur diese beiden Varianten möglich
    Dieser Fall war mir bewusst, aber da ich nicht davon ausging das er einen Helden einbaun will der auch diagonal laufen kann (was imo bei den meisten RPG-Spielen nicht wirklich gut rüberkommt), ist dies eben die einfachste Methode. Ansonsten wäre es natürlich immer noch möglich für alle 4 Koordinaten jeweils eine Variable zu benutzen und diese dann per Fork zu vergleichen (also "Hero X 1" mit "Hero X 2" und "Hero Y 1" mit "Hero Y 2"...)

    Edit:
    @Darunter:
    Nicht wenn ich das per Map ID vergebe. Dann macht das auch beim ersten mal schon das Common-Event

    Geändert von Phönix Tear (17.09.2006 um 19:27 Uhr)

  10. #10
    Zitat Zitat von Phönix Tear
    Zitat:
    Zitat Zitat
    Bei meiner Lösung könnte man aber die Variable "Schritte bis zum Kampf"
    nach einem Kampf auf z.B. Random 0-10 setzen um einen Zufallsbereich
    zu erstellen.
    Dann sehe ich nur keinen Unterschied mehr zu meiner Variante
    Doch! Du musst vor dem aller ersten Kampf die Variable auf einen Wert
    setzen, ich nicht. Nach dem Kampf müssen wir's dann zwangsläufig beide^^

    Gruß,
    Stoep

Berechtigungen

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