Seite 1 von 2 12 LetzteLetzte
Ergebnis 1 bis 20 von 23

Thema: Sks

  1. #1

    Sks

    So, nahc dem ich einige Seiten durchstöbert, die Suchfunktion benutzt und Wein/Lach-Krämpfe bei Skripts bekommen habe frage ich hier:
    Wo gibt es ein gutes Tutorial oder ein verständliches Skript, wie man sich ein rundenbasiertes KS machen kann. Alle anderen, die ich gefunden habe waren entweder lächerlich, für nur einen Helden oder ATB´s...

  2. #2
    Wie wärs denn mit Serges KS oder dem Forgotten EBook (s.Signatur)?

  3. #3
    @ Niji
    er will ein rundenbasiertes KS
    serges ks ist ein ATB system...

    @ Ranarion
    is doch ganz einfach:
    lässt die helden alle befehle eingeben, und
    danach musst du nur die Agilitätswerte der helden u Monster vergleichen...
    der mit dem höchten greif zu erst an, dann der zweite, der dritte und so weiter und so weiter...

    üH

  4. #4
    Wenn ich es so einfach fände würde ich ja hier nicht nach nem Tutorial fragen oder?

  5. #5
    Mhh.. Programmier doch eins nach dem E-Book.. Der Code muss doch nur geringfügig verändert werden um aus dem ATB-Kas ein rundenbasiertes KS zu machen....
    MfG, Ouri

  6. #6
    Und wie? Ich kann mir das nicht vorstellen...

  7. #7
    Hmm, Codes so zu kombinieren könnte allerdings schwierig werden.
    Das Prinzip ist aber recht einfach zu verdeutlichen:
    Du benutzt im Endeffekt einfach statt der ATB-Leiste nur eine Variable. Normalerweise addiert man immer den Agility-Wert eines Helden (oder einen Teil davon) zu einer anderen Variable die dann irgendwann einen Wert erreicht und der betroffene Held ist drann. Das kann man hier einfach weglassen. So auf die Schnelle (hab das noch nie gemacht) fällt mir da nur eine Möglichkeit ein:
    Du machst 3 Variablen (entsprechend der Gegner- und Heldenzahl). Bei mir gibt es jetzt mal nur einen Gegner und zwei Helden. Dann kommen ineinander verschachtelte Forks, die abfragen welcher der höchste ist:
    Zitat Zitat
    <>Fork: Variable 1 "Held 1 Agility" > "Held 2 Agility"
    <><>Fork: Variable 1 "Held 1 Agility" > "Gegner 1 Agility"
    <><>Call Event: "Held 1 drann"
    <><>Else:
    <><><>Fork: Variable 2 "Held 2 Agility" > "Gegner 1 Agility"
    <><><>Call Event: "Held 2 drann"
    <><><>Else:
    <><><>Call Event: "Gegner 1 drann"
    <>Else:
    <>Fork: Variable 2 "Held 2 Agility" > "Gegner 1 Agility"
    <><>Call Event: "Held 2 drann"
    <><>Else:
    <><>Call Event: "Gegner 1 drann"
    Natürlich muss dann nachdem ein Gegner drann war jeweils der Switch "Held X war drann", bzw. "Gegner X war drann" angeschaltet werden, der dann immer noch vor der Abfrage abgefragt wird, damit nicht die ganze Zeit der gleiche Held drann ist, also:
    Zitat Zitat
    >Fork: Variable 1 "Held 1 Agility" > "Held 2 Agility"
    >>Fork: Variable 1 "Held 1 Agility" > "Gegner 1 Agility"
    >>>Fork: Switch 1 "Held 1 war drann" - OFF

    >>>Change Switch: 1 "Held 1 war drann" - ON
    >>>Call Event: "Held 1 drann"

    >>>Else:
    >>>>Goto Lable 1

    >>>Else:
    >>>!Lable 1!
    >>>Fork: Variable 2 "Held 2 Agility" > "Gegner 1 Agility"
    >>>>Fork: Switch: "Held 2 war drann" - OFF

    >>>>Change Switch: 2 "Held 2 war drann" - ON
    >>>>Call Event: "Held 2 drann"

    >>>>Else:
    >>>>>Goto Lable 2

    >>>>Else:
    >>>>>!Lable 2!
    >>>>>Change Switch 3 "Gegner 1 war drann" - ON
    >>>>>Call Event: "Gegner 1 drann"

    >Else:
    >>Fork: Variable 2 "Held 2 Agility" > "Gegner 1 Agility"
    >>>Fork: Switch 2 "Held 2 war drann" - OFF

    >>>Change Switch: 2 "Held 2 war drann" - ON
    >>>Call Event: "Held 2 drann"

    >>>Else:

    >>>>Change Switch: "Gegner 1 war drann" - ON
    >>>>Call Event: "Gegner 1 drann"
    Und zu guter letzt damit das ganze auch klappt:
    Zitat Zitat
    >Fork: Switch 1 "Held 1 war drann" - ON
    >>Fork: Switch 2 "Held 2 war drann" - ON
    >>>Fork: Switch 3 "Gegner 1 war drann" - ON

    >>>>Change Switch: "Held 1 war drann" - OFF
    >>>>Change Switch: "Held 2 war drann" - OFF
    >>>>Change Switch: "Gegner 1 war drann" - OFF
    So, ich hoffe du verstehst was ich damit meine ^^°
    Wenn du oben bei den ganzen Forks ein bisschen versuchts das ganze nachzuvollziehen sollte das schon klappen

    mfg
    Phönix Tear

  8. #8
    Gibt´s da nicht ein Script?
    @üH: Das ist kein Script, aber schön verwirrend^^

  9. #9
    hrrmm....es gibt auch im Forgotten E-book ein tut zu einem SKS, aber scripts hab ich bis jetzt eher weniger gefunden.
    Such doch mal z.b. auf www.rpg2000.4players.de unter Script und dann unter K oder S.

  10. #10
    Das Tut im E-Book ist ein ATB.
    Im Quartier gibts auch nur ATB´s, aber hauptsächlich AKS.
    Du solltest genauer lesen...

  11. #11

    "Vibration of Nature" - It's a long story
    stars_mod
    Rundenbasiertes KS?

    Prinzipiell besteht eine Runde immer aus 2 Teilen.
    1. Die Attacken bestimmung (von allen Kampfteilnehmern und Gegnern)
    2. Die Bestimmung der Reihenfolge der Attacken und gleichzeitig ihre Ausführung.

    Für 1:
    Hier kannst du dich ziemlich an den KS-Kursen wie dem von Serge richten, nur eines ist wichtig: Du musst alles Ergebnisse in Variablen einspeichern.
    Also brauchst du mindestens folgende Variablen:
    Held1-Aktion
    Held2-Aktion
    Held3-Aktion
    ...
    Gegner1-Aktion
    Gegner2-Aktion
    ...
    usw.

    In dese Variablen speicherst du die AKTION-ID der jeweils gewählten Aktion.
    Bei Helden wird die Aktion (meistens) per Menu-Skript gewählt, bei Gegnern über eine Art "KI" (bzw per Zufall - siehe andere KS Kurse dafür...).

    Und dann noch diese:
    Held1-Ziel
    Held2-Ziel
    ....
    Gegner1-Ziel
    usw.

    Hier musst du das Ziel der Aktion einspeichern. Bei Helden wieder durch Auwahl bestimmt, bei Gegnern durch eine KI (oder Zufall).

    Zu 2.:
    Um die Richtige Reihenfolge rauszufinden würde ich so vorgehen:
    Zuerst speicherst du die Agilitätswerte ALLER Kampfteilnehmer in Temporäre Variablen (also in neue Variablen). Diese Variablen wirst du in folgener Rechnung für die GEschwindigkeiten der Kampfteilnehmer verwenden.

    Und nun die ERklärung wie man auf einfache Art und Weise den HÖCHSTEN WERT bestimmt (da können auch ein paar Vorposter noch was von lernen):

    Mann verwendet eine Variable Namen's "Top-Wert" und eine Variable "Top-Nummer"

    Beschreibung der Variablen: Top-Wert hat immer den momentan größen Vergleichswert eingespeichert, während Top-Nummer die Nummer des Kampfteilnehmers (z.B. 1=Held1, 2=Held2 3=Held3 4=Gegner1 5=Gegner2 usw.) mit dem momentan größten Vergleichwertes.

    Das Skript sieht nun so aus:
    Top-Wert=0
    Top-Nummer=0

    If Held1-Agi>Top-Wert then
    Top-Wert=Held1-Agi
    Top-Nummer=1
    End Case.

    If Held2-Agi>Top-Wert then
    Top-Wert=Held2-Agi
    Top-Nummer=2
    End Case.

    ....

    If Gegner1-Agi>Top Wert then
    Top Wert=Gegner1-Agi
    Top-Nummer=4
    End Case.

    ....
    usw.

    Das ganze muss mit allen möglichen Kampfteilnehmern durchgezogen werden.
    (wichtig: In den Forks muss BIGGER gewählt werden, NICHT above)



    Wenn das Skript nun einmal durchlaufen wurde, hat man in der Variable "Top-Nummer" die Nummer des Kampfteilnehmers, der der schnellste ist, also jetzt am Zug ist.

    Mit diesem Kampfteilnehmer wird nun der Zug ausgeführt.
    Das heisst: Du musst auf die Aktion- und Ziel-Variable des Kampfteilnehmers zugreifen. Beispiel:
    Top-Nummer=1 -> Aktion-ID=Held1-Aktion und Ziel-ID=Held1-Ziel
    oder
    Top-Nummer=3 -> Aktion-ID=Held3-Aktion und Ziel-ID=Held3-Ziel
    oder
    Top-Nummer=5 -> Aktion-ID=Gegner2-Aktion und Ziel-ID=Gegner2-Ziel
    (wenn es nur 3 Helden gibt..)
    usw.
    Anhand von "Top-Nummer" weisst du, welcher Kampfteilnehmer seine Aktion hat, anhand der "Aktion-ID" weisst du, welche Attacke kommen muss (SChwertschlag oder Feuerzauber, oder Heilitem) und schließlich weisst du anhand der "Ziel-ID" welches Ziel, bzw. welche Ziele angegriffen werden.


    Wichtig: Hat der Charakter seinen Zug ausgeführt, senke seinen Agilitäts-Wert auf 0, undzwar den in der temporären Variable! (deshalb das umspeichern, die Agilitäts-Werte sollen ja nicht verloren gehen)

    Und jetzt wiederholst du das ganze (ab der Stelle wo die Schrift Rot ist). Du durchgehst wieder die oben beschrieben Rechnung. Da der Kampfteilnehmer der vorher der schnellste war jetzt einen Agi-Wert von 0 hat, wird der nächst schnellere dran kommen.

    Das ganze machst du solange, bis am Ende der Rechnung die Variable Top-Nummer den Wert 0 hat. Dann ist die Runde vorbei.

    Was noch wichtig ist: Sollte ein Kampfteilnehmer nach einer Aktion sterben musst du den Agi-Wert der temporären Variable auf 0 setzten (genau wie in allen anderen Fällen, wenn seine Aktion irgendwie abgebrochen wird.)

    Ich denke das ist das wichtigste was du zu einem Rundenbasierten-KS wissen musst.

    Ich hoffe ich konnte helfen.

    C ya

    Lachsen

  12. #12
    Zitat Zitat von Ranarion
    Gibt´s da nicht ein Script?
    @üH: Das ist kein Script, aber schön verwirrend^^
    Das mit dem SKS ist so eine Sache entweder man kennt sich aus oder nicht, wenn nicht:
    -Jemanden holen der eines für dich macht
    -Finger davon lassen und dafür gute Battleanimationen einbauen.

    Was ich dir wirklich nur als Ratschlag (zum xten mal hier) geben kann ist das E-book. Bau es nach,... Dann gibst du es jemanden, der es umbaut, oder du denkst beim basteln gleich mit und umgehst so gut es geht das ATB durch umschreiben.

    Mehr kann man da nicht tun.

  13. #13
    @Lachsen: Danke, werde es Montag mal ausprobieren...wenn ich es raffe^^
    @Bauzi:
    Zitat Zitat
    Jemanden holen der eines für dich macht
    Lol, ich glaube nicht, dass sich jemand die Mühe für nen Creditseintrag macht...
    Zitat Zitat
    Finger davon lassen und dafür gute Battleanimationen einbauen.
    Werd ich machen müssen, wenn ich Lachsens Post nicht umsetzen kann. Ausser es geschieht ein Wunder und jemand macht mir eins^^
    Zitat Zitat
    Was ich dir wirklich nur als Ratschlag (zum xten mal hier) geben kann ist das E-book. Bau es nach,..
    Ich habe es nachgebaut: Da ist irgendwas falsch...irgendwas funzt net so, wie es soll...
    Zitat Zitat
    Dann gibst du es jemanden, der es umbaut, oder du denkst beim basteln gleich mit und umgehst so gut es geht das ATB durch umschreiben.
    Wenn ich das so gut könnte, hätte ich diesen Thread nicht aufgemacht...

  14. #14
    Zitat Zitat von Lachsen
    ...Und nun die ERklärung wie man auf einfache Art und Weise den HÖCHSTEN WERT bestimmt (da können auch ein paar Vorposter noch was von lernen)...
    schau mal nach oben laxy...XD

    @ranarion:
    lachsen schreibt zwar, dass man alle aktionen vorher speichern soll
    aber ich glaube niemand reißt dir den kopf ab, wenn du die
    aktionen der gegner erst bestimmt, wenn sie auch dran sind...
    (sieht ja sowieso keiner...)
    so kann man, mit der richtigen gegner Ki das spiel auch schön schwer machen... (spieler muss im vorraus denken, gegner nicht...)

    üH

    Geändert von übelster Held (03.06.2005 um 14:48 Uhr)

  15. #15
    Zitat Zitat
    Lol, ich glaube nicht, dass sich jemand die Mühe für nen Creditseintrag macht...
    Ich wäre so einer wenn ich Zeit hätte! Das mit dem E-book funzt nicht Das ist allerdings sehr schlecht, weil ich denke mal es ist schwer den Fehler zu finden...

    naja such dir am besten gleich ein Teammitglied oder einen Partner, der dir gleich in deinem Projekt in Sachen Technik hilft und dir ein SKS macht.

  16. #16
    Hey, thx Lachsen. Werds mir merken

    @üH
    Zitat Zitat
    schau mal nach oben laxy...XD
    *hust*
    Nun ja. Ich hab nach oben geschaut... Gefunden hab ich nicht viel. Wenn ich deinen Post mit dem von Lachsen vergleiche
    Du sagst lediglich das er den höchsten Agility-Wert ermitteln soll, aber nicht wie und das war ja schließlich seine Frage...
    Und überleg mal selber. Womit kann Ranarion wohl mehr anfangen?


    @Ranarion:
    Kannst du die unwissenden mal aufklären, was du bereits gemacht hast oder woran du gerade arbeitest? Manchmal ist das sehr hilfreich, sich selbst zu präsentieren wenn man Jemanden sucht der mit einem arbeitet
    Ich selbst hab zwar momentan keine Zeit zum machen eines KS, aber vielleicht findet sich ja noch jemand anderes... (nochmal Sry Sekar T_T)

  17. #17
    @heulender brennender vogel :
    ich habe ja meinen post nach deinen geschrieben...der den
    code für das ordnen beinhaltete, meiner war halt nurn bissel länger...
    (hab die reihenfolge wie du im vorausberechnet...)
    und den post hab ich eiskalt gelöscht... jetzt wirst du sicher
    auch den witzt erkennen können...

  18. #18

    "Vibration of Nature" - It's a long story
    stars_mod
    @üH Ich hab mir zugegeben deinen Code nicht besonders genau durchgelesen (und den Link zum Skript auch nicht geöffnet)
    Auf dem ersten Blick sah es dennoch recht verwirrend aus, von daher dachte ich wäre es doch angebracht nochmal meinen Senf dazu zu geben.

    Aber wo ist dein Beitrag jetzt?!

    Irgendwie vermisse ich ihn, er steht nichtmehr dort oO
    Würde ja noch gerne darauf eingehen, aber wenn er weg ist geht das schlecht.

    (hast du ihn gelöscht oder sowas?)

    Edit: Hab wieder nicht genau genug gelesen.
    Gelöscht also? So gesehen hast du kapituliert und eingesehen, das du aus meinen Skript doch etwas lernen kannst :P

    Wenn nicht bist du Feige und nimmst mir die Möglichkeit zu Argumentieren, wieso es so ist. v_v

    wie auch immer...

    Und noch was zu dem Aktionen bestimmen der Gegner, erst wenn sie dran sind:
    Ich halte es (zumindest seit einiger Zeit) generell für angemessener, alle Rechnungen, die nicht direkt mit der Grafischen Darstellung der Aktionen zu tun haben, von dieser zu trennen.

    Das heisst: Es ist besser, wenn man direkt nach der Eingabe zuerst einmal alle Aktionen parat hat, dann aber darüber hinaus auch gleich den Ablauf dieser Runde einmal "gedanklich" durchgeht und dabei schonmal jeden Schaden vorberechnet und abspeichert und dann bei der Ausführung lediglich auf die eingespeicherten Werte zugreift, wo sonst viel gerechnet wird.

    Vorallem wenn die Berechnung des Schadens aufwändig ist (was sein kann, je nachdem wieviele Features das KS hat hinsicht Schadenreduzierung und -erhöhung) kann das den Rechner gut entlasten.

    Ausserdem hat es immer nen Vorteil noch vor der Ausführung der Runde bescheit zu wissen, wie es aus geht.

    Aber mal nebenbei... sowas ist etwas schwerer durchzuführen und weniger was für Leute die sich nicht wirklich in diese Materie reinversetzen können...

    Dennoch, das vorherige Einspeichern der Aktionen von Gegnern ist der erste Schritt in diese Richtung und gar nicht mal schwer zu machen.
    Außerdem macht es die Struktur des Kampfsystems einfach schöner und einheitlicher weil man genau aufteilen kann:
    1. Attackenbestimmung
    2. Attackenausführung

    Und denkt immer daran: 5000 Variablen sind SEHR viel, scheut euch nicht einige raus zu nehmen um viel einzuspeichern.

    C ya

    Lachsen

  19. #19
    ob du meinen beitrag stark vermisst bezweifle ich jetzt mal stark...XD
    wie kannst du überhaubt meinen code für verwirrend bezeichnen wenn
    du nichtmal auf den link geklickerst hast??? hm... oder kannst du hellsehen??? XD
    ach... jetzt weiß ich was du als "code" hieltest, du meinst doch sicher
    das ganze zeugs was unter den link stadt... das war nur die erklärung
    der variablen und welche ich eingesetzt hab...
    aber für dich hab ich nochmal den code ausgekramert...(hat nämlich
    schon mal einer gefragt und da hab ich mal schnell das script geschrieben...)

    Zitat Zitat von übelster Held
    probier mal das:
    bild

    is egal wie groß die agillitätswerte sind...
    gibt zwar in deinen fall ne viel einfachere methode,
    aber wer weiß ob du nicht vielleicht doch noch
    die aggilitätswerte verändern willst...
    zur erklärung:
    die variable "held x agi" ist der agillitätswert des jew helden/monsters

    gespeichert werden die ergebnisse dann in der variable "angreifer x"
    du musst halt der reihe nach fragen welchen wert angreifer 1
    hat : wenn die variable den wert 1 hat, greift held 1 an
    hat sie den wert 2 dann greift der Held 2 an
    ab den wert 5 greifen dann die monster an...
    danach musst du den wert der variable angreifer 2 abfragen...usw usw...
    ne kapitulation wars net, eher ne revolution...XD
    lehrnen kann ich vieleicht was von dir, aber nicht von son bissel script...
    (okee, okee, habs echt nicht gesehen, dass man die geschw. dan null
    setzen kann... aber kann ja mal in der eile des geschäfts vorkommen...)

    ich hab nur eingesehen, dass dein code halt viel verständlicher ist als meiner... aber ob er auch besser ist, weiß man nicht...

    5000 variabeln sind wirklich viel... ab erstmal 800 bei meinen ks verscheuert... (davon jedoch 200 für die itemeinspeisung... )

    also mal zu den schwächen meines codes:
    - lang...
    - für anfänger etwas undurchsichtlich und befremdend...
    - im falle einer geschwindigkeitsveränderung muss man den code nocheinmal
    durchlaufen lassen und zusätzlich bei der überprüfung immer von angreifer 1 anfangen und zusätzlich fragen ob der held schon dran war...
    klingt jetzt kompliziert ist es auch...XD

    jetzt zu deinen cods schwächen:
    - bei einen fall der geschwindigkeitsänderzung kann man deinen code in die
    tonne treten: XD
    nehmen wir mal an monster 3 ist als erster dran... am ende wird die
    tempgeschw. auf null gesetzt
    danach hero 2 der ein monster angreift...
    nach ihn kommt hero 3 dran, der
    einen geschwindigkeits zauber einsetzt der die geschw aller helden um
    20 erhöht...
    und hier ist der hacken... man könnte jetzt die ganzen betroffenen agilitätswerte um 20 erhöhen, müsste dann aber auch die
    temporären agilitätswerte angleichen... aber da ja schon bei einen
    helden die temp agi werte auf null sind, müsst man seine tempwerte auslassen... denn sonst kommt der held am ende des kampfes noch einmal
    dran, da der code ja erst aufhört wenn der höchste wert null ist...
    mann könnte sichs aber auch viel einfacher machen und das einbauen
    auf was du bei deinen code verzichtest hast: switches wer schon drann war
    und wer noch nicht...

    das müsste man aber nur machen, wenn man sie um einen festen wert
    erhöht... wenn man sie prozentual erhöht muss man einfach
    die agilitätswerte und alle temp agi werte prozentual erhöhen,
    denn null mal 5 durch 100 is ja immernoch null.
    man müsst jedoch aufpassen dass man nicht alle temp agi werte nach dem
    erhöhen aktualisiert, da ja dann der held, der schon dran war wieder drankommt...

    hoffe du konntest mir folgen...

    üH

  20. #20
    Ich lach mich schlapp: Zwei Leute sagen, dass sie so etwas für einen Creditseintrag machen würden, haben aber keine Zeit, können mir demnach viel erzählen...

    Das mit der Geschwindigkeitsänderung ist für mich ein großes Problem, da der erste Chara, den man hat schon die Geschwindigkeit erhöht bzw. senkt...

    Zitat Zitat
    Kannst du die unwissenden mal aufklären, was du bereits gemacht hast oder woran du gerade arbeitest? Manchmal ist das sehr hilfreich, sich selbst zu präsentieren wenn man Jemanden sucht der mit einem arbeitet
    Klar kann ich das, aber ob ich das mache...
    Das hier ist kein Vorstellungsthread, demnach hielt/halte ich es nicht für nötig...
    Falls wirklich jemand Interesse daran hat soll er mir eine PN schicken, jedoch bitte nicht nur aus Neugier

    @üH und Lachsen: Hört auf euch zu streite, das ist ja schlimm

Berechtigungen

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